Procházet zdrojové kódy

Release 74.0.3729.80

csagan5 před 6 roky
rodič
revize
a6ffa85a0e
87 změnil soubory, kde provedl 793 přidání a 1253 odebrání
  1. 6 2
      CHANGELOG.md
  2. 121 6
      build/filters/adblock_entries.h
  3. 19 45
      build/patches/AV1-codec-support.patch
  4. 2 2
      build/patches/Add-English-only-search-engine.patch
  5. 2 2
      build/patches/Add-Qwant-search-engine.patch
  6. 2 2
      build/patches/Add-StartPage-search-engine.patch
  7. 25 29
      build/patches/Add-a-flag-for-DNS-over-HTTPS.patch
  8. 15 15
      build/patches/Add-a-proxy-configuration-page.patch
  9. 18 18
      build/patches/Add-an-always-incognito-mode.patch
  10. 29 28
      build/patches/Add-bookmark-import-export-actions.patch
  11. 6 6
      build/patches/Add-custom-tab-intents-privacy-option.patch
  12. 2 2
      build/patches/Add-exit-menu-item.patch
  13. 16 16
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  14. 12 13
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  15. 10 10
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  16. 17 17
      build/patches/Add-flags-to-disable-device-motion-and-orientation-APIs.patch
  17. 6 6
      build/patches/Add-menu-option-to-toggle-global-Javascript-preference.patch
  18. 7 7
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  19. 4 4
      build/patches/Add-option-to-use-home-page-as-NTP.patch
  20. 7 7
      build/patches/Add-site-settings-option-for-session-only-cookies.patch
  21. 66 62
      build/patches/Allow-building-without-safebrowsing-for-Android.patch
  22. 3 3
      build/patches/Allow-playing-audio-in-background.patch
  23. 1 1
      build/patches/Always-allow-partner-customisation.patch
  24. 2 2
      build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch
  25. 18 20
      build/patches/Always-show-home-page-settings.patch
  26. 2 2
      build/patches/AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch
  27. 1 1
      build/patches/Battery-API-return-nothing.patch
  28. 10 10
      build/patches/Bromite-adblock-engine.patch
  29. 4 4
      build/patches/Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch
  30. 1 1
      build/patches/Disable-NTP-remote-suggestions-by-default.patch
  31. 1 1
      build/patches/Disable-Omaha-update-checks.patch
  32. 1 1
      build/patches/Disable-contextual-search-by-default.patch
  33. 1 1
      build/patches/Disable-data-saver.patch
  34. 1 1
      build/patches/Disable-fetching-of-all-field-trials.patch
  35. 0 23
      build/patches/Disable-hyperlink-auditing-by-default.patch
  36. 5 5
      build/patches/Disable-metrics-collection-for-NTP-tiles.patch
  37. 1 1
      build/patches/Disable-metrics-on-all-I-O-threads.patch
  38. 1 1
      build/patches/Disable-plugins-enumeration.patch
  39. 1 1
      build/patches/Disable-promos-displayed-in-bookmarks-manager.patch
  40. 3 3
      build/patches/Disable-references-to-fonts.googleapis.com.patch
  41. 1 1
      build/patches/Disable-seed-based-field-trials.patch
  42. 96 86
      build/patches/Disable-signin-and-data-saver-preferences.patch
  43. 1 1
      build/patches/Disable-signin-data-reduction-promos.patch
  44. 4 4
      build/patches/Do-not-grant-notifications-to-default-search-engine.patch
  45. 1 1
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  46. 1 1
      build/patches/Enable-history-requirement-of-user-gesture.patch
  47. 3 29
      build/patches/Enable-secure-DNS-mode-by-default-in-DnsTransaction.patch
  48. 4 4
      build/patches/Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
  49. 1 1
      build/patches/Fix-crash-when-accessing-page-info-site-settings.patch
  50. 5 5
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch
  51. 11 13
      build/patches/Modify-default-preferences.patch
  52. 1 1
      build/patches/Never-send-any-crash-upload-data.patch
  53. 1 1
      build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch
  54. 1 1
      build/patches/Open-YouTube-links-in-Bromite.patch
  55. 1 1
      build/patches/Punt-the-Widevine-version-string.patch
  56. 4 4
      build/patches/Remove-Sync-and-Translate-menu.patch
  57. 2 2
      build/patches/Remove-help-menu-item.patch
  58. 3 3
      build/patches/Remove-request-for-account-access-permission-on-reboot.patch
  59. 35 50
      build/patches/Rollback-android-minSdkVersion-from-19-KitKat-to-16-JellyBean.patch
  60. 3 3
      build/patches/Skip-the-first-run-and-metrics.patch
  61. 0 481
      build/patches/Support-different-secure-DNS-modes-within-DnsTransaction.patch
  62. 1 1
      build/patches/Switch-to-fstack-protector-strong.patch
  63. 2 2
      build/patches/Use-4-tile-rows-never-show-logo.patch
  64. 2 2
      build/patches/User-Agent-anonymize.patch
  65. 10 10
      build/patches/autofill-disable-autofill-download-manager.patch
  66. 1 1
      build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch
  67. 10 10
      build/patches/getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch
  68. 2 2
      build/patches/kill-Auth.patch
  69. 23 28
      build/patches/kill-GCM.patch
  70. 1 1
      build/patches/kill-Location-fall-back-to-system.patch
  71. 1 1
      build/patches/kill-TOS-and-metrics-opt-out.patch
  72. 1 1
      build/patches/kill-Vision.patch
  73. 1 1
      build/patches/openH264-enable-ARM-ARM64-optimizations.patch
  74. 1 1
      build/patches/profile-resetter-do-not-tick-send-settings-by-default.patch
  75. 6 6
      build/patches/promo-disable-Google-promotion-fetching.patch
  76. 3 3
      build/patches/safe_browsing-disable-cookie-transmission.patch
  77. 2 2
      build/patches/safe_browsing-disable-incident-reporting.patch
  78. 1 1
      build/patches/ungoogled-chromium-Always-use-local-DevTools-files-instead-of-remote-files-from-Google.patch
  79. 9 9
      build/patches/ungoogled-chromium-Disable-Gaia.patch
  80. 3 3
      build/patches/ungoogled-chromium-Disable-Google-host-detection.patch
  81. 1 1
      build/patches/ungoogled-chromium-Disable-profile-avatar-downloading.patch
  82. 75 82
      build/patches/ungoogled-chromium-Disable-safe-browsing.patch
  83. 3 3
      build/patches/ungoogled-chromium-Disable-translate-integration.patch
  84. 1 1
      build/patches/ungoogled-chromium-Disable-untraceable-URLs.patch
  85. 2 2
      build/patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch
  86. 2 2
      build/patches/updater-disable-updater-pings.patch
  87. 1 3
      build/patches_list.txt

+ 6 - 2
CHANGELOG.md

@@ -1,12 +1,16 @@
+# 74.0.3729.80
+* increase minimum SDK version to 17 (Jelly Bean 4.2)
+* dropped obsolete patch for hyperlink auditing disable
+
 # 73.0.3683.107
-* removed patch to disable smooth scrolling
+* dropped patch to disable smooth scrolling
 * fixed custom tab intents issue (fixes https://github.com/bromite/bromite/issues/279)
 
 # 73.0.3683.105
 * removed Fanboy's Annoyance List and Peter Lowe's adservers list from filters
 
 # 73.0.3683.97 
-* remove patch to hide NTP tiles
+* dropped redundant patch to hide NTP tiles (use home page + about:blank)
 
 # 73.0.3683.88
 * add option to use home page as NTP

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 121 - 6
build/filters/adblock_entries.h


+ 19 - 45
build/patches/AV1-codec-support.patch

@@ -18,16 +18,14 @@ Report AV1 as playable on Android
  third_party/libaom/source/config/linux/arm64/config/aom_config.h    | 2 +-
  .../libaom/source/config/linux/generic/config/aom_config.asm        | 2 +-
  third_party/libaom/source/config/linux/generic/config/aom_config.h  | 2 +-
- third_party/libaom/source/config/linux/ia32/config/aom_config.asm   | 2 +-
- third_party/libaom/source/config/linux/ia32/config/aom_config.h     | 2 +-
  third_party/libaom/source/config/linux/x64/config/aom_config.asm    | 2 +-
  third_party/libaom/source/config/linux/x64/config/aom_config.h      | 2 +-
- 17 files changed, 28 insertions(+), 17 deletions(-)
+ 15 files changed, 26 insertions(+), 15 deletions(-)
 
 diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
 --- a/media/base/mime_util_internal.cc
 +++ b/media/base/mime_util_internal.cc
-@@ -540,9 +540,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
+@@ -539,9 +539,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
      case THEORA:
        return false;
  
@@ -45,7 +43,7 @@ diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
 diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 --- a/third_party/libaom/BUILD.gn
 +++ b/third_party/libaom/BUILD.gn
-@@ -74,7 +74,7 @@ if (enable_av1_decoder) {
+@@ -74,7 +74,7 @@ if (enable_libaom_decoder) {
        sources = aom_dsp_common_asm_sse2
        sources += aom_dsp_common_asm_ssse3
        sources += aom_ports_asm_x86
@@ -54,7 +52,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
        include_dirs = libaom_include_dirs
      }
  
-@@ -158,7 +158,7 @@ if (enable_av1_decoder) {
+@@ -158,7 +158,7 @@ if (enable_libaom_decoder) {
        configs += [ "//build/config/compiler:no_chromium_code" ]
        if (current_cpu == "arm") {
          configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
@@ -62,8 +60,8 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 +        cflags = [ "-mfpu=neon", "-fPIC" ]
        }
        configs += [ ":libaom_config" ]
-       sources = aom_av1_common_intrin_neon
-@@ -198,6 +198,8 @@ if (enable_av1_decoder) {
+ 
+@@ -203,6 +203,8 @@ if (enable_libaom_decoder) {
      if (current_cpu == "arm64" || cpu_arch_full == "arm-neon" ||
          cpu_arch_full == "arm-neon-cpu-detect") {
        deps += [ ":libaom_intrinsics_neon" ]
@@ -75,7 +73,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni
 --- a/third_party/libaom/libaom_srcs.gni
 +++ b/third_party/libaom/libaom_srcs.gni
-@@ -483,6 +483,11 @@ aom_mem_sources = [
+@@ -488,6 +488,11 @@ aom_mem_sources = [
  
  aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ]
  
@@ -97,8 +95,8 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/a
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
- CONFIG_REDUCED_ENCODER_BORDER equ 0
  CONFIG_RUNTIME_CPU_DETECT equ 1
+ CONFIG_SHARED equ 0
 diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
@@ -109,8 +107,8 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/a
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REDUCED_ENCODER_BORDER 0
  #define CONFIG_RUNTIME_CPU_DETECT 1
+ #define CONFIG_SHARED 0
 diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
@@ -121,8 +119,8 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.a
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
- CONFIG_REDUCED_ENCODER_BORDER equ 0
  CONFIG_RUNTIME_CPU_DETECT equ 0
+ CONFIG_SHARED equ 0
 diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
@@ -133,8 +131,8 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REDUCED_ENCODER_BORDER 0
  #define CONFIG_RUNTIME_CPU_DETECT 0
+ #define CONFIG_SHARED 0
 diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.asm b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
@@ -145,8 +143,8 @@ diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.asm b/
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
- CONFIG_REDUCED_ENCODER_BORDER equ 0
  CONFIG_RUNTIME_CPU_DETECT equ 0
+ CONFIG_SHARED equ 0
 diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.h b/third_party/libaom/source/config/linux/arm/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm/config/aom_config.h
@@ -157,8 +155,8 @@ diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.h b/th
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REDUCED_ENCODER_BORDER 0
  #define CONFIG_RUNTIME_CPU_DETECT 0
+ #define CONFIG_SHARED 0
 diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
@@ -169,8 +167,8 @@ diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
- CONFIG_REDUCED_ENCODER_BORDER equ 0
  CONFIG_RUNTIME_CPU_DETECT equ 0
+ CONFIG_SHARED equ 0
 diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.h b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm64/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
@@ -181,8 +179,8 @@ diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.h b/
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REDUCED_ENCODER_BORDER 0
  #define CONFIG_RUNTIME_CPU_DETECT 0
+ #define CONFIG_SHARED 0
 diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.asm b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/generic/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
@@ -193,8 +191,8 @@ diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.as
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
- CONFIG_REDUCED_ENCODER_BORDER equ 0
  CONFIG_RUNTIME_CPU_DETECT equ 1
+ CONFIG_SHARED equ 0
 diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.h b/third_party/libaom/source/config/linux/generic/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/generic/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/generic/config/aom_config.h
@@ -205,32 +203,8 @@ diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.h
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REDUCED_ENCODER_BORDER 0
- #define CONFIG_RUNTIME_CPU_DETECT 1
-diff --git a/third_party/libaom/source/config/linux/ia32/config/aom_config.asm b/third_party/libaom/source/config/linux/ia32/config/aom_config.asm
---- a/third_party/libaom/source/config/linux/ia32/config/aom_config.asm
-+++ b/third_party/libaom/source/config/linux/ia32/config/aom_config.asm
-@@ -35,7 +35,7 @@
- %define CONFIG_NORMAL_TILE_MODE 1
- %define CONFIG_ONE_PASS_SVM 0
- %define CONFIG_OS_SUPPORT 1
--%define CONFIG_PIC 0
-+%define CONFIG_PIC 1
- %define CONFIG_RD_DEBUG 0
- %define CONFIG_REDUCED_ENCODER_BORDER 0
- %define CONFIG_RUNTIME_CPU_DETECT 1
-diff --git a/third_party/libaom/source/config/linux/ia32/config/aom_config.h b/third_party/libaom/source/config/linux/ia32/config/aom_config.h
---- a/third_party/libaom/source/config/linux/ia32/config/aom_config.h
-+++ b/third_party/libaom/source/config/linux/ia32/config/aom_config.h
-@@ -47,7 +47,7 @@
- #define CONFIG_NORMAL_TILE_MODE 1
- #define CONFIG_ONE_PASS_SVM 0
- #define CONFIG_OS_SUPPORT 1
--#define CONFIG_PIC 0
-+#define CONFIG_PIC 1
- #define CONFIG_RD_DEBUG 0
- #define CONFIG_REDUCED_ENCODER_BORDER 0
  #define CONFIG_RUNTIME_CPU_DETECT 1
+ #define CONFIG_SHARED 0
 diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.asm b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/x64/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
@@ -241,8 +215,8 @@ diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.asm b/
 -%define CONFIG_PIC 0
 +%define CONFIG_PIC 1
  %define CONFIG_RD_DEBUG 0
- %define CONFIG_REDUCED_ENCODER_BORDER 0
  %define CONFIG_RUNTIME_CPU_DETECT 1
+ %define CONFIG_SHARED 0
 diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/third_party/libaom/source/config/linux/x64/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/x64/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/x64/config/aom_config.h
@@ -253,8 +227,8 @@ diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/th
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REDUCED_ENCODER_BORDER 0
  #define CONFIG_RUNTIME_CPU_DETECT 1
+ #define CONFIG_SHARED 0
 -- 
 2.11.0
 

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

@@ -17,8 +17,8 @@ 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. Otherwise, existing data may
      // continue to be used and updates made here will not always appear.
--    "kCurrentDataVersion": 111
-+    "kCurrentDataVersion": 112
+-    "kCurrentDataVersion": 112
++    "kCurrentDataVersion": 113
    },
  
    // The following engines are included in country lists and are added to the

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

@@ -16,8 +16,8 @@ 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. Otherwise, existing data may
      // continue to be used and updates made here will not always appear.
--    "kCurrentDataVersion": 112
-+    "kCurrentDataVersion": 113
+-    "kCurrentDataVersion": 113
++    "kCurrentDataVersion": 114
    },
  
    // The following engines are included in country lists and are added to the

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

@@ -15,8 +15,8 @@ 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. Otherwise, existing data may
      // continue to be used and updates made here will not always appear.
--    "kCurrentDataVersion": 110
-+    "kCurrentDataVersion": 111
+-    "kCurrentDataVersion": 111
++    "kCurrentDataVersion": 112
    },
  
    // The following engines are included in country lists and are added to the

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

@@ -10,7 +10,7 @@ Do not fallback to UDP when using DoH
 
 See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-14.txt
 ---
- chrome/browser/about_flags.cc                      | 14 +++++++++++
+ chrome/browser/about_flags.cc                      | 11 +++++++++
  chrome/browser/flag_descriptions.cc                |  3 +++
  chrome/browser/flag_descriptions.h                 |  3 +++
  .../browser/net/system_network_context_manager.cc  | 17 +++++++------
@@ -18,14 +18,14 @@ See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-14.txt
  .../common/network_features.h                      |  5 +++-
  .../common/network_switch_list.h                   |  4 ++++
  net/base/load_flags_list.h                         |  6 +++++
- net/dns/dns_transaction.cc                         | 28 +++-------------------
+ net/dns/dns_transaction.cc                         | 27 +++------------------
  net/url_request/url_request_http_job.cc            | 28 +++++++++++++---------
- 10 files changed, 67 insertions(+), 48 deletions(-)
+ 10 files changed, 64 insertions(+), 47 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
-@@ -423,6 +423,14 @@ const FeatureEntry::FeatureVariation kCCTModuleCacheVariations[] = {
+@@ -398,6 +398,14 @@ const FeatureEntry::FeatureVariation kCCTModuleCacheVariations[] = {
       base::size(kCCTModuleCache_ThirtyMinutes), nullptr},
  };
  
@@ -39,24 +39,21 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 +
  #endif  // OS_ANDROID
  
- const FeatureEntry::Choice kMHTMLGeneratorOptionChoices[] = {
-@@ -3433,6 +3441,12 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(features::kAsyncDns)},
- #endif  // defined(OS_ANDROID)
- 
-+#if defined(OS_ANDROID)
+ const FeatureEntry::Choice kEnableGpuRasterizationChoices[] = {
+@@ -3400,6 +3408,9 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kTabSwitcherOnReturn,
+                                     kTabSwitcherOnReturnVariations,
+                                     "TabSwitcherOnReturn")},
 +    {"enable-dns-over-https", flag_descriptions::kDnsOverHttpsName,
 +     flag_descriptions::kDnsOverHttpsDescription, kOsAndroid,
 +     MULTI_VALUE_TYPE(kDnsOverHttpsChoices)},
-+#endif  // defined(OS_ANDROID)
-+
-     {"enable-overflow-icons-for-media-controls",
-      flag_descriptions::kOverflowIconsForMediaControlsName,
-      flag_descriptions::kOverflowIconsForMediaControlsDescription, kOsAll,
+ #endif
+ 
+     {"enable-built-in-module-all", flag_descriptions::kBuiltInModuleAllName,
 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
-@@ -2292,6 +2292,9 @@ const char kAutoFetchOnNetErrorPageDescription[] =
+@@ -2209,6 +2209,9 @@ const char kAutoFetchOnNetErrorPageDescription[] =
      "When enabled, and navigation fails with an offline error, schedule a "
      "fetch of the page when online again.";
  
@@ -69,7 +66,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1362,6 +1362,9 @@ extern const char kAsyncDnsDescription[];
+@@ -1306,6 +1306,9 @@ extern const char kAsyncDnsDescription[];
  extern const char kAutoFetchOnNetErrorPageName[];
  extern const char kAutoFetchOnNetErrorPageDescription[];
  
@@ -82,7 +79,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 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
-@@ -24,6 +24,7 @@
+@@ -25,6 +25,7 @@
  #include "chrome/browser/component_updater/sth_set_component_installer.h"
  #include "chrome/browser/io_thread.h"
  #include "chrome/browser/net/chrome_mojo_proxy_resolver_factory.h"
@@ -90,7 +87,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
  #include "chrome/browser/safe_browsing/safe_browsing_service.h"
  #include "chrome/browser/ssl/ssl_config_service_manager.h"
  #include "chrome/common/channel_info.h"
-@@ -121,6 +122,7 @@ void GetStubResolverConfig(
+@@ -122,6 +123,7 @@ void GetStubResolverConfig(
        if (!net::dns_util::IsValidDoHTemplate(
                doh_server_list[i].GetString(),
                doh_server_method_list[i].GetString())) {
@@ -98,7 +95,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
          continue;
        }
  
-@@ -395,15 +397,12 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -401,15 +403,12 @@ SystemNetworkContextManager::SystemNetworkContextManager(
                                      base::Value(ShouldEnableAsyncDns()));
    base::ListValue default_doh_servers;
    base::ListValue default_doh_server_methods;
@@ -183,11 +180,10 @@ diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
 diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
-@@ -352,30 +352,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
- 
-     HttpRequestHeaders extra_request_headers;
+@@ -358,29 +358,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
      extra_request_headers.SetHeader("Accept", kDnsOverHttpResponseContentType);
--
+ 
+     DCHECK(url_request_context);
 -    request_ = url_request_context->CreateRequest(
 -        url, request_priority_, this,
 -        net::DefineNetworkTrafficAnnotation("dns_over_https", R"(
@@ -215,7 +211,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
      net_log_ = request_->net_log();
  
      if (use_post) {
-@@ -391,6 +368,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -396,6 +374,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
  
      request_->SetExtraRequestHeaders(extra_request_headers);
      request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
@@ -223,7 +219,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
                             LOAD_BYPASS_PROXY);
      request_->set_allow_credentials(false);
    }
-@@ -807,7 +785,7 @@ class DnsTransactionImpl : public DnsTransaction,
+@@ -815,7 +794,7 @@ class DnsTransactionImpl : public DnsTransaction,
          had_tcp_attempt_(false),
          doh_attempt_(false),
          first_server_index_(0),
@@ -235,7 +231,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
 --- a/net/url_request/url_request_http_job.cc
 +++ b/net/url_request/url_request_http_job.cc
-@@ -423,17 +423,21 @@ void URLRequestHttpJob::Start() {
+@@ -425,17 +425,21 @@ void URLRequestHttpJob::Start() {
    // plugin could set a referrer although sending the referrer is inhibited.
    request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
  
@@ -263,7 +259,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
    AddExtraHeaders();
    AddCookieHeaderAndStart();
-@@ -652,10 +656,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -659,10 +663,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
      } else {
        // Advertise "br" encoding only if transferred data is opaque to proxy.
        bool advertise_brotli = false;
@@ -280,7 +276,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
          }
        }
  
-@@ -673,7 +679,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -680,7 +686,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
      }
    }
  

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

@@ -66,7 +66,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
-@@ -237,6 +237,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
+@@ -236,6 +236,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    builtins_to_provide.push_back(
        base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
    builtins_to_provide.push_back(
@@ -78,7 +78,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
 --- a/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
-@@ -209,6 +209,8 @@
+@@ -213,6 +213,8 @@
          <include name="IDR_SNIPPETS_INTERNALS_CSS" file="resources\snippets_internals\snippets_internals.css" compress="gzip" type="BINDATA" />
          <include name="IDR_SNIPPETS_INTERNALS_JS" file="resources\snippets_internals\snippets_internals.js" compress="gzip" type="BINDATA" />
          <include name="IDR_SNIPPETS_INTERNALS_MOJO_JS" file="${root_gen_dir}\chrome\browser\ui\webui\snippets_internals\snippets_internals.mojom.js" use_base_dir="false" type="BINDATA" compress="gzip" />
@@ -90,7 +90,7 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
 diff --git a/chrome/browser/prefs/chrome_command_line_pref_store.cc b/chrome/browser/prefs/chrome_command_line_pref_store.cc
 --- a/chrome/browser/prefs/chrome_command_line_pref_store.cc
 +++ b/chrome/browser/prefs/chrome_command_line_pref_store.cc
-@@ -158,7 +158,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
+@@ -161,7 +161,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
      SetValue(
          proxy_config::prefs::kProxy,
          std::make_unique<base::Value>(ProxyConfigDictionary::CreateFixedServers(
@@ -508,7 +508,7 @@ new file mode 100644
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -266,6 +266,8 @@ jumbo_split_static_library("ui") {
+@@ -271,6 +271,8 @@ jumbo_split_static_library("ui") {
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
@@ -521,14 +521,14 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 @@ -51,6 +51,7 @@
- #include "chrome/browser/ui/webui/policy_tool_ui.h"
+ #include "chrome/browser/ui/webui/password_manager_internals/password_manager_internals_ui.h"
  #include "chrome/browser/ui/webui/policy_ui.h"
  #include "chrome/browser/ui/webui/predictors/predictors_ui.h"
 +#include "chrome/browser/ui/webui/proxy_config_ui.h"
  #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h"
  #include "chrome/browser/ui/webui/settings/md_settings_ui.h"
  #include "chrome/browser/ui/webui/settings_utils.h"
-@@ -378,6 +379,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -386,6 +387,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -982,7 +982,7 @@ new file mode 100644
 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
 --- a/chrome/common/webui_url_constants.cc
 +++ b/chrome/common/webui_url_constants.cc
-@@ -182,6 +182,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
+@@ -177,6 +177,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
  const char kChromeUINativeScheme[] = "chrome-native";
  const char kChromeUIOfflineInternalsHost[] = "offline-internals";
  const char kChromeUIPhysicalWebDiagnosticsHost[] = "physical-web-diagnostics";
@@ -991,7 +991,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
  const char kChromeUISnippetsInternalsHost[] = "snippets-internals";
  const char kChromeUIWebApksHost[] = "webapks";
  #endif
-@@ -351,6 +353,7 @@ const char* const kChromeHostURLs[] = {
+@@ -354,6 +356,7 @@ const char* const kChromeHostURLs[] = {
      kChromeUIPasswordManagerInternalsHost,
      kChromeUIPolicyHost,
      kChromeUIPredictorsHost,
@@ -999,7 +999,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
      kChromeUIQuotaInternalsHost,
      kChromeUISignInInternalsHost,
      kChromeUISiteEngagementHost,
-@@ -385,6 +388,7 @@ const char* const kChromeHostURLs[] = {
+@@ -388,6 +391,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !defined(OS_CHROMEOS)
      kChromeUIAppLauncherPageHost,
@@ -1010,7 +1010,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
 diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
 --- a/chrome/common/webui_url_constants.h
 +++ b/chrome/common/webui_url_constants.h
-@@ -103,6 +103,8 @@ extern const char kChromeUIMemoryInternalsHost[];
+@@ -102,6 +102,8 @@ extern const char kChromeUIMemoryInternalsHost[];
  extern const char kChromeUINTPTilesInternalsHost[];
  extern const char kChromeUINaClHost[];
  extern const char kChromeUINetExportHost[];
@@ -1022,12 +1022,12 @@ diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_const
 diff --git a/components/policy/core/browser/proxy_policy_handler.cc b/components/policy/core/browser/proxy_policy_handler.cc
 --- a/components/policy/core/browser/proxy_policy_handler.cc
 +++ b/components/policy/core/browser/proxy_policy_handler.cc
-@@ -203,7 +203,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
+@@ -199,7 +199,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
+           bypass_list->GetAsString(&bypass_list_string);
          prefs->SetValue(proxy_config::prefs::kProxy,
-                         std::make_unique<base::Value>(
-                             ProxyConfigDictionary::CreateFixedServers(
--                                proxy_server, bypass_list_string)));
-+                                proxy_server, bypass_list_string, false)));
+                         ProxyConfigDictionary::CreateFixedServers(
+-                            proxy_server, bypass_list_string));
++                            proxy_server, bypass_list_string, false));
        }
        break;
      }

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

@@ -19,7 +19,7 @@ clicked links to launch as incognito.
 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
-@@ -40,6 +40,11 @@
+@@ -39,6 +39,11 @@
          android:key="usage_and_crash_reports"
          android:title="@string/usage_and_crash_reports_title_legacy"
          android:fragment="org.chromium.chrome.browser.preferences.privacy.UsageAndCrashReportsPreferenceFragment" />
@@ -112,7 +112,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
-@@ -261,6 +261,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -260,6 +260,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
  
      // Observes when sync becomes ready to create the mContextReporter.
@@ -120,7 +120,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener;
  
      @Nullable
-@@ -1728,6 +1729,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1731,6 +1732,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -151,7 +151,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
      private AppMenu mAppMenu;
      private AppMenuDragHelper mAppMenuDragHelper;
      private Menu mMenu;
-@@ -167,6 +171,14 @@ public class AppMenuHandler {
+@@ -182,6 +186,14 @@ public class AppMenuHandler {
          if (mDelegate.shouldShowHeader(appRect.height())) {
              headerResourceId = mDelegate.getHeaderResourceId();
          }
@@ -164,8 +164,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
 +        }
 +
          mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
-                 footerResourceId, headerResourceId, mHighlightMenuId, showFromBottom);
-         mAppMenuDragHelper.onShow(startDragging);
+                 footerResourceId, headerResourceId, mHighlightMenuId, mCircleHighlight,
+                 showFromBottom);
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -216,12 +216,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
 @@ -16,6 +18,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
  import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
  import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.tab.TabDelegateFactory;
+ import org.chromium.chrome.browser.tab.TabBuilder;
 +import org.chromium.chrome.browser.tab.TabObserver;
+ import org.chromium.chrome.browser.tab.TabDelegateFactory;
+ import org.chromium.chrome.browser.tab.TabParentIntent;
  import org.chromium.chrome.browser.tab.TabRedirectHandler;
- import org.chromium.chrome.browser.tab.TabState;
- import org.chromium.chrome.browser.util.IntentUtils;
-@@ -33,6 +36,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -35,6 +38,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
  
      private final ChromeActivity mActivity;
      private final boolean mIncognito;
@@ -229,7 +229,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  
      private WindowAndroid mNativeWindow;
      private TabModel mTabModel;
-@@ -44,6 +48,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -46,6 +50,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
          mActivity = activity;
          mNativeWindow = nativeWindow;
          mIncognito = incognito;
@@ -241,7 +241,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
      }
  
      @Override
-@@ -154,6 +163,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -170,6 +179,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
                          tab.getWebContents());
              }
  
@@ -252,9 +252,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
              mTabModel.addTab(tab, position, type);
              return tab;
          } finally {
-@@ -178,6 +191,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
-         Tab tab = Tab.createLiveTab(
-                 Tab.INVALID_TAB_ID, mIncognito, mNativeWindow, type, parentId, !openInForeground);
+@@ -198,6 +211,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+                           .setLaunchType(type)
+                           .build();
          tab.initialize(webContents, mTabContentManager, delegateFactory, !openInForeground, false);
 +
 +        if (mExtraLogic != null) {
@@ -264,7 +264,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mTabModel.addTab(tab, position, type);
          return true;
      }
-@@ -220,7 +238,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -240,7 +258,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
       */
      public Tab launchUrlFromExternalApp(String url, String referer, String headers,
              String appId, boolean forceNewTab, Intent intent, long intentTimestamp) {
@@ -272,7 +272,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
  
          // If an external app sends an intent for a Weblite URL and the Data Reduction Proxy is
-@@ -280,6 +297,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -304,6 +321,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
          tab.initialize(
                  null, mTabContentManager, createDefaultTabDelegateFactory(), !selectTab, false);
          assert state.isIncognito() == mIncognito;
@@ -287,7 +287,7 @@ 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
-@@ -685,6 +685,12 @@ CHAR-LIMIT guidelines:
+@@ -722,6 +722,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>

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

@@ -46,21 +46,21 @@ diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/
 +++ b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
 @@ -22,6 +22,20 @@
              app:showAsAction="ifRoom"
-             app:iconTint="@color/dark_mode_tint" />
+             app:iconTint="@color/standard_mode_tint" />
          <item
 +            android:id="@+id/import_menu_id"
 +            android:icon="@drawable/ic_folder_blue_24dp"
 +            android:title="@string/import_bookmarks"
 +            android:visible="true"
 +            app:showAsAction="ifRoom"
-+            app:iconTint="@color/dark_mode_tint" />
++            app:iconTint="@color/standard_mode_tint" />
 +        <item
 +            android:id="@+id/export_menu_id"
 +            android:icon="@drawable/ic_file_download_white_24dp"
 +            android:title="@string/export_bookmarks"
 +            android:visible="true"
 +            app:showAsAction="ifRoom"
-+            app:iconTint="@color/dark_mode_tint" />
++            app:iconTint="@color/standard_mode_tint" />
 +        <item
              android:id="@+id/close_menu_id"
              android:icon="@drawable/btn_close"
@@ -185,7 +185,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  
  import java.util.ArrayList;
  import java.util.List;
-@@ -508,6 +516,24 @@ public class BookmarkBridge {
+@@ -507,6 +515,24 @@ public class BookmarkBridge {
      }
  
      /**
@@ -210,7 +210,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
       * Synchronously gets a list of bookmarks that match the specified search query.
       * @param query Keyword used for searching bookmarks.
       * @param maxNumberOfResult Maximum number of result to fetch.
-@@ -840,6 +866,24 @@ public class BookmarkBridge {
+@@ -839,6 +865,24 @@ public class BookmarkBridge {
          depthList.add(depth);
      }
  
@@ -235,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
          List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
          for (int i = 0; i < left.length; i++) {
-@@ -906,6 +950,8 @@ public class BookmarkBridge {
+@@ -905,6 +949,8 @@ public class BookmarkBridge {
              boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
      private native BookmarkId nativeGetChildAt(long nativeBookmarkBridge, long id, int type,
              int index);
@@ -336,7 +336,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 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
-@@ -224,6 +224,12 @@ CHAR-LIMIT guidelines:
+@@ -233,6 +233,12 @@ CHAR-LIMIT guidelines:
        <message name="IDS_SEARCH" desc="The label for a search button.">
          Search
        </message>
@@ -363,7 +363,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "bookmarks/bookmark_model_factory.cc",
      "bookmarks/bookmark_model_factory.h",
      "bookmarks/bookmark_stats.cc",
-@@ -2665,8 +2669,6 @@ jumbo_split_static_library("browser") {
+@@ -2769,8 +2773,6 @@ jumbo_split_static_library("browser") {
        "banners/app_banner_infobar_delegate_desktop.h",
        "banners/app_banner_manager_desktop.cc",
        "banners/app_banner_manager_desktop.h",
@@ -372,7 +372,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
        "certificate_viewer.h",
        "chrome_browser_field_trials_desktop.cc",
        "chrome_browser_field_trials_desktop.h",
-@@ -2755,8 +2757,6 @@ jumbo_split_static_library("browser") {
+@@ -2859,8 +2861,6 @@ jumbo_split_static_library("browser") {
        "importer/importer_uma.h",
        "importer/in_process_importer_bridge.cc",
        "importer/in_process_importer_bridge.h",
@@ -384,13 +384,14 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
 --- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
 +++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
-@@ -9,18 +9,29 @@
+@@ -9,19 +9,30 @@
  
  #include <memory>
  
 +#include "base/android/content_uri_utils.h"
  #include "base/android/jni_array.h"
  #include "base/android/jni_string.h"
+ #include "base/bind.h"
 +#include "base/android/path_utils.h"
  #include "base/containers/stack.h"
  #include "base/containers/stack_container.h"
@@ -414,7 +415,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  #include "components/bookmarks/browser/bookmark_model.h"
  #include "components/bookmarks/browser/bookmark_utils.h"
  #include "components/bookmarks/browser/scoped_group_bookmark_actions.h"
-@@ -30,10 +41,13 @@
+@@ -31,10 +42,13 @@
  #include "components/bookmarks/managed/managed_bookmark_service.h"
  #include "components/prefs/pref_service.h"
  #include "components/query_parser/query_parser.h"
@@ -428,7 +429,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  #include "services/identity/public/cpp/identity_manager.h"
  
  using base::android::AttachCurrentThread;
-@@ -53,6 +67,57 @@ using bookmarks::BookmarkPermanentNode;
+@@ -54,6 +68,57 @@ using bookmarks::BookmarkPermanentNode;
  using bookmarks::BookmarkType;
  using content::BrowserThread;
  
@@ -486,7 +487,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  namespace {
  
  class BookmarkTitleComparer {
-@@ -129,6 +194,10 @@ BookmarkBridge::~BookmarkBridge() {
+@@ -130,6 +195,10 @@ BookmarkBridge::~BookmarkBridge() {
    bookmark_model_->RemoveObserver(this);
    if (partner_bookmarks_shim_)
      partner_bookmarks_shim_->RemoveObserver(this);
@@ -497,7 +498,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  }
  
  void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
-@@ -474,6 +543,152 @@ jint BookmarkBridge::GetTotalBookmarkCount(
+@@ -475,6 +544,152 @@ jint BookmarkBridge::GetTotalBookmarkCount(
    return count;
  }
  
@@ -517,7 +518,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
 +  //NOTE: extension and description are not used on Android, thus not set
 +  ui::SelectFileDialog::FileTypeInfo file_type_info;
 +
-+  static const std::vector<base::string16> v_accept_types = { base::UTF8ToUTF16("text/html") };
++  const std::vector<base::string16> v_accept_types = { base::UTF8ToUTF16("text/html") };
 +
 +  // Android needs the original MIME types and an additional capture value.
 +  std::pair<std::vector<base::string16>, bool> accept_types =
@@ -775,7 +776,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/
 diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 --- a/chrome/common/BUILD.gn
 +++ b/chrome/common/BUILD.gn
-@@ -440,6 +440,9 @@ static_library("common") {
+@@ -438,6 +438,9 @@ static_library("common") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
@@ -788,7 +789,7 @@ diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
 --- a/chrome/utility/BUILD.gn
 +++ b/chrome/utility/BUILD.gn
-@@ -61,8 +61,6 @@ static_library("utility") {
+@@ -60,8 +60,6 @@ static_library("utility") {
  
    if (!is_android) {
      sources += [
@@ -797,7 +798,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",
-@@ -173,6 +171,11 @@ static_library("utility") {
+@@ -170,6 +168,11 @@ static_library("utility") {
      }
    }
  
@@ -918,7 +919,7 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/imp
 diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
-@@ -32,6 +32,7 @@ import org.chromium.base.task.AsyncTask;
+@@ -34,6 +34,7 @@ import org.chromium.base.task.TaskTraits;
  import org.chromium.ui.ContactsPickerListener;
  import org.chromium.ui.PhotoPickerListener;
  import org.chromium.ui.R;
@@ -926,7 +927,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
  import org.chromium.ui.UiUtils;
  
  import java.io.File;
-@@ -52,6 +53,7 @@ public class SelectFileDialog
+@@ -54,6 +55,7 @@ public class SelectFileDialog
      private static final String IMAGE_TYPE = "image/";
      private static final String VIDEO_TYPE = "video/";
      private static final String AUDIO_TYPE = "audio/";
@@ -934,7 +935,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
      private static final String ALL_IMAGE_TYPES = IMAGE_TYPE + "*";
      private static final String ALL_VIDEO_TYPES = VIDEO_TYPE + "*";
      private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
-@@ -130,6 +132,11 @@ public class SelectFileDialog
+@@ -132,6 +134,11 @@ public class SelectFileDialog
          mFileTypes = fileTypes;
      }
  
@@ -946,16 +947,16 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
      /**
       * Creates and starts an intent based on the passed fileTypes and capture value.
       * @param fileTypes MIME types requested (i.e. "image/*")
-@@ -159,7 +166,7 @@ public class SelectFileDialog
+@@ -161,7 +168,7 @@ public class SelectFileDialog
              if (!window.hasPermission(Manifest.permission.READ_CONTACTS)) {
                  missingPermissions.add(Manifest.permission.READ_CONTACTS);
              }
 -        } else if (shouldUsePhotoPicker()) {
 +        } else if (shouldUsePhotoPicker() || shouldShowHtmlTypes()) {
-             if (!window.hasPermission(Manifest.permission.READ_EXTERNAL_STORAGE)) {
-                 missingPermissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
-             }
-@@ -326,9 +333,7 @@ public class SelectFileDialog
+             if (BuildInfo.isAtLeastQ()) {
+                 String newImagePermission = "android.permission.READ_MEDIA_IMAGES";
+                 if (!window.hasPermission(newImagePermission)) {
+@@ -333,9 +340,7 @@ public class SelectFileDialog
       *   3.) There is a valid Android Activity associated with the file request.
       */
      private boolean shouldUseContactsPicker() {
@@ -966,7 +967,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
      }
  
      /**
-@@ -349,6 +354,7 @@ public class SelectFileDialog
+@@ -356,6 +361,7 @@ public class SelectFileDialog
              }
              if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
          }
@@ -974,7 +975,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
          return mimeTypes;
      }
  
-@@ -652,6 +658,10 @@ public class SelectFileDialog
+@@ -646,6 +652,10 @@ public class SelectFileDialog
          return countAcceptTypesFor(specificType) > 0;
      }
  

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

@@ -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
-@@ -48,6 +48,11 @@
+@@ -47,6 +47,11 @@
          android:title="@string/clear_browsing_data_title"
          android:summary="@string/clear_browsing_data_summary"
          android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
@@ -49,7 +49,7 @@ 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;
-@@ -275,6 +276,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -271,6 +272,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
       */
      public static boolean isCustomTabIntent(Intent intent) {
          if (intent == null) return false;
@@ -60,7 +60,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
 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
-@@ -39,6 +39,7 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -40,6 +40,7 @@ public class PrivacyPreferences extends PreferenceFragment
          implements OnPreferenceChangeListener {
      private static final String PREF_NAVIGATION_ERROR = "navigation_error";
      private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
@@ -68,7 +68,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
      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";
-@@ -104,6 +105,11 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -117,6 +118,11 @@ public class PrivacyPreferences extends PreferenceFragment
          navigationErrorPref.setOnPreferenceChangeListener(this);
          navigationErrorPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  
@@ -80,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
          ChromeBaseCheckBoxPreference searchSuggestionsPref =
                  (ChromeBaseCheckBoxPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
          searchSuggestionsPref.setOnPreferenceChangeListener(this);
-@@ -135,6 +141,10 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -139,6 +145,10 @@ public class PrivacyPreferences extends PreferenceFragment
              recordNetworkPredictionEnablingUMA((boolean) newValue);
          } else if (PREF_NAVIGATION_ERROR.equals(key)) {
              PrefServiceBridge.getInstance().setResolveNavigationErrorEnabled((boolean) newValue);
@@ -94,7 +94,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -4012,6 +4012,13 @@ However, you aren’t invisible. Going private doesn’t hide your browsing from
+@@ -4004,6 +4004,13 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
          Browse
        </message>
  

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

@@ -25,7 +25,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -2138,6 +2138,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2150,6 +2150,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              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
-@@ -3054,6 +3054,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3081,6 +3081,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
          Settings
        </message>

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

@@ -18,7 +18,7 @@ with limited CPU/memory resources and it is disabled by default.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -809,6 +809,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -740,6 +740,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
       net::kEffectiveConnectionType4G},
  };
  
@@ -30,22 +30,22 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  // Ensure that all effective connection types returned by Network Quality
  // Estimator (NQE) are also exposed via flags.
  static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
-@@ -2357,6 +2362,9 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kMaterialDesignIncognitoNTPName,
-      flag_descriptions::kMaterialDesignIncognitoNTPDescription, kOsAndroid,
-      FEATURE_VALUE_TYPE(features::kMaterialDesignIncognitoNTP)},
+@@ -2292,6 +2297,9 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kWebrtcH264WithOpenh264FfmpegDescription, kOsDesktop,
+      FEATURE_VALUE_TYPE(content::kWebRtcH264WithOpenH264FFmpeg)},
+ #endif  // BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
 +    {"max-connections-per-host", flag_descriptions::kMaxConnectionsPerHostName,
 +     flag_descriptions::kMaxConnectionsPerHostDescription, kOsAll,
 +     MULTI_VALUE_TYPE(kMaxConnectionsPerHostChoices)},
-     {"safe-search-url-reporting",
-      flag_descriptions::kSafeSearchUrlReportingName,
-      flag_descriptions::kSafeSearchUrlReportingDescription, kOsAll,
+ #if defined(OS_ANDROID)
+     {"offlining-recent-pages", flag_descriptions::kOffliningRecentPagesName,
+      flag_descriptions::kOffliningRecentPagesDescription, kOsAndroid,
 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
-@@ -1264,6 +1264,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
-     "If enabled, the Incognito New Tab page uses the new material design with "
-     "a better readable text.";
+@@ -1245,6 +1245,10 @@ const char kLookalikeUrlNavigationSuggestionsDescription[] =
+ const char kMarkHttpAsName[] = "Mark non-secure origins as non-secure";
+ const char kMarkHttpAsDescription[] = "Change the UI treatment for HTTP pages";
  
 +const char kMaxConnectionsPerHostName[] = "Maximum connections per host";
 +const char kMaxConnectionsPerHostDescription[] =
@@ -57,9 +57,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -766,6 +766,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
- extern const char kMaterialDesignIncognitoNTPName[];
- extern const char kMaterialDesignIncognitoNTPDescription[];
+@@ -748,6 +748,9 @@ extern const char kMarkHttpAsWarning[];
+ extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
+ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
  
 +extern const char kMaxConnectionsPerHostName[];
 +extern const char kMaxConnectionsPerHostDescription[];
@@ -111,7 +111,7 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
 diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
 --- a/net/socket/client_socket_pool_manager.cc
 +++ b/net/socket/client_socket_pool_manager.cc
-@@ -23,6 +23,10 @@
+@@ -22,6 +22,10 @@
  #include "net/socket/transport_client_socket_pool.h"
  #include "net/socket/transport_connect_job.h"
  #include "net/ssl/ssl_config.h"
@@ -122,7 +122,7 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
  
  namespace net {
  
-@@ -297,6 +301,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
+@@ -285,6 +289,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
  int ClientSocketPoolManager::max_sockets_per_group(
      HttpNetworkSession::SocketPoolType pool_type) {
    DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES);

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

@@ -4,31 +4,30 @@ Subject: Add flag to control video playback resume feature
 
 Disable it by default on Android as it is everywhere else
 ---
- chrome/browser/about_flags.cc       | 5 +++++
+ chrome/browser/about_flags.cc       | 4 ++++
  chrome/browser/flag_descriptions.cc | 5 +++++
  chrome/browser/flag_descriptions.h  | 3 +++
  media/base/media_switches.cc        | 6 +-----
- 4 files changed, 14 insertions(+), 5 deletions(-)
+ 4 files changed, 13 insertions(+), 5 deletions(-)
 
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -3947,6 +3947,11 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(features::kSiteCharacteristicsDatabase)},
- #endif
- 
+@@ -1407,6 +1407,10 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kVideoPlayerChromecastSupportDescription, kOsCrOS,
+      SINGLE_VALUE_TYPE(
+          chromeos::switches::kEnableVideoPlayerChromecastSupport)},
 +    {"resume-background-video",
 +     flag_descriptions::kResumeBackgroundVideoName,
 +     flag_descriptions::kResumeBackgroundVideoDescription, kOsAll,
 +     FEATURE_VALUE_TYPE(media::kResumeBackgroundVideo)},
-+
- #if defined(OS_MACOSX)
-     {"enable-text-suggestions-touch-bar",
-      flag_descriptions::kTextSuggestionsTouchBarName,
+     {"list-all-display-modes", flag_descriptions::kListAllDisplayModesName,
+      flag_descriptions::kListAllDisplayModesDescription, kOsCrOS,
+      FEATURE_VALUE_TYPE(display::features::kListAllDisplayModes)},
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -833,6 +833,11 @@ const char kEnablePictureInPictureDescription[] =
+@@ -840,6 +840,11 @@ const char kEnablePictureInPictureDescription[] =
      "controls. The #enable-surfaces-for-videos flag must be enabled as well "
      "to use it.";
  
@@ -43,7 +42,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -502,6 +502,9 @@ extern const char kOOPHPStackModePseudo[];
+@@ -495,6 +495,9 @@ extern const char kEnableNewDownloadBackendDescription[];
  extern const char kEnablePictureInPictureName[];
  extern const char kEnablePictureInPictureDescription[];
  
@@ -56,7 +55,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -212,11 +212,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -205,11 +205,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",

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

@@ -14,7 +14,7 @@ Subject: Add flag to disable IPv6 probes
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -3269,6 +3269,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2975,6 +2975,11 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kHandwritingGesture)},
  #endif  // OS_CHROMEOS
  
@@ -29,7 +29,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
-@@ -835,6 +835,10 @@ const char kOOPHPStackModeNative[] = "Native";
+@@ -842,6 +842,10 @@ const char kOOPHPStackModeNative[] = "Native";
  const char kOOPHPStackModeNativeWithThreadNames[] = "Native with thread names";
  const char kOOPHPStackModePseudo[] = "Trace events";
  
@@ -43,9 +43,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -505,6 +505,9 @@ extern const char kOOPHPStackModeNative[];
- extern const char kOOPHPStackModeNativeWithThreadNames[];
- extern const char kOOPHPStackModePseudo[];
+@@ -498,6 +498,9 @@ extern const char kDownloadAutoResumptionNativeDescription[];
+ extern const char kEnableNewDownloadBackendName[];
+ extern const char kEnableNewDownloadBackendDescription[];
  
 +extern const char kIPv6ProbingName[];
 +extern const char kIPv6ProbingDescription[];
@@ -56,7 +56,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 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
-@@ -82,6 +82,7 @@
+@@ -81,6 +81,7 @@
  #include "net/log/net_log_with_source.h"
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/datagram_client_socket.h"
@@ -64,7 +64,7 @@ diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
  #include "url/url_canon_ip.h"
  
  #if BUILDFLAG(ENABLE_MDNS)
-@@ -2874,8 +2875,13 @@ bool HostResolverImpl::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -2751,8 +2752,13 @@ bool HostResolverImpl::IsIPv6Reachable(const NetLogWithSource& net_log) {
    bool cached = true;
    if ((tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
        kIPv6ProbePeriodMs) {
@@ -83,7 +83,7 @@ diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
 diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
 --- a/services/network/public/cpp/features.cc
 +++ b/services/network/public/cpp/features.cc
-@@ -14,6 +14,9 @@ const base::Feature kExpectCTReporting{"ExpectCTReporting",
+@@ -16,6 +16,9 @@ const base::Feature kExpectCTReporting{"ExpectCTReporting",
  
  const base::Feature kNetworkErrorLogging{"NetworkErrorLogging",
                                           base::FEATURE_ENABLED_BY_DEFAULT};
@@ -91,8 +91,8 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c
 +const base::Feature kIPv6Probing{"IPv6Probing",
 +                                       base::FEATURE_DISABLED_BY_DEFAULT};
  // Enables the network service.
- const base::Feature kNetworkService{"NetworkService",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kNetworkService {
+   "NetworkService",
 diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
 --- a/services/network/public/cpp/features.h
 +++ b/services/network/public/cpp/features.h

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

@@ -20,7 +20,7 @@ legacy acceleration events.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2770,6 +2770,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2473,6 +2473,12 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-generic-sensor", flag_descriptions::kEnableGenericSensorName,
       flag_descriptions::kEnableGenericSensorDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kGenericSensor)},
@@ -36,7 +36,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -599,6 +599,14 @@ const char kEnableGenericSensorDescription[] =
+@@ -600,6 +600,14 @@ const char kEnableGenericSensorDescription[] =
      "Accelerometer, LinearAccelerationSensor, Gyroscope, "
      "AbsoluteOrientationSensor and RelativeOrientationSensor interfaces.";
  
@@ -54,7 +54,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -391,6 +391,12 @@ extern const char kEnableEnumeratingAudioDevicesDescription[];
+@@ -382,6 +382,12 @@ extern const char kEnforceTLS13DowngradeDescription[];
  extern const char kEnableGenericSensorName[];
  extern const char kEnableGenericSensorDescription[];
  
@@ -70,7 +70,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -144,6 +144,9 @@ void SetRuntimeFeaturesDefaultsAndUpdateFromArgs(
+@@ -93,6 +93,9 @@ void SetIndividualRuntimeFeatures(
        base::FeatureList::IsEnabled(features::kSharedArrayBuffer) ||
        base::FeatureList::IsEnabled(features::kWebAssemblyThreads));
  
@@ -83,10 +83,10 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -596,6 +596,16 @@ const base::Feature kWebRtcHideLocalIpsWithMdns{
- // https://wicg.github.io/webusb
- const base::Feature kWebUsb{"WebUSB", base::FEATURE_ENABLED_BY_DEFAULT};
- 
+@@ -596,6 +596,16 @@ const base::Feature kExperimentalProductivityFeatures{
+ // TODO(rouslan): Remove this.
+ const base::Feature kWebPayments{"WebPayments",
+                                  base::FEATURE_ENABLED_BY_DEFAULT};
 +// Enables the device motion API used to track device acceleration;
 +// no user authorization or notifications happens when in use.
 +const base::Feature kDeviceMotion{"DeviceMotion",
@@ -97,14 +97,14 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
 +const base::Feature kDeviceOrientation{"DeviceOrientation",
 +                                    base::FEATURE_DISABLED_BY_DEFAULT};
 +
- // Controls whether WebVR VSync-aligned render loop timing is enabled.
- const base::Feature kWebVrVsyncAlign{"WebVrVsyncAlign",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
+ 
+ // Makes WebRTC use ECDSA certs by default (i.e., when no cert type was
+ // specified in JS).
 diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
 --- a/content/public/common/content_features.h
 +++ b/content/public/common/content_features.h
-@@ -155,6 +155,8 @@ CONTENT_EXPORT extern const char kWebXrRenderPathParamValueGpuFence[];
- CONTENT_EXPORT extern const char kWebXrRenderPathParamValueSharedBuffer[];
+@@ -158,6 +158,8 @@ CONTENT_EXPORT extern const base::Feature kWarmUpNetworkProcess;
+ CONTENT_EXPORT extern const base::Feature kWebNfc;
  #endif  // defined(OS_ANDROID)
  
 +CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
@@ -115,7 +115,7 @@ diff --git a/content/public/common/content_features.h b/content/public/common/co
 diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
 --- a/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
-@@ -95,6 +95,8 @@ class WebRuntimeFeatures {
+@@ -97,6 +97,8 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
    BLINK_PLATFORM_EXPORT static void EnableKeyboardFocusableScrollers(bool);
    BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
@@ -123,7 +123,7 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa
 +  BLINK_PLATFORM_EXPORT static void EnableDeviceOrientation(bool);
    BLINK_PLATFORM_EXPORT static void EnableDecodeToYUV(bool);
    BLINK_PLATFORM_EXPORT static void EnableDisplayCutoutAPI(bool);
-   BLINK_PLATFORM_EXPORT static void EnableFastMobileScrolling(bool);
+   BLINK_PLATFORM_EXPORT static void EnableFallbackCursorMode(bool);
 diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
 --- a/third_party/blink/renderer/modules/modules_initializer.cc
 +++ b/third_party/blink/renderer/modules/modules_initializer.cc
@@ -146,7 +146,7 @@ diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_p
 diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
-@@ -160,6 +160,14 @@ void WebRuntimeFeatures::EnableDatabase(bool enable) {
+@@ -165,6 +165,14 @@ void WebRuntimeFeatures::EnableDatabase(bool enable) {
    RuntimeEnabledFeatures::SetDatabaseEnabled(enable);
  }
  
@@ -164,7 +164,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -374,6 +374,14 @@
+@@ -409,6 +409,14 @@
        status: "stable",
      },
      {

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

@@ -75,9 +75,9 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -2239,6 +2239,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-             final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAgent();
-             currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnChange);
+@@ -2253,6 +2253,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             currentTab.getWebContents().getNavigationController().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();
@@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -1720,6 +1720,14 @@ public class ChromeTabbedActivity
+@@ -1857,6 +1857,14 @@ public class ChromeTabbedActivity
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
  import org.chromium.chrome.browser.ShortcutHelper;
  import org.chromium.chrome.browser.UrlConstants;
  import org.chromium.chrome.browser.banners.AppBannerManager;
-@@ -197,6 +198,8 @@ public class AppMenuPropertiesDelegate {
+@@ -196,6 +197,8 @@ public class AppMenuPropertiesDelegate {
  
              updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
  
@@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3039,6 +3039,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3066,6 +3066,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_FIND_IN_PAGE" desc="Menu item allowing users to find text within the current page. [CHAR-LIMIT=27]">
          Find in page
        </message>

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

@@ -41,7 +41,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -1005,8 +1005,10 @@ public class ChromeTabbedActivity
+@@ -1138,8 +1138,10 @@ public class ChromeTabbedActivity
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -72,7 +72,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
  import org.chromium.base.BuildInfo;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.chrome.R;
-@@ -43,6 +45,7 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -44,6 +46,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";
@@ -80,9 +80,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
      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";
-@@ -94,6 +97,11 @@ public class PrivacyPreferences extends PreferenceFragment
-         preferenceScreen.removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
-         preferenceScreen.removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
+@@ -71,6 +74,11 @@ public class PrivacyPreferences extends PreferenceFragment
+                 (ChromeBaseCheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
+         canMakePaymentPref.setOnPreferenceChangeListener(this);
  
 +        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
          ChromeBaseCheckBoxPreference networkPredictionPref =
                  (ChromeBaseCheckBoxPreference) findPreference(PREF_NETWORK_PREDICTIONS);
          networkPredictionPref.setChecked(prefServiceBridge.getNetworkPredictionEnabled());
-@@ -139,6 +147,12 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -143,6 +151,12 @@ public class PrivacyPreferences extends PreferenceFragment
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
              recordNetworkPredictionEnablingUMA((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
-@@ -3893,6 +3893,12 @@ However, you aren’t invisible. Going private doesn’t hide your browsing from
+@@ -3880,6 +3880,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
          IMAGE
        </message>

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

@@ -157,7 +157,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCre
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -637,6 +637,9 @@ CHAR-LIMIT guidelines:
+@@ -674,6 +674,9 @@ CHAR-LIMIT guidelines:
        <message name="IDS_OPTIONS_HOMEPAGE_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is opened when they tap on the home page button in the omnibox.">
          Open this page
        </message>
@@ -182,7 +182,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
 diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 --- a/chrome/common/pref_names.cc
 +++ b/chrome/common/pref_names.cc
-@@ -57,6 +57,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode";
+@@ -58,6 +58,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode";
  // A boolean specifying whether the New Tab page is the home page or not.
  const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage";
  
@@ -196,8 +196,8 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
 --- a/chrome/common/pref_names.h
 +++ b/chrome/common/pref_names.h
-@@ -292,6 +292,7 @@ extern const char kMostRecentlyUsedNetworkFileShareURL[];
- extern const char kParentAccessCodeConfig[];
+@@ -293,6 +293,7 @@ extern const char kParentAccessCodeConfig[];
+ extern const char kDeviceWallpaperImageFilePath[];
  #endif  // defined(OS_CHROMEOS)
  extern const char kShowHomeButton[];
 +extern const char kNewTabPageIsHomePage[];

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

@@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          } else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
              prefServiceBridge.setBlockThirdPartyCookiesEnabled(((boolean) newValue));
          } else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
-@@ -768,6 +772,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -769,6 +773,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
          TriStateSiteSettingsPreference triStateToggle =
                  (TriStateSiteSettingsPreference) screen.findPreference(TRI_STATE_TOGGLE_KEY);
          Preference thirdPartyCookies = screen.findPreference(THIRD_PARTY_COOKIES_TOGGLE_KEY);
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
          Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
          PreferenceGroup allowedGroup = (PreferenceGroup) screen.findPreference(ALLOWED_GROUP);
-@@ -798,6 +804,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -799,6 +805,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
  
          if (hideSecondaryToggles) {
              screen.removePreference(thirdPartyCookies);
@@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
              screen.removePreference(notificationsVibrate);
              screen.removePreference(explainProtectedMediaKey);
              screen.removePreference(allowedGroup);
-@@ -807,12 +814,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -808,12 +815,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
              return;
          }
  
@@ -144,7 +144,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          }
  
          // Configure/hide the notifications vibrate toggle, as needed.
-@@ -917,6 +927,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -918,6 +928,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
                  preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
      }
  
@@ -163,7 +163,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -876,6 +876,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -913,6 +913,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_BLOCK_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Block Third Party Cookies preference">
          Prevent third-party websites from saving and reading cookie data
        </message>
@@ -179,7 +179,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
-@@ -310,6 +310,17 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
+@@ -311,6 +311,17 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
    return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
  }
  
@@ -197,7 +197,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) {
-@@ -767,6 +778,20 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
+@@ -768,6 +779,20 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
    GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
  }
  

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

@@ -14,15 +14,15 @@ Fix build from scratch (issue found by nikolowry)
  chrome/browser/download/download_item_model.cc     | 10 ++++++
  chrome/browser/download/download_item_model.h      |  4 +++
  chrome/browser/download/download_prefs.cc          |  4 +++
- .../browser/download/download_target_determiner.cc | 18 ++++++++++
+ .../browser/download/download_target_determiner.cc | 22 ++++++++++++
  .../browser/download/download_target_determiner.h  |  6 ++++
  chrome/browser/download/download_target_info.cc    |  4 +++
  chrome/browser/download/download_target_info.h     |  4 +++
  chrome/browser/download/download_ui_model.cc       |  4 +++
  chrome/browser/download/download_ui_model.h        |  4 +++
- .../chrome_resource_dispatcher_host_delegate.cc    |  4 +++
+ .../chrome_resource_dispatcher_host_delegate.cc    |  2 ++
  chrome/browser/net/chrome_network_delegate.cc      | 35 ++-----------------
- 18 files changed, 85 insertions(+), 112 deletions(-)
+ 18 files changed, 87 insertions(+), 112 deletions(-)
 
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
@@ -45,7 +45,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/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
-@@ -39,9 +39,6 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -40,9 +40,6 @@ public class PrivacyPreferences extends PreferenceFragment
          implements OnPreferenceChangeListener {
      private static final String PREF_NAVIGATION_ERROR = "navigation_error";
      private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
@@ -55,16 +55,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
      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";
-@@ -76,8 +73,6 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -83,8 +80,6 @@ public class PrivacyPreferences extends PreferenceFragment
              // Remove preferences that were migrated to SyncAndServicesPreferences.
              preferenceScreen.removePreference(findPreference(PREF_NAVIGATION_ERROR));
              preferenceScreen.removePreference(findPreference(PREF_SEARCH_SUGGESTIONS));
 -            preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING));
 -            preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING));
-             preferenceScreen.removePreference(findPreference(PREF_NETWORK_PREDICTIONS));
              preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
              preferenceScreen.removePreference(findPreference(PREF_USAGE_AND_CRASH_REPORTING));
-@@ -118,17 +113,6 @@ public class PrivacyPreferences extends PreferenceFragment
+ 
+@@ -131,17 +126,6 @@ public class PrivacyPreferences extends PreferenceFragment
              preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
          }
  
@@ -79,10 +79,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 -        safeBrowsingPref.setOnPreferenceChangeListener(this);
 -        safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
 -
-         if (BuildInfo.isAtLeastQ()) {
-             ChromeBaseCheckBoxPreference usageStatsPref =
-                     (ChromeBaseCheckBoxPreference) findPreference(PREF_USAGE_STATS);
-@@ -146,11 +130,6 @@ public class PrivacyPreferences extends PreferenceFragment
+         updateSummaries();
+     }
+ 
+@@ -150,11 +134,6 @@ public class PrivacyPreferences extends PreferenceFragment
          String key = preference.getKey();
          if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
              PrefServiceBridge.getInstance().setSearchSuggestEnabled((boolean) newValue);
@@ -94,7 +94,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
              recordNetworkPredictionEnablingUMA((boolean) newValue);
-@@ -202,19 +181,6 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -206,19 +185,6 @@ public class PrivacyPreferences extends PreferenceFragment
              searchSuggestionsPref.setChecked(prefServiceBridge.isSearchSuggestEnabled());
          }
  
@@ -114,7 +114,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
          CheckBoxPreference canMakePaymentPref =
                  (CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
          if (canMakePaymentPref != null) {
-@@ -256,12 +222,6 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -267,12 +233,6 @@ public class PrivacyPreferences extends PreferenceFragment
              if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
                  return prefs.isSearchSuggestManaged();
              }
@@ -130,7 +130,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
 +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
-@@ -243,16 +243,6 @@ bool DoesOriginMatchEmbedderMask(int origin_type_mask,
+@@ -250,16 +250,6 @@ bool DoesOriginMatchEmbedderMask(int origin_type_mask,
    return false;
  }
  
@@ -150,7 +150,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -110,7 +110,6 @@
+@@ -115,7 +115,6 @@
  #include "chrome/browser/safe_browsing/certificate_reporting_service.h"
  #include "chrome/browser/safe_browsing/certificate_reporting_service_factory.h"
  #include "chrome/browser/safe_browsing/chrome_password_protection_service.h"
@@ -158,7 +158,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #include "chrome/browser/safe_browsing/safe_browsing_service.h"
  #include "chrome/browser/safe_browsing/ui_manager.h"
  #include "chrome/browser/safe_browsing/url_checker_delegate_impl.h"
-@@ -4256,11 +4255,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4248,11 +4247,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
        PreviewsLitePageDecider::MaybeCreateThrottleFor(handle);
    if (previews_lite_page_throttle)
      throttles.push_back(std::move(previews_lite_page_throttle));
@@ -170,7 +170,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  
  #if defined(OS_WIN) || defined(OS_MACOSX) || \
      (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-@@ -5130,19 +5124,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
+@@ -5192,19 +5186,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
      content::ResourceContext* resource_context) {
    DCHECK_CURRENTLY_ON(BrowserThread::IO);
  
@@ -207,7 +207,7 @@ diff --git a/chrome/browser/component_updater/file_type_policies_component_insta
 diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
 --- a/chrome/browser/download/chrome_download_manager_delegate.cc
 +++ b/chrome/browser/download/chrome_download_manager_delegate.cc
-@@ -38,8 +38,10 @@
+@@ -39,8 +39,10 @@
  #include "chrome/browser/download/save_package_file_picker.h"
  #include "chrome/browser/platform_util.h"
  #include "chrome/browser/profiles/profile.h"
@@ -218,8 +218,8 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  #include "chrome/browser/ui/browser.h"
  #include "chrome/browser/ui/browser_finder.h"
  #include "chrome/browser/ui/chrome_pages.h"
-@@ -49,7 +51,9 @@
- #include "chrome/common/chrome_features.h"
+@@ -51,7 +53,9 @@
+ #include "chrome/common/chrome_paths.h"
  #include "chrome/common/pdf_util.h"
  #include "chrome/common/pref_names.h"
 +#if defined(FULL_SAFE_BROWSING)
@@ -228,10 +228,10 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  #include "chrome/grit/generated_resources.h"
  #include "components/download/public/common/download_interrupt_reasons.h"
  #include "components/download/public/common/download_item.h"
-@@ -101,8 +105,10 @@
- using content::BrowserThread;
+@@ -106,8 +110,10 @@ using content::DownloadManager;
  using download::DownloadItem;
- using content::DownloadManager;
+ using download::DownloadPathReservationTracker;
+ using download::PathValidationResult;
 +#if defined(FULL_SAFE_BROWSING)
  using safe_browsing::DownloadFileType;
  using safe_browsing::DownloadProtectionService;
@@ -239,7 +239,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  
  namespace {
  
-@@ -764,19 +770,19 @@ ChromeDownloadManagerDelegate::ApplicationClientIdForFileScanning() const {
+@@ -768,19 +774,19 @@ ChromeDownloadManagerDelegate::ApplicationClientIdForFileScanning() const {
    return std::string(chrome::kApplicationClientIDStringForAVScanning);
  }
  
@@ -261,7 +261,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  
  void ChromeDownloadManagerDelegate::NotifyExtensions(
      DownloadItem* download,
-@@ -1219,13 +1225,17 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
+@@ -1222,13 +1228,17 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
        DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
  #endif
  
@@ -282,8 +282,8 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
 diff --git a/chrome/browser/download/chrome_download_manager_delegate.h b/chrome/browser/download/chrome_download_manager_delegate.h
 --- a/chrome/browser/download/chrome_download_manager_delegate.h
 +++ b/chrome/browser/download/chrome_download_manager_delegate.h
-@@ -22,8 +22,10 @@
- #include "chrome/browser/download/download_path_reservation_tracker.h"
+@@ -21,8 +21,10 @@
+ #include "build/build_config.h"
  #include "chrome/browser/download/download_target_determiner_delegate.h"
  #include "chrome/browser/download/download_target_info.h"
 +#if defined(FULL_SAFE_BROWSING)
@@ -292,8 +292,8 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.h b/chrome
 +#endif
  #include "components/download/public/common/download_danger_type.h"
  #include "components/download/public/common/download_item.h"
- #include "content/public/browser/download_manager_delegate.h"
-@@ -131,8 +133,10 @@ class ChromeDownloadManagerDelegate
+ #include "components/download/public/common/download_path_reservation_tracker.h"
+@@ -134,8 +136,10 @@ class ChromeDownloadManagerDelegate
    DownloadPrefs* download_prefs() { return download_prefs_.get(); }
  
   protected:
@@ -304,7 +304,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.h b/chrome
  
    // Show file picker for |download|.
    virtual void ShowFilePickerForDownload(
-@@ -197,9 +201,11 @@ class ChromeDownloadManagerDelegate
+@@ -201,9 +205,11 @@ class ChromeDownloadManagerDelegate
                 const content::NotificationSource& source,
                 const content::NotificationDetails& details) override;
  
@@ -430,7 +430,7 @@ diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download
 diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc
 --- a/chrome/browser/download/download_target_determiner.cc
 +++ b/chrome/browser/download/download_target_determiner.cc
-@@ -22,7 +22,9 @@
+@@ -23,7 +23,9 @@
  #include "chrome/browser/history/history_service_factory.h"
  #include "chrome/browser/profiles/profile.h"
  #include "chrome/common/pref_names.h"
@@ -440,10 +440,10 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
  #include "chrome/grit/generated_resources.h"
  #include "components/download/public/common/download_interrupt_reasons.h"
  #include "components/history/core/browser/history_service.h"
-@@ -56,13 +58,16 @@
- 
+@@ -59,13 +61,16 @@
  using content::BrowserThread;
  using download::DownloadItem;
+ using download::DownloadPathReservationTracker;
 +#if defined(FULL_SAFE_BROWSING)
  using safe_browsing::DownloadFileType;
 +#endif
@@ -457,7 +457,7 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
  // Condenses the results from HistoryService::GetVisibleVisitCountToHost() to a
  // single bool. A host is considered visited before if prior visible visits were
  // found in history and the first such visit was earlier than the most recent
-@@ -76,6 +81,7 @@ void VisitCountsToVisitedBefore(
+@@ -79,6 +84,7 @@ void VisitCountsToVisitedBefore(
        found_visits && count > 0 &&
        (first_visit.LocalMidnight() < base::Time::Now().LocalMidnight()));
  }
@@ -465,7 +465,7 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
  
  #if defined(OS_WIN)
  // Keeps track of whether Adobe Reader is up to date.
-@@ -100,7 +106,9 @@ DownloadTargetDeterminer::DownloadTargetDeterminer(
+@@ -103,7 +109,9 @@ DownloadTargetDeterminer::DownloadTargetDeterminer(
        create_target_directory_(false),
        conflict_action_(conflict_action),
        danger_type_(download->GetDangerType()),
@@ -475,7 +475,20 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
        virtual_path_(initial_virtual_path),
        is_filetype_handled_safely_(false),
  #if defined(OS_ANDROID)
-@@ -719,6 +727,7 @@ DownloadTargetDeterminer::Result
+@@ -259,8 +267,12 @@ DownloadTargetDeterminer::Result
+     // |suggested_filename| and Content-Disposition header have higher priority
+     // than the URL.
+     bool safe_file_ext =
++#if defined(FULL_SAFE_BROWSING)
+         !safe_browsing::FileTypePolicies::GetInstance()->IsCheckedBinaryFile(
+             generated_filename);
++#else
++        true;
++#endif
+     net::HttpContentDisposition content_disposition_header(
+         download_->GetContentDisposition(), referrer_charset);
+     bool should_replace_extension =
+@@ -749,6 +761,7 @@ DownloadTargetDeterminer::Result
      return CONTINUE;
    }
  
@@ -483,7 +496,7 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
    // First determine the danger level assuming that the user doesn't have any
    // prior visits to the referrer recoreded in history. The resulting danger
    // level would be ALLOW_ON_USER_GESTURE if the level depends on the visit
-@@ -755,6 +764,7 @@ DownloadTargetDeterminer::Result
+@@ -785,6 +798,7 @@ DownloadTargetDeterminer::Result
    // invalid, then assume the referrer has not been visited before.
    if (danger_type_ == download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS)
      danger_type_ = download::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE;
@@ -491,7 +504,7 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
    return CONTINUE;
  }
  
-@@ -762,11 +772,13 @@ void DownloadTargetDeterminer::CheckVisitedReferrerBeforeDone(
+@@ -792,11 +806,13 @@ void DownloadTargetDeterminer::CheckVisitedReferrerBeforeDone(
      bool visited_referrer_before) {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
    DCHECK_EQ(STATE_DETERMINE_INTERMEDIATE_PATH, next_state_);
@@ -505,7 +518,7 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
    DoLoop();
  }
  
-@@ -861,7 +873,9 @@ void DownloadTargetDeterminer::ScheduleCallbackAndDeleteSelf(
+@@ -901,7 +917,9 @@ void DownloadTargetDeterminer::ScheduleCallbackAndDeleteSelf(
              << " Intermediate:" << intermediate_path_.AsUTF8Unsafe()
              << " Confirmation reason:" << static_cast<int>(confirmation_reason_)
              << " Danger type:" << danger_type_
@@ -515,7 +528,7 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
              << " Result:" << static_cast<int>(result);
    std::unique_ptr<DownloadTargetInfo> target_info(new DownloadTargetInfo);
  
-@@ -873,7 +887,9 @@ void DownloadTargetDeterminer::ScheduleCallbackAndDeleteSelf(
+@@ -913,7 +931,9 @@ void DownloadTargetDeterminer::ScheduleCallbackAndDeleteSelf(
             ? DownloadItem::TARGET_DISPOSITION_PROMPT
             : DownloadItem::TARGET_DISPOSITION_OVERWRITE);
    target_info->danger_type = danger_type_;
@@ -525,7 +538,7 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
    target_info->intermediate_path = intermediate_path_;
    target_info->mime_type = mime_type_;
    target_info->is_filetype_handled_safely = is_filetype_handled_safely_;
-@@ -959,6 +975,7 @@ bool DownloadTargetDeterminer::HasPromptedForPath() const {
+@@ -999,6 +1019,7 @@ bool DownloadTargetDeterminer::HasPromptedForPath() const {
                                  DownloadItem::TARGET_DISPOSITION_PROMPT);
  }
  
@@ -533,7 +546,7 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
  DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel(
      PriorVisitsToReferrer visits) const {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
-@@ -990,6 +1007,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel(
+@@ -1030,6 +1051,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel(
  
    return DownloadFileType::NOT_DANGEROUS;
  }
@@ -544,8 +557,8 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/brow
 diff --git a/chrome/browser/download/download_target_determiner.h b/chrome/browser/download/download_target_determiner.h
 --- a/chrome/browser/download/download_target_determiner.h
 +++ b/chrome/browser/download/download_target_determiner.h
-@@ -17,7 +17,9 @@
- #include "chrome/browser/download/download_path_reservation_tracker.h"
+@@ -16,7 +16,9 @@
+ #include "build/build_config.h"
  #include "chrome/browser/download/download_target_determiner_delegate.h"
  #include "chrome/browser/download/download_target_info.h"
 +#if defined(FULL_SAFE_BROWSING)
@@ -553,8 +566,8 @@ diff --git a/chrome/browser/download/download_target_determiner.h b/chrome/brows
 +#endif
  #include "components/download/public/common/download_danger_type.h"
  #include "components/download/public/common/download_item.h"
- #include "content/public/browser/download_manager_delegate.h"
-@@ -297,6 +299,7 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
+ #include "components/download/public/common/download_path_reservation_tracker.h"
+@@ -300,6 +302,7 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
    // operation.
    bool HasPromptedForPath() const;
  
@@ -562,7 +575,7 @@ diff --git a/chrome/browser/download/download_target_determiner.h b/chrome/brows
    // Returns true if this download should show the "dangerous file" warning.
    // Various factors are considered, such as the type of the file, whether a
    // user action initiated the download, and whether the user has explicitly
-@@ -306,6 +309,7 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
+@@ -309,6 +312,7 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
    // to true if the download requires explicit user consent.
    safe_browsing::DownloadFileType::DangerLevel GetDangerLevel(
        PriorVisitsToReferrer visits) const;
@@ -570,9 +583,9 @@ diff --git a/chrome/browser/download/download_target_determiner.h b/chrome/brows
  
    // download::DownloadItem::Observer
    void OnDownloadDestroyed(download::DownloadItem* download) override;
-@@ -317,7 +321,9 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
-   bool create_target_directory_;
-   DownloadPathReservationTracker::FilenameConflictAction conflict_action_;
+@@ -321,7 +325,9 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
+   download::DownloadPathReservationTracker::FilenameConflictAction
+       conflict_action_;
    download::DownloadDangerType danger_type_;
 +#if defined(FULL_SAFE_BROWSING)
    safe_browsing::DownloadFileType::DangerLevel danger_level_;
@@ -689,7 +702,7 @@ diff --git a/chrome/browser/download/download_ui_model.h b/chrome/browser/downlo
 diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
 --- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
 +++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
-@@ -400,14 +400,18 @@ void ChromeResourceDispatcherHostDelegate::AppendStandardResourceThrottles(
+@@ -399,7 +399,9 @@ void ChromeResourceDispatcherHostDelegate::AppendStandardResourceThrottles(
      content::ResourceContext* resource_context,
      ResourceType resource_type,
      std::vector<std::unique_ptr<content::ResourceThrottle>>* throttles) {
@@ -697,17 +710,8 @@ diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b
    ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context);
 +#endif  // defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
  
-   // Insert either safe browsing or data reduction proxy throttle at the front
-   // of the list, so one of them gets to decide if the resource is safe.
+   // Insert safe browsing to decide if the resource is safe.
    content::ResourceThrottle* first_throttle = NULL;
- #if defined(OS_ANDROID)
-+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
-   first_throttle = DataReductionProxyResourceThrottle::MaybeCreate(
-       request, resource_context, resource_type, nullptr);
-+#endif
- #endif  // defined(OS_ANDROID)
- 
- #if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
 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
@@ -731,7 +735,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
  bool IsAccessAllowedInternal(const base::FilePath& path,
                               const base::FilePath& profile_path) {
    if (g_access_to_all_files_enabled)
-@@ -214,26 +201,8 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
+@@ -212,26 +199,8 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
      GURL* new_url) {
    extensions_delegate_->ForwardStartRequestStatus(request);
  

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

@@ -10,7 +10,7 @@ Subject: Allow playing audio in background
 diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
 --- a/media/blink/webmediaplayer_impl.cc
 +++ b/media/blink/webmediaplayer_impl.cc
-@@ -1014,6 +1014,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
+@@ -948,6 +948,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());
-@@ -3297,7 +3303,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
+@@ -3113,7 +3119,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
    // If suspending background video, pause any video that's not remoted or
    // not unlocked to play in the background.
    if (IsBackgroundSuspendEnabled(this)) {
@@ -38,7 +38,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
 diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
 --- a/media/blink/webmediaplayer_impl.h
 +++ b/media/blink/webmediaplayer_impl.h
-@@ -153,6 +153,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
+@@ -141,6 +141,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
    // True if the loaded media has a playable video/audio track.
    bool HasVideo() const override;
    bool HasAudio() const override;

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

@@ -9,7 +9,7 @@ Subject: Always allow partner customisation
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
-@@ -242,14 +242,14 @@ public class PartnerBrowserCustomizations {
+@@ -244,14 +244,14 @@ public class PartnerBrowserCustomizations {
              @Override
              protected Void doInBackground() {
                  try {

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

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

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

@@ -7,19 +7,19 @@ display home page settings.
 This allows removing the home page button and restoring it from settings.
 ---
  .../browser/init/ProcessInitializationHandler.java | 12 --------
- .../partnercustomizations/HomepageManager.java     | 17 ++--------
+ .../partnercustomizations/HomepageManager.java     | 17 ++---------
  .../preferences/ChromePreferenceManager.java       |  7 -----
  .../browser/preferences/MainPreferences.java       | 12 +++-----
- .../chrome/browser/util/FeatureUtilities.java      | 36 ----------------------
+ .../chrome/browser/util/FeatureUtilities.java      | 34 ----------------------
  chrome/browser/about_flags.cc                      |  3 --
  chrome/browser/android/chrome_feature_list.cc      |  4 ---
  chrome/browser/android/chrome_feature_list.h       |  1 -
- 8 files changed, 7 insertions(+), 85 deletions(-)
+ 8 files changed, 7 insertions(+), 83 deletions(-)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
-@@ -328,18 +328,6 @@ public class ProcessInitializationHandler {
+@@ -338,18 +338,6 @@ public class ProcessInitializationHandler {
          deferredStartupHandler.addDeferredTask(new Runnable() {
              @Override
              public void run() {
@@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
-@@ -144,13 +144,6 @@ public class ChromePreferenceManager {
+@@ -147,13 +147,6 @@ public class ChromePreferenceManager {
      private static final String CHROME_MODERN_DESIGN_ENABLED_KEY = "chrome_modern_design_enabled";
  
      /**
@@ -106,8 +106,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Chr
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
-@@ -195,15 +195,11 @@ public class MainPreferences extends PreferenceFragment
- 
+@@ -207,15 +207,11 @@ public class MainPreferences extends PreferenceFragment
+         updateSyncAndServicesPreference();
          updateSearchEnginePreference();
  
 -        if (HomepageManager.shouldShowHomepageSetting()) {
@@ -129,7 +129,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
-@@ -71,7 +71,6 @@ public class FeatureUtilities {
+@@ -73,7 +73,6 @@ public class FeatureUtilities {
      private static Boolean sHasRecognitionIntentHandler;
  
      private static Boolean sIsSoleEnabled;
@@ -137,7 +137,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
      private static Boolean sIsHomepageTileEnabled;
      private static Boolean sIsNewTabPageButtonEnabled;
      private static Boolean sIsBottomToolbarEnabled;
-@@ -186,7 +185,6 @@ public class FeatureUtilities {
+@@ -194,7 +193,6 @@ public class FeatureUtilities {
          cacheSoleEnabled();
          cacheCommandLineOnNonRootedEnabled();
          FirstRunUtils.cacheFirstRunPrefs();
@@ -145,7 +145,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
          cacheHomepageTileEnabled();
          cacheNewTabPageButtonEnabled();
          cacheBottomToolbarEnabled();
-@@ -212,40 +210,6 @@ public class FeatureUtilities {
+@@ -229,38 +227,6 @@ public class FeatureUtilities {
      }
  
      /**
@@ -166,10 +166,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
 -        if (sIsHomePageButtonForceEnabled == null) {
 -            ChromePreferenceManager prefManager = ChromePreferenceManager.getInstance();
 -
--            try (StrictModeContext unused = StrictModeContext.allowDiskReads()) {
--                sIsHomePageButtonForceEnabled = prefManager.readBoolean(
--                        ChromePreferenceManager.HOME_PAGE_BUTTON_FORCE_ENABLED_KEY, false);
--            }
+-            sIsHomePageButtonForceEnabled = prefManager.readBoolean(
+-                    ChromePreferenceManager.HOME_PAGE_BUTTON_FORCE_ENABLED_KEY, false);
 -        }
 -        return sIsHomePageButtonForceEnabled;
 -    }
@@ -189,7 +187,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
 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
-@@ -1891,9 +1891,6 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1710,9 +1710,6 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-chrome-duet", flag_descriptions::kChromeDuetName,
       flag_descriptions::kChromeDuetDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(chrome::android::kChromeDuetFeature)},
@@ -202,15 +200,15 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -124,7 +124,6 @@ const base::Feature* kFeaturesExposedToJava[] = {
-     &kGestureNavigation,
+@@ -133,7 +133,6 @@ const base::Feature* kFeaturesExposedToJava[] = {
+     &kExploreSites,
      &kHandleMediaIntents,
      &kHideUserDataFromIncognitoNotifications,
 -    &kHomePageButtonForceEnabled,
      &kHomepageTile,
      &kHorizontalTabSwitcherAndroid,
      &kImprovedA2HS,
-@@ -337,9 +336,6 @@ const base::Feature kHandleMediaIntents{"HandleMediaIntents",
+@@ -377,9 +376,6 @@ const base::Feature kHandleMediaIntents{"HandleMediaIntents",
  const base::Feature kHideUserDataFromIncognitoNotifications{
      "HideUserDataFromIncognitoNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -223,8 +221,8 @@ diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/andr
 diff --git a/chrome/browser/android/chrome_feature_list.h b/chrome/browser/android/chrome_feature_list.h
 --- a/chrome/browser/android/chrome_feature_list.h
 +++ b/chrome/browser/android/chrome_feature_list.h
-@@ -56,7 +56,6 @@ extern const base::Feature kForegroundNotificationManager;
- extern const base::Feature kGestureNavigation;
+@@ -63,7 +63,6 @@ extern const base::Feature kExploreSites;
+ extern const base::Feature kForegroundNotificationManager;
  extern const base::Feature kHandleMediaIntents;
  extern const base::Feature kHideUserDataFromIncognitoNotifications;
 -extern const base::Feature kHomePageButtonForceEnabled;

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

@@ -43,14 +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
-@@ -315,6 +315,7 @@ void AudioContext::StopRendering() {
+@@ -324,6 +324,7 @@ void AudioContext::StopRendering() {
  double AudioContext::baseLatency() const {
    DCHECK(IsMainThread());
    DCHECK(destination());
 +  return 0.04;
  
    // TODO(hongchan): Due to the incompatible constructor between
-   // AudioDestinationNode and DefaultAudioDestinationNode, casting directly from
+   // AudioDestinationNode and RealtimeAudioDestinationNode, casting directly
 -- 
 2.11.0
 

+ 1 - 1
build/patches/Battery-API-return-nothing.patch

@@ -9,7 +9,7 @@ Subject: Battery API: return nothing
 diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/third_party/blink/renderer/modules/battery/battery_manager.cc
 --- a/third_party/blink/renderer/modules/battery/battery_manager.cc
 +++ b/third_party/blink/renderer/modules/battery/battery_manager.cc
-@@ -43,45 +43,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
+@@ -44,45 +44,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
  }
  
  bool BatteryManager::charging() {

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

@@ -33,7 +33,7 @@ Add support for Webview content blocking
 diff --git a/android_webview/browser/net/aw_network_delegate.cc b/android_webview/browser/net/aw_network_delegate.cc
 --- a/android_webview/browser/net/aw_network_delegate.cc
 +++ b/android_webview/browser/net/aw_network_delegate.cc
-@@ -19,9 +19,11 @@
+@@ -20,9 +20,11 @@
  #include "net/base/proxy_server.h"
  #include "net/http/http_response_headers.h"
  #include "net/proxy_resolution/proxy_info.h"
@@ -45,7 +45,7 @@ diff --git a/android_webview/browser/net/aw_network_delegate.cc b/android_webvie
  
  namespace android_webview {
  
-@@ -48,6 +50,72 @@ AwNetworkDelegate::AwNetworkDelegate() {}
+@@ -49,6 +51,72 @@ AwNetworkDelegate::AwNetworkDelegate() {}
  AwNetworkDelegate::~AwNetworkDelegate() {
  }
  
@@ -64,7 +64,7 @@ diff --git a/android_webview/browser/net/aw_network_delegate.cc b/android_webvie
 +          isValidUrl = false;
 +        }
 +    }
-+    const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
++    ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
 +
 +    // there are no per-site nor global ad/content settings when using the SystemWebView
 +    bool adblock_enabled = true;
@@ -177,7 +177,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -2249,6 +2249,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2263,6 +2263,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              RecordUserAction.record("MobileMenuRequestEnableJavascript");
          } else if (id == R.id.reader_mode_prefs_id) {
              DomDistillerUIUtils.openSettings(currentTab.getWebContents());
@@ -195,7 +195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -1678,6 +1678,14 @@ public class ChromeTabbedActivity
+@@ -1815,6 +1815,14 @@ public class ChromeTabbedActivity
                  reportNewTabShortcutUsed(true);
                  getTabCreator(true).launchNTP();
              }
@@ -213,7 +213,7 @@ 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
-@@ -196,6 +196,8 @@ public class AppMenuPropertiesDelegate {
+@@ -195,6 +195,8 @@ public class AppMenuPropertiesDelegate {
                      && !TextUtils.isEmpty(url);
              prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
  
@@ -280,7 +280,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3059,6 +3059,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3086,6 +3086,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
          Turn on Request desktop site
        </message>
@@ -317,7 +317,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
  #endif
  
  #if defined(OS_CHROMEOS)
-@@ -195,10 +197,91 @@ void ChromeNetworkDelegate::set_cookie_settings(
+@@ -193,10 +195,91 @@ void ChromeNetworkDelegate::set_cookie_settings(
    cookie_settings_ = cookie_settings;
  }
  
@@ -336,7 +336,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
 +          isValidUrl = false;
 +        }
 +    }
-+    const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
++    ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
 +
 +    bool adblock_enabled = false;
 +    if (isValidUrl && info) {
@@ -423,7 +423,7 @@ diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settin
 diff --git a/net/BUILD.gn b/net/BUILD.gn
 --- a/net/BUILD.gn
 +++ b/net/BUILD.gn
-@@ -1797,6 +1797,13 @@ component("net") {
+@@ -1794,6 +1794,13 @@ component("net") {
        "url_request/websocket_handshake_userdata_key.h",
      ]
  

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

@@ -30,7 +30,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
  #include "third_party/blink/public/common/features.h"
  #include "third_party/blink/public/platform/platform.h"
  #include "third_party/blink/public/platform/task_type.h"
-@@ -790,7 +788,7 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
+@@ -799,7 +797,7 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
                               GetState().GetTextAlign(), text);
  
    // scale text metrics by 3/1000000th
@@ -59,7 +59,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.
 diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1432,7 +1432,9 @@ jumbo_component("platform") {
+@@ -1423,7 +1423,9 @@ jumbo_component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -82,7 +82,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b
  #include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
  #include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
  #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
-@@ -128,6 +130,9 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
+@@ -127,6 +129,9 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
                                            const SkPixmap& pixmap) const {
    DCHECK(is_valid_);
  
@@ -112,7 +112,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
  #include "third_party/skia/include/core/SkSurface.h"
  #include "third_party/skia/include/gpu/GrContext.h"
  
-@@ -171,10 +174,163 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
+@@ -151,10 +154,163 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
    DCHECK(read_pixels_successful ||
           !sk_image->bounds().intersect(SkIRect::MakeXYWH(
               rect.X(), rect.Y(), info.width(), info.height())));

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

@@ -9,7 +9,7 @@ Subject: Disable NTP remote suggestions by default
 diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
 --- a/components/ntp_snippets/features.cc
 +++ b/components/ntp_snippets/features.cc
-@@ -35,13 +35,13 @@ const base::Feature* const kAllFeatures[] = {
+@@ -34,13 +34,13 @@ const base::Feature* const kAllFeatures[] = {
      &kRemoteSuggestionsBackendFeature};
  
  const base::Feature kArticleSuggestionsFeature{

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

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

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

@@ -9,7 +9,7 @@ Subject: Disable contextual search by default
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -143,7 +143,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -144,7 +144,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
  #if defined(OS_ANDROID)
    registry->RegisterStringPref(
        prefs::kContextualSearchEnabled,

+ 1 - 1
build/patches/Disable-data-saver.patch

@@ -41,7 +41,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/D
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
-@@ -68,7 +68,7 @@ public class DataReductionPromoUtils {
+@@ -70,7 +70,7 @@ public class DataReductionPromoUtils {
          }
          if (DataReductionProxySettings.getInstance().isDataReductionProxyManaged()) return false;
          if (DataReductionProxySettings.getInstance().isDataReductionProxyEnabled()) return false;

+ 1 - 1
build/patches/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
-@@ -239,17 +239,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
+@@ -240,17 +240,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() {

+ 0 - 23
build/patches/Disable-hyperlink-auditing-by-default.patch

@@ -1,23 +0,0 @@
-From: Daniel Micay <danielmicay@gmail.com>
-Date: Sat, 26 Nov 2016 14:57:22 -0500
-Subject: Disable hyperlink auditing by default
-
----
- chrome/browser/about_flags.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
---- a/chrome/browser/about_flags.cc
-+++ b/chrome/browser/about_flags.cc
-@@ -1325,7 +1325,7 @@ const FeatureEntry kFeatureEntries[] = {
-      SINGLE_VALUE_TYPE(switches::kDisableIpcFloodingProtection)},
-     {"disable-hyperlink-auditing", flag_descriptions::kHyperlinkAuditingName,
-      flag_descriptions::kHyperlinkAuditingDescription, kOsAll,
--     SINGLE_DISABLE_VALUE_TYPE(switches::kNoPings)},
-+     SINGLE_VALUE_TYPE(switches::kNoPings)},
- #if defined(OS_ANDROID)
-     {"contextual-search", flag_descriptions::kContextualSearchName,
-      flag_descriptions::kContextualSearchDescription, kOsAndroid,
--- 
-2.11.0
-

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

@@ -10,7 +10,7 @@ Subject: Disable metrics collection for NTP tiles
 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
-@@ -22,7 +22,6 @@
+@@ -23,7 +23,6 @@
  #include "chrome/browser/profiles/profile_android.h"
  #include "components/favicon_base/favicon_types.h"
  #include "components/history/core/browser/history_service.h"
@@ -18,7 +18,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
  #include "components/ntp_tiles/most_visited_sites.h"
  #include "components/ntp_tiles/section_type.h"
  #include "components/rappor/rappor_service_impl.h"
-@@ -44,7 +43,6 @@ using ntp_tiles::NTPTilesVector;
+@@ -45,7 +44,6 @@ using ntp_tiles::NTPTilesVector;
  using ntp_tiles::SectionType;
  using ntp_tiles::TileTitleSource;
  using ntp_tiles::TileSource;
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
  
  namespace {
  
-@@ -239,7 +237,6 @@ void MostVisitedSitesBridge::RecordPageImpression(
+@@ -240,7 +238,6 @@ void MostVisitedSitesBridge::RecordPageImpression(
      JNIEnv* env,
      const JavaParamRef<jobject>& obj,
      jint jtiles_count) {
@@ -34,7 +34,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
  }
  
  void MostVisitedSitesBridge::RecordTileImpression(
-@@ -252,18 +249,6 @@ void MostVisitedSitesBridge::RecordTileImpression(
+@@ -253,18 +250,6 @@ void MostVisitedSitesBridge::RecordTileImpression(
      jint jsource,
      jlong jdata_generation_time_ms,
      const JavaParamRef<jstring>& jurl) {
@@ -53,7 +53,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
  }
  
  void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
-@@ -274,12 +259,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
+@@ -275,12 +260,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
      jint title_source,
      jint source,
      jlong jdata_generation_time_ms) {

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

@@ -22,7 +22,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
 diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
 --- a/chrome/browser/profiles/profile_io_data.cc
 +++ b/chrome/browser/profiles/profile_io_data.cc
-@@ -56,8 +56,6 @@
+@@ -55,8 +55,6 @@
  #include "components/cookie_config/cookie_store_util.h"
  #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.h"
  #include "components/dom_distiller/core/url_constants.h"

+ 1 - 1
build/patches/Disable-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
-@@ -1321,10 +1321,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
+@@ -1357,10 +1357,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
  }
  
  PluginData* LocalFrame::GetPluginData() const {

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

@@ -156,7 +156,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPr
 diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
 --- a/chrome/android/java_sources.gni
 +++ b/chrome/android/java_sources.gni
-@@ -189,7 +189,6 @@ chrome_java_sources = [
+@@ -166,7 +166,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java",
    "java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java",
    "java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java",

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

@@ -12,10 +12,10 @@ Subject: Disable references to fonts.googleapis.com
 diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 --- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 +++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
-@@ -310,7 +310,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
+@@ -309,7 +309,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
+ }
  
- std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc()
-     const {
+ std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() const {
 -  return "style-src 'self' https://fonts.googleapis.com;";
 +  return "style-src 'self';";
  }

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

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

+ 96 - 86
build/patches/Disable-signin-and-data-saver-preferences.patch

@@ -4,10 +4,9 @@ Subject: Disable signin and data saver preferences
 
 Never show the data saver promo snackbar
 ---
- chrome/android/java/res/xml/main_preferences.xml   |  9 -----
- .../chromium/chrome/browser/ChromeActivity.java    |  6 ++-
- .../browser/preferences/MainPreferences.java       | 46 ++++++----------------
- 3 files changed, 15 insertions(+), 46 deletions(-)
+ chrome/android/java/res/xml/main_preferences.xml   |  9 ---
+ .../browser/preferences/MainPreferences.java       | 91 +---------------------
+ 2 files changed, 2 insertions(+), 98 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
@@ -21,61 +20,24 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
 -        android:order="1"
 -        android:title="@string/sign_in_to_chrome"/>
      <org.chromium.chrome.browser.preferences.ChromeBasePreference
-         android:fragment="org.chromium.chrome.browser.preferences.SyncAndServicesPreferences"
          android:key="sync_and_services"
-@@ -89,11 +85,6 @@
+         android:order="2"
+@@ -96,11 +92,6 @@
          android:key="languages"
-         android:order="16"
+         android:order="17"
          android:title="@string/prefs_languages"/>
 -    <org.chromium.chrome.browser.preferences.datareduction.DataReductionPreference
 -        android:fragment="org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferenceFragment"
 -        android:key="data_reduction"
--        android:order="17"
+-        android:order="18"
 -        android:title="@string/data_reduction_title"/>
      <org.chromium.chrome.browser.preferences.ChromeBasePreference
          android:fragment="org.chromium.chrome.browser.preferences.download.DownloadPreferences"
          android:key="downloads"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -125,7 +125,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.SnackbarManager;
- import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
- import org.chromium.chrome.browser.sync.ProfileSyncService;
-@@ -275,7 +275,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-     private EphemeralTabPanel mEphemeralTabPanel;
-     protected ReaderModeManager mReaderModeManager;
-     private SnackbarManager mSnackbarManager;
--    private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
-+    //private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
-     private AppMenuPropertiesDelegate mAppMenuPropertiesDelegate;
-     private AppMenuHandler mAppMenuHandler;
-     private ToolbarManager mToolbarManager;
-@@ -694,6 +694,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-         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.
-@@ -707,6 +708,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-                             DataReductionProxySettings.getInstance()
-                                     .getTotalHttpContentLengthSaved());
-                 }
-+*/
-             }
- 
-             @Override
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
-@@ -17,11 +17,9 @@ import org.chromium.base.VisibleForTesting;
+@@ -17,16 +17,12 @@ import org.chromium.base.VisibleForTesting;
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ChromeFeatureList;
  import org.chromium.chrome.browser.contextual_suggestions.ContextualSuggestionsEnabledStateUtils;
@@ -87,21 +49,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
  import org.chromium.chrome.browser.preferences.developer.DeveloperPreferences;
  import org.chromium.chrome.browser.search_engines.TemplateUrl;
  import org.chromium.chrome.browser.search_engines.TemplateUrlService;
-@@ -37,13 +35,11 @@ import java.util.Map;
+-import org.chromium.chrome.browser.signin.SigninManager;
+-import org.chromium.chrome.browser.sync.ProfileSyncService;
+ import org.chromium.chrome.browser.util.FeatureUtilities;
+ 
+ import java.util.HashMap;
+@@ -36,11 +32,8 @@ import java.util.Map;
+  * The main settings screen, shown when the user first opens Settings.
+  */
  public class MainPreferences extends PreferenceFragment
-         implements SigninManager.SignInStateObserver, TemplateUrlService.LoadListener {
+-        implements TemplateUrlService.LoadListener, ProfileSyncService.SyncStateChangedListener,
+-                   SigninManager.SignInStateObserver {
++        implements 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_SYNC_AND_SERVICES = "sync_and_services";
+-    public static final String PREF_SYNC_AND_SERVICES = "sync_and_services";
      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_NOTIFICATIONS = "notifications";
-     public static final String PREF_LANGUAGES = "languages";
-     public static final String PREF_DOWNLOADS = "downloads";
-@@ -57,7 +53,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -60,7 +53,6 @@ public class MainPreferences extends PreferenceFragment
  
      private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private final Map<String, Preference> mAllPreferences = new HashMap<>();
@@ -109,38 +75,41 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
  
      public MainPreferences() {
          setHasOptionsMenu(true);
-@@ -73,25 +68,29 @@ public class MainPreferences extends PreferenceFragment
+@@ -76,33 +68,16 @@ public class MainPreferences extends PreferenceFragment
      @Override
      public void onDestroy() {
          super.onDestroy();
 -        mSignInPreference.onPreferenceFragmentDestroyed();
-+        //mSignInPreference.onPreferenceFragmentDestroyed();
      }
  
      @Override
      public void onStart() {
          super.onStart();
-+/*
-         if (SigninManager.get().isSigninSupported()) {
-             SigninManager.get().addSignInStateObserver(this);
-             mSignInPreference.registerForUpdates();
-         }
-+*/
+-        if (SigninManager.get().isSigninSupported()) {
+-            SigninManager.get().addSignInStateObserver(this);
+-            mSignInPreference.registerForUpdates();
+-        }
+-        ProfileSyncService syncService = ProfileSyncService.get();
+-        if (syncService != null) {
+-            syncService.addSyncStateChangedListener(this);
+-        }
      }
  
      @Override
      public void onStop() {
          super.onStop();
-+/*
-         if (SigninManager.get().isSigninSupported()) {
-             SigninManager.get().removeSignInStateObserver(this);
-             mSignInPreference.unregisterForUpdates();
-         }
-+*/
+-        if (SigninManager.get().isSigninSupported()) {
+-            SigninManager.get().removeSignInStateObserver(this);
+-            mSignInPreference.unregisterForUpdates();
+-        }
+-        ProfileSyncService syncService = ProfileSyncService.get();
+-        if (syncService != null) {
+-            syncService.removeSyncStateChangedListener(this);
+-        }
      }
  
      @Override
-@@ -104,17 +103,12 @@ public class MainPreferences extends PreferenceFragment
+@@ -115,17 +90,11 @@ public class MainPreferences extends PreferenceFragment
          PreferenceUtils.addPreferencesFromResource(this, R.xml.main_preferences);
          cachePreferences();
  
@@ -151,7 +120,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
 -            getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES));
 -        }
 +        getPreferenceScreen().removePreference(findPreference(PREF_ACCOUNT_SECTION));
-+        getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES));
  
          updatePasswordsPreference();
  
@@ -160,16 +128,15 @@ 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
-@@ -178,7 +172,7 @@ public class MainPreferences extends PreferenceFragment
+@@ -189,7 +158,6 @@ public class MainPreferences extends PreferenceFragment
              Preference preference = getPreferenceScreen().getPreference(index);
              mAllPreferences.put(preference.getKey(), preference);
          }
 -        mSignInPreference = (SignInPreference) mAllPreferences.get(PREF_SIGN_IN);
-+        //mSignInPreference = (SignInPreference) mAllPreferences.get(PREF_SIGN_IN);
      }
  
      private void setManagedPreferenceDelegateForPreference(String key) {
-@@ -187,12 +181,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -198,13 +166,6 @@ public class MainPreferences extends PreferenceFragment
      }
  
      private void updatePreferences() {
@@ -179,10 +146,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
 -            removePreferenceIfPresent(PREF_SIGN_IN);
 -        }
 -
+-        updateSyncAndServicesPreference();
          updateSearchEnginePreference();
  
          Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
-@@ -216,10 +204,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -234,10 +195,6 @@ public class MainPreferences extends PreferenceFragment
          } else {
              removePreferenceIfPresent(PREF_DEVELOPER);
          }
@@ -193,22 +161,64 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
  
      private Preference addPreferenceIfAbsent(String key) {
-@@ -279,11 +263,11 @@ public class MainPreferences extends PreferenceFragment
+@@ -251,15 +208,6 @@ public class MainPreferences extends PreferenceFragment
+         if (preference != null) getPreferenceScreen().removePreference(preference);
+     }
  
-     private void onSignInPreferenceStateChanged() {
-         // Remove "Account" section header if the personalized sign-in promo is shown.
+-    private void updateSyncAndServicesPreference() {
+-        if (!ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) return;
+-
+-        ChromeBasePreference syncAndServices =
+-                (ChromeBasePreference) findPreference(PREF_SYNC_AND_SERVICES);
+-        syncAndServices.setIcon(SyncPreferenceUtils.getSyncStatusIcon(getActivity()));
+-        syncAndServices.setSummary(SyncPreferenceUtils.getSyncStatusSummary(getActivity()));
+-    }
+-
+     private void updateSearchEnginePreference() {
+         if (!TemplateUrlService.getInstance().isLoaded()) {
+             ChromeBasePreference searchEnginePref =
+@@ -291,28 +239,6 @@ public class MainPreferences extends PreferenceFragment
+         pref.setSummary(getResources().getString(isOn ? R.string.text_on : R.string.text_off));
+     }
+ 
+-    // SigninManager.SignInStateObserver implementation.
+-    @Override
+-    public void onSignedIn() {
+-        // After signing in or out of a managed account, preferences may change or become enabled
+-        // or disabled.
+-        new Handler().post(() -> updatePreferences());
+-    }
+-
+-    @Override
+-    public void onSignedOut() {
+-        updatePreferences();
+-    }
+-
+-    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);
+-            removePreferenceIfPresent(PREF_ACCOUNT_SECTION);
 -        } else {
-+/*        } else {
-             addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
+-            addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
 -        }
-+        }*/
+-    }
+-
+     // TemplateUrlService.LoadListener implementation.
+     @Override
+     public void onTemplateUrlServiceLoaded() {
+@@ -320,11 +246,6 @@ public class MainPreferences extends PreferenceFragment
+         updateSearchEnginePreference();
      }
  
-     // TemplateUrlService.LoadListener implementation.
-@@ -302,9 +286,6 @@ public class MainPreferences extends PreferenceFragment
+-    @Override
+-    public void syncStateChanged() {
+-        updateSyncAndServicesPreference();
+-    }
+-
+     @VisibleForTesting
+     ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() {
+         return mManagedPreferenceDelegate;
+@@ -334,9 +255,6 @@ public class MainPreferences extends PreferenceFragment
          return new ManagedPreferenceDelegate() {
              @Override
              public boolean isPreferenceControlledByPolicy(Preference preference) {
@@ -218,7 +228,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();
                  }
-@@ -313,11 +294,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -345,11 +263,6 @@ public class MainPreferences extends PreferenceFragment
  
              @Override
              public boolean isPreferenceClickDisabledByPolicy(Preference preference) {

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

@@ -9,7 +9,7 @@ Subject: Disable signin/data reduction promos
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -599,34 +599,10 @@ public class ChromeTabbedActivity
+@@ -695,34 +695,10 @@ public class ChromeTabbedActivity
              }
  
              ChromePreferenceManager preferenceManager = ChromePreferenceManager.getInstance();

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

@@ -11,7 +11,7 @@ Block gelocation by default instead of granting it for non-enterprise use cases
 diff --git a/chrome/browser/android/search_permissions/search_permissions_service.cc b/chrome/browser/android/search_permissions/search_permissions_service.cc
 --- a/chrome/browser/android/search_permissions/search_permissions_service.cc
 +++ b/chrome/browser/android/search_permissions/search_permissions_service.cc
-@@ -343,11 +343,7 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
+@@ -344,11 +344,7 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
      return;
    }
  
@@ -24,7 +24,7 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
    pref_service_->ClearPref(prefs::kDSEWasDisabledByPolicy);
  
    // Initialize the pref for geolocation if it hasn't been initialized yet.
-@@ -380,10 +376,8 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
+@@ -381,10 +377,8 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
        pref_service_->ClearPref(prefs::kDSEGeolocationSettingDeprecated);
      } else if (dse_geolocation_setting == CONTENT_SETTING_ASK) {
        // If the user hasn't explicitly allowed or blocked geolocation for the
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
      }
  
      // Update the content setting with the auto-grants for the DSE.
-@@ -409,11 +403,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
+@@ -410,11 +404,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
          GetContentSetting(dse_origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
      ContentSetting dse_notifications_setting = notifications_setting_to_restore;
      // If the user hasn't explicitly allowed or blocked notifications for the
@@ -54,7 +54,7 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -296,7 +296,7 @@ const base::Feature kGeoLanguage{"GeoLanguage",
+@@ -322,7 +322,7 @@ const base::Feature kGoogleBrandedContextMenu{
  
  #if defined(OS_ANDROID)
  const base::Feature kGrantNotificationsToDSE{"GrantNotificationsToDSE",

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

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

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

@@ -10,7 +10,7 @@ Set #enable-history-entry-requires-user-gesture to enabled by default
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -1323,7 +1323,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1199,7 +1199,7 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-history-entry-requires-user-gesture",
       flag_descriptions::kHistoryRequiresUserGestureName,
       flag_descriptions::kHistoryRequiresUserGestureDescription, kOsAll,

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

@@ -3,39 +3,13 @@ Date: Fri, 15 Mar 2019 10:05:14 +0100
 Subject: Enable secure DNS mode by default in DnsTransaction.
 
 ---
- chrome/browser/net/dns_probe_runner.cc                | 2 +-
- components/certificate_transparency/log_dns_client.cc | 2 +-
- net/dns/host_resolver_impl.cc                         | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
+ net/dns/host_resolver_impl.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/chrome/browser/net/dns_probe_runner.cc b/chrome/browser/net/dns_probe_runner.cc
---- a/chrome/browser/net/dns_probe_runner.cc
-+++ b/chrome/browser/net/dns_probe_runner.cc
-@@ -110,7 +110,7 @@ void DnsProbeRunner::RunProbe(const base::Closure& callback) {
-       kKnownGoodHostname, net::dns_protocol::kTypeA,
-       base::Bind(&DnsProbeRunner::OnTransactionComplete,
-                  weak_factory_.GetWeakPtr()),
--      NetLogWithSource(), net::SecureDnsMode::AUTOMATIC);
-+      NetLogWithSource(), net::SecureDnsMode::SECURE);
- 
-   transaction_->Start();
- }
-diff --git a/components/certificate_transparency/log_dns_client.cc b/components/certificate_transparency/log_dns_client.cc
---- a/components/certificate_transparency/log_dns_client.cc
-+++ b/components/certificate_transparency/log_dns_client.cc
-@@ -472,7 +472,7 @@ bool AuditProofQueryImpl::StartDnsTransaction(const std::string& qname) {
-       qname, net::dns_protocol::kTypeTXT,
-       base::BindOnce(&AuditProofQueryImpl::OnDnsTransactionComplete,
-                      weak_ptr_factory_.GetWeakPtr()),
--      net_log_, net::SecureDnsMode::AUTOMATIC);
-+      net_log_, net::SecureDnsMode::SECURE);
- 
-   current_dns_transaction_->Start();
-   return true;
 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
-@@ -1066,7 +1066,7 @@ class HostResolverImpl::DnsTask : public base::SupportsWeakPtr<DnsTask> {
+@@ -984,7 +984,7 @@ class HostResolverImpl::DnsTask : public base::SupportsWeakPtr<DnsTask> {
              base::BindOnce(&DnsTask::OnTransactionComplete,
                             base::Unretained(this), tick_clock_->NowTicks(),
                             dns_query_type),

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

@@ -9,8 +9,8 @@ Subject: Enable site per process isolation for devices with enough memory
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -518,11 +518,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
- // (e.g. this approach lets ChromeCast avoid site-per-process mode).
+@@ -552,11 +552,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
+ // browser_features, as they are only used on the browser side.
  const base::Feature kSitePerProcess {
    "site-per-process",
 -#if defined(OS_ANDROID)
@@ -20,8 +20,8 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 -#endif
  };
  
- // kSitePerProcessOnlyForHighMemoryClients is checked before kSitePerProcess,
-@@ -535,7 +531,7 @@ const base::Feature kSitePerProcess {
+ // Controls a mode for dynamically process-isolating sites where the user has
+@@ -578,7 +574,7 @@ const base::Feature kSiteIsolationForPasswordSites{
  // base::SysInfo::AmountOfPhysicalMemoryMB().
  const base::Feature kSitePerProcessOnlyForHighMemoryClients{
      "site-per-process-only-for-high-memory-clients",

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

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

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

@@ -20,7 +20,7 @@ Send a random key press to circumvent idle status detection
 diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
 --- a/third_party/blink/renderer/core/dom/BUILD.gn
 +++ b/third_party/blink/renderer/core/dom/BUILD.gn
-@@ -150,6 +150,8 @@ blink_core_sources("dom") {
+@@ -144,6 +144,8 @@ blink_core_sources("dom") {
      "global_event_handlers.h",
      "icon_url.cc",
      "icon_url.h",
@@ -32,7 +32,7 @@ diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/re
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -236,6 +236,7 @@
+@@ -241,6 +241,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"
@@ -40,7 +40,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
  #include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
  #include "third_party/blink/renderer/core/paint/paint_layer.h"
-@@ -296,6 +297,8 @@
+@@ -300,6 +301,8 @@
  #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
  #include "third_party/blink/renderer/platform/wtf/time.h"
  
@@ -49,7 +49,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #ifndef NDEBUG
  using WeakDocumentSet = blink::HeapHashSet<blink::WeakMember<blink::Document>>;
  static WeakDocumentSet& liveDocumentSet();
-@@ -6199,8 +6202,35 @@ void Document::FinishedParsing() {
+@@ -6224,8 +6227,35 @@ void Document::FinishedParsing() {
    // Parser should have picked up all preloads by now
    fetcher_->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads);
  
@@ -111,7 +111,7 @@ new file mode 100644
 diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third_party/blink/renderer/core/html/html_script_element.cc
 --- a/third_party/blink/renderer/core/html/html_script_element.cc
 +++ b/third_party/blink/renderer/core/html/html_script_element.cc
-@@ -155,6 +155,11 @@ void HTMLScriptElement::setTextContent(
+@@ -154,6 +154,11 @@ void HTMLScriptElement::setTextContent(
    }
  }
  

+ 11 - 13
build/patches/Modify-default-preferences.patch

@@ -9,7 +9,7 @@ Subject: Modify default preferences
  chrome/browser/net/prediction_options.h                    |  2 +-
  chrome/browser/profiles/profile.cc                         |  2 +-
  .../settings/reset_page/reset_profile_dialog.html          |  2 +-
- chrome/browser/signin/signin_promo.cc                      |  4 ++--
+ chrome/browser/signin/signin_promo.cc                      |  2 +-
  chrome/browser/ui/browser_ui_prefs.cc                      |  4 ++--
  chrome/browser/ui/navigation_correction_tab_observer.cc    |  2 +-
  .../browser/ui/webui/local_discovery/local_discovery_ui.cc |  4 ----
@@ -19,12 +19,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, 23 insertions(+), 41 deletions(-)
+ 16 files changed, 22 insertions(+), 40 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
-@@ -351,7 +351,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -352,7 +352,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
    registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
  #endif
@@ -36,7 +36,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -1098,7 +1098,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1121,7 +1121,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -72,7 +72,7 @@ diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/predic
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -138,7 +138,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -139,7 +139,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -96,13 +96,11 @@ 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
-@@ -291,8 +291,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
+@@ -172,7 +172,7 @@ bool IsAutoCloseEnabledInEmbeddedURL(const GURL& url) {
+ 
  void RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
-   registry->RegisterIntegerPref(prefs::kSignInPromoStartupCount, 0);
--  registry->RegisterBooleanPref(prefs::kSignInPromoUserSkipped, false);
 -  registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, true);
-+  registry->RegisterBooleanPref(prefs::kSignInPromoUserSkipped, true);
 +  registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, false);
    registry->RegisterBooleanPref(prefs::kSignInPromoShowNTPBubble, false);
    registry->RegisterIntegerPref(prefs::kDiceSigninUserMenuPromoCount, 0);
@@ -127,7 +125,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
 diff --git a/chrome/browser/ui/navigation_correction_tab_observer.cc b/chrome/browser/ui/navigation_correction_tab_observer.cc
 --- a/chrome/browser/ui/navigation_correction_tab_observer.cc
 +++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
-@@ -56,7 +56,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {
+@@ -57,7 +57,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {
  void NavigationCorrectionTabObserver::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* prefs) {
    prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled,
@@ -165,7 +163,7 @@ diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/c
 diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
 --- a/components/autofill/core/browser/autofill_manager.cc
 +++ b/components/autofill/core/browser/autofill_manager.cc
-@@ -356,10 +356,7 @@ bool AutofillManager::ShouldParseForms(const std::vector<FormData>& forms,
+@@ -359,10 +359,7 @@ bool AutofillManager::ShouldParseForms(const std::vector<FormData>& forms,
    bool enabled = IsAutofillEnabled();
    sync_state_ = personal_data_ ? personal_data_->GetSyncSigninState()
                                 : AutofillSyncSigninState::kNumSyncStates;
@@ -177,7 +175,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
  
    return enabled;
  }
-@@ -627,10 +624,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
+@@ -625,10 +622,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
        // suggestions available.
        // TODO(mathp): Differentiate between number of suggestions available
        // (current metric) and number shown to the user.
@@ -189,7 +187,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
      }
    }
  
-@@ -1237,8 +1231,8 @@ void AutofillManager::Reset() {
+@@ -1234,8 +1228,8 @@ void AutofillManager::Reset() {
  #if defined(OS_ANDROID) || defined(OS_IOS)
    autofill_assistant_.Reset();
  #endif

+ 1 - 1
build/patches/Never-send-any-crash-upload-data.patch

@@ -9,7 +9,7 @@ Subject: Never send any crash upload data
 diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/tracing/crash_service_uploader.cc
 --- a/chrome/browser/tracing/crash_service_uploader.cc
 +++ b/chrome/browser/tracing/crash_service_uploader.cc
-@@ -126,6 +126,9 @@ void TraceCrashServiceUploader::DoUpload(
+@@ -127,6 +127,9 @@ void TraceCrashServiceUploader::DoUpload(
      std::unique_ptr<const base::DictionaryValue> metadata,
      const UploadProgressCallback& progress_callback,
      UploadDoneCallback done_callback) {

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

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

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

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

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

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

+ 4 - 4
build/patches/Remove-Sync-and-Translate-menu.patch

@@ -177,7 +177,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          } else {
              // If both Autoplay and Protected Content menus are available, they'll be tucked under
              // the Media key. Otherwise, we can remove the Media menu entry.
-@@ -108,11 +106,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
+@@ -105,11 +103,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
              if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
                  getPreferenceScreen().removePreference(findPreference(Type.CLIPBOARD));
              }
@@ -189,7 +189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
              if (!ChromeFeatureList.isEnabled(ChromeFeatureList.GENERIC_SENSOR_EXTRA_CLASSES)) {
                  getPreferenceScreen().removePreference(findPreference(Type.SENSORS));
              }
-@@ -122,10 +115,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
+@@ -119,10 +112,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
      private void updatePreferenceStates() {
          PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
  
@@ -200,7 +200,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          // Preferences that navigate to Website Settings.
          List<Integer> websitePrefs = new ArrayList<Integer>();
          if (mMediaSubMenu) {
-@@ -142,7 +131,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
+@@ -139,7 +128,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
              if (!mProtectedContentMenuAvailable) {
                  websitePrefs.add(Type.AUTOPLAY);
              }
@@ -209,7 +209,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
              websitePrefs.add(Type.CAMERA);
              if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
                  websitePrefs.add(Type.CLIPBOARD);
-@@ -241,11 +230,4 @@ public class SiteSettingsPreferences extends PreferenceFragment
+@@ -236,11 +225,4 @@ public class SiteSettingsPreferences extends PreferenceFragment
                  preference.getTitle().toString());
          return false;
      }

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

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

+ 3 - 3
build/patches/Remove-request-for-account-access-permission-on-reboot.patch

@@ -10,7 +10,7 @@ Subject: Remove request for 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
-@@ -997,8 +997,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
+@@ -1023,8 +1023,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
    resources = [
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
@@ -20,7 +20,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
    ]
    res_dir = "java/res_template"
    variables = [ "manifest_package=$manifest_package" ]
-@@ -1009,7 +1008,6 @@ jinja_template_resources("chrome_test_apk_template_resources") {
+@@ -1035,7 +1034,6 @@ jinja_template_resources("chrome_test_apk_template_resources") {
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
      "java/res_template/xml/searchable.xml",
@@ -31,7 +31,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
-@@ -914,14 +914,14 @@ by a child template that "extends" this file.
+@@ -925,14 +925,14 @@ by a child template that "extends" this file.
          </provider>
  
          <!-- Sync adapter for browser invalidation. -->

+ 35 - 50
build/patches/Rollback-android-minSdkVersion-from-19-KitKat-to-16-JellyBean.patch

@@ -10,7 +10,6 @@ This reverts commit 9a48587dbd1988cf5066b454e7d09ae35d124366.
  build/android/AndroidManifest.xml                                 | 2 +-
  build/android/gradle/android.jinja                                | 2 +-
  chrome/android/BUILD.gn                                           | 8 ++++----
- chrome/android/java/res/layout/autofill_local_card_editor.xml     | 4 ++--
  .../test/android/chrome_public_test_support/AndroidManifest.xml   | 2 +-
  components/cronet/android/sample/AndroidManifest.xml              | 3 +--
  components/cronet/android/sample/javatests/AndroidManifest.xml    | 3 +--
@@ -30,8 +29,8 @@ This reverts commit 9a48587dbd1988cf5066b454e7d09ae35d124366.
  testing/android/driver/java/AndroidManifest.xml                   | 2 +-
  testing/android/native_test/java/AndroidManifest.xml.jinja2       | 2 +-
  tools/android/audio_focus_grabber/java/AndroidManifest.xml        | 2 +-
- tools/android/push_apps_to_background/AndroidManifest.xml         | 2 +-
- 27 files changed, 31 insertions(+), 35 deletions(-)
+ tools/android/push_apps_to_background/AndroidManifest.xml         | 4 ++--
+ 26 files changed, 30 insertions(+), 34 deletions(-)
 
 diff --git a/android_webview/test/embedded_test_server/java/AndroidManifest.xml b/android_webview/test/embedded_test_server/java/AndroidManifest.xml
 --- a/android_webview/test/embedded_test_server/java/AndroidManifest.xml
@@ -41,7 +40,7 @@ diff --git a/android_webview/test/embedded_test_server/java/AndroidManifest.xml
      package="org.chromium.android_webview.test.support">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
      <uses-permission android:name="android.permission.INTERNET"/>
  
@@ -53,7 +52,7 @@ diff --git a/android_webview/tools/automated_ui_tests/java/AndroidManifest.xml b
      android:versionName="1.0" >
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
  
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
@@ -65,7 +64,7 @@ diff --git a/base/android/jni_generator/AndroidManifest.xml b/base/android/jni_g
  <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.jni.generator">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="24" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="24" />
      <application></application>
  
  </manifest>
@@ -77,7 +76,7 @@ diff --git a/build/android/AndroidManifest.xml b/build/android/AndroidManifest.x
      package="org.dummy">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="24" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="24" />
  
  </manifest>
 diff --git a/build/android/gradle/android.jinja b/build/android/gradle/android.jinja
@@ -88,70 +87,49 @@ diff --git a/build/android/gradle/android.jinja b/build/android/gradle/android.j
      defaultConfig {
          vectorDrawables.useSupportLibrary = true
 -        minSdkVersion 19
-+        minSdkVersion 16
++        minSdkVersion 17
          targetSdkVersion {{ target_sdk_version }}
      }
  
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -68,7 +68,7 @@ jinja_template("chrome_public_android_manifest") {
+@@ -65,7 +65,7 @@ jinja_template("chrome_public_android_manifest") {
    output = chrome_public_android_manifest
    variables = chrome_public_jinja_variables
    variables += [
 -    "min_sdk_version=19",
-+    "min_sdk_version=16",
++    "min_sdk_version=17",
      "target_sdk_version=$android_sdk_version",
    ]
  
-@@ -1459,7 +1459,7 @@ template("chrome_public_apk_or_module_tmpl") {
+@@ -1554,7 +1554,7 @@ template("chrome_public_apk_or_module_tmpl") {
        android_manifest = chrome_modern_public_android_manifest
        android_manifest_dep = ":chrome_modern_public_android_manifest"
      } else {
 -      min_sdk_version = 19
-+      min_sdk_version = 16
++      min_sdk_version = 17
        android_manifest = chrome_public_android_manifest
        android_manifest_dep = ":chrome_public_android_manifest"
      }
-@@ -1646,7 +1646,7 @@ jinja_template("chrome_public_test_apk_manifest") {
+@@ -1777,7 +1777,7 @@ jinja_template("chrome_public_test_apk_manifest") {
    variables = default_chrome_public_jinja_variables
    variables += [
      "manifest_package=$test_manifest_package",
 -    "min_sdk_version=19",
-+    "min_sdk_version=16",
++    "min_sdk_version=17",
      "target_sdk_version=$android_sdk_version",
    ]
  }
-@@ -1657,7 +1657,7 @@ jinja_template("chrome_public_test_vr_apk_manifest") {
+@@ -1788,7 +1788,7 @@ jinja_template("chrome_public_test_vr_apk_manifest") {
    output = chrome_public_test_vr_apk_manifest
    variables = chrome_public_jinja_variables
    variables += [
 -    "min_sdk_version=19",
-+    "min_sdk_version=16",
++    "min_sdk_version=17",
      "target_sdk_version=$android_sdk_version",
    ]
  }
-diff --git a/chrome/android/java/res/layout/autofill_local_card_editor.xml b/chrome/android/java/res/layout/autofill_local_card_editor.xml
---- a/chrome/android/java/res/layout/autofill_local_card_editor.xml
-+++ b/chrome/android/java/res/layout/autofill_local_card_editor.xml
-@@ -19,7 +19,7 @@
- 
-         <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
-         <EditText
--            tools:ignore="Autofill,LabelFor"
-+            tools:ignore="Autofill"
-             android:id="@+id/credit_card_name_edit"
-             android:layout_width="match_parent"
-             android:layout_height="wrap_content"
-@@ -40,7 +40,7 @@
- 
-         <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
-         <EditText
--            tools:ignore="Autofill,LabelFor"
-+            tools:ignore="Autofill"
-             android:id="@+id/credit_card_number_edit"
-             android:layout_width="match_parent"
-             android:layout_height="wrap_content"
 diff --git a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml b/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
 --- a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
 +++ b/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
@@ -160,7 +138,7 @@ diff --git a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
        xmlns:tools="http://schemas.android.com/tools"
        package="org.chromium.chrome.tests.support">
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="22" />
      <uses-permission android:name="android.permission.INTERNET" />
      <application>
          <service android:name="org.chromium.chrome.browser.media.TestMediaRouteProviderService"
@@ -224,7 +202,7 @@ diff --git a/components/test/android/browsertests_apk/AndroidManifest.xml.jinja2
      package="org.chromium.components_browsertests_apk">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <uses-permission android:name="android.permission.CAMERA" />
@@ -236,7 +214,7 @@ diff --git a/content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2 b
      package="org.chromium.content_browsertests_apk">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <uses-permission android:name="android.permission.CAMERA" />
@@ -248,7 +226,7 @@ diff --git a/content/shell/android/javatests/AndroidManifest.xml b/content/shell
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="org.chromium.content_shell_apk.tests">
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
      <!-- We add an application tag here just so that we can indicate that this
           package needs to link against the android.test library, which is
@@ -260,7 +238,7 @@ diff --git a/content/shell/android/linker_test_apk/AndroidManifest.xml.jinja2 b/
      package="org.chromium.chromium_linker_test_apk">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <uses-permission android:name="android.permission.CAMERA" />
@@ -272,7 +250,7 @@ diff --git a/content/shell/android/shell_apk/AndroidManifest.xml.jinja2 b/conten
      package="org.chromium.content_shell_apk">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <uses-permission android:name="android.permission.CAMERA"/>
@@ -284,7 +262,7 @@ diff --git a/docs/android_build_instructions.md b/docs/android_build_instruction
  
  1. `chrome_public_apk` (ChromePublic.apk)
 -   * `minSdkVersion=19` (KitKat).
-+   * `minSdkVersion=16` (Jelly Bean).
++   * `minSdkVersion=17` (Jelly Bean).
     * Stores libchrome.so compressed within the APK.
     * Uses [Crazy Linker](https://cs.chromium.org/chromium/src/base/android/linker/BUILD.gn?rcl=6bb29391a86f2be58c626170156cbfaa2cbc5c91&l=9).
     * Shipped only for Android < 21, but still works fine on Android >= 21.
@@ -308,7 +286,7 @@ diff --git a/net/android/unittest_support/AndroidManifest.xml b/net/android/unit
        android:versionName="1.0">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
@@ -320,7 +298,7 @@ diff --git a/net/test/android/javatests/AndroidManifest.xml b/net/test/android/j
      package="org.chromium.net.test.support">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
      <uses-permission android:name="android.permission.INTERNET"/>
  
@@ -356,7 +334,7 @@ diff --git a/testing/android/driver/java/AndroidManifest.xml b/testing/android/d
        android:versionName="1.0">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  
      <application android:label="OnDeviceInstrumentationDriver" />
@@ -368,7 +346,7 @@ diff --git a/testing/android/native_test/java/AndroidManifest.xml.jinja2 b/testi
        android:versionName="1.0">
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <uses-permission android:name="android.permission.BLUETOOTH"/>
      <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
@@ -380,7 +358,7 @@ diff --git a/tools/android/audio_focus_grabber/java/AndroidManifest.xml b/tools/
      package="org.chromium.tools.audio_focus_grabber" >
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
  
      <application
          android:label="@string/app_name" >
@@ -392,10 +370,17 @@ diff --git a/tools/android/push_apps_to_background/AndroidManifest.xml b/tools/a
      android:versionName="1.0" >
  
 -    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
-+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
++    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
  
      <application
          android:icon="@drawable/ic_launcher"
+@@ -26,4 +26,4 @@
+         </intent-filter>
+         </activity>
+     </application>
+-</manifest>
+\ No newline at end of file
++</manifest>
 -- 
 2.11.0
 

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

@@ -56,7 +56,7 @@ 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,7 +74,7 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+@@ -75,7 +75,7 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
              }
          });
  
@@ -65,7 +65,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd
              int paddingStart = getResources().getDimensionPixelSize(
                      R.dimen.fre_tos_checkbox_padding);
              ViewCompat.setPaddingRelative(mSendReportCheckBox,
-@@ -86,8 +86,10 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+@@ -87,8 +87,10 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
              mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
          } else {
              mSendReportCheckBox.setVisibility(View.GONE);
@@ -76,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd
 +        mSendReportCheckBox.setVisibility(View.GONE);
          mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance());
  
-         NoUnderlineClickableSpan clickableTermsSpan = new NoUnderlineClickableSpan((view1) -> {
+         Resources resources = getResources();
 -- 
 2.11.0
 

+ 0 - 481
build/patches/Support-different-secure-DNS-modes-within-DnsTransaction.patch

@@ -1,481 +0,0 @@
-From: dalyk <dalyk@google.com>
-Date: Wed, 13 Feb 2019 17:50:04 +0000
-Subject: Support different secure DNS modes within DnsTransaction.
-
-In SECURE mode, only DnsHTTPAttempts should be made. In AUTOMATIC mode,
-DnsHTTPAttempts should be made first, before falling back to insecure
-attempts. In OFF mode, only insecure attempts should be made.
-
-Follow-up work will correct cache lookups for SECURE and AUTOMATIC modes,
-remove the system resolver fallback for SECURE mode, set the mode
-based on the pref setting, and make AUTOMATIC mode more conservative by
-incorporating state related to DoH (DoH probes, successive DoH failures).
-
-There should be no change in behavior experienced by users configuring
-DoH via the command line since AUTOMATIC mode is used for all queries
-currently.
-
-Bug: 878582
-Change-Id: I5539c5273eb846c95f9a7cdab95429522bc43f50
-Reviewed-on: https://chromium-review.googlesource.com/c/1450858
-Reviewed-by: Paul Jensen <pauljensen@chromium.org>
-Commit-Queue: Katharine Daly <dalyk@google.com>
-Cr-Commit-Position: refs/heads/master@{#631784}
----
- chrome/browser/net/dns_probe_runner.cc             |  3 +-
- .../certificate_transparency/log_dns_client.cc     |  3 +-
- net/dns/BUILD.gn                                   |  1 +
- net/dns/dns_test_util.cc                           |  3 +-
- net/dns/dns_transaction.cc                         | 42 ++++++---
- net/dns/dns_transaction.h                          | 10 ++-
- net/dns/dns_transaction_unittest.cc                | 99 ++++++++++++++++++++--
- net/dns/dns_util.h                                 | 12 +++
- net/dns/host_resolver_impl.cc                      |  2 +-
- 9 files changed, 154 insertions(+), 21 deletions(-)
-
-diff --git a/chrome/browser/net/dns_probe_runner.cc b/chrome/browser/net/dns_probe_runner.cc
---- a/chrome/browser/net/dns_probe_runner.cc
-+++ b/chrome/browser/net/dns_probe_runner.cc
-@@ -17,6 +17,7 @@
- #include "net/dns/dns_client.h"
- #include "net/dns/dns_response.h"
- #include "net/dns/dns_transaction.h"
-+#include "net/dns/dns_util.h"
- #include "net/dns/public/dns_protocol.h"
- #include "net/log/net_log_with_source.h"
- 
-@@ -109,7 +110,7 @@ void DnsProbeRunner::RunProbe(const base::Closure& callback) {
-       kKnownGoodHostname, net::dns_protocol::kTypeA,
-       base::Bind(&DnsProbeRunner::OnTransactionComplete,
-                  weak_factory_.GetWeakPtr()),
--      NetLogWithSource());
-+      NetLogWithSource(), net::SecureDnsMode::AUTOMATIC);
- 
-   transaction_->Start();
- }
-diff --git a/components/certificate_transparency/log_dns_client.cc b/components/certificate_transparency/log_dns_client.cc
---- a/components/certificate_transparency/log_dns_client.cc
-+++ b/components/certificate_transparency/log_dns_client.cc
-@@ -27,6 +27,7 @@
- #include "net/dns/dns_config.h"
- #include "net/dns/dns_response.h"
- #include "net/dns/dns_transaction.h"
-+#include "net/dns/dns_util.h"
- #include "net/dns/public/dns_protocol.h"
- #include "net/dns/record_parsed.h"
- #include "net/dns/record_rdata.h"
-@@ -471,7 +472,7 @@ bool AuditProofQueryImpl::StartDnsTransaction(const std::string& qname) {
-       qname, net::dns_protocol::kTypeTXT,
-       base::BindOnce(&AuditProofQueryImpl::OnDnsTransactionComplete,
-                      weak_ptr_factory_.GetWeakPtr()),
--      net_log_);
-+      net_log_, net::SecureDnsMode::AUTOMATIC);
- 
-   current_dns_transaction_->Start();
-   return true;
-diff --git a/net/dns/BUILD.gn b/net/dns/BUILD.gn
---- a/net/dns/BUILD.gn
-+++ b/net/dns/BUILD.gn
-@@ -291,6 +291,7 @@ source_set("dns_client") {
-       "dns_client.h",
-       "dns_response.h",
-       "dns_transaction.h",
-+      "dns_util.h",
-       "record_parsed.h",
-       "record_rdata.h",
-     ]
-diff --git a/net/dns/dns_test_util.cc b/net/dns/dns_test_util.cc
---- a/net/dns/dns_test_util.cc
-+++ b/net/dns/dns_test_util.cc
-@@ -441,7 +441,8 @@ class MockDnsClient::MockTransactionFactory : public DnsTransactionFactory {
-       const std::string& hostname,
-       uint16_t qtype,
-       DnsTransactionFactory::CallbackType callback,
--      const NetLogWithSource&) override {
-+      const NetLogWithSource&,
-+      SecureDnsMode) override {
-     std::unique_ptr<MockTransaction> transaction =
-         std::make_unique<MockTransaction>(rules_, hostname, qtype,
-                                           std::move(callback));
-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
-@@ -772,11 +772,13 @@ class DnsTransactionImpl : public DnsTransaction,
-                      uint16_t qtype,
-                      DnsTransactionFactory::CallbackType callback,
-                      const NetLogWithSource& net_log,
--                     const OptRecordRdata* opt_rdata)
-+                     const OptRecordRdata* opt_rdata,
-+                     SecureDnsMode secure_dns_mode)
-       : session_(session),
-         hostname_(hostname),
-         qtype_(qtype),
-         opt_rdata_(opt_rdata),
-+        secure_dns_mode_(secure_dns_mode),
-         callback_(std::move(callback)),
-         net_log_(net_log),
-         qnames_initial_size_(0),
-@@ -919,12 +921,17 @@ class DnsTransactionImpl : public DnsTransaction,
-   }
- 
-   AttemptResult MakeAttempt() {
--    // Make an HTTP attempt unless we have already made more attempts
--    // than we have configured servers. Otherwise make a UDP attempt
--    // as long as we have configured nameservers.
-     DnsConfig config = session_->config();
--    if (doh_attempts_ < config.dns_over_https_servers.size())
-+    // In AUTOMATIC and SECURE mode, make an HTTP attempt unless we have already
-+    // made more attempts than we have configured servers.
-+    if (secure_dns_mode_ != SecureDnsMode::OFF &&
-+        doh_attempts_ < config.dns_over_https_servers.size()) {
-       return MakeHTTPAttempt(config.dns_over_https_servers);
-+    }
-+    // In AUTOMATIC mode, insecure attempts are allowed after HTTP attempts are
-+    // exhausted. In OFF mode, only insecure attempts are allowed. It should
-+    // not be possible to reach this point in SECURE mode.
-+    DCHECK_NE(secure_dns_mode_, SecureDnsMode::SECURE);
-     DCHECK_GT(config.nameservers.size(), 0u);
-     return MakeUDPAttempt();
-   }
-@@ -1112,8 +1119,19 @@ class DnsTransactionImpl : public DnsTransaction,
-     if (had_tcp_attempt_)
-       return false;
-     const DnsConfig& config = session_->config();
--    return attempts_.size() < config.attempts * config.nameservers.size() +
--                                  config.dns_over_https_servers.size();
-+    unsigned insecure_attempts_possible =
-+        config.attempts * config.nameservers.size();
-+    unsigned secure_attempts_possible = config.dns_over_https_servers.size();
-+
-+    switch (secure_dns_mode_) {
-+      case SecureDnsMode::SECURE:
-+        return attempts_.size() < secure_attempts_possible;
-+      case SecureDnsMode::AUTOMATIC:
-+        return attempts_.size() <
-+               secure_attempts_possible + insecure_attempts_possible;
-+      case SecureDnsMode::OFF:
-+        return attempts_.size() < insecure_attempts_possible;
-+    }
-   }
- 
-   // Resolves the result of a DnsAttempt until a terminal result is reached
-@@ -1204,6 +1222,7 @@ class DnsTransactionImpl : public DnsTransaction,
-   std::string hostname_;
-   uint16_t qtype_;
-   const OptRecordRdata* opt_rdata_;
-+  const SecureDnsMode secure_dns_mode_;
-   // Cleared in DoCallback.
-   DnsTransactionFactory::CallbackType callback_;
- 
-@@ -1248,10 +1267,11 @@ class DnsTransactionFactoryImpl : public DnsTransactionFactory {
-       const std::string& hostname,
-       uint16_t qtype,
-       CallbackType callback,
--      const NetLogWithSource& net_log) override {
--    return std::make_unique<DnsTransactionImpl>(session_.get(), hostname, qtype,
--                                                std::move(callback), net_log,
--                                                opt_rdata_.get());
-+      const NetLogWithSource& net_log,
-+      SecureDnsMode secure_dns_mode) override {
-+    return std::make_unique<DnsTransactionImpl>(
-+        session_.get(), hostname, qtype, std::move(callback), net_log,
-+        opt_rdata_.get(), secure_dns_mode);
-   }
- 
-   void AddEDNSOption(const OptRecordRdata::Opt& opt) override {
-diff --git a/net/dns/dns_transaction.h b/net/dns/dns_transaction.h
---- a/net/dns/dns_transaction.h
-+++ b/net/dns/dns_transaction.h
-@@ -12,6 +12,7 @@
- 
- #include "base/callback.h"
- #include "net/base/request_priority.h"
-+#include "net/dns/dns_util.h"
- #include "net/dns/record_rdata.h"
- #include "url/gurl.h"
- 
-@@ -69,11 +70,18 @@ class NET_EXPORT_PRIVATE DnsTransactionFactory {
-   //
-   // The transaction will run |callback| upon asynchronous completion.
-   // The |net_log| is used as the parent log.
-+  //
-+  // The |secure_dns_mode| specifies the order in which secure and/or insecure
-+  // DNS lookups will be performed. In SECURE mode, only secure lookups will be
-+  // perfomed. In AUTOMATIC mode, secure lookups will be performed first when
-+  // possible, and insecure lookups will be performed as a fallback. In OFF
-+  // mode, only insecure lookups will be performed.
-   virtual std::unique_ptr<DnsTransaction> CreateTransaction(
-       const std::string& hostname,
-       uint16_t qtype,
-       CallbackType callback,
--      const NetLogWithSource& net_log) WARN_UNUSED_RESULT = 0;
-+      const NetLogWithSource& net_log,
-+      SecureDnsMode secure_dns_mode) WARN_UNUSED_RESULT = 0;
- 
-   // The given EDNS0 option will be included in all DNS queries performed by
-   // transactions from this factory.
-diff --git a/net/dns/dns_transaction_unittest.cc b/net/dns/dns_transaction_unittest.cc
---- a/net/dns/dns_transaction_unittest.cc
-+++ b/net/dns/dns_transaction_unittest.cc
-@@ -246,7 +246,17 @@ class TestSocketFactory : public MockClientSocketFactory {
-     remote_endpoints_.push_back(endpoint);
-   }
- 
--  std::vector<IPEndPoint> remote_endpoints_;
-+  struct RemoteNameserver {
-+    RemoteNameserver(IPEndPoint insecure_nameserver)
-+        : insecure_nameserver(insecure_nameserver) {}
-+    RemoteNameserver(DnsConfig::DnsOverHttpsServerConfig secure_nameserver)
-+        : secure_nameserver(secure_nameserver) {}
-+
-+    base::Optional<IPEndPoint> insecure_nameserver;
-+    base::Optional<DnsConfig::DnsOverHttpsServerConfig> secure_nameserver;
-+  };
-+
-+  std::vector<RemoteNameserver> remote_endpoints_;
-   bool fail_next_socket_;
- 
-  private:
-@@ -269,6 +279,7 @@ class TransactionHelper {
-                     int expected_answer_count)
-       : hostname_(hostname),
-         qtype_(qtype),
-+        secure_dns_mode_(SecureDnsMode::AUTOMATIC),
-         response_(nullptr),
-         expected_answer_count_(expected_answer_count),
-         cancel_in_callback_(false),
-@@ -277,13 +288,19 @@ class TransactionHelper {
-   // Mark that the transaction shall be destroyed immediately upon callback.
-   void set_cancel_in_callback() { cancel_in_callback_ = true; }
- 
-+  // Set the secure DNS mode for the transaction.
-+  void set_secure_dns_mode(SecureDnsMode secure_dns_mode) {
-+    secure_dns_mode_ = secure_dns_mode;
-+  }
-+
-   void StartTransaction(DnsTransactionFactory* factory) {
-     EXPECT_EQ(NULL, transaction_.get());
-     transaction_ = factory->CreateTransaction(
-         hostname_, qtype_,
-         base::Bind(&TransactionHelper::OnTransactionComplete,
-                    base::Unretained(this)),
--        NetLogWithSource::Make(&net_log_, net::NetLogSourceType::NONE));
-+        NetLogWithSource::Make(&net_log_, net::NetLogSourceType::NONE),
-+        secure_dns_mode_);
-     transaction_->SetRequestContext(&request_context_);
-     transaction_->SetRequestPriority(DEFAULT_PRIORITY);
-     EXPECT_EQ(hostname_, transaction_->GetHostname());
-@@ -360,6 +377,7 @@ class TransactionHelper {
-  private:
-   std::string hostname_;
-   uint16_t qtype_;
-+  SecureDnsMode secure_dns_mode_;
-   std::unique_ptr<DnsTransaction> transaction_;
-   const DnsResponse* response_;
-   int expected_answer_count_;
-@@ -669,9 +687,20 @@ class DnsTransactionTestBase : public testing::Test {
-   // |servers|.
-   void CheckServerOrder(const unsigned* servers, size_t num_attempts) {
-     ASSERT_EQ(num_attempts, socket_factory_->remote_endpoints_.size());
-+    auto num_insecure_nameservers = session_->config().nameservers.size();
-     for (size_t i = 0; i < num_attempts; ++i) {
--      EXPECT_EQ(socket_factory_->remote_endpoints_[i],
--                session_->config().nameservers[servers[i]]);
-+      if (servers[i] < num_insecure_nameservers) {
-+        // Check insecure server match.
-+        EXPECT_EQ(
-+            socket_factory_->remote_endpoints_[i].insecure_nameserver.value(),
-+            session_->config().nameservers[servers[i]]);
-+      } else {
-+        // Check secure server match.
-+        EXPECT_EQ(
-+            socket_factory_->remote_endpoints_[i].secure_nameserver.value(),
-+            session_->config()
-+                .dns_over_https_servers[servers[i] - num_insecure_nameservers]);
-+      }
-     }
-   }
- 
-@@ -762,6 +791,7 @@ class DnsTransactionTest : public DnsTransactionTestBase,
-       if (server.use_post && request->method() == "POST") {
-         if (url_base == request->url().spec()) {
-           server_found = true;
-+          socket_factory_->remote_endpoints_.push_back(server);
-         }
-       } else if (!server.use_post && request->method() == "GET") {
-         std::string prefix = url_base + "?dns=";
-@@ -769,6 +799,7 @@ class DnsTransactionTest : public DnsTransactionTestBase,
-                                      request->url().spec().begin());
-         if (mispair.first == prefix.end()) {
-           server_found = true;
-+          socket_factory_->remote_endpoints_.push_back(server);
-         }
-       }
-     }
-@@ -1552,6 +1583,43 @@ TEST_F(DnsTransactionTest, HttpsPostFailThenUDPFallback) {
-   TransactionHelper helper0(kT0HostName, kT0Qtype, kT0RecordCount);
-   SetDohJobMakerCallback(base::BindRepeating(DohJobMakerCallbackFailStart));
-   EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
-+  unsigned kOrder0[] = {1, 0};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
-+}
-+
-+TEST_F(DnsTransactionTest, HttpsPostFailNoUDPFallbackInSecureMode) {
-+  config_.attempts = 1;
-+  ConfigureNumServers(2);
-+  ConfigDohServers(false /* clear_udp */, true /* use_post */, 2);
-+  AddQueryAndErrorResponse(0, kT0HostName, kT0Qtype, ERR_CONNECTION_REFUSED,
-+                           SYNCHRONOUS, Transport::HTTPS);
-+  AddQueryAndErrorResponse(0, kT0HostName, kT0Qtype, ERR_CONNECTION_REFUSED,
-+                           SYNCHRONOUS, Transport::HTTPS);
-+  TransactionHelper helper0(kT0HostName, kT0Qtype, ERR_FAILED);
-+  helper0.set_secure_dns_mode(SecureDnsMode::SECURE);
-+  SetDohJobMakerCallback(base::BindRepeating(DohJobMakerCallbackFailStart));
-+  EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
-+  unsigned kOrder0[] = {2, 3};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
-+}
-+
-+TEST_F(DnsTransactionTest, NoHttpsAttemptInOffMode) {
-+  config_.attempts = 2;
-+  ConfigureNumServers(2);
-+  ConfigDohServers(false /* clear_udp */, true /* use_post */, 2);
-+  AddQueryAndErrorResponse(0, kT0HostName, kT0Qtype, ERR_CONNECTION_REFUSED,
-+                           SYNCHRONOUS, Transport::UDP);
-+  AddQueryAndErrorResponse(0, kT0HostName, kT0Qtype, ERR_CONNECTION_REFUSED,
-+                           SYNCHRONOUS, Transport::UDP);
-+  AddQueryAndErrorResponse(0, kT0HostName, kT0Qtype, ERR_CONNECTION_REFUSED,
-+                           SYNCHRONOUS, Transport::UDP);
-+  AddQueryAndResponse(0, kT0HostName, kT0Qtype, kT0ResponseDatagram,
-+                      base::size(kT0ResponseDatagram), ASYNC, Transport::UDP);
-+  TransactionHelper helper0(kT0HostName, kT0Qtype, kT0RecordCount);
-+  helper0.set_secure_dns_mode(SecureDnsMode::OFF);
-+  EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
-+  unsigned kOrder0[] = {0, 1, 0, 1};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
- }
- 
- TEST_F(DnsTransactionTest, HttpsPostFailThenUDPFailThenUDPFallback) {
-@@ -1575,6 +1643,8 @@ TEST_F(DnsTransactionTest, HttpsPostFailThenUDPFailThenUDPFallback) {
-   EXPECT_EQ(session_->NextGoodServerIndex(0), 1u);
-   EXPECT_EQ(session_->NextGoodServerIndex(1), 1u);
-   EXPECT_EQ(session_->NextGoodServerIndex(2), 2u);
-+  unsigned kOrder0[] = {3, 0, 1};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
- }
- 
- TEST_F(DnsTransactionTest, HttpsMarkUdpBad) {
-@@ -1595,6 +1665,8 @@ TEST_F(DnsTransactionTest, HttpsMarkUdpBad) {
-   EXPECT_EQ(session_->NextGoodServerIndex(0), 1u);
-   EXPECT_EQ(session_->NextGoodServerIndex(1), 1u);
-   EXPECT_EQ(session_->NextGoodDnsOverHttpsServerIndex(2), 2u);
-+  unsigned kOrder0[] = {2, 0, 1};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
- 
-   AddQueryAndErrorResponse(1, kT1HostName, kT1Qtype, ERR_CONNECTION_REFUSED,
-                            SYNCHRONOUS, Transport::HTTPS);
-@@ -1612,6 +1684,11 @@ TEST_F(DnsTransactionTest, HttpsMarkUdpBad) {
-   EXPECT_EQ(session_->NextGoodServerIndex(0), 0u);
-   EXPECT_EQ(session_->NextGoodServerIndex(1), 0u);
-   EXPECT_EQ(session_->NextGoodDnsOverHttpsServerIndex(2), 2u);
-+  unsigned kOrder1[] = {
-+      2, 0, 1, /* transaction0 */
-+      2, 1, 0  /* transaction1 */
-+  };
-+  CheckServerOrder(kOrder1, base::size(kOrder1));
- }
- 
- TEST_F(DnsTransactionTest, HttpsMarkHttpsBad) {
-@@ -1627,7 +1704,6 @@ TEST_F(DnsTransactionTest, HttpsMarkHttpsBad) {
-                            SYNCHRONOUS, Transport::HTTPS);
-   AddQueryAndErrorResponse(1, kT1HostName, kT1Qtype, ERR_CONNECTION_REFUSED,
-                            SYNCHRONOUS, Transport::HTTPS);
--
-   AddQueryAndResponse(1, kT1HostName, kT1Qtype, kT1ResponseDatagram,
-                       base::size(kT1ResponseDatagram), ASYNC, Transport::HTTPS);
-   TransactionHelper helper0(kT0HostName, kT0Qtype, kT0RecordCount);
-@@ -1640,6 +1716,8 @@ TEST_F(DnsTransactionTest, HttpsMarkHttpsBad) {
-   EXPECT_EQ(session_->NextGoodDnsOverHttpsServerIndex(1), 3u);
-   EXPECT_EQ(session_->NextGoodDnsOverHttpsServerIndex(2), 3u);
-   EXPECT_EQ(session_->NextGoodDnsOverHttpsServerIndex(3), 3u);
-+  unsigned kOrder0[] = {1, 2, 3};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
- 
-   EXPECT_TRUE(helper1.RunUntilDone(transaction_factory_.get()));
-   // Server 0 is still our only UDP server, so will be good by definition.
-@@ -1651,6 +1729,11 @@ TEST_F(DnsTransactionTest, HttpsMarkHttpsBad) {
-   EXPECT_EQ(session_->NextGoodDnsOverHttpsServerIndex(1), 2u);
-   EXPECT_EQ(session_->NextGoodDnsOverHttpsServerIndex(2), 2u);
-   EXPECT_EQ(session_->NextGoodDnsOverHttpsServerIndex(3), 2u);
-+  unsigned kOrder1[] = {
-+      1, 2, 3, /* transaction0 */
-+      3, 1, 2  /* transaction1 */
-+  };
-+  CheckServerOrder(kOrder1, base::size(kOrder1));
- }
- 
- TEST_F(DnsTransactionTest, HttpsPostFailThenHTTPFallback) {
-@@ -1662,6 +1745,8 @@ TEST_F(DnsTransactionTest, HttpsPostFailThenHTTPFallback) {
-                       Transport::HTTPS);
-   TransactionHelper helper0(kT0HostName, kT0Qtype, kT0RecordCount);
-   EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
-+  unsigned kOrder0[] = {0, 1};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
- }
- 
- TEST_F(DnsTransactionTest, HttpsPostFailTwiceThenUDPFallback) {
-@@ -1678,6 +1763,8 @@ TEST_F(DnsTransactionTest, HttpsPostFailTwiceThenUDPFallback) {
-   TransactionHelper helper0(kT0HostName, kT0Qtype, kT0RecordCount);
-   SetDohJobMakerCallback(base::BindRepeating(DohJobMakerCallbackFailStart));
-   EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
-+  unsigned kOrder0[] = {1, 2, 0};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
- }
- 
- TEST_F(DnsTransactionTest, HttpsPostFailTwice) {
-@@ -1692,6 +1779,8 @@ TEST_F(DnsTransactionTest, HttpsPostFailTwice) {
-   TransactionHelper helper0(kT0HostName, kT0Qtype, ERR_FAILED);
-   SetDohJobMakerCallback(base::BindRepeating(DohJobMakerCallbackFailStart));
-   EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
-+  unsigned kOrder0[] = {0, 1};
-+  CheckServerOrder(kOrder0, base::size(kOrder0));
- }
- 
- void MakeResponseWithCookie(URLRequest* request, HttpResponseInfo* info) {
-diff --git a/net/dns/dns_util.h b/net/dns/dns_util.h
---- a/net/dns/dns_util.h
-+++ b/net/dns/dns_util.h
-@@ -93,6 +93,18 @@ uint16_t DnsQueryTypeToQtype(DnsQueryType dns_query_type);
- NET_EXPORT DnsQueryType
- AddressFamilyToDnsQueryType(AddressFamily address_family);
- 
-+// The SecureDnsMode specifies what types of lookups (secure/insecure) should
-+// be performed and in what order when resolving a specific query.
-+enum SecureDnsMode : int {
-+  // In OFF mode, no DoH lookups should be performed.
-+  OFF,
-+  // In AUTOMATIC mode, DoH lookups should be performed first if DoH is
-+  // available, and insecure DNS lookups should be performed as a fallback.
-+  AUTOMATIC,
-+  // In SECURE mode, only DoH lookups should be performed.
-+  SECURE,
-+};
-+
- }  // namespace net
- 
- #endif  // NET_DNS_DNS_UTIL_H_
-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
-@@ -1066,7 +1066,7 @@ class HostResolverImpl::DnsTask : public base::SupportsWeakPtr<DnsTask> {
-             base::BindOnce(&DnsTask::OnTransactionComplete,
-                            base::Unretained(this), tick_clock_->NowTicks(),
-                            dns_query_type),
--            net_log_);
-+            net_log_, SecureDnsMode::AUTOMATIC);
-     trans->SetRequestContext(delegate_->url_request_context());
-     trans->SetRequestPriority(delegate_->priority());
-     return trans;
--- 
-2.11.0
-

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

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

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

@@ -22,7 +22,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
      private boolean mSearchProviderIsGoogle;
  
      private boolean mInitialized;
-@@ -550,7 +550,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -542,7 +542,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
                  && mInitialized) {
              return;
          }
@@ -31,7 +31,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
          mSearchProviderIsGoogle = isGoogle;
  
          updateTileGridPadding();
-@@ -839,7 +839,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -834,7 +834,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
      }
  
      private static int getMaxTileRows() {

+ 2 - 2
build/patches/User-Agent-anonymize.patch

@@ -27,9 +27,9 @@ diff --git a/chrome/browser/ui/android/android_about_app_info.cc b/chrome/browse
 diff --git a/components/version_info/version_info.cc b/components/version_info/version_info.cc
 --- a/components/version_info/version_info.cc
 +++ b/components/version_info/version_info.cc
-@@ -7,13 +7,24 @@
- #include "base/logging.h"
+@@ -8,13 +8,24 @@
  #include "base/no_destructor.h"
+ #include "base/strings/string_number_conversions.h"
  #include "base/version.h"
 +#include "base/system/sys_info.h"
  #include "build/build_config.h"

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

@@ -11,15 +11,15 @@ Disables the autofill download manager (trk:158).
 diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
 --- a/components/autofill/core/browser/autofill_download_manager.cc
 +++ b/components/autofill/core/browser/autofill_download_manager.cc
-@@ -52,7 +52,6 @@ namespace autofill {
- 
- namespace {
+@@ -60,7 +60,6 @@ constexpr std::pair<int, int> kAutofillExperimentRanges[] = {
+     {3314445, 3314448}, {3314854, 3314883},
+ };
  
 -const size_t kMaxQueryGetSize = 1400;  // 1.25KB
  const size_t kAutofillDownloadManagerMaxFormCacheSize = 16;
  const size_t kMaxFieldsPerQueryRequest = 100;
  
-@@ -412,6 +411,7 @@ bool GetUploadPayloadForApi(const AutofillUploadContents& upload,
+@@ -448,6 +447,7 @@ bool GetUploadPayloadForApi(const AutofillUploadContents& upload,
    return upload_request.SerializeToString(payload);
  }
  
@@ -27,7 +27,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
  // Gets an API method URL given its type (query or upload) and an optional
  // resource ID.
  // Example usage:
-@@ -434,6 +434,7 @@ std::string GetAPIMethodUrl(AutofillDownloadManager::RequestType type,
+@@ -470,6 +470,7 @@ std::string GetAPIMethodUrl(AutofillDownloadManager::RequestType type,
    }
    return base::StrCat({api_method_url, "/", resource_id});
  }
@@ -35,7 +35,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
  
  }  // namespace
  
-@@ -559,6 +560,7 @@ void AutofillDownloadManager::ClearUploadHistory(PrefService* pref_service) {
+@@ -643,6 +644,7 @@ void AutofillDownloadManager::ClearUploadHistory(PrefService* pref_service) {
  
  std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
      const FormRequestData& request_data) const {
@@ -43,7 +43,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
    std::string method("POST");
    std::string query_str;
  
-@@ -581,12 +583,17 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
+@@ -665,12 +667,17 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
    GURL url = autofill_server_url_
                   .Resolve(RequestTypeToString(request_data.request_type))
                   .ReplaceComponents(replacements);
@@ -61,7 +61,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
    // ID of the resource to add to the API request URL. Nothing will be added if
    // |resource_id| is empty.
    std::string resource_id;
-@@ -615,6 +622,10 @@ AutofillDownloadManager::GetRequestURLAndMethodForApi(
+@@ -699,6 +706,10 @@ AutofillDownloadManager::GetRequestURLAndMethodForApi(
        (request_data.request_type == AutofillDownloadManager::REQUEST_QUERY)
            ? "GET"
            : "POST";
@@ -75,7 +75,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
 diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
 --- a/components/autofill/core/browser/autofill_manager.cc
 +++ b/components/autofill/core/browser/autofill_manager.cc
-@@ -172,19 +172,6 @@ void LogDeveloperEngagementUkm(ukm::UkmRecorder* ukm_recorder,
+@@ -175,19 +175,6 @@ void LogDeveloperEngagementUkm(ukm::UkmRecorder* ukm_recorder,
    }
  }
  
@@ -95,7 +95,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
  }  // namespace
  
  AutofillManager::FillingContext::FillingContext() = default;
-@@ -1281,11 +1268,6 @@ AutofillManager::AutofillManager(
+@@ -1277,11 +1264,6 @@ AutofillManager::AutofillManager(
        weak_ptr_factory_(this) {
    DCHECK(driver);
    DCHECK(client_);

+ 1 - 1
build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.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
-@@ -122,10 +122,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
+@@ -117,10 +117,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
  // cached.
  const int kIPv6ProbePeriodMs = 1000;
  

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

@@ -30,10 +30,10 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "base/macros.h"
  #include "base/optional.h"
 +#include "base/rand_util.h"
+ #include "cc/input/overscroll_behavior.h"
+ #include "cc/input/scroll_snap_data.h"
  #include "services/metrics/public/cpp/mojo_ukm_recorder.h"
- #include "services/metrics/public/cpp/ukm_builders.h"
- #include "services/metrics/public/cpp/ukm_source_id.h"
-@@ -734,6 +735,10 @@ Document::Document(const DocumentInit& initializer,
+@@ -738,6 +739,10 @@ Document::Document(const DocumentInit& initializer,
    }
    DCHECK(fetcher_);
  
@@ -44,7 +44,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
    root_scroller_controller_ = RootScrollerController::Create(*this);
  
    // We depend on the url getting immediately set in subframes, but we
-@@ -799,6 +804,14 @@ Range* Document::CreateRangeAdjustedToTreeScope(const TreeScope& tree_scope,
+@@ -803,6 +808,14 @@ Range* Document::CreateRangeAdjustedToTreeScope(const TreeScope& tree_scope,
                         Position::BeforeNode(*shadow_host));
  }
  
@@ -62,7 +62,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
 diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
 --- a/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
-@@ -389,6 +389,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -393,6 +393,9 @@ class CORE_EXPORT Document : public ContainerNode,
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
    }
  
@@ -72,7 +72,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
    String visibilityState() const;
    bool IsPageVisible() const;
    bool hidden() const;
-@@ -1798,6 +1801,8 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1815,6 +1818,8 @@ class CORE_EXPORT Document : public ContainerNode,
  
    double start_time_;
  
@@ -84,7 +84,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
 diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
 --- a/third_party/blink/renderer/core/dom/element.cc
 +++ b/third_party/blink/renderer/core/dom/element.cc
-@@ -1202,6 +1202,15 @@ DOMRectList* Element::getClientRects() {
+@@ -1222,6 +1222,15 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
@@ -100,7 +100,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return DOMRectList::Create(quads);
  }
  
-@@ -1219,6 +1228,13 @@ DOMRect* Element::getBoundingClientRect() {
+@@ -1239,6 +1248,13 @@ DOMRect* Element::getBoundingClientRect() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
@@ -117,7 +117,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
 diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/renderer/core/dom/range.cc
 --- a/third_party/blink/renderer/core/dom/range.cc
 +++ b/third_party/blink/renderer/core/dom/range.cc
-@@ -1646,11 +1646,27 @@ DOMRectList* Range::getClientRects() const {
+@@ -1642,11 +1642,27 @@ DOMRectList* Range::getClientRects() const {
    Vector<FloatQuad> quads;
    GetBorderAndTextQuads(quads);
  
@@ -198,7 +198,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
  #include "third_party/blink/public/common/features.h"
  #include "third_party/blink/public/platform/platform.h"
  #include "third_party/blink/public/platform/task_type.h"
-@@ -784,8 +786,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
+@@ -793,8 +795,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
    else
      direction = ToTextDirection(GetState().GetDirection(), canvas());
  

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

@@ -86,7 +86,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;
  
-@@ -117,48 +114,18 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -116,48 +113,18 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
          // so don't report any accounts if Google Play Services are out of date.
          checkCanUseGooglePlayServices();
  
@@ -138,7 +138,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
      }
  
      @Override
-@@ -198,17 +165,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -197,17 +164,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
      @SuppressLint("MissingPermission")
      @Override
      public void createAddAccountIntent(Callback<Intent> callback) {

+ 23 - 28
build/patches/kill-GCM.patch

@@ -8,7 +8,7 @@ Subject: kill GCM
  chrome/android/java/AndroidManifest.xml            |  62 ---------
  .../chrome/browser/BackgroundSyncLauncher.java     |  97 --------------
  .../chrome/browser/ChromeBackgroundService.java    |   1 -
- .../invalidation/InvalidationController.java       |  13 --
+ .../invalidation/InvalidationController.java       |   8 --
  .../browser/ntp/snippets/SnippetsLauncher.java     |  44 -------
  .../browser/services/gcm/GCMBackgroundTask.java    |   2 +-
  .../gcm/InvalidationGcmUpstreamSender.java         |  15 ---
@@ -22,7 +22,7 @@ Subject: kill GCM
  third_party/cacheinvalidation/BUILD.gn             |   6 -
  .../client/contrib/MultiplexingGcmListener.java    |  92 +------------
  .../android2/channel/AndroidNetworkChannel.java    |  18 +--
- 19 files changed, 15 insertions(+), 531 deletions(-)
+ 19 files changed, 15 insertions(+), 526 deletions(-)
 
 diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
 --- a/build/secondary/third_party/android_tools/BUILD.gn
@@ -40,7 +40,7 @@ diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondar
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -369,7 +369,6 @@ android_library("chrome_java") {
+@@ -344,7 +344,6 @@ android_library("chrome_java") {
      "//third_party/android_deps:javax_inject_javax_inject_java",
      "//third_party/android_media:android_media_java",
      "//third_party/android_swipe_refresh:android_swipe_refresh_java",
@@ -51,7 +51,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
-@@ -77,22 +77,17 @@ by a child template that "extends" this file.
+@@ -81,22 +81,17 @@ by a child template that "extends" this file.
      <permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
      <permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
      <permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
@@ -74,7 +74,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" />
-@@ -991,43 +986,6 @@ by a child template that "extends" this file.
+@@ -1002,43 +997,6 @@ by a child template that "extends" this file.
              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
              android:hardwareAccelerated="false" />
  
@@ -118,7 +118,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"/>
-@@ -1039,8 +997,6 @@ by a child template that "extends" this file.
+@@ -1050,8 +1008,6 @@ by a child template that "extends" this file.
          </service>
          <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
              android:exported="false"/>
@@ -127,7 +127,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"
-@@ -1067,24 +1023,6 @@ by a child template that "extends" this file.
+@@ -1078,24 +1034,6 @@ by a child template that "extends" this file.
              android:exported="false"
              android:permission="android.permission.BIND_JOB_SERVICE"/>
  
@@ -175,7 +175,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncL
      /**
       * Disables the automatic use of the GCMNetworkManager. When disabled, the methods which
       * interact with GCM can still be used, but will not be called automatically on creation, or by
-@@ -124,30 +118,6 @@ public class BackgroundSyncLauncher {
+@@ -123,30 +117,6 @@ public class BackgroundSyncLauncher {
      @VisibleForTesting
      @CalledByNative
      protected void launchBrowserIfStopped(final boolean shouldLaunch, final long minDelayMs) {
@@ -206,7 +206,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncL
      }
  
      /**
-@@ -159,7 +129,6 @@ public class BackgroundSyncLauncher {
+@@ -158,7 +128,6 @@ public class BackgroundSyncLauncher {
      }
  
      protected BackgroundSyncLauncher() {
@@ -214,7 +214,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncL
          launchBrowserIfStopped(false, 0);
      }
  
-@@ -188,72 +157,6 @@ public class BackgroundSyncLauncher {
+@@ -187,72 +156,6 @@ public class BackgroundSyncLauncher {
          return !sGCMEnabled;
      }
  
@@ -310,22 +310,17 @@ 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.ContextUtils;
-@@ -192,18 +190,7 @@ public class InvalidationController implements ApplicationStatus.ApplicationStat
+@@ -193,13 +191,7 @@ public class InvalidationController implements ApplicationStatus.ApplicationStat
       * Registers for Google Cloud Messaging (GCM) for Invalidations.
       */
      private void ensureGcmIsInitialized() {
 -        if (mGcmInitialized) return;
          mGcmInitialized = true;
--        new AsyncTask<Void>() {
--            @Override
--            protected Void doInBackground() {
--                boolean useGcmUpstream = true;
--                AndroidGcmController.get(ContextUtils.getApplicationContext())
--                        .initializeGcm(useGcmUpstream);
--                return null;
--            }
--        }
--                .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+-        PostTask.postTask(TaskTraits.BEST_EFFORT_MAY_BLOCK, () -> {
+-            boolean useGcmUpstream = true;
+-            AndroidGcmController.get(ContextUtils.getApplicationContext())
+-                    .initializeGcm(useGcmUpstream);
+-        });
      }
  
      @VisibleForTesting
@@ -445,8 +440,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
  import com.google.ipc.invalidation.ticl.android2.channel.GcmUpstreamSenderService;
  
  import org.chromium.base.ContextUtils;
-@@ -93,20 +92,6 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
-      * This function runs on a thread from the AsyncTask.THREAD_POOL_EXECUTOR.
+@@ -87,20 +86,6 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
+      * This function runs on a thread pool executor thread.
       */
      private void sendUpstreamMessage(String to, Bundle data, String token, Context context) {
 -        // Add the OAuth2 token to the bundle. The token should have the prefix Bearer added to it.
@@ -476,8 +471,8 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
 -  "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java",
    "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
    "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
-   "java/src/org/chromium/chrome/browser/ChromeFeatureList.java",
-@@ -1447,7 +1446,6 @@ chrome_java_sources = [
+   "java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
+@@ -1385,7 +1384,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java",
    "java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
    "java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
@@ -604,11 +599,11 @@ diff --git a/components/background_task_scheduler/android/java/src/org/chromium/
 -            @TaskInfo.NetworkType int networkType) {
 -        switch (networkType) {
 -            // This is correct: GcmNM ANY means no network is guaranteed.
--            case TaskInfo.NETWORK_TYPE_NONE:
+-            case TaskInfo.NetworkType.NONE:
 -                return Task.NETWORK_STATE_ANY;
--            case TaskInfo.NETWORK_TYPE_ANY:
+-            case TaskInfo.NetworkType.ANY:
 -                return Task.NETWORK_STATE_CONNECTED;
--            case TaskInfo.NETWORK_TYPE_UNMETERED:
+-            case TaskInfo.NetworkType.UNMETERED:
 -                return Task.NETWORK_STATE_UNMETERED;
 -            default:
 -                assert false;

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

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

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

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

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

@@ -13,7 +13,7 @@ Barcode, face and text detection APIs
 diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
 --- a/services/shape_detection/BUILD.gn
 +++ b/services/shape_detection/BUILD.gn
-@@ -85,14 +85,10 @@ if (is_android) {
+@@ -84,14 +84,10 @@ if (is_android) {
  
    android_library("shape_detection_java") {
      java_files = [

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

@@ -12,7 +12,7 @@ Limit threads auto-detect only for iOS
 diff --git a/content/renderer/media_recorder/h264_encoder.cc b/content/renderer/media_recorder/h264_encoder.cc
 --- a/content/renderer/media_recorder/h264_encoder.cc
 +++ b/content/renderer/media_recorder/h264_encoder.cc
-@@ -149,11 +149,11 @@ void H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) {
+@@ -150,11 +150,11 @@ void H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) {
      init_params.iRCMode = RC_OFF_MODE;
    }
  

+ 1 - 1
build/patches/profile-resetter-do-not-tick-send-settings-by-default.patch

@@ -16,7 +16,7 @@ any information.
 diff --git a/chrome/browser/profile_resetter/reset_report_uploader.cc b/chrome/browser/profile_resetter/reset_report_uploader.cc
 --- a/chrome/browser/profile_resetter/reset_report_uploader.cc
 +++ b/chrome/browser/profile_resetter/reset_report_uploader.cc
-@@ -19,7 +19,7 @@
+@@ -20,7 +20,7 @@
  
  namespace {
  const char kResetReportUrl[] =

+ 6 - 6
build/patches/promo-disable-Google-promotion-fetching.patch

@@ -22,14 +22,14 @@ 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
-@@ -86,6 +86,7 @@ const char kSigninPromoLandingURLSuccessPage[] = "success.html";
- 
- bool ShouldShowPromoAtStartup(Profile* profile, bool is_new_profile) {
-   DCHECK(profile);
+@@ -86,6 +86,7 @@ GURL GetEmbeddedPromoURL(signin_metrics::AccessPoint access_point,
+     url = net::AppendQueryParameter(url, signin::kSignInPromoQueryKeyAutoClose,
+                                     "1");
+   }
 +  return false;
+   return url;
+ }
  
-   // Don't show if the profile is an incognito.
-   if (profile->IsOffTheRecord())
 -- 
 2.11.0
 

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

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

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

@@ -16,7 +16,7 @@ the URL so we get notified if this happens again in the future).
 diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc b/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc
 --- a/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc
 +++ b/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc
-@@ -22,7 +22,7 @@ namespace safe_browsing {
+@@ -23,7 +23,7 @@ namespace safe_browsing {
  namespace {
  
  const char kSbIncidentReportUrl[] =
@@ -28,7 +28,7 @@ diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_report_upl
 diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
 --- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
 +++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
-@@ -310,11 +310,14 @@ IncidentReportingService::UploadContext::~UploadContext() {
+@@ -311,11 +311,14 @@ IncidentReportingService::UploadContext::~UploadContext() {
  
  // static
  bool IncidentReportingService::IsEnabledForProfile(Profile* profile) {

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

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

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

@@ -18,7 +18,7 @@ See also: https://github.com/Eloston/ungoogled-chromium/issues/104
 diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
 --- a/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
-@@ -384,7 +384,6 @@
+@@ -396,7 +396,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" />
-@@ -487,7 +486,6 @@
+@@ -496,7 +495,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" />
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
 diff --git a/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc b/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
 --- a/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
 +++ b/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
-@@ -67,7 +67,6 @@ bool IsComponentExtensionWhitelisted(int manifest_resource_id) {
+@@ -68,7 +68,6 @@ bool IsComponentExtensionWhitelisted(int manifest_resource_id) {
  #endif
      case IDR_CRYPTOTOKEN_MANIFEST:
      case IDR_FEEDBACK_MANIFEST:
@@ -48,7 +48,7 @@ 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,7 +42,7 @@ ComponentLoader* GetComponentLoader(BrowserContext* context) {
+@@ -43,7 +43,7 @@ ComponentLoader* GetComponentLoader(BrowserContext* context) {
  
  void LoadGaiaAuthExtension(BrowserContext* context) {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -57,7 +57,7 @@ diff --git a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc b/ch
    ComponentLoader* component_loader = GetComponentLoader(context);
    const base::CommandLine* command_line =
        base::CommandLine::ForCurrentProcess();
-@@ -55,6 +55,7 @@ void LoadGaiaAuthExtension(BrowserContext* context) {
+@@ -56,6 +56,7 @@ void LoadGaiaAuthExtension(BrowserContext* context) {
  
    component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
                          base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
@@ -80,7 +80,7 @@ diff --git a/chrome/browser/resources/component_extension_resources.grd b/chrome
 diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/ui/webui/signin/inline_login_ui.cc
 --- a/chrome/browser/ui/webui/signin/inline_login_ui.cc
 +++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc
-@@ -49,7 +49,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
+@@ -51,7 +51,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
  
    source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
    source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);
@@ -91,7 +91,7 @@ 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
-@@ -44,7 +44,7 @@ namespace {
+@@ -45,7 +45,7 @@ namespace {
  const int kLoadFlagsIgnoreCookies = net::LOAD_DO_NOT_SEND_COOKIES |
                                      net::LOAD_DO_NOT_SAVE_COOKIES;
  
@@ -100,7 +100,7 @@ diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_
  
  std::unique_ptr<const GaiaAuthConsumer::ClientOAuthResult>
  ExtractOAuth2TokenPairResponse(const std::string& data) {
-@@ -260,6 +260,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
+@@ -261,6 +261,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
      const net::NetworkTrafficAnnotationTag& traffic_annotation) {
    DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
  
@@ -108,7 +108,7 @@ diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_
    auto resource_request = std::make_unique<network::ResourceRequest>();
    resource_request->url = gaia_gurl;
    original_url_ = gaia_gurl;
-@@ -314,6 +315,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
+@@ -315,6 +316,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
        base::BindOnce(&GaiaAuthFetcher::OnURLLoadComplete,
                       base::Unretained(this)),
        kMaxMessageSize);

+ 3 - 3
build/patches/ungoogled-chromium-Disable-Google-host-detection.patch

@@ -323,11 +323,11 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co
 +  return false;
  }
  
- const std::vector<std::string>& GetGoogleRegistrableDomains() {
+ bool IsGoogleAssociatedDomainUrl(const GURL& url) {
 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
-@@ -504,11 +504,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
+@@ -505,11 +505,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
  bool TemplateURLRef::HasGoogleBaseURLs(
      const SearchTermsData& search_terms_data) const {
    ParseIfNecessary(search_terms_data);
@@ -343,7 +343,7 @@ diff --git a/components/search_engines/template_url.cc b/components/search_engin
 diff --git a/net/base/url_util.cc b/net/base/url_util.cc
 --- a/net/base/url_util.cc
 +++ b/net/base/url_util.cc
-@@ -383,28 +383,6 @@ void GetIdentityFromURL(const GURL& url,
+@@ -392,28 +392,6 @@ void GetIdentityFromURL(const GURL& url,
  }
  
  bool HasGoogleHost(const GURL& url) {

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

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

+ 75 - 82
build/patches/ungoogled-chromium-disable-safe-browsing.patch → build/patches/ungoogled-chromium-Disable-safe-browsing.patch

@@ -1,33 +1,33 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Tue, 16 Oct 2018 05:22:59 +0200
-Subject: ungoogled-chromium: disable safe browsing
+Subject: ungoogled-chromium: Disable safe browsing
 
 ---
  chrome/browser/BUILD.gn                            |  2 -
  chrome/browser/browser_process.h                   | 16 -----
  chrome/browser/browser_process_impl.cc             | 29 ---------
  chrome/browser/browser_process_impl.h              |  6 --
- .../chrome_browsing_data_remover_delegate.cc       | 29 ---------
+ .../chrome_browsing_data_remover_delegate.cc       | 30 ---------
  chrome/browser/chrome_content_browser_client.cc    | 32 +---------
  .../file_type_policies_component_installer.cc      | 14 -----
- .../download/chrome_download_manager_delegate.cc   | 17 -----
+ .../download/chrome_download_manager_delegate.cc   | 17 ------
  chrome/browser/download/download_item_model.cc     |  3 -
  chrome/browser/download/download_prefs.cc          | 13 +---
- .../browser/download/download_target_determiner.cc | 24 +------
+ .../browser/download/download_target_determiner.cc | 24 +-------
  .../extensions/api/downloads/downloads_api.cc      | 39 +-----------
  .../extensions/api/downloads/downloads_api.h       | 10 ---
- .../api/webstore_private/webstore_private_api.cc   | 43 +------------
- .../browser/extensions/blacklist_state_fetcher.cc  | 34 ++--------
+ .../api/webstore_private/webstore_private_api.cc   | 44 +-------------
+ .../browser/extensions/blacklist_state_fetcher.cc  | 34 ++---------
  .../browser/extensions/blacklist_state_fetcher.h   |  3 -
- .../chrome_resource_dispatcher_host_delegate.cc    |  7 +--
+ .../chrome_resource_dispatcher_host_delegate.cc    |  5 +-
  .../metrics/chrome_metrics_service_client.cc       |  3 -
- .../browser/net/trial_comparison_cert_verifier.cc  |  3 -
+ .../trial_comparison_cert_verifier_controller.cc   |  3 -
  .../chrome_browser_main_extra_parts_profiles.cc    |  1 -
  chrome/browser/profiles/profile_impl.cc            | 14 +----
  chrome/browser/safe_browsing/BUILD.gn              |  2 +
  chrome/browser/ssl/captive_portal_blocking_page.cc |  7 +--
  chrome/browser/ssl/cert_report_helper.cc           |  2 -
- chrome/browser/ssl/security_state_tab_helper.cc    | 73 ----------------------
+ chrome/browser/ssl/security_state_tab_helper.cc    | 71 ----------------------
  .../chrome_subresource_filter_client.cc            | 14 -----
  chrome/browser/ui/BUILD.gn                         |  1 -
  chrome/browser/ui/tab_helpers.cc                   | 22 +++----
@@ -35,12 +35,12 @@ Subject: ungoogled-chromium: disable safe browsing
  chrome/renderer/chrome_content_renderer_client.cc  |  1 -
  components/safe_browsing/features.cc               |  2 +-
  .../core/browser/subresource_filter_features.cc    |  2 +-
- 32 files changed, 33 insertions(+), 446 deletions(-)
+ 32 files changed, 32 insertions(+), 445 deletions(-)
 
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2696,8 +2696,6 @@ jumbo_split_static_library("browser") {
+@@ -2800,8 +2800,6 @@ jumbo_split_static_library("browser") {
        "download/download_commands.h",
        "download/download_crx_util.cc",
        "download/download_crx_util.h",
@@ -175,7 +175,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
 diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
 +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
-@@ -628,35 +628,6 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
+@@ -646,36 +646,6 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
          CONTENT_SETTINGS_TYPE_CLIENT_HINTS, base::Time(), base::Time::Max(),
          website_settings_filter);
  
@@ -202,9 +202,10 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
 -
 -        manager_ptr->DeleteCookies(
 -            std::move(deletion_filter),
--            base::BindOnce(&OnClearedCookies,
--                           CreatePendingTaskCompletionClosure(),
--                           std::move(cookie_manager)));
+-            base::BindOnce(
+-                &OnClearedCookies,
+-                CreateTaskCompletionClosure(TracingDataType::kCookies),
+-                std::move(cookie_manager)));
 -      }
 -    }
 -
@@ -214,7 +215,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -853,30 +853,6 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) {
+@@ -860,30 +860,6 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) {
    GetIOThreadApplicationLocale() = locale;
  }
  
@@ -245,7 +246,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if defined(OS_ANDROID)
  float GetDeviceScaleAdjustment() {
    static const float kMinFSM = 1.05f;
-@@ -2052,7 +2028,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
+@@ -2089,7 +2065,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
        // Disable client-side phishing detection in the renderer if it is
        // disabled in the Profile preferences or the browser process.
        if (!prefs->GetBoolean(prefs::kSafeBrowsingEnabled) ||
@@ -254,7 +255,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
          command_line->AppendSwitch(
              switches::kDisableClientSidePhishingDetection);
        }
-@@ -2747,7 +2723,7 @@ void ChromeContentBrowserClient::AllowCertificateError(
+@@ -2718,7 +2694,7 @@ void ChromeContentBrowserClient::AllowCertificateError(
    SSLErrorHandler::HandleSSLError(
        web_contents, cert_error, ssl_info, request_url,
        expired_previous_decision,
@@ -263,7 +264,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
        callback, SSLErrorHandler::BlockingPageReadyCallback());
  }
  
-@@ -3030,8 +3006,6 @@ bool ChromeContentBrowserClient::CanCreateWindow(
+@@ -3003,8 +2979,6 @@ bool ChromeContentBrowserClient::CanCreateWindow(
  void ChromeContentBrowserClient::ResourceDispatcherHostCreated() {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
  
@@ -272,7 +273,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    for (size_t i = 0; i < extra_parts_.size(); ++i)
      extra_parts_[i]->ResourceDispatcherHostCreated();
  
-@@ -4250,7 +4224,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4242,7 +4216,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
    if (base::FeatureList::IsEnabled(features::kSSLCommittedInterstitials)) {
      throttles.push_back(std::make_unique<SSLErrorNavigationThrottle>(
          handle,
@@ -308,7 +309,7 @@ diff --git a/chrome/browser/component_updater/file_type_policies_component_insta
 diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
 --- a/chrome/browser/download/chrome_download_manager_delegate.cc
 +++ b/chrome/browser/download/chrome_download_manager_delegate.cc
-@@ -322,13 +322,6 @@ ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() {
+@@ -327,13 +327,6 @@ ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() {
  
  void ChromeDownloadManagerDelegate::SetDownloadManager(DownloadManager* dm) {
    download_manager_ = dm;
@@ -322,7 +323,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  }
  
  #if defined(OS_ANDROID)
-@@ -636,16 +629,6 @@ void ChromeDownloadManagerDelegate::ChooseSavePath(
+@@ -644,16 +637,6 @@ void ChromeDownloadManagerDelegate::ChooseSavePath(
  
  void ChromeDownloadManagerDelegate::SanitizeSavePackageResourceName(
      base::FilePath* filename) {
@@ -385,7 +386,7 @@ diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download
 diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc
 --- a/chrome/browser/download/download_target_determiner.cc
 +++ b/chrome/browser/download/download_target_determiner.cc
-@@ -988,29 +988,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel(
+@@ -1028,29 +1028,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel(
        download_->HasUserGesture())
      return DownloadFileType::NOT_DANGEROUS;
  
@@ -427,7 +428,7 @@ diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/b
  #include "chrome/browser/download/download_file_icon_extractor.h"
  #include "chrome/browser/download/download_open_prompt.h"
  #include "chrome/browser/download/download_prefs.h"
-@@ -1304,9 +1303,6 @@ DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {}
+@@ -1305,9 +1304,6 @@ DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {}
  
  DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {}
  
@@ -437,7 +438,7 @@ diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/b
  bool DownloadsAcceptDangerFunction::RunAsync() {
    std::unique_ptr<downloads::AcceptDanger::Params> params(
        downloads::AcceptDanger::Params::Create(*args_));
-@@ -1344,40 +1340,7 @@ void DownloadsAcceptDangerFunction::PromptOrWait(int download_id, int retries) {
+@@ -1345,40 +1341,7 @@ void DownloadsAcceptDangerFunction::PromptOrWait(int download_id, int retries) {
      return;
    }
    RecordApiFunctions(DOWNLOADS_FUNCTION_ACCEPT_DANGER);
@@ -487,9 +488,9 @@ diff --git a/chrome/browser/extensions/api/downloads/downloads_api.h b/chrome/br
  #include "base/scoped_observer.h"
  #include "base/time/time.h"
 -#include "chrome/browser/download/download_danger_prompt.h"
- #include "chrome/browser/download/download_path_reservation_tracker.h"
  #include "chrome/browser/extensions/chrome_extension_function.h"
  #include "chrome/common/extensions/api/downloads.h"
+ #include "components/download/content/public/all_download_item_notifier.h"
 @@ -189,25 +188,16 @@ class DownloadsRemoveFileFunction : public ChromeAsyncExtensionFunction {
  
  class DownloadsAcceptDangerFunction : public ChromeAsyncExtensionFunction {
@@ -519,18 +520,21 @@ diff --git a/chrome/browser/extensions/api/downloads/downloads_api.h b/chrome/br
 diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
 --- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
 +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
-@@ -682,48 +682,7 @@ WebstorePrivateGetReferrerChainFunction::
+@@ -681,51 +681,9 @@ WebstorePrivateGetReferrerChainFunction::
  
  ExtensionFunction::ResponseAction
  WebstorePrivateGetReferrerChainFunction::Run() {
 -  Profile* profile = chrome_details_.GetProfile();
 -  if (!SafeBrowsingNavigationObserverManager::IsEnabledAndReady(profile))
--    return RespondNow(ArgumentList(GetReferrerChain::Results::Create("")));
+-    return RespondNow(ArgumentList(
+-        api::webstore_private::GetReferrerChain::Results::Create("")));
 -
 -  content::WebContents* web_contents = GetSenderWebContents();
 -  if (!web_contents) {
--    return RespondNow(ErrorWithArguments(GetReferrerChain::Results::Create(""),
--                                         kWebstoreUserCancelledError));
+-    return RespondNow(ErrorWithArguments(
++  return RespondNow(ErrorWithArguments(
+         api::webstore_private::GetReferrerChain::Results::Create(""),
+         kWebstoreUserCancelledError));
 -  }
 -
 -  scoped_refptr<SafeBrowsingNavigationObserverManager>
@@ -563,16 +567,16 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
 -  // Base64 encode the proto to avoid issues with base::Value rejecting strings
 -  // which are not valid UTF8.
 -  base::Base64Encode(serialized_referrer_proto, &serialized_referrer_proto);
--  return RespondNow(ArgumentList(
--      GetReferrerChain::Results::Create(serialized_referrer_proto)));
-+  return RespondNow(ArgumentList(GetReferrerChain::Results::Create("")));
+-  return RespondNow(
+-      ArgumentList(api::webstore_private::GetReferrerChain::Results::Create(
+-          serialized_referrer_proto)));
  }
  
  }  // namespace extensions
 diff --git a/chrome/browser/extensions/blacklist_state_fetcher.cc b/chrome/browser/extensions/blacklist_state_fetcher.cc
 --- a/chrome/browser/extensions/blacklist_state_fetcher.cc
 +++ b/chrome/browser/extensions/blacklist_state_fetcher.cc
-@@ -31,28 +31,9 @@ BlacklistStateFetcher::~BlacklistStateFetcher() {
+@@ -32,28 +32,9 @@ BlacklistStateFetcher::~BlacklistStateFetcher() {
  void BlacklistStateFetcher::Request(const std::string& id,
                                      const RequestCallback& callback) {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -604,7 +608,7 @@ diff --git a/chrome/browser/extensions/blacklist_state_fetcher.cc b/chrome/brows
  }
  
  void BlacklistStateFetcher::SendRequest(const std::string& id) {
-@@ -63,8 +44,7 @@ void BlacklistStateFetcher::SendRequest(const std::string& id) {
+@@ -64,8 +45,7 @@ void BlacklistStateFetcher::SendRequest(const std::string& id) {
    std::string request_str;
    request.SerializeToString(&request_str);
  
@@ -614,7 +618,7 @@ diff --git a/chrome/browser/extensions/blacklist_state_fetcher.cc b/chrome/brows
    net::NetworkTrafficAnnotationTag traffic_annotation =
        net::DefineNetworkTrafficAnnotation("extension_blacklist", R"(
          semantics {
-@@ -111,12 +91,6 @@ void BlacklistStateFetcher::SendRequest(const std::string& id) {
+@@ -112,12 +92,6 @@ void BlacklistStateFetcher::SendRequest(const std::string& id) {
                       base::Unretained(this), fetcher));
  }
  
@@ -650,7 +654,7 @@ diff --git a/chrome/browser/extensions/blacklist_state_fetcher.h b/chrome/browse
 diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
 --- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
 +++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
-@@ -290,8 +290,7 @@ void NotifyUIThreadOfRequestComplete(
+@@ -289,8 +289,7 @@ void NotifyUIThreadOfRequestComplete(
  }  // namespace
  
  ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate()
@@ -660,7 +664,7 @@ diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b
  
  ChromeResourceDispatcherHostDelegate::~ChromeResourceDispatcherHostDelegate() {
  #if BUILDFLAG(ENABLE_EXTENSIONS)
-@@ -305,8 +304,6 @@ void ChromeResourceDispatcherHostDelegate::RequestBeginning(
+@@ -304,8 +303,6 @@ void ChromeResourceDispatcherHostDelegate::RequestBeginning(
      content::AppCacheService* appcache_service,
      ResourceType resource_type,
      std::vector<std::unique_ptr<content::ResourceThrottle>>* throttles) {
@@ -669,19 +673,10 @@ diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b
    ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context);
  
  #if BUILDFLAG(ENABLE_OFFLINE_PAGES) || BUILDFLAG(ENABLE_NACL)
-@@ -410,7 +407,7 @@ void ChromeResourceDispatcherHostDelegate::AppendStandardResourceThrottles(
-   content::ResourceThrottle* first_throttle = NULL;
- #if defined(OS_ANDROID)
-   first_throttle = DataReductionProxyResourceThrottle::MaybeCreate(
--      request, resource_context, resource_type, safe_browsing_.get());
-+      request, resource_context, resource_type, nullptr);
- #endif  // defined(OS_ANDROID)
- 
- #if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
 diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
 --- a/chrome/browser/metrics/chrome_metrics_service_client.cc
 +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
-@@ -714,9 +714,6 @@ void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() {
+@@ -718,9 +718,6 @@ void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() {
    metrics_service_->RegisterMetricsProvider(
        std::make_unique<HttpsEngagementMetricsProvider>());
  
@@ -691,23 +686,23 @@ diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/br
  #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
    metrics_service_->RegisterMetricsProvider(
        std::make_unique<UpgradeMetricsProvider>());
-diff --git a/chrome/browser/net/trial_comparison_cert_verifier.cc b/chrome/browser/net/trial_comparison_cert_verifier.cc
---- a/chrome/browser/net/trial_comparison_cert_verifier.cc
-+++ b/chrome/browser/net/trial_comparison_cert_verifier.cc
-@@ -80,9 +80,6 @@ void SendTrialVerificationReport(void* profile_id,
+diff --git a/chrome/browser/net/trial_comparison_cert_verifier_controller.cc b/chrome/browser/net/trial_comparison_cert_verifier_controller.cc
+--- a/chrome/browser/net/trial_comparison_cert_verifier_controller.cc
++++ b/chrome/browser/net/trial_comparison_cert_verifier_controller.cc
+@@ -112,9 +112,6 @@ void TrialComparisonCertVerifierController::SendTrialReport(
    std::string serialized_report;
    if (!report.Serialize(&serialized_report))
      return;
 -
--  CertificateReportingServiceFactory::GetForBrowserContext(profile)->Send(
+-  CertificateReportingServiceFactory::GetForBrowserContext(profile_)->Send(
 -      serialized_report);
  }
  
- std::unique_ptr<base::Value> TrialVerificationJobResultCallback(
+ // static
 diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
-@@ -239,7 +239,6 @@ void ChromeBrowserMainExtraPartsProfiles::
+@@ -237,7 +237,6 @@ void ChromeBrowserMainExtraPartsProfiles::
  #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
    CaptivePortalServiceFactory::GetInstance();
  #endif
@@ -718,7 +713,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
 --- a/chrome/browser/profiles/profile_impl.cc
 +++ b/chrome/browser/profiles/profile_impl.cc
-@@ -589,18 +589,6 @@ ProfileImpl::ProfileImpl(
+@@ -563,18 +563,6 @@ ProfileImpl::ProfileImpl(
                                   create_mode == CREATE_MODE_SYNCHRONOUS);
  #endif
  
@@ -737,7 +732,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
    content::BrowserContext::Initialize(this, path_);
  
    {
-@@ -609,7 +597,7 @@ ProfileImpl::ProfileImpl(
+@@ -583,7 +571,7 @@ ProfileImpl::ProfileImpl(
              ->CreateDelegate();
      delegate->InitPrefRegistry(pref_registry_.get());
      prefs_ = chrome_prefs::CreateProfilePrefs(
@@ -749,15 +744,15 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
 diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn
 --- a/chrome/browser/safe_browsing/BUILD.gn
 +++ b/chrome/browser/safe_browsing/BUILD.gn
-@@ -6,6 +6,7 @@ import("//extensions/buildflags/buildflags.gni")
- import("//third_party/protobuf/proto_library.gni")
+@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni")
+ import("//extensions/buildflags/buildflags.gni")
  
- static_library("safe_browsing") {
+ jumbo_static_library("safe_browsing") {
 +  if (false) {
    sources = [
      "safe_browsing_controller_client.cc",
      "safe_browsing_controller_client.h",
-@@ -100,6 +101,7 @@ static_library("safe_browsing") {
+@@ -100,6 +101,7 @@ jumbo_static_library("safe_browsing") {
    } else {
      sources += [ "chrome_cleaner/chrome_cleaner_extension_util_win_noop.cc" ]
    }
@@ -804,7 +799,7 @@ diff --git a/chrome/browser/ssl/cert_report_helper.cc b/chrome/browser/ssl/cert_
 diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ssl/security_state_tab_helper.cc
 --- a/chrome/browser/ssl/security_state_tab_helper.cc
 +++ b/chrome/browser/ssl/security_state_tab_helper.cc
-@@ -186,79 +186,6 @@ bool SecurityStateTabHelper::UsedPolicyInstalledCertificate() const {
+@@ -186,77 +186,6 @@ bool SecurityStateTabHelper::UsedPolicyInstalledCertificate() const {
  
  security_state::MaliciousContentStatus
  SecurityStateTabHelper::GetMaliciousContentStatus() const {
@@ -860,9 +855,7 @@ diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ss
 -        return security_state::MALICIOUS_CONTENT_STATUS_SOCIAL_ENGINEERING;
 -#endif
 -      case safe_browsing::SB_THREAT_TYPE_BILLING:
--        return base::FeatureList::IsEnabled(safe_browsing::kBillingInterstitial)
--                   ? security_state::MALICIOUS_CONTENT_STATUS_BILLING
--                   : security_state::MALICIOUS_CONTENT_STATUS_NONE;
+-        return security_state::MALICIOUS_CONTENT_STATUS_BILLING;
 -      case safe_browsing::
 -          DEPRECATED_SB_THREAT_TYPE_URL_PASSWORD_PROTECTION_PHISHING:
 -      case safe_browsing::SB_THREAT_TYPE_URL_BINARY_MALWARE:
@@ -911,7 +904,7 @@ diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -2463,7 +2463,6 @@ jumbo_split_static_library("ui") {
+@@ -2461,7 +2461,6 @@ jumbo_split_static_library("ui") {
        "views/cookie_info_view.h",
        "views/device_chooser_content_view.cc",
        "views/device_chooser_content_view.h",
@@ -922,7 +915,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
 --- a/chrome/browser/ui/tab_helpers.cc
 +++ b/chrome/browser/ui/tab_helpers.cc
-@@ -44,8 +44,8 @@
+@@ -47,8 +47,8 @@
  #include "chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.h"
  #include "chrome/browser/profiles/profile.h"
  #include "chrome/browser/resource_coordinator/tab_helper.h"
@@ -933,7 +926,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
  #include "chrome/browser/sessions/session_tab_helper.h"
  #include "chrome/browser/ssl/connection_help_tab_helper.h"
  #include "chrome/browser/ssl/security_state_tab_helper.h"
-@@ -105,7 +105,7 @@
+@@ -106,7 +106,7 @@
  #else
  #include "chrome/browser/banners/app_banner_manager_desktop.h"
  #include "chrome/browser/plugins/plugin_observer.h"
@@ -942,7 +935,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
  #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h"
  #include "chrome/browser/ui/hung_plugin_tab_helper.h"
  #include "chrome/browser/ui/sad_tab_helper.h"
-@@ -200,10 +200,10 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -201,10 +201,10 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
    ChromePasswordManagerClient::CreateForWebContentsWithAutofillClient(
        web_contents,
        autofill::ChromeAutofillClient::FromWebContents(web_contents));
@@ -957,7 +950,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
    ChromeTranslateClient::CreateForWebContents(web_contents);
    ClientHintsObserver::CreateForWebContents(web_contents);
    ConnectionHelpTabHelper::CreateForWebContents(web_contents);
-@@ -243,10 +243,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -244,10 +244,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
    PreviewsUITabHelper::CreateForWebContents(web_contents);
    RecentlyAudibleHelper::CreateForWebContents(web_contents);
    ResourceLoadingHintsWebContentsObserver::CreateForWebContents(web_contents);
@@ -970,8 +963,8 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
    SearchEngineTabHelper::CreateForWebContents(web_contents);
    SecurityStateTabHelper::CreateForWebContents(web_contents);
    if (SiteEngagementService::IsEnabled())
-@@ -299,7 +297,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
-                         new ChromePDFWebContentsHelperClient()));
+@@ -297,7 +295,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+       web_contents, std::make_unique<ChromePDFWebContentsHelperClient>());
    PluginObserver::CreateForWebContents(web_contents);
    SadTabHelper::CreateForWebContents(web_contents);
 -  safe_browsing::SafeBrowsingTabObserver::CreateForWebContents(web_contents);
@@ -982,15 +975,15 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
 diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
 --- a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
 +++ b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
-@@ -250,6 +250,7 @@ BadClockBlockingPage* CreateBadClockBlockingPage(
-       base::Callback<void(content::CertificateRequestResultType)>());
+@@ -267,6 +267,7 @@ LookalikeUrlInterstitialPage* CreateLookalikeInterstitialPage(
+                                                      safe_url));
  }
  
 +#if 0
  safe_browsing::SafeBrowsingBlockingPage* CreateSafeBrowsingBlockingPage(
      content::WebContents* web_contents) {
    safe_browsing::SBThreatType threat_type =
-@@ -308,7 +309,9 @@ safe_browsing::SafeBrowsingBlockingPage* CreateSafeBrowsingBlockingPage(
+@@ -325,7 +326,9 @@ safe_browsing::SafeBrowsingBlockingPage* CreateSafeBrowsingBlockingPage(
        g_browser_process->safe_browsing_service()->ui_manager().get(),
        web_contents, main_frame_url, resource);
  }
@@ -1000,7 +993,7 @@ diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/b
  TestSafeBrowsingBlockingPageQuiet* CreateSafeBrowsingQuietBlockingPage(
      content::WebContents* web_contents) {
    safe_browsing::SBThreatType threat_type =
-@@ -360,6 +363,7 @@ TestSafeBrowsingBlockingPageQuiet* CreateSafeBrowsingQuietBlockingPage(
+@@ -377,6 +380,7 @@ TestSafeBrowsingBlockingPageQuiet* CreateSafeBrowsingQuietBlockingPage(
        g_browser_process->safe_browsing_service()->ui_manager().get(),
        web_contents, main_frame_url, resource, is_giant_webview);
  }
@@ -1008,7 +1001,7 @@ diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/b
  
  #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
  CaptivePortalBlockingPage* CreateCaptivePortalBlockingPage(
-@@ -460,8 +464,6 @@ void InterstitialHTMLSource::StartDataRequest(
+@@ -484,8 +488,6 @@ void InterstitialHTMLSource::StartDataRequest(
      interstitial_delegate.reset(CreateSSLBlockingPage(web_contents));
    } else if (path_without_query == "/mitm-software-ssl") {
      interstitial_delegate.reset(CreateMITMSoftwareBlockingPage(web_contents));
@@ -1016,8 +1009,8 @@ diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/b
 -    interstitial_delegate.reset(CreateSafeBrowsingBlockingPage(web_contents));
    } else if (path_without_query == "/clock") {
      interstitial_delegate.reset(CreateBadClockBlockingPage(web_contents));
- #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
-@@ -472,11 +474,6 @@ void InterstitialHTMLSource::StartDataRequest(
+   } else if (path_without_query == "/lookalike") {
+@@ -501,11 +503,6 @@ void InterstitialHTMLSource::StartDataRequest(
  
    if (path_without_query == "/supervised_user") {
      html = GetSupervisedUserInterstitialHTML(path);
@@ -1032,7 +1025,7 @@ diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/b
 diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
 --- a/chrome/renderer/chrome_content_renderer_client.cc
 +++ b/chrome/renderer/chrome_content_renderer_client.cc
-@@ -81,7 +81,6 @@
+@@ -84,7 +84,6 @@
  #include "components/error_page/common/localized_error.h"
  #include "components/network_hints/renderer/prescient_networking_dispatcher.h"
  #include "components/pdf/renderer/pepper_pdf_host.h"
@@ -1043,7 +1036,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
 diff --git a/components/safe_browsing/features.cc b/components/safe_browsing/features.cc
 --- a/components/safe_browsing/features.cc
 +++ b/components/safe_browsing/features.cc
-@@ -44,7 +44,7 @@ const base::Feature kForceEnableResetPasswordWebUI{
+@@ -39,7 +39,7 @@ const base::Feature kForceEnableResetPasswordWebUI{
      "ForceEnableResetPasswordWebUI", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kSuspiciousSiteTriggerQuotaFeature{
@@ -1055,7 +1048,7 @@ diff --git a/components/safe_browsing/features.cc b/components/safe_browsing/fea
 diff --git a/components/subresource_filter/core/browser/subresource_filter_features.cc b/components/subresource_filter/core/browser/subresource_filter_features.cc
 --- a/components/subresource_filter/core/browser/subresource_filter_features.cc
 +++ b/components/subresource_filter/core/browser/subresource_filter_features.cc
-@@ -230,7 +230,7 @@ base::LazyInstance<scoped_refptr<ConfigurationList>>::Leaky
+@@ -231,7 +231,7 @@ base::LazyInstance<scoped_refptr<ConfigurationList>>::Leaky
  // Constant definitions -------------------------------------------------------
  
  const base::Feature kSafeBrowsingSubresourceFilter{

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

@@ -10,9 +10,9 @@ Subject: ungoogled-chromium: Disable translate integration
 diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
 --- a/components/translate/core/browser/translate_manager.cc
 +++ b/components/translate/core/browser/translate_manager.cc
-@@ -664,8 +664,9 @@ void TranslateManager::FilterIsTranslatePossible(
-   if (net::NetworkChangeNotifier::IsOffline())
-     decision->PreventAllTriggering();
+@@ -704,8 +704,9 @@ void TranslateManager::FilterIsTranslatePossible(
+         TranslateBrowserMetrics::INITIATION_STATUS_NO_NETWORK);
+   }
  
 -  if (!ignore_missing_key_for_testing_ &&
 -      !::google_apis::HasAPIKeyConfigured()) {

+ 1 - 1
build/patches/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
-@@ -75,7 +75,7 @@ void RlzPingHandler::Ping(
+@@ -76,7 +76,7 @@ void RlzPingHandler::Ping(
    DCHECK_EQ(id.length(), 50u);
  
    GURL request_url(base::StringPrintf(

+ 2 - 2
build/patches/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
-@@ -129,29 +129,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
+@@ -131,29 +131,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
    DCHECK(meta_data.get());
    DCHECK(!upload_done_data.log_path.empty());
  
@@ -40,7 +40,7 @@ diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser
  }
  
  void WebRtcLogUploader::PrepareMultipartPostData(
-@@ -162,6 +140,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
+@@ -164,6 +142,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
    DCHECK(!compressed_log.empty());
    DCHECK(meta_data.get());
  

+ 2 - 2
build/patches/updater-disable-updater-pings.patch

@@ -30,7 +30,7 @@ diff --git a/components/component_updater/component_updater_url_constants.cc b/c
 diff --git a/components/component_updater/configurator_impl.cc b/components/component_updater/configurator_impl.cc
 --- a/components/component_updater/configurator_impl.cc
 +++ b/components/component_updater/configurator_impl.cc
-@@ -48,8 +48,7 @@ ConfiguratorImpl::ConfiguratorImpl(
+@@ -49,8 +49,7 @@ ConfiguratorImpl::ConfiguratorImpl(
      : background_downloads_enabled_(config_policy.BackgroundDownloadsEnabled()),
        deltas_enabled_(config_policy.DeltaUpdatesEnabled()),
        fast_update_(config_policy.FastUpdate()),
@@ -40,7 +40,7 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp
        url_source_override_(config_policy.UrlSourceOverride()),
        initial_delay_(config_policy.InitialDelay()) {
    if (config_policy.TestRequest()) {
-@@ -88,8 +87,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
+@@ -89,8 +88,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
                                GURL(kUpdaterJSONFallbackUrl)}
            : std::vector<GURL>{GURL(kUpdaterDefaultUrl),
                                GURL(kUpdaterFallbackUrl)};

+ 1 - 3
build/patches_list.txt

@@ -13,7 +13,6 @@ promo-disable-Google-promotion-fetching.patch
 Disable-omission-of-URL-elements-in-Omnibox.patch
 Modify-default-preferences.patch
 Disable-contextual-search-by-default.patch
-Disable-hyperlink-auditing-by-default.patch
 Do-not-store-passwords-by-default.patch
 Disable-NTP-remote-suggestions-by-default.patch
 Disable-references-to-fonts.googleapis.com.patch
@@ -40,7 +39,7 @@ ungoogled-chromium-Always-use-local-DevTools-files-instead-of-remote-files-from-
 safe_browsing-disable-incident-reporting.patch
 safe_browsing-disable-reporting-of-safebrowsing-override.patch
 safe_browsing-disable-cookie-transmission.patch
-ungoogled-chromium-disable-safe-browsing.patch
+ungoogled-chromium-Disable-safe-browsing.patch
 Allow-building-without-safebrowsing-for-Android.patch
 Hide-passwords-manager-link.patch
 Disable-Omaha-update-checks.patch
@@ -71,7 +70,6 @@ Add-flags-to-disable-device-motion-and-orientation-APIs.patch
 Punt-the-Widevine-version-string.patch
 Disable-metrics-on-all-I-O-threads.patch
 Add-a-flag-for-DNS-over-HTTPS.patch
-Support-different-secure-DNS-modes-within-DnsTransaction.patch
 Enable-secure-DNS-mode-by-default-in-DnsTransaction.patch
 Always-respect-async-dns-flag-regardless-of-SDK-version.patch
 Add-flag-to-configure-maximum-connections-per-host.patch

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů