From 47c948a92978e3e4249d8e75d18647a82dfd436c Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Tue, 26 Jan 2021 01:12:38 +0100 Subject: [PATCH] Release 88.0.4324.95 --- CHANGELOG.md | 7 + README.md | 1 + build/RELEASE | 2 +- build/bromite_patches_list.txt | 6 +- .../AImageReader-CFI-crash-mitigations.patch | 35 +- build/patches/AV1-codec-support.patch | 2 +- .../Add-DuckDuckGo-Lite-search-engine.patch | 640 +++--- .../Add-English-only-search-engine.patch | 284 +-- ...-allow-screenshots-in-Incognito-mode.patch | 36 +- .../Add-a-proxy-configuration-page.patch | 16 +- .../Add-an-always-incognito-mode.patch | 54 +- .../Add-bookmark-import-export-actions.patch | 68 +- ...dd-custom-tab-intents-privacy-option.patch | 14 +- build/patches/Add-exit-menu-item.patch | 10 +- ...nfigure-maximum-connections-per-host.patch | 8 +- ...ontrol-video-playback-resume-feature.patch | 14 +- .../Add-flag-to-disable-IPv6-probes.patch | 14 +- build/patches/Add-flag-to-disable-WebGL.patch | 26 +- ...sable-device-motion-orientation-APIs.patch | 20 +- ...dd-history-support-in-incognito-mode.patch | 32 +- .../Add-menu-item-to-view-source.patch | 22 +- ...configure-the-ad-blocker-filters-URL.patch | 1234 ----------- ...-to-not-persist-tabs-across-sessions.patch | 32 +- .../Allow-playing-audio-in-background.patch | 6 +- .../Always-allow-partner-customisation.patch | 2 +- ...c-dns-flag-regardless-of-SDK-version.patch | 4 +- ...e-new-tab-page-for-default-home-page.patch | 2 +- .../Automated-domain-substitution.patch | 1825 +++++++++-------- ...the-domain-name-or-with-a-trk-scheme.patch | 6 +- ...Block-gateway-attacks-via-websockets.patch | 18 +- .../Bromite-AdBlockUpdaterService.patch | 1344 +++++++++++- ...webRTC-policy-to-not-use-any-address.patch | 19 +- ...DRM-media-origin-IDs-preprovisioning.patch | 2 +- build/patches/Disable-all-promo-dialogs.patch | 4 +- ...isable-autofill-assistant-by-default.patch | 4 +- ...media-router-and-remoting-by-default.patch | 4 +- ...ble-metrics-collection-for-NTP-tiles.patch | 4 +- .../Disable-metrics-on-all-I-O-threads.patch | 19 +- .../patches/Disable-plugins-enumeration.patch | 2 +- ...romos-displayed-in-bookmarks-manager.patch | 38 +- build/patches/Disable-safe-browsing.patch | 425 ++-- .../Disable-seed-based-field-trials.patch | 8 +- .../Disable-smart-selection-by-default.patch | 4 +- ...isable-some-signed-exchange-features.patch | 4 +- ...ble-support-for-RAR-files-inspection.patch | 8 +- .../Disable-sync-services-menu-entry.patch | 2 +- .../Disable-text-fragments-by-default.patch | 28 +- ...sable-third-party-cookies-by-default.patch | 2 +- .../Disable-unified-autoplay-feature.patch | 6 +- build/patches/Disable-update-scheduler.patch | 11 +- .../Do-not-compile-QR-code-sharing.patch | 8 +- .../Do-not-hide-component-extensions.patch | 2 +- ...ore-download-location-prompt-setting.patch | 2 +- .../Do-not-store-passwords-by-default.patch | 2 +- ...-SPPI-for-devices-with-enough-memory.patch | 2 +- ...e-darken-websites-checkbox-in-themes.patch | 4 +- ...ble-legacy-TLS-interstitital-warning.patch | 4 +- .../Enable-network-isolation-features.patch | 2 +- ...-prefetch-privacy-changes-by-default.patch | 2 +- ...uced-referrer-granularity-by-default.patch | 6 +- .../Enable-user-agent-freeze-by-default.patch | 2 +- ...ing-against-incognito-mode-detection.patch | 24 +- .../patches/Hide-passwords-manager-link.patch | 4 +- .../patches/Hide-send-reports-checkbox.patch | 4 +- .../Ignore-managed-state-for-secure-DNS.patch | 38 + ...of-autocomplete-matches-from-5-to-10.patch | 6 +- ...ripts-for-AMP-tracking-ads-and-video.patch | 40 +- .../patches/Modify-default-preferences.patch | 16 +- ...nt-settings-back-to-privacy-settings.patch | 26 +- .../Multiple-fingerprinting-mitigations.patch | 52 +- ...uiltin-autocomplete-for-chrome-flags.patch | 2 +- .../Password-service-build-fixes.patch | 55 +- ...ders-in-DoH-requests-to-bare-minimum.patch | 10 +- build/patches/Remove-SMS-integration.patch | 225 +- ...cklisted-URLs-upon-bookmark-creation.patch | 22 +- ...ncy-on-auth-signin-dynamic-and-tasks.patch | 99 +- ...dency-on-com.google.android.gms.auth.patch | 25 +- ...dency-on-com.google.android.gms.cast.patch | 149 +- ...ndency-on-com.google.android.gms.gcm.patch | 336 +-- ...ependency-on-com.google.android.play.patch | 4 +- ...ncy-on-fido-iid-instantapps-location.patch | 57 +- ...dependency-on-flags-places-and-stats.patch | 2 +- ...ncy-on-vision-clearcut-and-phenotype.patch | 103 +- .../patches/Remove-google_services_gcm.patch | 41 +- build/patches/Remove-help-menu-item.patch | 6 +- ...e-signin-and-data-saver-integrations.patch | 216 +- ...weblayer-dependency-on-Play-Services.patch | 4 +- ...ce-DoH-probe-domain-with-RIPE-domain.patch | 2 +- .../Restore-Search-Ready-Omnibox-flag.patch | 24 +- .../Restore-Simplified-NTP-launch.patch | 81 +- .../Restore-classic-new-tab-page.patch | 4 +- ...-enable-horizontal-tab-switcher-flag.patch | 2 +- ...Activity-reference-from-BookmarkPage.patch | 291 +++ ...emove-disable-pull-to-refresh-effect.patch | 8 +- ...vert-flags-remove-num-raster-threads.patch | 94 + ...moval-of-an-option-to-block-autoplay.patch | 143 +- .../Show-site-settings-for-cookies.patch | 8 +- .../Skip-the-first-run-and-metrics.patch | 16 +- build/patches/Timezone-customization.patch | 92 +- build/patches/Update-i18n-zh_CN-support.patch | 10 +- .../Use-4-tile-rows-never-show-logo.patch | 8 +- build/patches/User-agent-customization.patch | 188 +- ...ream-missed-manifest-changes-for-Q-R.patch | 84 - ...ll-disable-autofill-download-manager.patch | 2 +- ...sable-warning-about-missing-API-keys.patch | 2 +- ...build-remove-calling-untrusted-hooks.patch | 10 +- build/patches/disable-AdsBlockedInfoBar.patch | 29 +- .../disable-WebView-variations-support.patch | 4 +- ...fill-server-communication-by-default.patch | 2 +- .../disable-background-sync-by-default.patch | 2 +- ...nsors-access-site-setting-by-default.patch | 2 +- build/patches/kill-Auth.patch | 8 +- build/patches/kill-GCM.patch | 67 +- .../kill-Location-fall-back-to-system.patch | 2 +- .../kill-TOS-and-metrics-opt-out.patch | 80 +- build/patches/kill-Vision.patch | 27 +- ...nH264-enable-ARM-ARM64-optimizations.patch | 28 +- ...mo-disable-Google-promotion-fetching.patch | 2 +- ...romium-Disable-Google-host-detection.patch | 2 +- ...m-Disable-intranet-redirect-detector.patch | 2 +- ...gled-chromium-Disable-profile-avatar.patch | 10 +- ...romium-Disable-translate-integration.patch | 38 +- ...ed-chromium-Disable-untraceable-URLs.patch | 4 +- ...iew-Hard-no-to-persistent-histograms.patch | 33 + 124 files changed, 4940 insertions(+), 4451 deletions(-) delete mode 100644 build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch create mode 100644 build/patches/Ignore-managed-state-for-secure-DNS.patch create mode 100644 build/patches/Revert-Remove-ChromeActivity-reference-from-BookmarkPage.patch create mode 100644 build/patches/Revert-flags-remove-num-raster-threads.patch delete mode 100644 build/patches/android-upstream-missed-manifest-changes-for-Q-R.patch create mode 100644 build/patches/webview-Hard-no-to-persistent-histograms.patch diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cac0faf..3ec6bb2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# 88.0.4324.95 +* ignore managed state for secure DNS (fixes https://github.com/bromite/bromite/issues/832) +* fix broken recent tabs behaviour (fixes https://github.com/bromite/bromite/issues/886) +* re-introduce flags for number of raster threads (fixes https://github.com/bromite/bromite/issues/875) +* avoid initializing histogram data for the WebView (https://github.com/bromite/bromite/issues/873) +* dropped patch for manifest changes for Q/R (already present upstream) + # 87.0.4280.131 * enable all network isolation features (fixes https://github.com/bromite/bromite/issues/836) * disable unified autoplay feature (fixes https://github.com/bromite/bromite/issues/804) diff --git a/README.md b/README.md index 1ad49db0..e5e828d5 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ Flags which have been retired from upstream Chromium but are still available in * `#darken-websites-checkbox-in-themes-setting` * `#simplified-ntp` * `#enable-text-fragment-anchor` +* `#num-raster-threads` New flags: diff --git a/build/RELEASE b/build/RELEASE index adf7eaf5..ead82f66 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -87.0.4280.131 +88.0.4324.95 diff --git a/build/bromite_patches_list.txt b/build/bromite_patches_list.txt index f3d02970..68827153 100644 --- a/build/bromite_patches_list.txt +++ b/build/bromite_patches_list.txt @@ -55,6 +55,7 @@ Add-flags-to-disable-device-motion-orientation-APIs.patch Disable-metrics-on-all-I-O-threads.patch Always-respect-async-dns-flag-regardless-of-SDK-version.patch Add-flag-to-configure-maximum-connections-per-host.patch +Revert-Remove-ChromeActivity-reference-from-BookmarkPage.patch Add-bookmark-import-export-actions.patch Disable-promos-displayed-in-bookmarks-manager.patch Add-an-always-incognito-mode.patch @@ -107,7 +108,6 @@ Disable-media-router-and-remoting-by-default.patch Restore-Search-Ready-Omnibox-flag.patch disable-AdsBlockedInfoBar.patch Bromite-AdBlockUpdaterService.patch -Add-option-to-configure-the-ad-blocker-filters-URL.patch Replace-DoH-probe-domain-with-RIPE-domain.patch Increase-number-of-autocomplete-matches-from-5-to-10.patch Disable-HEAD-requests-for-single-word-Omnibar-searches.patch @@ -147,11 +147,13 @@ Move-some-account-settings-back-to-privacy-settings.patch User-agent-customization.patch Restore-Simplified-NTP-launch.patch Revert-the-removal-of-an-option-to-block-autoplay.patch -android-upstream-missed-manifest-changes-for-Q-R.patch Disable-text-fragments-by-default.patch disable-WebView-variations-support.patch disable-autofill-server-communication-by-default.patch ask-permission-to-play-protected-media-by-default.patch Enable-network-isolation-features.patch Disable-unified-autoplay-feature.patch +Revert-flags-remove-num-raster-threads.patch +webview-Hard-no-to-persistent-histograms.patch +Ignore-managed-state-for-secure-DNS.patch Automated-domain-substitution.patch diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch index 5ccbfa99..923509f9 100644 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/patches/AImageReader-CFI-crash-mitigations.patch @@ -23,7 +23,7 @@ See discussions at: base/android/android_image_reader_compat.h | 4 ++++ chrome/browser/flag-metadata.json | 2 +- gpu/config/gpu_driver_bug_list.json | 16 ++++++++++++++++ - gpu/config/gpu_finch_features.cc | 10 +++++++++- + gpu/config/gpu_finch_features.cc | 11 ++++++++++- gpu/config/gpu_finch_features.h | 1 + gpu/config/gpu_util.cc | 8 ++++++++ gpu/config/gpu_workaround_list.txt | 1 + @@ -31,7 +31,7 @@ See discussions at: gpu/ipc/service/stream_texture_android.cc | 11 ++++++++++- media/base/media_switches.cc | 4 ++++ media/base/media_switches.h | 1 + - 12 files changed, 67 insertions(+), 4 deletions(-) + 12 files changed, 68 insertions(+), 4 deletions(-) diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_image_reader_compat.cc --- a/base/android/android_image_reader_compat.cc @@ -58,7 +58,7 @@ diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_ + return !disable_support_ && is_supported_; } - // static + AndroidImageReader::AndroidImageReader() : is_supported_(LoadFunctions()) {} diff --git a/base/android/android_image_reader_compat.h b/base/android/android_image_reader_compat.h --- a/base/android/android_image_reader_compat.h +++ b/base/android/android_image_reader_compat.h @@ -72,7 +72,7 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i // Check if the image reader usage is supported. This function returns TRUE // if android version is >=OREO, image reader support is not disabled and all // the required functions are loaded. -@@ -64,6 +67,7 @@ class BASE_EXPORT AndroidImageReader { +@@ -59,6 +62,7 @@ class BASE_EXPORT AndroidImageReader { jobject ANativeWindow_toSurface(JNIEnv* env, ANativeWindow* window); private: @@ -83,7 +83,7 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -1681,7 +1681,7 @@ +@@ -1712,7 +1712,7 @@ { "name": "enable-image-reader", "owners": [ "vikassoni", "khushalsagar" ], @@ -95,7 +95,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json --- a/gpu/config/gpu_driver_bug_list.json +++ b/gpu/config/gpu_driver_bug_list.json -@@ -3287,6 +3287,22 @@ +@@ -3254,6 +3254,22 @@ "dont_delete_source_texture_for_egl_image" ] }, @@ -121,18 +121,19 @@ diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_lis diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc -@@ -13,6 +13,10 @@ - - namespace features { +@@ -37,6 +37,11 @@ bool FieldIsInBlocklist(const char* current_value, std::string blocklist_str) { + } // namespace + #if defined(OS_ANDROID) ++ +// Use android AImageReader when playing videos with MediaPlayer. +const base::Feature kAImageReaderMediaPlayer{"AImageReaderMediaPlayer", + base::FEATURE_ENABLED_BY_DEFAULT}; + - #if defined(OS_ANDROID) // Used to limit GL version to 2.0 for skia raster on Android. const base::Feature kUseGles2ForOopR{"UseGles2ForOopR", -@@ -26,7 +30,11 @@ const base::Feature kAndroidSurfaceControl{"AndroidSurfaceControl", + base::FEATURE_ENABLED_BY_DEFAULT}; +@@ -49,7 +54,11 @@ const base::Feature kAndroidSurfaceControl{"AndroidSurfaceControl", // Use AImageReader for MediaCodec and MediaPlyer on android. const base::Feature kAImageReader{"AImageReader", @@ -142,9 +143,9 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc +#else + base::FEATURE_ENABLED_BY_DEFAULT}; +#endif - #endif - // Enable GPU Rasterization by default. This can still be overridden by + // If webview-draw-functor-uses-vulkan is set, use vulkan for composite and + // raster. diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h --- a/gpu/config/gpu_finch_features.h +++ b/gpu/config/gpu_finch_features.h @@ -169,7 +170,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc if (!gpu_preferences.enable_android_surface_control) return kGpuFeatureStatusDisabled; -@@ -374,6 +377,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { +@@ -327,6 +330,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { gpu_feature_info->status_values[GPU_FEATURE_TYPE_ACCELERATED_WEBGL2] = kGpuFeatureStatusBlocklisted; } @@ -195,7 +196,7 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc -@@ -467,6 +467,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, +@@ -464,6 +464,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } } @@ -238,7 +239,7 @@ diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -566,6 +566,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning", +@@ -571,6 +571,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning", const base::Feature kMediaDrmPreprovisioningAtStartup{ "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT}; @@ -252,7 +253,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc diff --git a/media/base/media_switches.h b/media/base/media_switches.h --- a/media/base/media_switches.h +++ b/media/base/media_switches.h -@@ -198,6 +198,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture; +@@ -194,6 +194,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture; MEDIA_EXPORT extern const base::Feature kMediaDrmPersistentLicense; MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioning; MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioningAtStartup; diff --git a/build/patches/AV1-codec-support.patch b/build/patches/AV1-codec-support.patch index eae31f3c..38481e21 100644 --- a/build/patches/AV1-codec-support.patch +++ b/build/patches/AV1-codec-support.patch @@ -73,7 +73,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni --- a/third_party/libaom/libaom_srcs.gni +++ b/third_party/libaom/libaom_srcs.gni -@@ -671,6 +671,11 @@ aom_mem_sources = [ +@@ -672,6 +672,11 @@ aom_mem_sources = [ aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ] diff --git a/build/patches/Add-DuckDuckGo-Lite-search-engine.patch b/build/patches/Add-DuckDuckGo-Lite-search-engine.patch index a5147dd9..56656a52 100644 --- a/build/patches/Add-DuckDuckGo-Lite-search-engine.patch +++ b/build/patches/Add-DuckDuckGo-Lite-search-engine.patch @@ -5,14 +5,14 @@ Subject: Add DuckDuckGo Lite search engine --- .../search_engines/prepopulated_engines.json | 10 + .../search_engines/search_engine_type.h | 1 + - .../template_url_prepopulate_data.cc | 190 +++++++++--------- - 3 files changed, 107 insertions(+), 94 deletions(-) + .../template_url_prepopulate_data.cc | 196 +++++++++--------- + 3 files changed, 109 insertions(+), 98 deletions(-) diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json --- a/components/search_engines/prepopulated_engines.json +++ b/components/search_engines/prepopulated_engines.json -@@ -91,6 +91,16 @@ - "id": 68 +@@ -102,6 +102,16 @@ + "id": 92 }, + "duckduckgo_light": { @@ -25,9 +25,9 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se + "id": 12 + }, + - "duckduckgo": { - "name": "DuckDuckGo", - "keyword": "duckduckgo.com", + "ecosia": { + "name": "Ecosia", + "keyword": "ecosia.org", diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h --- a/components/search_engines/search_engine_type.h +++ b/components/search_engines/search_engine_type.h @@ -42,33 +42,25 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc --- a/components/search_engines/template_url_prepopulate_data.cc +++ b/components/search_engines/template_url_prepopulate_data.cc -@@ -32,6 +32,7 @@ const PrepopulatedEngine* const engines_default[] = { - &googleen, &google, - &bing, - &yahoo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Note, the below entries are sorted by country code, not the name in comment. -@@ -41,7 +42,7 @@ const PrepopulatedEngine* const engines_AE[] = { +@@ -41,7 +41,7 @@ const PrepopulatedEngine* const engines_AE[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_ru, + &ecosia, }; -@@ -50,7 +51,7 @@ const PrepopulatedEngine* const engines_AL[] = { +@@ -50,7 +50,7 @@ const PrepopulatedEngine* const engines_AL[] = { &googleen, &google, - &yahoo, &bing, + &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_ru, + &yandex_com, }; -@@ -59,7 +60,7 @@ const PrepopulatedEngine* const engines_AR[] = { +@@ -59,7 +59,7 @@ const PrepopulatedEngine* const engines_AR[] = { &googleen, &google, &bing, &yahoo_ar, @@ -77,7 +69,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -67,7 +68,7 @@ const PrepopulatedEngine* const engines_AR[] = { +@@ -67,7 +67,7 @@ const PrepopulatedEngine* const engines_AR[] = { const PrepopulatedEngine* const engines_AT[] = { &googleen, &google, &bing, @@ -86,25 +78,25 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_at, &ecosia, }; -@@ -76,7 +77,7 @@ const PrepopulatedEngine* const engines_AT[] = { - const PrepopulatedEngine* const engines_AU[] = { +@@ -77,7 +77,7 @@ const PrepopulatedEngine* const engines_AU[] = { &googleen, &google, &bing, + &yahoo_au, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yahoo_au, &ecosia, }; -@@ -86,7 +87,7 @@ const PrepopulatedEngine* const engines_BA[] = { + +@@ -86,7 +86,7 @@ const PrepopulatedEngine* const engines_BA[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &ask, }; -@@ -96,7 +97,7 @@ const PrepopulatedEngine* const engines_BE[] = { + // Belgium +@@ -95,7 +95,7 @@ const PrepopulatedEngine* const engines_BE[] = { &bing, &yahoo, &ecosia, @@ -113,7 +105,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Bulgaria -@@ -104,7 +105,7 @@ const PrepopulatedEngine* const engines_BG[] = { +@@ -103,7 +103,7 @@ const PrepopulatedEngine* const engines_BG[] = { &googleen, &google, &bing, &yahoo, @@ -122,7 +114,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -113,7 +114,7 @@ const PrepopulatedEngine* const engines_BH[] = { +@@ -112,7 +112,7 @@ const PrepopulatedEngine* const engines_BH[] = { &googleen, &google, &bing, &yahoo, @@ -131,16 +123,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -122,7 +123,7 @@ const PrepopulatedEngine* const engines_BI[] = { +@@ -121,7 +121,7 @@ const PrepopulatedEngine* const engines_BI[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &ask, + &yandex_ru, }; -@@ -131,7 +132,7 @@ const PrepopulatedEngine* const engines_BN[] = { +@@ -130,7 +130,7 @@ const PrepopulatedEngine* const engines_BN[] = { &googleen, &google, &bing, &yahoo, @@ -149,7 +141,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -140,7 +141,7 @@ const PrepopulatedEngine* const engines_BO[] = { +@@ -139,7 +139,7 @@ const PrepopulatedEngine* const engines_BO[] = { &googleen, &google, &bing, &yahoo, @@ -158,7 +150,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -149,7 +150,7 @@ const PrepopulatedEngine* const engines_BR[] = { +@@ -148,7 +148,7 @@ const PrepopulatedEngine* const engines_BR[] = { &googleen, &google, &bing, &yahoo_br, @@ -167,7 +159,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -167,7 +168,7 @@ const PrepopulatedEngine* const engines_BZ[] = { +@@ -158,7 +158,7 @@ const PrepopulatedEngine* const engines_BY[] = { + &yandex_by, + &mail_ru, + &bing, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + }; + + // Belize +@@ -166,7 +166,7 @@ const PrepopulatedEngine* const engines_BZ[] = { &googleen, &google, &bing, &yahoo, @@ -176,7 +177,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ask, }; -@@ -176,7 +177,7 @@ const PrepopulatedEngine* const engines_CA[] = { +@@ -175,7 +175,7 @@ const PrepopulatedEngine* const engines_CA[] = { &googleen, &google, &bing, &yahoo_ca, @@ -185,106 +186,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -184,7 +185,7 @@ const PrepopulatedEngine* const engines_CA[] = { +@@ -183,7 +183,7 @@ const PrepopulatedEngine* const engines_CA[] = { const PrepopulatedEngine* const engines_CH[] = { &googleen, &google, &bing, - &duckduckgo, + &duckduckgo, &duckduckgo_light, + &ecosia, &yahoo_ch, - &ecosia, }; -@@ -194,7 +195,7 @@ const PrepopulatedEngine* const engines_CL[] = { - &googleen, &google, - &bing, - &yahoo_cl, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -213,7 +214,7 @@ const PrepopulatedEngine* const engines_CO[] = { - &bing, - &yahoo_co, - &ecosia, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Costa Rica -@@ -221,7 +222,7 @@ const PrepopulatedEngine* const engines_CR[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -231,7 +232,7 @@ const PrepopulatedEngine* const engines_CZ[] = { - &seznam_cz, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Germany -@@ -239,7 +240,7 @@ const PrepopulatedEngine* const engines_DE[] = { - &googleen, &google, - &bing, - &yahoo_de, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -248,7 +249,7 @@ const PrepopulatedEngine* const engines_DK[] = { - &googleen, &google, - &bing, - &yahoo_dk, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -257,7 +258,7 @@ const PrepopulatedEngine* const engines_DO[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -267,7 +268,7 @@ const PrepopulatedEngine* const engines_DZ[] = { - &yahoo, - &bing, - &yandex_ru, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Ecuador -@@ -276,7 +277,7 @@ const PrepopulatedEngine* const engines_EC[] = { - &bing, - &yahoo, - &ecosia, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Estonia -@@ -294,7 +295,7 @@ const PrepopulatedEngine* const engines_EG[] = { - &yahoo, - &bing, - &yandex_ru, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Spain -@@ -302,7 +303,7 @@ const PrepopulatedEngine* const engines_ES[] = { +@@ -193,7 +193,7 @@ const PrepopulatedEngine* const engines_CL[] = { &googleen, &google, &bing, &yahoo_es, @@ -293,16 +204,42 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -311,7 +312,7 @@ const PrepopulatedEngine* const engines_FI[] = { - &googleen, &google, +@@ -212,7 +212,7 @@ const PrepopulatedEngine* const engines_CO[] = { &bing, - &yahoo_fi, + &yahoo_es, + &ecosia, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_ru, }; -@@ -320,7 +321,7 @@ const PrepopulatedEngine* const engines_FO[] = { + // Costa Rica +@@ -220,7 +220,7 @@ const PrepopulatedEngine* const engines_CR[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -230,14 +230,14 @@ const PrepopulatedEngine* const engines_CZ[] = { + &seznam_cz, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + }; + + // Germany + const PrepopulatedEngine* const engines_DE[] = { + &googleen, &google, + &bing, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + &yahoo_de, + }; +@@ -247,7 +247,7 @@ const PrepopulatedEngine* const engines_DK[] = { &googleen, &google, &bing, &yahoo_dk, @@ -311,7 +248,70 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -338,7 +339,7 @@ const PrepopulatedEngine* const engines_GB[] = { +@@ -256,7 +256,7 @@ const PrepopulatedEngine* const engines_DO[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -266,7 +266,7 @@ const PrepopulatedEngine* const engines_DZ[] = { + &yahoo_uk, + &bing, + &yandex_ru, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + }; + + // Ecuador +@@ -274,7 +274,7 @@ const PrepopulatedEngine* const engines_EC[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -293,7 +293,7 @@ const PrepopulatedEngine* const engines_EG[] = { + &yahoo, + &bing, + &yandex_com, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + }; + + // Spain +@@ -301,7 +301,7 @@ const PrepopulatedEngine* const engines_ES[] = { + &googleen, &google, + &bing, + &yahoo_es, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -310,7 +310,7 @@ const PrepopulatedEngine* const engines_FI[] = { + &googleen, &google, + &bing, + &yahoo_fi, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &yandex_ru, + }; + +@@ -319,7 +319,7 @@ const PrepopulatedEngine* const engines_FO[] = { + &googleen, &google, + &bing, + &yahoo_dk, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -337,7 +337,7 @@ const PrepopulatedEngine* const engines_GB[] = { &googleen, &google, &bing, &yahoo_uk, @@ -320,7 +320,43 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -347,7 +348,7 @@ const PrepopulatedEngine* const engines_GR[] = { +@@ -346,7 +346,7 @@ const PrepopulatedEngine* const engines_GR[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &yandex_com, + }; + +@@ -355,7 +355,7 @@ const PrepopulatedEngine* const engines_GT[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -365,7 +365,7 @@ const PrepopulatedEngine* const engines_HK[] = { + &yahoo_hk, + &bing, + &baidu, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + }; + + // Honduras +@@ -373,7 +373,7 @@ const PrepopulatedEngine* const engines_HN[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -382,7 +382,7 @@ const PrepopulatedEngine* const engines_HR[] = { &googleen, &google, &bing, &yahoo, @@ -329,25 +365,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -357,7 +358,7 @@ const PrepopulatedEngine* const engines_GT[] = { - &bing, - &yahoo, - &ecosia, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Hong Kong -@@ -375,7 +376,7 @@ const PrepopulatedEngine* const engines_HN[] = { - &bing, - &yahoo, - &yandex_ru, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Croatia -@@ -383,7 +384,7 @@ const PrepopulatedEngine* const engines_HR[] = { +@@ -391,7 +391,7 @@ const PrepopulatedEngine* const engines_HU[] = { &googleen, &google, &bing, &yahoo, @@ -356,16 +374,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -392,7 +393,7 @@ const PrepopulatedEngine* const engines_HU[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -401,7 +402,7 @@ const PrepopulatedEngine* const engines_ID[] = { +@@ -400,7 +400,7 @@ const PrepopulatedEngine* const engines_ID[] = { &googleen, &google, &yahoo_id, &bing, @@ -374,7 +383,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -410,7 +411,7 @@ const PrepopulatedEngine* const engines_IE[] = { +@@ -409,7 +409,7 @@ const PrepopulatedEngine* const engines_IE[] = { &googleen, &google, &bing, &yahoo, @@ -383,43 +392,34 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -420,7 +421,7 @@ const PrepopulatedEngine* const engines_IL[] = { +@@ -419,7 +419,7 @@ const PrepopulatedEngine* const engines_IL[] = { &bing, - &yahoo, &yandex_ru, + &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, }; // India -@@ -428,7 +429,7 @@ const PrepopulatedEngine* const engines_IN[] = { +@@ -427,7 +427,7 @@ const PrepopulatedEngine* const engines_IN[] = { &googleen, &google, - &yahoo_in, &bing, + &yahoo_in, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_ru, + &ecosia, }; -@@ -438,7 +439,7 @@ const PrepopulatedEngine* const engines_IQ[] = { - &yahoo, +@@ -437,7 +437,7 @@ const PrepopulatedEngine* const engines_IQ[] = { &bing, - &yandex_ru, + &yahoo_uk, + &yandex_com, - &duckduckgo, + &duckduckgo, &duckduckgo_light, }; // Iran -@@ -454,7 +455,7 @@ const PrepopulatedEngine* const engines_IR[] = { - const PrepopulatedEngine* const engines_IS[] = { - &googleen, &google, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yahoo, - &ecosia, - }; -@@ -464,7 +465,7 @@ const PrepopulatedEngine* const engines_IT[] = { +@@ -454,7 +454,7 @@ const PrepopulatedEngine* const engines_IS[] = { &googleen, &google, &bing, &yahoo, @@ -428,16 +428,25 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -473,7 +474,7 @@ const PrepopulatedEngine* const engines_JM[] = { +@@ -463,7 +463,7 @@ const PrepopulatedEngine* const engines_IT[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &ask, + &ecosia, }; -@@ -482,7 +483,7 @@ const PrepopulatedEngine* const engines_JO[] = { +@@ -472,7 +472,7 @@ const PrepopulatedEngine* const engines_JM[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -481,7 +481,7 @@ const PrepopulatedEngine* const engines_JO[] = { &googleen, &google, &bing, &yahoo, @@ -446,7 +455,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -492,7 +493,7 @@ const PrepopulatedEngine* const engines_JP[] = { +@@ -491,7 +491,7 @@ const PrepopulatedEngine* const engines_JP[] = { &yahoo_jp, &bing, &baidu, @@ -455,16 +464,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Kenya -@@ -500,7 +501,7 @@ const PrepopulatedEngine* const engines_KE[] = { +@@ -499,7 +499,7 @@ const PrepopulatedEngine* const engines_KE[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_ru, + &ecosia, }; -@@ -518,7 +519,7 @@ const PrepopulatedEngine* const engines_KW[] = { +@@ -517,7 +517,7 @@ const PrepopulatedEngine* const engines_KW[] = { &googleen, &google, &bing, &yahoo, @@ -473,16 +482,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -536,7 +537,7 @@ const PrepopulatedEngine* const engines_LB[] = { +@@ -535,7 +535,7 @@ const PrepopulatedEngine* const engines_LB[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &ecosia, + &yandex_ru, }; -@@ -544,7 +545,7 @@ const PrepopulatedEngine* const engines_LB[] = { +@@ -543,7 +543,7 @@ const PrepopulatedEngine* const engines_LB[] = { const PrepopulatedEngine* const engines_LI[] = { &googleen, &google, &bing, @@ -491,7 +500,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, &ecosia, }; -@@ -555,14 +556,14 @@ const PrepopulatedEngine* const engines_LT[] = { +@@ -554,14 +554,14 @@ const PrepopulatedEngine* const engines_LT[] = { &bing, &yahoo, &yandex_ru, @@ -508,52 +517,43 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, &ecosia, }; -@@ -573,7 +574,7 @@ const PrepopulatedEngine* const engines_LV[] = { - &yandex_ru, +@@ -572,7 +572,7 @@ const PrepopulatedEngine* const engines_LV[] = { &bing, + &yandex_ru, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, }; // Libya -@@ -582,7 +583,7 @@ const PrepopulatedEngine* const engines_LY[] = { - &yahoo, +@@ -581,7 +581,7 @@ const PrepopulatedEngine* const engines_LY[] = { &bing, + &yahoo, &yandex_com, - &duckduckgo, + &duckduckgo, &duckduckgo_light, }; // Morocco -@@ -590,7 +591,7 @@ const PrepopulatedEngine* const engines_MA[] = { - &googleen, &google, - &yahoo, +@@ -590,7 +590,7 @@ const PrepopulatedEngine* const engines_MA[] = { + &yahoo_fr, &bing, + &yandex_com, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_com, }; -@@ -598,7 +599,7 @@ const PrepopulatedEngine* const engines_MA[] = { - const PrepopulatedEngine* const engines_MC[] = { + // Monaco +@@ -598,7 +598,7 @@ const PrepopulatedEngine* const engines_MC[] = { &googleen, &google, &bing, + &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yahoo, &qwant, }; -@@ -608,7 +609,7 @@ const PrepopulatedEngine* const engines_MD[] = { - &googleen, &google, - &yandex_ru, - &mail_ru, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &bing, - }; -@@ -618,7 +619,7 @@ const PrepopulatedEngine* const engines_ME[] = { +@@ -617,7 +617,7 @@ const PrepopulatedEngine* const engines_ME[] = { &bing, &yahoo, &yandex_ru, @@ -562,25 +562,25 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Macedonia -@@ -626,7 +627,7 @@ const PrepopulatedEngine* const engines_MK[] = { +@@ -625,7 +625,7 @@ const PrepopulatedEngine* const engines_MK[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_ru, + &baidu, }; -@@ -636,7 +637,7 @@ const PrepopulatedEngine* const engines_MX[] = { +@@ -634,7 +634,7 @@ const PrepopulatedEngine* const engines_MX[] = { + &googleen, &google, &bing, &yahoo_mx, - &ecosia, - &duckduckgo, + &duckduckgo, &duckduckgo_light, + &ecosia, }; - // Malaysia -@@ -644,7 +645,7 @@ const PrepopulatedEngine* const engines_MY[] = { +@@ -643,7 +643,7 @@ const PrepopulatedEngine* const engines_MY[] = { &googleen, &google, &bing, &yahoo_my, @@ -589,45 +589,52 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &baidu, }; -@@ -653,8 +654,9 @@ const PrepopulatedEngine* const engines_NI[] = { +@@ -652,7 +652,7 @@ const PrepopulatedEngine* const engines_NI[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, &ecosia, -+ &duckduckgo_light, }; - // Netherlands -@@ -662,7 +664,7 @@ const PrepopulatedEngine* const engines_NL[] = { +@@ -660,7 +660,7 @@ const PrepopulatedEngine* const engines_NI[] = { + const PrepopulatedEngine* const engines_NL[] = { &googleen, &google, &bing, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, &yahoo_nl, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, + &ecosia, }; - -@@ -671,7 +673,7 @@ const PrepopulatedEngine* const engines_NO[] = { +@@ -670,7 +670,7 @@ const PrepopulatedEngine* const engines_NO[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_ru, + &ecosia, }; -@@ -679,7 +681,7 @@ const PrepopulatedEngine* const engines_NO[] = { - const PrepopulatedEngine* const engines_NZ[] = { +@@ -679,7 +679,7 @@ const PrepopulatedEngine* const engines_NZ[] = { &googleen, &google, &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, &yahoo_nz, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, &ecosia, }; -@@ -689,7 +691,7 @@ const PrepopulatedEngine* const engines_OM[] = { + +@@ -688,7 +688,7 @@ const PrepopulatedEngine* const engines_OM[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ask, + }; + +@@ -697,7 +697,7 @@ const PrepopulatedEngine* const engines_PA[] = { &googleen, &google, &bing, &yahoo, @@ -636,34 +643,25 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -698,7 +700,7 @@ const PrepopulatedEngine* const engines_PA[] = { - &googleen, &google, +@@ -707,7 +707,7 @@ const PrepopulatedEngine* const engines_PE[] = { &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -708,7 +710,7 @@ const PrepopulatedEngine* const engines_PE[] = { - &bing, - &yahoo_pe, + &yahoo_es, &ecosia, - &duckduckgo, + &duckduckgo, &duckduckgo_light, }; // Philippines -@@ -717,7 +719,7 @@ const PrepopulatedEngine* const engines_PH[] = { - &yahoo_ph, +@@ -716,7 +716,7 @@ const PrepopulatedEngine* const engines_PH[] = { &bing, + &yahoo, &ecosia, - &duckduckgo, + &duckduckgo, &duckduckgo_light, }; // Pakistan -@@ -725,7 +727,7 @@ const PrepopulatedEngine* const engines_PK[] = { +@@ -724,7 +724,7 @@ const PrepopulatedEngine* const engines_PK[] = { &googleen, &google, &yahoo, &bing, @@ -672,16 +670,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -734,7 +736,7 @@ const PrepopulatedEngine* const engines_PL[] = { +@@ -733,7 +733,7 @@ const PrepopulatedEngine* const engines_PL[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_ru, }; -@@ -743,7 +745,7 @@ const PrepopulatedEngine* const engines_PR[] = { + // Puerto Rico +@@ -741,7 +741,7 @@ const PrepopulatedEngine* const engines_PR[] = { &googleen, &google, &bing, &yahoo, @@ -690,7 +688,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -752,7 +754,7 @@ const PrepopulatedEngine* const engines_PT[] = { +@@ -750,7 +750,7 @@ const PrepopulatedEngine* const engines_PT[] = { &googleen, &google, &bing, &yahoo, @@ -699,7 +697,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -761,7 +763,7 @@ const PrepopulatedEngine* const engines_PY[] = { +@@ -759,7 +759,7 @@ const PrepopulatedEngine* const engines_PY[] = { &googleen, &google, &bing, &yahoo, @@ -708,16 +706,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -770,7 +772,7 @@ const PrepopulatedEngine* const engines_QA[] = { +@@ -768,7 +768,7 @@ const PrepopulatedEngine* const engines_QA[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &yandex_com, + &ecosia, }; -@@ -779,7 +781,7 @@ const PrepopulatedEngine* const engines_RO[] = { +@@ -777,7 +777,7 @@ const PrepopulatedEngine* const engines_RO[] = { &googleen, &google, &bing, &yahoo, @@ -726,25 +724,34 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -788,7 +790,7 @@ const PrepopulatedEngine* const engines_RS[] = { +@@ -786,7 +786,7 @@ const PrepopulatedEngine* const engines_RS[] = { &googleen, &google, - &yahoo, &bing, + &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, &yandex_ru, }; -@@ -806,7 +808,7 @@ const PrepopulatedEngine* const engines_RW[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, +@@ -796,7 +796,7 @@ const PrepopulatedEngine* const engines_RU[] = { + &yandex_ru, &mail_ru, + &bing, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, }; -@@ -816,7 +818,7 @@ const PrepopulatedEngine* const engines_SA[] = { + // Rwanda +@@ -804,7 +804,7 @@ const PrepopulatedEngine* const engines_RW[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -814,7 +814,7 @@ const PrepopulatedEngine* const engines_SA[] = { &bing, &yahoo, &yandex_com, @@ -753,7 +760,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Sweden -@@ -824,7 +826,7 @@ const PrepopulatedEngine* const engines_SE[] = { +@@ -822,7 +822,7 @@ const PrepopulatedEngine* const engines_SE[] = { &googleen, &google, &bing, &yahoo_se, @@ -762,16 +769,24 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -841,7 +843,7 @@ const PrepopulatedEngine* const engines_SG[] = { +@@ -832,14 +832,14 @@ const PrepopulatedEngine* const engines_SG[] = { + &bing, + &yahoo, + &baidu, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + }; + + // Slovenia const PrepopulatedEngine* const engines_SI[] = { &googleen, &google, &bing, - &duckduckgo, + &duckduckgo, &duckduckgo_light, &yahoo, - &yandex_ru, }; -@@ -851,7 +853,7 @@ const PrepopulatedEngine* const engines_SK[] = { + +@@ -848,7 +848,7 @@ const PrepopulatedEngine* const engines_SK[] = { &googleen, &google, &bing, &yahoo, @@ -780,7 +795,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &seznam_cz, }; -@@ -860,7 +862,7 @@ const PrepopulatedEngine* const engines_SV[] = { +@@ -857,7 +857,7 @@ const PrepopulatedEngine* const engines_SV[] = { &googleen, &google, &bing, &yahoo, @@ -789,7 +804,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -870,7 +872,7 @@ const PrepopulatedEngine* const engines_SY[] = { +@@ -867,7 +867,7 @@ const PrepopulatedEngine* const engines_SY[] = { &bing, &yahoo, &yandex_ru, @@ -798,25 +813,25 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Thailand -@@ -878,7 +880,7 @@ const PrepopulatedEngine* const engines_TH[] = { +@@ -875,7 +875,7 @@ const PrepopulatedEngine* const engines_TH[] = { &googleen, &google, - &yahoo_th, &bing, + &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, &baidu, }; -@@ -888,7 +890,7 @@ const PrepopulatedEngine* const engines_TN[] = { - &yahoo, +@@ -884,7 +884,7 @@ const PrepopulatedEngine* const engines_TN[] = { + &googleen, &google, + &yahoo_fr, &bing, - &yandex_ru, - &duckduckgo, + &duckduckgo, &duckduckgo_light, + &yandex_ru, }; - // Turkey -@@ -897,7 +899,7 @@ const PrepopulatedEngine* const engines_TR[] = { +@@ -894,7 +894,7 @@ const PrepopulatedEngine* const engines_TR[] = { &yandex_tr, &yahoo_tr, &bing, @@ -825,25 +840,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Trinidad and Tobago -@@ -905,7 +907,7 @@ const PrepopulatedEngine* const engines_TT[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ask, - }; - -@@ -923,7 +925,7 @@ const PrepopulatedEngine* const engines_TZ[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -941,7 +943,7 @@ const PrepopulatedEngine* const engines_US[] = { +@@ -902,7 +902,7 @@ const PrepopulatedEngine* const engines_TT[] = { &googleen, &google, &bing, &yahoo, @@ -852,7 +849,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -950,7 +952,7 @@ const PrepopulatedEngine* const engines_UY[] = { +@@ -920,7 +920,7 @@ const PrepopulatedEngine* const engines_TZ[] = { &googleen, &google, &bing, &yahoo, @@ -861,7 +858,34 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -959,7 +961,7 @@ const PrepopulatedEngine* const engines_VE[] = { +@@ -929,7 +929,7 @@ const PrepopulatedEngine* const engines_UA[] = { + &googleen, &google, + &yandex_ua, + &bing, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &yahoo, + }; + +@@ -938,7 +938,7 @@ const PrepopulatedEngine* const engines_US[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -947,7 +947,7 @@ const PrepopulatedEngine* const engines_UY[] = { + &googleen, &google, + &bing, + &yahoo, +- &duckduckgo, ++ &duckduckgo, &duckduckgo_light, + &ecosia, + }; + +@@ -956,7 +956,7 @@ const PrepopulatedEngine* const engines_VE[] = { &googleen, &google, &yahoo_ve, &bing, @@ -870,7 +894,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -978,7 +980,7 @@ const PrepopulatedEngine* const engines_YE[] = { +@@ -975,7 +975,7 @@ const PrepopulatedEngine* const engines_YE[] = { &bing, &yahoo, &yandex_ru, @@ -879,24 +903,24 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // South Africa -@@ -986,7 +988,7 @@ const PrepopulatedEngine* const engines_ZA[] = { +@@ -983,7 +983,7 @@ const PrepopulatedEngine* const engines_ZA[] = { &googleen, &google, &bing, &yahoo, - &duckduckgo, + &duckduckgo, &duckduckgo_light, - &baidu, + &ecosia, }; -@@ -996,7 +998,7 @@ const PrepopulatedEngine* const engines_ZW[] = { +@@ -992,7 +992,7 @@ const PrepopulatedEngine* const engines_ZW[] = { + &googleen, &google, &bing, &yahoo, - &ask, - &duckduckgo, + &duckduckgo, &duckduckgo_light, + &ask, }; // ---------------------------------------------------------------------------- - -- 2.17.1 diff --git a/build/patches/Add-English-only-search-engine.patch b/build/patches/Add-English-only-search-engine.patch index 054f8446..0f02c02a 100644 --- a/build/patches/Add-English-only-search-engine.patch +++ b/build/patches/Add-English-only-search-engine.patch @@ -44,14 +44,14 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h --- a/components/search_engines/search_engine_type.h +++ b/components/search_engines/search_engine_type.h -@@ -75,6 +75,7 @@ enum SearchEngineType { +@@ -74,6 +74,7 @@ enum SearchEngineType { + SEARCH_ENGINE_OCEANHERO, SEARCH_ENGINE_PRIVACYWALL, SEARCH_ENGINE_ECOSIA, - + SEARCH_ENGINE_GOOGLE_EN, + SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro. }; - diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc --- a/components/search_engines/template_url_prepopulate_data.cc +++ b/components/search_engines/template_url_prepopulate_data.cc @@ -79,8 +79,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon const PrepopulatedEngine* const engines_AL[] = { - &google, + &googleen, &google, - &yahoo, &bing, + &yahoo, &duckduckgo, @@ -56,7 +56,7 @@ const PrepopulatedEngine* const engines_AL[] = { @@ -107,8 +107,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon - &google, + &googleen, &google, &bing, - &duckduckgo, &yahoo_au, + &duckduckgo, @@ -83,7 +83,7 @@ const PrepopulatedEngine* const engines_AU[] = { // Bosnia and Herzegovina @@ -118,7 +118,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -92,7 +92,7 @@ const PrepopulatedEngine* const engines_BA[] = { +@@ -91,7 +91,7 @@ const PrepopulatedEngine* const engines_BA[] = { // Belgium const PrepopulatedEngine* const engines_BE[] = { @@ -127,7 +127,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &ecosia, -@@ -101,7 +101,7 @@ const PrepopulatedEngine* const engines_BE[] = { +@@ -100,7 +100,7 @@ const PrepopulatedEngine* const engines_BE[] = { // Bulgaria const PrepopulatedEngine* const engines_BG[] = { @@ -136,7 +136,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -110,7 +110,7 @@ const PrepopulatedEngine* const engines_BG[] = { +@@ -109,7 +109,7 @@ const PrepopulatedEngine* const engines_BG[] = { // Bahrain const PrepopulatedEngine* const engines_BH[] = { @@ -145,7 +145,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -119,7 +119,7 @@ const PrepopulatedEngine* const engines_BH[] = { +@@ -118,7 +118,7 @@ const PrepopulatedEngine* const engines_BH[] = { // Burundi const PrepopulatedEngine* const engines_BI[] = { @@ -154,7 +154,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -128,7 +128,7 @@ const PrepopulatedEngine* const engines_BI[] = { +@@ -127,7 +127,7 @@ const PrepopulatedEngine* const engines_BI[] = { // Brunei const PrepopulatedEngine* const engines_BN[] = { @@ -163,7 +163,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -137,7 +137,7 @@ const PrepopulatedEngine* const engines_BN[] = { +@@ -136,7 +136,7 @@ const PrepopulatedEngine* const engines_BN[] = { // Bolivia const PrepopulatedEngine* const engines_BO[] = { @@ -172,7 +172,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -146,7 +146,7 @@ const PrepopulatedEngine* const engines_BO[] = { +@@ -145,7 +145,7 @@ const PrepopulatedEngine* const engines_BO[] = { // Brazil const PrepopulatedEngine* const engines_BR[] = { @@ -181,7 +181,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_br, &duckduckgo, -@@ -155,7 +155,7 @@ const PrepopulatedEngine* const engines_BR[] = { +@@ -154,7 +154,7 @@ const PrepopulatedEngine* const engines_BR[] = { // Belarus const PrepopulatedEngine* const engines_BY[] = { @@ -190,7 +190,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_by, &mail_ru, &bing, -@@ -164,7 +164,7 @@ const PrepopulatedEngine* const engines_BY[] = { +@@ -163,7 +163,7 @@ const PrepopulatedEngine* const engines_BY[] = { // Belize const PrepopulatedEngine* const engines_BZ[] = { @@ -199,7 +199,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -173,7 +173,7 @@ const PrepopulatedEngine* const engines_BZ[] = { +@@ -172,7 +172,7 @@ const PrepopulatedEngine* const engines_BZ[] = { // Canada const PrepopulatedEngine* const engines_CA[] = { @@ -208,7 +208,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_ca, &duckduckgo, -@@ -182,7 +182,7 @@ const PrepopulatedEngine* const engines_CA[] = { +@@ -181,7 +181,7 @@ const PrepopulatedEngine* const engines_CA[] = { // Switzerland const PrepopulatedEngine* const engines_CH[] = { @@ -216,24 +216,24 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &bing, &duckduckgo, - &yahoo_ch, -@@ -191,7 +191,7 @@ const PrepopulatedEngine* const engines_CH[] = { + &ecosia, +@@ -190,7 +190,7 @@ const PrepopulatedEngine* const engines_CH[] = { // Chile const PrepopulatedEngine* const engines_CL[] = { - &google, + &googleen, &google, &bing, - &yahoo_cl, + &yahoo_es, &duckduckgo, -@@ -202,14 +202,14 @@ const PrepopulatedEngine* const engines_CL[] = { +@@ -201,14 +201,14 @@ const PrepopulatedEngine* const engines_CL[] = { const PrepopulatedEngine* const engines_CN[] = { &baidu, &sogou, - &google, + &googleen, &google, - &so_360, &bing, + &so_360, }; // Colombia @@ -241,9 +241,9 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon - &google, + &googleen, &google, &bing, - &yahoo_co, + &yahoo_es, &ecosia, -@@ -218,7 +218,7 @@ const PrepopulatedEngine* const engines_CO[] = { +@@ -217,7 +217,7 @@ const PrepopulatedEngine* const engines_CO[] = { // Costa Rica const PrepopulatedEngine* const engines_CR[] = { @@ -252,7 +252,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -227,7 +227,7 @@ const PrepopulatedEngine* const engines_CR[] = { +@@ -226,7 +226,7 @@ const PrepopulatedEngine* const engines_CR[] = { // Czech Republic const PrepopulatedEngine* const engines_CZ[] = { @@ -261,16 +261,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &seznam_cz, &bing, &yahoo, -@@ -236,7 +236,7 @@ const PrepopulatedEngine* const engines_CZ[] = { +@@ -235,7 +235,7 @@ const PrepopulatedEngine* const engines_CZ[] = { // Germany const PrepopulatedEngine* const engines_DE[] = { - &google, + &googleen, &google, &bing, - &yahoo_de, &duckduckgo, -@@ -245,7 +245,7 @@ const PrepopulatedEngine* const engines_DE[] = { + &ecosia, +@@ -244,7 +244,7 @@ const PrepopulatedEngine* const engines_DE[] = { // Denmark const PrepopulatedEngine* const engines_DK[] = { @@ -279,7 +279,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_dk, &duckduckgo, -@@ -254,7 +254,7 @@ const PrepopulatedEngine* const engines_DK[] = { +@@ -253,7 +253,7 @@ const PrepopulatedEngine* const engines_DK[] = { // Dominican Republic const PrepopulatedEngine* const engines_DO[] = { @@ -288,16 +288,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -263,7 +263,7 @@ const PrepopulatedEngine* const engines_DO[] = { +@@ -262,7 +262,7 @@ const PrepopulatedEngine* const engines_DO[] = { // Algeria const PrepopulatedEngine* const engines_DZ[] = { - &google, + &googleen, &google, - &yahoo, + &yahoo_uk, &bing, &yandex_ru, -@@ -272,7 +272,7 @@ const PrepopulatedEngine* const engines_DZ[] = { +@@ -271,7 +271,7 @@ const PrepopulatedEngine* const engines_DZ[] = { // Ecuador const PrepopulatedEngine* const engines_EC[] = { @@ -305,8 +305,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &bing, &yahoo, - &ecosia, -@@ -281,7 +281,7 @@ const PrepopulatedEngine* const engines_EC[] = { + &duckduckgo, +@@ -280,7 +280,7 @@ const PrepopulatedEngine* const engines_EC[] = { // Estonia const PrepopulatedEngine* const engines_EE[] = { @@ -315,7 +315,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yandex_ru, &yahoo, -@@ -290,7 +290,7 @@ const PrepopulatedEngine* const engines_EE[] = { +@@ -289,7 +289,7 @@ const PrepopulatedEngine* const engines_EE[] = { // Egypt const PrepopulatedEngine* const engines_EG[] = { @@ -323,8 +323,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &yahoo, &bing, - &yandex_ru, -@@ -299,7 +299,7 @@ const PrepopulatedEngine* const engines_EG[] = { + &yandex_com, +@@ -298,7 +298,7 @@ const PrepopulatedEngine* const engines_EG[] = { // Spain const PrepopulatedEngine* const engines_ES[] = { @@ -333,7 +333,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_es, &duckduckgo, -@@ -308,7 +308,7 @@ const PrepopulatedEngine* const engines_ES[] = { +@@ -307,7 +307,7 @@ const PrepopulatedEngine* const engines_ES[] = { // Finland const PrepopulatedEngine* const engines_FI[] = { @@ -342,7 +342,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_fi, &duckduckgo, -@@ -317,7 +317,7 @@ const PrepopulatedEngine* const engines_FI[] = { +@@ -316,7 +316,7 @@ const PrepopulatedEngine* const engines_FI[] = { // Faroe Islands const PrepopulatedEngine* const engines_FO[] = { @@ -351,7 +351,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_dk, &duckduckgo, -@@ -326,7 +326,7 @@ const PrepopulatedEngine* const engines_FO[] = { +@@ -325,7 +325,7 @@ const PrepopulatedEngine* const engines_FO[] = { // France const PrepopulatedEngine* const engines_FR[] = { @@ -360,7 +360,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_fr, &qwant, -@@ -335,7 +335,7 @@ const PrepopulatedEngine* const engines_FR[] = { +@@ -334,7 +334,7 @@ const PrepopulatedEngine* const engines_FR[] = { // United Kingdom const PrepopulatedEngine* const engines_GB[] = { @@ -369,7 +369,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_uk, &duckduckgo, -@@ -344,7 +344,7 @@ const PrepopulatedEngine* const engines_GB[] = { +@@ -343,7 +343,7 @@ const PrepopulatedEngine* const engines_GB[] = { // Greece const PrepopulatedEngine* const engines_GR[] = { @@ -378,7 +378,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -353,7 +353,7 @@ const PrepopulatedEngine* const engines_GR[] = { +@@ -352,7 +352,7 @@ const PrepopulatedEngine* const engines_GR[] = { // Guatemala const PrepopulatedEngine* const engines_GT[] = { @@ -386,8 +386,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &bing, &yahoo, - &ecosia, -@@ -362,7 +362,7 @@ const PrepopulatedEngine* const engines_GT[] = { + &duckduckgo, +@@ -361,7 +361,7 @@ const PrepopulatedEngine* const engines_GT[] = { // Hong Kong const PrepopulatedEngine* const engines_HK[] = { @@ -395,8 +395,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &yahoo_hk, &bing, - &yandex_com, -@@ -371,7 +371,7 @@ const PrepopulatedEngine* const engines_HK[] = { + &baidu, +@@ -370,7 +370,7 @@ const PrepopulatedEngine* const engines_HK[] = { // Honduras const PrepopulatedEngine* const engines_HN[] = { @@ -404,8 +404,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &bing, &yahoo, - &yandex_ru, -@@ -380,7 +380,7 @@ const PrepopulatedEngine* const engines_HN[] = { + &duckduckgo, +@@ -379,7 +379,7 @@ const PrepopulatedEngine* const engines_HN[] = { // Croatia const PrepopulatedEngine* const engines_HR[] = { @@ -414,7 +414,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -389,7 +389,7 @@ const PrepopulatedEngine* const engines_HR[] = { +@@ -388,7 +388,7 @@ const PrepopulatedEngine* const engines_HR[] = { // Hungary const PrepopulatedEngine* const engines_HU[] = { @@ -423,7 +423,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -398,7 +398,7 @@ const PrepopulatedEngine* const engines_HU[] = { +@@ -397,7 +397,7 @@ const PrepopulatedEngine* const engines_HU[] = { // Indonesia const PrepopulatedEngine* const engines_ID[] = { @@ -432,7 +432,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_id, &bing, &duckduckgo, -@@ -407,7 +407,7 @@ const PrepopulatedEngine* const engines_ID[] = { +@@ -406,7 +406,7 @@ const PrepopulatedEngine* const engines_ID[] = { // Ireland const PrepopulatedEngine* const engines_IE[] = { @@ -441,34 +441,34 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -416,7 +416,7 @@ const PrepopulatedEngine* const engines_IE[] = { +@@ -415,7 +415,7 @@ const PrepopulatedEngine* const engines_IE[] = { // Israel const PrepopulatedEngine* const engines_IL[] = { - &google, + &googleen, &google, &bing, - &yahoo, &yandex_ru, -@@ -425,7 +425,7 @@ const PrepopulatedEngine* const engines_IL[] = { + &yahoo, +@@ -424,7 +424,7 @@ const PrepopulatedEngine* const engines_IL[] = { // India const PrepopulatedEngine* const engines_IN[] = { - &google, + &googleen, &google, - &yahoo_in, &bing, + &yahoo_in, &duckduckgo, -@@ -434,7 +434,7 @@ const PrepopulatedEngine* const engines_IN[] = { +@@ -433,7 +433,7 @@ const PrepopulatedEngine* const engines_IN[] = { // Iraq const PrepopulatedEngine* const engines_IQ[] = { - &google, + &googleen, &google, - &yahoo, &bing, - &yandex_ru, -@@ -443,7 +443,7 @@ const PrepopulatedEngine* const engines_IQ[] = { + &yahoo_uk, + &yandex_com, +@@ -442,7 +442,7 @@ const PrepopulatedEngine* const engines_IQ[] = { // Iran const PrepopulatedEngine* const engines_IR[] = { @@ -476,17 +476,17 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &bing, &yahoo, - &yandex_ru, -@@ -452,7 +452,7 @@ const PrepopulatedEngine* const engines_IR[] = { + &ask, +@@ -451,7 +451,7 @@ const PrepopulatedEngine* const engines_IR[] = { // Iceland const PrepopulatedEngine* const engines_IS[] = { - &google, + &googleen, &google, &bing, - &duckduckgo, &yahoo, -@@ -461,7 +461,7 @@ const PrepopulatedEngine* const engines_IS[] = { + &duckduckgo, +@@ -460,7 +460,7 @@ const PrepopulatedEngine* const engines_IS[] = { // Italy const PrepopulatedEngine* const engines_IT[] = { @@ -495,7 +495,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -470,7 +470,7 @@ const PrepopulatedEngine* const engines_IT[] = { +@@ -469,7 +469,7 @@ const PrepopulatedEngine* const engines_IT[] = { // Jamaica const PrepopulatedEngine* const engines_JM[] = { @@ -504,7 +504,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -479,7 +479,7 @@ const PrepopulatedEngine* const engines_JM[] = { +@@ -478,7 +478,7 @@ const PrepopulatedEngine* const engines_JM[] = { // Jordan const PrepopulatedEngine* const engines_JO[] = { @@ -513,7 +513,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -488,7 +488,7 @@ const PrepopulatedEngine* const engines_JO[] = { +@@ -487,7 +487,7 @@ const PrepopulatedEngine* const engines_JO[] = { // Japan const PrepopulatedEngine* const engines_JP[] = { @@ -522,7 +522,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_jp, &bing, &baidu, -@@ -497,7 +497,7 @@ const PrepopulatedEngine* const engines_JP[] = { +@@ -496,7 +496,7 @@ const PrepopulatedEngine* const engines_JP[] = { // Kenya const PrepopulatedEngine* const engines_KE[] = { @@ -531,7 +531,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -506,7 +506,7 @@ const PrepopulatedEngine* const engines_KE[] = { +@@ -505,7 +505,7 @@ const PrepopulatedEngine* const engines_KE[] = { // South Korea const PrepopulatedEngine* const engines_KR[] = { @@ -540,7 +540,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &naver, &bing, &daum, -@@ -515,7 +515,7 @@ const PrepopulatedEngine* const engines_KR[] = { +@@ -514,7 +514,7 @@ const PrepopulatedEngine* const engines_KR[] = { // Kuwait const PrepopulatedEngine* const engines_KW[] = { @@ -549,7 +549,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -524,7 +524,7 @@ const PrepopulatedEngine* const engines_KW[] = { +@@ -523,7 +523,7 @@ const PrepopulatedEngine* const engines_KW[] = { // Kazakhstan const PrepopulatedEngine* const engines_KZ[] = { @@ -558,7 +558,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_kz, &mail_ru, &bing, -@@ -533,7 +533,7 @@ const PrepopulatedEngine* const engines_KZ[] = { +@@ -532,7 +532,7 @@ const PrepopulatedEngine* const engines_KZ[] = { // Lebanon const PrepopulatedEngine* const engines_LB[] = { @@ -567,7 +567,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -542,7 +542,7 @@ const PrepopulatedEngine* const engines_LB[] = { +@@ -541,7 +541,7 @@ const PrepopulatedEngine* const engines_LB[] = { // Liechtenstein const PrepopulatedEngine* const engines_LI[] = { @@ -576,7 +576,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo, -@@ -551,7 +551,7 @@ const PrepopulatedEngine* const engines_LI[] = { +@@ -550,7 +550,7 @@ const PrepopulatedEngine* const engines_LI[] = { // Lithuania const PrepopulatedEngine* const engines_LT[] = { @@ -585,7 +585,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_ru, -@@ -560,7 +560,7 @@ const PrepopulatedEngine* const engines_LT[] = { +@@ -559,7 +559,7 @@ const PrepopulatedEngine* const engines_LT[] = { // Luxembourg const PrepopulatedEngine* const engines_LU[] = { @@ -594,43 +594,43 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo, -@@ -569,7 +569,7 @@ const PrepopulatedEngine* const engines_LU[] = { +@@ -568,7 +568,7 @@ const PrepopulatedEngine* const engines_LU[] = { // Latvia const PrepopulatedEngine* const engines_LV[] = { - &google, + &googleen, &google, - &yandex_ru, &bing, + &yandex_ru, &yahoo, -@@ -578,7 +578,7 @@ const PrepopulatedEngine* const engines_LV[] = { +@@ -577,7 +577,7 @@ const PrepopulatedEngine* const engines_LV[] = { // Libya const PrepopulatedEngine* const engines_LY[] = { - &google, + &googleen, &google, - &yahoo, &bing, + &yahoo, &yandex_com, -@@ -587,7 +587,7 @@ const PrepopulatedEngine* const engines_LY[] = { +@@ -586,7 +586,7 @@ const PrepopulatedEngine* const engines_LY[] = { // Morocco const PrepopulatedEngine* const engines_MA[] = { - &google, + &googleen, &google, - &yahoo, + &yahoo_fr, &bing, - &duckduckgo, -@@ -596,7 +596,7 @@ const PrepopulatedEngine* const engines_MA[] = { + &yandex_com, +@@ -595,7 +595,7 @@ const PrepopulatedEngine* const engines_MA[] = { // Monaco const PrepopulatedEngine* const engines_MC[] = { - &google, + &googleen, &google, &bing, - &duckduckgo, &yahoo, -@@ -605,7 +605,7 @@ const PrepopulatedEngine* const engines_MC[] = { + &duckduckgo, +@@ -604,7 +604,7 @@ const PrepopulatedEngine* const engines_MC[] = { // Moldova const PrepopulatedEngine* const engines_MD[] = { @@ -638,8 +638,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &yandex_ru, &mail_ru, - &duckduckgo, -@@ -614,7 +614,7 @@ const PrepopulatedEngine* const engines_MD[] = { + &bing, +@@ -613,7 +613,7 @@ const PrepopulatedEngine* const engines_MD[] = { // Montenegro const PrepopulatedEngine* const engines_ME[] = { @@ -648,7 +648,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_ru, -@@ -623,7 +623,7 @@ const PrepopulatedEngine* const engines_ME[] = { +@@ -622,7 +622,7 @@ const PrepopulatedEngine* const engines_ME[] = { // Macedonia const PrepopulatedEngine* const engines_MK[] = { @@ -657,7 +657,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -632,7 +632,7 @@ const PrepopulatedEngine* const engines_MK[] = { +@@ -631,7 +631,7 @@ const PrepopulatedEngine* const engines_MK[] = { // Mexico const PrepopulatedEngine* const engines_MX[] = { @@ -665,8 +665,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &bing, &yahoo_mx, - &ecosia, -@@ -641,7 +641,7 @@ const PrepopulatedEngine* const engines_MX[] = { + &duckduckgo, +@@ -640,7 +640,7 @@ const PrepopulatedEngine* const engines_MX[] = { // Malaysia const PrepopulatedEngine* const engines_MY[] = { @@ -675,7 +675,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_my, &duckduckgo, -@@ -650,7 +650,7 @@ const PrepopulatedEngine* const engines_MY[] = { +@@ -649,7 +649,7 @@ const PrepopulatedEngine* const engines_MY[] = { // Nicaragua const PrepopulatedEngine* const engines_NI[] = { @@ -684,16 +684,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -659,7 +659,7 @@ const PrepopulatedEngine* const engines_NI[] = { +@@ -658,7 +658,7 @@ const PrepopulatedEngine* const engines_NI[] = { // Netherlands const PrepopulatedEngine* const engines_NL[] = { - &google, + &googleen, &google, &bing, - &yahoo_nl, &duckduckgo, -@@ -668,7 +668,7 @@ const PrepopulatedEngine* const engines_NL[] = { + &yahoo_nl, +@@ -667,7 +667,7 @@ const PrepopulatedEngine* const engines_NL[] = { // Norway const PrepopulatedEngine* const engines_NO[] = { @@ -702,16 +702,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -677,7 +677,7 @@ const PrepopulatedEngine* const engines_NO[] = { +@@ -676,7 +676,7 @@ const PrepopulatedEngine* const engines_NO[] = { // New Zealand const PrepopulatedEngine* const engines_NZ[] = { - &google, + &googleen, &google, &bing, - &duckduckgo, &yahoo_nz, -@@ -686,7 +686,7 @@ const PrepopulatedEngine* const engines_NZ[] = { + &duckduckgo, +@@ -685,7 +685,7 @@ const PrepopulatedEngine* const engines_NZ[] = { // Oman const PrepopulatedEngine* const engines_OM[] = { @@ -720,7 +720,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -695,7 +695,7 @@ const PrepopulatedEngine* const engines_OM[] = { +@@ -694,7 +694,7 @@ const PrepopulatedEngine* const engines_OM[] = { // Panama const PrepopulatedEngine* const engines_PA[] = { @@ -729,25 +729,25 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -704,7 +704,7 @@ const PrepopulatedEngine* const engines_PA[] = { +@@ -703,7 +703,7 @@ const PrepopulatedEngine* const engines_PA[] = { // Peru const PrepopulatedEngine* const engines_PE[] = { - &google, + &googleen, &google, &bing, - &yahoo_pe, + &yahoo_es, &ecosia, -@@ -713,7 +713,7 @@ const PrepopulatedEngine* const engines_PE[] = { +@@ -712,7 +712,7 @@ const PrepopulatedEngine* const engines_PE[] = { // Philippines const PrepopulatedEngine* const engines_PH[] = { - &google, + &googleen, &google, - &yahoo_ph, &bing, + &yahoo, &ecosia, -@@ -722,7 +722,7 @@ const PrepopulatedEngine* const engines_PH[] = { +@@ -721,7 +721,7 @@ const PrepopulatedEngine* const engines_PH[] = { // Pakistan const PrepopulatedEngine* const engines_PK[] = { @@ -756,7 +756,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, &bing, &duckduckgo, -@@ -731,7 +731,7 @@ const PrepopulatedEngine* const engines_PK[] = { +@@ -730,7 +730,7 @@ const PrepopulatedEngine* const engines_PK[] = { // Poland const PrepopulatedEngine* const engines_PL[] = { @@ -765,7 +765,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -740,7 +740,7 @@ const PrepopulatedEngine* const engines_PL[] = { +@@ -738,7 +738,7 @@ const PrepopulatedEngine* const engines_PL[] = { // Puerto Rico const PrepopulatedEngine* const engines_PR[] = { @@ -774,7 +774,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -749,7 +749,7 @@ const PrepopulatedEngine* const engines_PR[] = { +@@ -747,7 +747,7 @@ const PrepopulatedEngine* const engines_PR[] = { // Portugal const PrepopulatedEngine* const engines_PT[] = { @@ -783,7 +783,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -758,7 +758,7 @@ const PrepopulatedEngine* const engines_PT[] = { +@@ -756,7 +756,7 @@ const PrepopulatedEngine* const engines_PT[] = { // Paraguay const PrepopulatedEngine* const engines_PY[] = { @@ -792,7 +792,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -767,7 +767,7 @@ const PrepopulatedEngine* const engines_PY[] = { +@@ -765,7 +765,7 @@ const PrepopulatedEngine* const engines_PY[] = { // Qatar const PrepopulatedEngine* const engines_QA[] = { @@ -801,7 +801,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -776,7 +776,7 @@ const PrepopulatedEngine* const engines_QA[] = { +@@ -774,7 +774,7 @@ const PrepopulatedEngine* const engines_QA[] = { // Romania const PrepopulatedEngine* const engines_RO[] = { @@ -810,16 +810,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -785,7 +785,7 @@ const PrepopulatedEngine* const engines_RO[] = { +@@ -783,7 +783,7 @@ const PrepopulatedEngine* const engines_RO[] = { // Serbia const PrepopulatedEngine* const engines_RS[] = { - &google, + &googleen, &google, - &yahoo, &bing, + &yahoo, &duckduckgo, -@@ -794,7 +794,7 @@ const PrepopulatedEngine* const engines_RS[] = { +@@ -792,7 +792,7 @@ const PrepopulatedEngine* const engines_RS[] = { // Russia const PrepopulatedEngine* const engines_RU[] = { @@ -828,7 +828,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, &mail_ru, &bing, -@@ -803,7 +803,7 @@ const PrepopulatedEngine* const engines_RU[] = { +@@ -801,7 +801,7 @@ const PrepopulatedEngine* const engines_RU[] = { // Rwanda const PrepopulatedEngine* const engines_RW[] = { @@ -837,7 +837,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -812,7 +812,7 @@ const PrepopulatedEngine* const engines_RW[] = { +@@ -810,7 +810,7 @@ const PrepopulatedEngine* const engines_RW[] = { // Saudi Arabia const PrepopulatedEngine* const engines_SA[] = { @@ -846,7 +846,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_com, -@@ -821,7 +821,7 @@ const PrepopulatedEngine* const engines_SA[] = { +@@ -819,7 +819,7 @@ const PrepopulatedEngine* const engines_SA[] = { // Sweden const PrepopulatedEngine* const engines_SE[] = { @@ -855,16 +855,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_se, &duckduckgo, -@@ -830,7 +830,7 @@ const PrepopulatedEngine* const engines_SE[] = { +@@ -828,7 +828,7 @@ const PrepopulatedEngine* const engines_SE[] = { // Singapore const PrepopulatedEngine* const engines_SG[] = { - &google, + &googleen, &google, &bing, - &yandex_com, - &yahoo_sg, -@@ -839,7 +839,7 @@ const PrepopulatedEngine* const engines_SG[] = { + &yahoo, + &baidu, +@@ -837,7 +837,7 @@ const PrepopulatedEngine* const engines_SG[] = { // Slovenia const PrepopulatedEngine* const engines_SI[] = { @@ -873,7 +873,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo, -@@ -848,7 +848,7 @@ const PrepopulatedEngine* const engines_SI[] = { +@@ -845,7 +845,7 @@ const PrepopulatedEngine* const engines_SI[] = { // Slovakia const PrepopulatedEngine* const engines_SK[] = { @@ -882,7 +882,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -857,7 +857,7 @@ const PrepopulatedEngine* const engines_SK[] = { +@@ -854,7 +854,7 @@ const PrepopulatedEngine* const engines_SK[] = { // El Salvador const PrepopulatedEngine* const engines_SV[] = { @@ -891,7 +891,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -866,7 +866,7 @@ const PrepopulatedEngine* const engines_SV[] = { +@@ -863,7 +863,7 @@ const PrepopulatedEngine* const engines_SV[] = { // Syria const PrepopulatedEngine* const engines_SY[] = { @@ -900,25 +900,25 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_ru, -@@ -875,7 +875,7 @@ const PrepopulatedEngine* const engines_SY[] = { +@@ -872,7 +872,7 @@ const PrepopulatedEngine* const engines_SY[] = { // Thailand const PrepopulatedEngine* const engines_TH[] = { - &google, + &googleen, &google, - &yahoo_th, &bing, + &yahoo, &duckduckgo, -@@ -884,7 +884,7 @@ const PrepopulatedEngine* const engines_TH[] = { +@@ -881,7 +881,7 @@ const PrepopulatedEngine* const engines_TH[] = { // Tunisia const PrepopulatedEngine* const engines_TN[] = { - &google, + &googleen, &google, - &yahoo, + &yahoo_fr, &bing, - &yandex_ru, -@@ -893,7 +893,7 @@ const PrepopulatedEngine* const engines_TN[] = { + &duckduckgo, +@@ -890,7 +890,7 @@ const PrepopulatedEngine* const engines_TN[] = { // Turkey const PrepopulatedEngine* const engines_TR[] = { @@ -927,7 +927,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_tr, &yahoo_tr, &bing, -@@ -902,7 +902,7 @@ const PrepopulatedEngine* const engines_TR[] = { +@@ -899,7 +899,7 @@ const PrepopulatedEngine* const engines_TR[] = { // Trinidad and Tobago const PrepopulatedEngine* const engines_TT[] = { @@ -936,7 +936,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -911,7 +911,7 @@ const PrepopulatedEngine* const engines_TT[] = { +@@ -908,7 +908,7 @@ const PrepopulatedEngine* const engines_TT[] = { // Taiwan const PrepopulatedEngine* const engines_TW[] = { @@ -945,7 +945,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_tw, &bing, &baidu, -@@ -920,7 +920,7 @@ const PrepopulatedEngine* const engines_TW[] = { +@@ -917,7 +917,7 @@ const PrepopulatedEngine* const engines_TW[] = { // Tanzania const PrepopulatedEngine* const engines_TZ[] = { @@ -954,7 +954,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -929,7 +929,7 @@ const PrepopulatedEngine* const engines_TZ[] = { +@@ -926,7 +926,7 @@ const PrepopulatedEngine* const engines_TZ[] = { // Ukraine const PrepopulatedEngine* const engines_UA[] = { @@ -962,8 +962,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &yandex_ua, &bing, - &mail_ru, -@@ -938,7 +938,7 @@ const PrepopulatedEngine* const engines_UA[] = { + &duckduckgo, +@@ -935,7 +935,7 @@ const PrepopulatedEngine* const engines_UA[] = { // United States const PrepopulatedEngine* const engines_US[] = { @@ -972,7 +972,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -947,7 +947,7 @@ const PrepopulatedEngine* const engines_US[] = { +@@ -944,7 +944,7 @@ const PrepopulatedEngine* const engines_US[] = { // Uruguay const PrepopulatedEngine* const engines_UY[] = { @@ -981,7 +981,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -956,7 +956,7 @@ const PrepopulatedEngine* const engines_UY[] = { +@@ -953,7 +953,7 @@ const PrepopulatedEngine* const engines_UY[] = { // Venezuela const PrepopulatedEngine* const engines_VE[] = { @@ -990,16 +990,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_ve, &bing, &duckduckgo, -@@ -965,7 +965,7 @@ const PrepopulatedEngine* const engines_VE[] = { +@@ -962,7 +962,7 @@ const PrepopulatedEngine* const engines_VE[] = { // Vietnam const PrepopulatedEngine* const engines_VN[] = { - &google, + &googleen, &google, &coccoc, - &yahoo, &bing, -@@ -974,7 +974,7 @@ const PrepopulatedEngine* const engines_VN[] = { + &yahoo, +@@ -971,7 +971,7 @@ const PrepopulatedEngine* const engines_VN[] = { // Yemen const PrepopulatedEngine* const engines_YE[] = { @@ -1008,7 +1008,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_ru, -@@ -983,7 +983,7 @@ const PrepopulatedEngine* const engines_YE[] = { +@@ -980,7 +980,7 @@ const PrepopulatedEngine* const engines_YE[] = { // South Africa const PrepopulatedEngine* const engines_ZA[] = { @@ -1017,7 +1017,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -992,7 +992,7 @@ const PrepopulatedEngine* const engines_ZA[] = { +@@ -989,7 +989,7 @@ const PrepopulatedEngine* const engines_ZA[] = { // Zimbabwe const PrepopulatedEngine* const engines_ZW[] = { @@ -1025,7 +1025,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + &googleen, &google, &bing, &yahoo, - &ask, + &duckduckgo, -- 2.17.1 diff --git a/build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch b/build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch index 1246649a..1cdcde8c 100644 --- a/build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch +++ b/build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch @@ -18,46 +18,46 @@ 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 @@ -5188,6 +5188,12 @@ const FeatureEntry kFeatureEntries[] = { - kOsAll, - FEATURE_VALUE_TYPE(features::kEnableAmbientAuthenticationInIncognito)}, + SINGLE_VALUE_TYPE(switches::kEnableGPUServiceLogging)}, + #if !defined(OS_ANDROID) +#if defined(OS_ANDROID) + {switches::kEnableIncognitoSnapshotsInAndroidRecents, flag_descriptions::kEnableIncognitoSnapshotsInAndroidRecentsName, + flag_descriptions::kEnableIncognitoSnapshotsInAndroidRecentsDescription, kOsAndroid, + SINGLE_VALUE_TYPE(switches::kEnableIncognitoSnapshotsInAndroidRecents)}, +#endif + - {"enable-ambient-authentication-in-guest-session", - flag_descriptions::kEnableAmbientAuthenticationInGuestSessionName, - flag_descriptions::kEnableAmbientAuthenticationInGuestSessionDescription, + {"hardware-media-key-handling", + flag_descriptions::kHardwareMediaKeyHandling, + flag_descriptions::kHardwareMediaKeyHandlingDescription, kOsDesktop, diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -525,6 +525,11 @@ const char kEnableAmbientAuthenticationInIncognitoDescription[] = - "Enables ambient authentication in Incognito mode. This flag may be " - "overriden by policies."; +@@ -522,6 +522,11 @@ const char kEnableAutofillCreditCardAuthenticationDescription[] = + "authenticator (if available) to verify card ownership when retrieving " + "credit cards from Google Payments."; +const char kEnableIncognitoSnapshotsInAndroidRecentsName[] = + "Enable Incognito snapshots in Android Recents"; +const char kEnableIncognitoSnapshotsInAndroidRecentsDescription[] = + "Enable the secure flag for Incognito tabs which prevent taking screenshots and seeing snapshots in Android Recents."; + - const char kEnableAmbientAuthenticationInGuestSessionName[] = - "Enable Ambient Authentication in Guest session."; - const char kEnableAmbientAuthenticationInGuestSessionDescription[] = + const char + kEnableAutofillInfoBarAccountIndicationFooterForSingleAccountUsersName[] = + "Display InfoBar footers with account indication information for " 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 -@@ -321,6 +321,9 @@ extern const char kEnableAccessibilityObjectModelDescription[]; - extern const char kEnableAmbientAuthenticationInIncognitoName[]; - extern const char kEnableAmbientAuthenticationInIncognitoDescription[]; +@@ -321,6 +321,9 @@ extern const char kEnableAutofillCacheServerCardInfoDescription[]; + extern const char kEnableAutofillCreditCardAblationExperimentDisplayName[]; + extern const char kEnableAutofillCreditCardAblationExperimentDescription[]; +extern const char kEnableIncognitoSnapshotsInAndroidRecentsName[]; +extern const char kEnableIncognitoSnapshotsInAndroidRecentsDescription[]; + - extern const char kEnableAmbientAuthenticationInGuestSessionName[]; - extern const char kEnableAmbientAuthenticationInGuestSessionDescription[]; + extern const char kEnableAutofillCreditCardAuthenticationName[]; + extern const char kEnableAutofillCreditCardAuthenticationDescription[]; diff --git a/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmpl b/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmpl --- a/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmpl +++ b/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmpl @@ -75,7 +75,7 @@ diff --git a/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmp diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc -@@ -330,6 +330,9 @@ const char kHomePage[] = "homepage"; +@@ -324,6 +324,9 @@ const char kHomePage[] = "homepage"; // Causes the browser to launch directly in incognito mode. const char kIncognito[] = "incognito"; @@ -88,7 +88,7 @@ diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h -@@ -110,6 +110,7 @@ extern const char kForceFirstRun[]; +@@ -108,6 +108,7 @@ extern const char kForceFirstRun[]; extern const char kForceStackedTabStripLayout[]; extern const char kHomePage[]; extern const char kIncognito[]; diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index ec69c8f8..8a313ab3 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -64,7 +64,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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -49,12 +49,15 @@ public class PrivacySettings +@@ -51,12 +51,15 @@ public class PrivacySettings private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data"; private static final String PREF_ALWAYS_INCOGNITO = "always_incognito"; public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents"; @@ -84,7 +84,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting 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 -@@ -316,6 +316,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { +@@ -331,6 +331,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { std::vector builtins_to_provide; builtins_to_provide.push_back( base::ASCIIToUTF16(chrome::kChromeUIFlagsURL)); @@ -96,7 +96,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 -@@ -117,6 +117,12 @@ +@@ -128,6 +128,12 @@ @@ -112,7 +112,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 -@@ -156,7 +156,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() { +@@ -155,7 +155,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() { SetValue( proxy_config::prefs::kProxy, std::make_unique(ProxyConfigDictionary::CreateFixedServers( @@ -553,7 +553,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc -@@ -64,6 +64,7 @@ +@@ -63,6 +63,7 @@ #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h" #include "chrome/browser/ui/webui/policy_ui.h" #include "chrome/browser/ui/webui/predictors/predictors_ui.h" @@ -561,7 +561,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h" #include "chrome/browser/ui/webui/settings/settings_ui.h" #include "chrome/browser/ui/webui/settings_utils.h" -@@ -507,6 +508,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -555,6 +556,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, return &NewWebUI; if (url.host_piece() == chrome::kChromeUINetExportHost) return &NewWebUI; @@ -1038,7 +1038,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons const char kChromeUIChromeURLsHost[] = "chrome-urls"; const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/"; const char kChromeUIComponentsHost[] = "components"; -@@ -321,6 +323,7 @@ bool IsSystemWebUIHost(base::StringPiece host) { +@@ -322,6 +324,7 @@ bool IsSystemWebUIHost(base::StringPiece host) { kChromeUIMobileSetupHost, kChromeUIMultiDeviceSetupHost, kChromeUINetworkHost, @@ -1046,7 +1046,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons kChromeUIOobeHost, kChromeUIOSCreditsHost, kChromeUIOSSettingsHost, -@@ -511,6 +514,7 @@ const char* const kChromeHostURLs[] = { +@@ -518,6 +521,7 @@ const char* const kChromeHostURLs[] = { #if !defined(OS_ANDROID) #if !defined(OS_CHROMEOS) kChromeUIAppLauncherPageHost, diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 7332d40f..2c3d0875 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -35,8 +35,8 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java", "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", - "java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java", "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", + "java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java", diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml @@ -142,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate; import org.chromium.chrome.browser.IntentHandler.TabOpenType; import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout; -@@ -1556,8 +1557,9 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -1569,6 +1570,9 @@ public abstract class ChromeActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -178,7 +178,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -429,6 +429,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -523,6 +523,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { @@ -194,8 +194,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -33,7 +33,9 @@ import org.chromium.base.annotations.CalledByNative; - import org.chromium.base.annotations.NativeMethods; +@@ -29,7 +29,9 @@ import androidx.annotation.VisibleForTesting; + import org.chromium.base.ContextUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.supplier.Supplier; +import org.chromium.base.ContextUtils; @@ -203,27 +203,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item; - import org.chromium.chrome.browser.contextmenu.RevampedContextMenuCoordinator.ListItemType; -@@ -401,7 +403,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { + import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator.ContextMenuUma.Action; +@@ -376,7 +378,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { if (FirstRunStatus.getFirstRunFlowComplete() && !isEmptyUrl(mParams.getUrl()) && UrlUtilities.isAcceptedScheme(mParams.getUrl())) { if (mMode == ContextMenuMode.NORMAL) { - linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); + if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false) -+ && !mDelegate.isIncognito()) { ++ && !mItemDelegate.isIncognito()) { + // disallow open in new tab + } else + linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); + - if (!mDelegate.isIncognito() && mDelegate.isIncognitoSupported()) { + if (!mItemDelegate.isIncognito() && mItemDelegate.isIncognitoSupported()) { linkGroup.add(createListItem(Item.OPEN_IN_INCOGNITO_TAB)); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -53,6 +53,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -48,6 +48,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable; + import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; - import org.chromium.ui.util.ColorUtils; +import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; @@ -231,7 +231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -@@ -779,7 +782,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -796,7 +799,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid @Override public boolean isIncognito() { @@ -279,7 +279,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -44,9 +44,11 @@ public class PrivacySettings +@@ -46,9 +46,11 @@ public class PrivacySettings private static final String PREF_SECURE_DNS = "secure_dns"; private static final String PREF_DO_NOT_TRACK = "do_not_track"; private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data"; @@ -306,7 +306,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome /** * This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */ -@@ -59,6 +63,7 @@ public class ChromeTabCreator extends TabCreator { +@@ -60,6 +64,7 @@ public class ChromeTabCreator extends TabCreator { private final ChromeActivity mActivity; private final StartupTabPreloader mStartupTabPreloader; private final boolean mIncognito; @@ -314,7 +314,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome private WindowAndroid mNativeWindow; private TabModel mTabModel; -@@ -77,6 +82,10 @@ public class ChromeTabCreator extends TabCreator { +@@ -78,6 +83,10 @@ public class ChromeTabCreator extends TabCreator { mNativeWindow = nativeWindow; mTabDelegateFactorySupplier = tabDelegateFactory; mIncognito = incognito; @@ -325,7 +325,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome mOverviewNTPCreator = overviewNTPCreator; mAsyncTabParamsManager = asyncTabParamsManager; } -@@ -229,6 +238,8 @@ public class ChromeTabCreator extends TabCreator { +@@ -231,6 +240,8 @@ public class ChromeTabCreator extends TabCreator { if (creationState == TabCreationState.LIVE_IN_FOREGROUND && !openInForeground) { creationState = TabCreationState.LIVE_IN_BACKGROUND; } @@ -334,7 +334,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome mTabModel.addTab(tab, position, type, creationState); return tab; } finally { -@@ -263,6 +274,8 @@ public class ChromeTabCreator extends TabCreator { +@@ -265,6 +276,8 @@ public class ChromeTabCreator extends TabCreator { @TabCreationState int creationState = openInForeground ? TabCreationState.LIVE_IN_FOREGROUND : TabCreationState.LIVE_IN_BACKGROUND; @@ -343,7 +343,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome mTabModel.addTab(tab, position, type, creationState); return true; } -@@ -306,7 +319,6 @@ public class ChromeTabCreator extends TabCreator { +@@ -308,7 +321,6 @@ public class ChromeTabCreator extends TabCreator { // TODO(crbug.com/1081924): Clean up the launches from SearchActivity/Chrome. public Tab launchUrlFromExternalApp(String url, String referer, String headers, String appId, boolean forceNewTab, Intent intent, long intentTimestamp) { @@ -351,7 +351,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName()); if (forceNewTab && !isLaunchedFromChrome) { -@@ -415,6 +427,8 @@ public class ChromeTabCreator extends TabCreator { +@@ -417,6 +429,8 @@ public class ChromeTabCreator extends TabCreator { .setSerializedCriticalPersistedTabData(serializedCriticalPersistedTabData) .build(); } @@ -363,7 +363,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java -@@ -251,7 +251,15 @@ public abstract class TabModelSelectorBase implements TabModelSelector, Incognit +@@ -256,7 +256,15 @@ public abstract class TabModelSelectorBase implements TabModelSelector, Incognit public void markTabStateInitialized() { if (mTabStateInitialized) return; mTabStateInitialized = true; @@ -390,7 +390,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer import org.chromium.base.Log; import org.chromium.base.ObserverList; import org.chromium.base.StreamUtil; -@@ -49,6 +50,8 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -49,6 +50,8 @@ import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.UiThreadTaskTraits; @@ -399,7 +399,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -@@ -597,6 +600,13 @@ public class TabPersistentStore extends TabPersister { +@@ -595,6 +598,13 @@ public class TabPersistentStore extends TabPersister { } } @@ -446,7 +446,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI } @Override -@@ -129,6 +138,11 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider +@@ -138,6 +147,11 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider return mWebApkExtras; } @@ -461,7 +461,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -347,7 +347,7 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling", +@@ -374,7 +374,7 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kCCTIncognito{"CCTIncognito", @@ -473,7 +473,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -803,6 +803,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -832,6 +832,13 @@ Your Google account may have other forms of browsing history like searches and a Clears history and autocompletions in the address bar. diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index ab0ccb64..34650dd7 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -181,7 +181,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm import java.util.ArrayList; import java.util.List; -@@ -561,6 +570,24 @@ public class BookmarkBridge { +@@ -584,6 +593,24 @@ public class BookmarkBridge { mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType()); } @@ -206,7 +206,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * Synchronously gets a list of bookmarks that match the specified search query. * @param query Keyword used for searching bookmarks. -@@ -941,6 +968,24 @@ public class BookmarkBridge { +@@ -1005,6 +1032,24 @@ public class BookmarkBridge { depthList.add(depth); } @@ -231,7 +231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm private static List> createPairsList(int[] left, int[] right) { List> pairList = new ArrayList>(); for (int i = 0; i < left.length; i++) { -@@ -1008,6 +1053,8 @@ public class BookmarkBridge { +@@ -1072,6 +1117,8 @@ public class BookmarkBridge { int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type); void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type, List bookmarksList); @@ -263,14 +263,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java -@@ -32,6 +32,7 @@ import org.chromium.components.browser_ui.util.ConversionUtils; +@@ -31,6 +31,7 @@ import org.chromium.components.browser_ui.util.ConversionUtils; import org.chromium.components.browser_ui.widget.dragreorder.DragStateDelegate; import org.chromium.components.browser_ui.widget.selectable_list.SelectableListLayout; import org.chromium.components.browser_ui.widget.selectable_list.SelectableListToolbar.SearchDelegate; +import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelegate; + import org.chromium.components.favicon.LargeIconBridge; import org.chromium.url.GURL; - @@ -52,6 +53,7 @@ public class BookmarkManager private Activity mActivity; private ViewGroup mMainView; @@ -324,7 +324,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -184,6 +184,8 @@ static_library("browser") { +@@ -190,6 +190,8 @@ static_library("browser") { "bitmap_fetcher/bitmap_fetcher_service.h", "bitmap_fetcher/bitmap_fetcher_service_factory.cc", "bitmap_fetcher/bitmap_fetcher_service_factory.h", @@ -333,7 +333,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "bluetooth/bluetooth_chooser_context.cc", "bluetooth/bluetooth_chooser_context.h", "bluetooth/bluetooth_chooser_context_factory.cc", -@@ -1821,6 +1823,8 @@ static_library("browser") { +@@ -1847,6 +1849,8 @@ static_library("browser") { "web_data_service_factory.h", "window_placement/window_placement_permission_context.cc", "window_placement/window_placement_permission_context.h", @@ -342,7 +342,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn ] configs += [ -@@ -3298,8 +3302,6 @@ static_library("browser") { +@@ -3373,8 +3377,6 @@ static_library("browser") { "badging/badge_manager_factory.h", "banners/app_banner_manager_desktop.cc", "banners/app_banner_manager_desktop.h", @@ -354,7 +354,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc --- a/chrome/browser/android/bookmarks/bookmark_bridge.cc +++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc -@@ -38,6 +38,7 @@ +@@ -39,6 +39,7 @@ #include "components/bookmarks/common/android/bookmark_type.h" #include "components/bookmarks/common/bookmark_pref_names.h" #include "components/bookmarks/managed/managed_bookmark_service.h" @@ -362,7 +362,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse #include "components/dom_distiller/core/url_utils.h" #include "components/prefs/pref_service.h" #include "components/query_parser/query_parser.h" -@@ -47,6 +48,21 @@ +@@ -48,6 +49,21 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/web_contents.h" @@ -384,7 +384,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse using base::android::AttachCurrentThread; using base::android::ConvertUTF8ToJavaString; using base::android::ConvertUTF16ToJavaString; -@@ -63,6 +79,56 @@ using bookmarks::BookmarkNode; +@@ -64,6 +80,56 @@ using bookmarks::BookmarkNode; using bookmarks::BookmarkType; using content::BrowserThread; @@ -441,10 +441,10 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse namespace { const int kInvalidId = -1; -@@ -141,6 +207,10 @@ BookmarkBridge::~BookmarkBridge() { - bookmark_model_->RemoveObserver(this); +@@ -150,6 +216,10 @@ BookmarkBridge::~BookmarkBridge() { if (partner_bookmarks_shim_) partner_bookmarks_shim_->RemoveObserver(this); + reading_list_manager_->RemoveObserver(this); + // There may be pending file dialogs, we need to tell them that we've gone + // away so they don't try and call back to us. + if (select_file_dialog_) @@ -452,7 +452,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef&) { -@@ -520,6 +590,153 @@ jint BookmarkBridge::GetTotalBookmarkCount( +@@ -541,6 +611,153 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } @@ -609,7 +609,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser/android/bookmarks/bookmark_bridge.h --- a/chrome/browser/android/bookmarks/bookmark_bridge.h +++ b/chrome/browser/android/bookmarks/bookmark_bridge.h -@@ -19,6 +19,8 @@ +@@ -23,6 +23,8 @@ #include "components/bookmarks/browser/base_bookmark_model_observer.h" #include "components/bookmarks/common/android/bookmark_id.h" #include "components/prefs/pref_change_registrar.h" @@ -618,17 +618,17 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser namespace bookmarks { class BookmarkModel; -@@ -32,7 +34,8 @@ class Profile; - // bookmark page. This fetches the bookmarks, title, urls, folder - // hierarchy. +@@ -38,7 +40,8 @@ class Profile; class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, -- public PartnerBookmarksShim::Observer { -+ public PartnerBookmarksShim::Observer, -+ public ui::SelectFileDialog::Listener { + public PartnerBookmarksShim::Observer, + public ReadingListManager::Observer, +- public ProfileObserver { ++ public ProfileObserver, ++ public ui::SelectFileDialog::Listener { public: BookmarkBridge(JNIEnv* env, const base::android::JavaRef& obj, -@@ -48,6 +51,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, +@@ -54,6 +57,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, bool IsDoingExtensiveChanges(JNIEnv* env, const base::android::JavaParamRef& obj); @@ -641,7 +641,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser jboolean IsEditBookmarksEnabled(JNIEnv* env); void LoadEmptyPartnerBookmarkShimForTesting( -@@ -135,6 +144,13 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, +@@ -141,6 +150,13 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, jlong id, jint type); @@ -655,8 +655,8 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser void SetBookmarkTitle(JNIEnv* env, const base::android::JavaParamRef& obj, jlong id, -@@ -280,12 +296,14 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, - void ShimBeingDeleted(PartnerBookmarksShim* shim) override; +@@ -311,12 +327,14 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, + void DestroyJavaObject(); Profile* profile_; + base::FilePath export_path_; @@ -673,7 +673,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer/profile_writer.cc --- a/chrome/browser/importer/profile_writer.cc +++ b/chrome/browser/importer/profile_writer.cc -@@ -103,12 +103,14 @@ void ProfileWriter::AddHistoryPage(const history::URLRows& page, +@@ -105,12 +105,14 @@ void ProfileWriter::AddHistoryPage(const history::URLRows& page, HistoryServiceFactory::GetForProfile(profile_, ServiceAccessType::EXPLICIT_ACCESS) ->AddPagesWithDetails(page, visit_source); @@ -688,7 +688,7 @@ diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer } void ProfileWriter::AddHomepage(const GURL& home_page) { -@@ -129,6 +131,16 @@ void ProfileWriter::AddBookmarks( +@@ -131,6 +133,16 @@ void ProfileWriter::AddBookmarks( return; BookmarkModel* model = BookmarkModelFactory::GetForBrowserContext(profile_); @@ -716,7 +716,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/ #include "components/favicon_base/favicon_usage_data.h" #include "components/history/core/browser/history_types.h" #include "components/search_engines/template_url_service.h" -@@ -67,6 +68,11 @@ class ProfileWriter : public base::RefCountedThreadSafe { +@@ -70,6 +71,11 @@ class ProfileWriter : public base::RefCountedThreadSafe { const std::vector& bookmarks, const base::string16& top_level_folder_name); @@ -747,7 +747,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -405,6 +405,9 @@ static_library("common") { +@@ -400,6 +400,9 @@ static_library("common") { sources += [ "media/chrome_media_drm_bridge_client.cc", "media/chrome_media_drm_bridge_client.h", @@ -760,7 +760,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 -@@ -78,8 +78,6 @@ static_library("utility") { +@@ -71,8 +71,6 @@ static_library("utility") { if (!is_android) { sources += [ @@ -768,8 +768,8 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn - "importer/bookmark_html_reader.h", "importer/bookmarks_file_importer.cc", "importer/bookmarks_file_importer.h", - "importer/edge_database_reader_win.cc", -@@ -180,6 +178,11 @@ static_library("utility") { + "importer/external_process_importer_bridge.cc", +@@ -187,6 +185,11 @@ static_library("utility") { } } @@ -896,7 +896,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui private static final String TAG = "SelectFileDialog"; private static final String IMAGE_TYPE = "image"; private static final String VIDEO_TYPE = "video"; -+ private static final String HTML_TYPE = "text/html"; ++ private static final String HTML_TYPE = "html"; private static final String AUDIO_TYPE = "audio"; private static final String ALL_TYPES = "*/*"; @@ -961,7 +961,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_file_dialog.h --- a/ui/shell_dialogs/select_file_dialog.h +++ b/ui/shell_dialogs/select_file_dialog.h -@@ -198,6 +198,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog +@@ -204,6 +204,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog void* params); bool HasMultipleFileTypeChoices(); diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index 343ccc36..14fb3a8f 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -53,6 +53,8 @@ import org.chromium.url.Origin; +@@ -55,6 +55,8 @@ import org.chromium.url.Origin; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis /** * Dispatches incoming intents to the appropriate activity based on the current configuration and * Intent fired. -@@ -242,6 +244,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega +@@ -271,6 +273,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega */ public static boolean isCustomTabIntent(Intent intent) { if (intent == null) return false; @@ -48,7 +48,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -45,10 +45,12 @@ public class PrivacySettings +@@ -47,10 +47,12 @@ public class PrivacySettings private static final String PREF_DO_NOT_TRACK = "do_not_track"; private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data"; private static final String PREF_ALWAYS_INCOGNITO = "always_incognito"; @@ -62,7 +62,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting }; private ManagedPreferenceDelegate mManagedPreferenceDelegate; -@@ -99,6 +101,10 @@ public class PrivacySettings +@@ -101,6 +103,10 @@ public class PrivacySettings .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); } else if (PREF_NETWORK_PREDICTIONS.equals(key)) { PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue); @@ -73,7 +73,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; -@@ -122,6 +128,11 @@ public class PrivacySettings +@@ -124,6 +130,11 @@ public class PrivacySettings canMakePaymentPref.setChecked(prefService.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED)); } @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -3851,6 +3851,13 @@ Data from your Incognito session will only be cleared from Chrome when you Show original @@ -101,7 +101,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro + - + -- 2.17.1 diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index cf04532f..1e734584 100644 --- a/build/patches/Add-exit-menu-item.patch +++ b/build/patches/Add-exit-menu-item.patch @@ -23,7 +23,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re -@@ -142,6 +144,8 @@ +@@ -153,6 +155,8 @@ @@ -35,7 +35,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android/java/res/menu/main_menu_regroup.xml --- a/chrome/android/java/res/menu/main_menu_regroup.xml +++ b/chrome/android/java/res/menu/main_menu_regroup.xml -@@ -152,6 +152,9 @@ +@@ -181,6 +181,9 @@ android:icon="@drawable/vr_headset" /> @@ -48,7 +48,7 @@ diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -55,6 +55,7 @@ import org.chromium.base.supplier.OneshotSupplierImpl; +@@ -54,6 +54,7 @@ import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.AppHooks; @@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.ChromeActivitySessionTracker; import org.chromium.chrome.browser.ChromeApplication; import org.chromium.chrome.browser.ChromeWindow; -@@ -1923,6 +1924,11 @@ public abstract class ChromeActivity +@@ -1950,6 +1951,11 @@ public abstract class ChromeActivity RecordUserAction.record("MobileMenuSettings"); } @@ -87,7 +87,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -2835,6 +2835,9 @@ Data from your Incognito session will only be cleared from Chrome when you Settings diff --git a/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch b/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch index 36e23e25..03f2dcb7 100644 --- a/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch +++ b/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch @@ -19,7 +19,7 @@ with limited CPU/memory resources and it is disabled by default. diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -779,6 +779,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = { +@@ -784,6 +784,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = { net::kEffectiveConnectionType4G}, }; @@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc // Ensure that all effective connection types returned by Network Quality // Estimator (NQE) are also exposed via flags. static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 == -@@ -3495,6 +3500,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3499,6 +3504,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAndroidPictureInPictureAPIName, flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid, FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)}, @@ -44,7 +44,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -1404,6 +1404,10 @@ const char kMediaHistoryDescription[] = +@@ -1397,6 +1397,10 @@ const char kMediaHistoryDescription[] = "Enables Media History which records data around media playbacks on " "websites."; @@ -58,7 +58,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -821,6 +821,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[]; +@@ -832,6 +832,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[]; extern const char kMediaHistoryName[]; extern const char kMediaHistoryDescription[]; diff --git a/build/patches/Add-flag-to-control-video-playback-resume-feature.patch b/build/patches/Add-flag-to-control-video-playback-resume-feature.patch index 54727aaf..3fd258d7 100644 --- a/build/patches/Add-flag-to-control-video-playback-resume-feature.patch +++ b/build/patches/Add-flag-to-control-video-playback-resume-feature.patch @@ -13,9 +13,9 @@ Disable it by default on Android as it is everywhere else diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -2648,6 +2648,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -2635,6 +2635,10 @@ const FeatureEntry kFeatureEntries[] = { kOsAura, - FEATURE_VALUE_TYPE(features::kOverlayScrollbarFlashWhenMouseEnter)}, + FEATURE_VALUE_TYPE(features::kOverlayScrollbarFlashAfterAnyScrollUpdate)}, #endif // USE_AURA + {"resume-background-video", + flag_descriptions::kResumeBackgroundVideoName, @@ -27,9 +27,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -969,6 +969,11 @@ const char kMemlogStackModeNative[] = "Native"; - const char kMemlogStackModeNativeWithThreadNames[] = "Native with thread names"; - const char kMemlogStackModePseudo[] = "Trace events"; +@@ -955,6 +955,11 @@ const char kEnableLoginDetectionName[] = "Enable login detection"; + const char kEnableLoginDetectionDescription[] = + "Allow user sign-in to be detected based on heuristics."; +const char kResumeBackgroundVideoName[] = "Resume background video."; +const char kResumeBackgroundVideoDescription[] = @@ -42,7 +42,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -541,6 +541,9 @@ extern const char kEnablePortalsDescription[]; +@@ -547,6 +547,9 @@ extern const char kEnablePortalsDescription[]; extern const char kEnablePortalsCrossOriginName[]; extern const char kEnablePortalsCrossOriginDescription[]; @@ -55,7 +55,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -244,11 +244,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad", +@@ -237,11 +237,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad", // when in background. const base::Feature kResumeBackgroundVideo { "resume-background-video", diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index 5d14c18b..ea2b6e93 100644 --- a/build/patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/patches/Add-flag-to-disable-IPv6-probes.patch @@ -16,7 +16,7 @@ Subject: Add flag to disable IPv6 probes diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -4439,6 +4439,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4385,6 +4385,11 @@ const FeatureEntry kFeatureEntries[] = { #endif // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || // defined(OS_CHROMEOS) @@ -26,12 +26,12 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc + FEATURE_VALUE_TYPE(network::features::kIPv6Probing)}, + #if !defined(OS_ANDROID) - {"ntp-dismiss-promos", flag_descriptions::kNtpDismissPromosName, - flag_descriptions::kNtpDismissPromosDescription, kOsDesktop, + {"ntp-iframe-one-google-bar", flag_descriptions::kNtpIframeOneGoogleBarName, + flag_descriptions::kNtpIframeOneGoogleBarDescription, kOsDesktop, diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -2767,6 +2767,10 @@ const char kContextualSearchRankerQueryDescription[] = +@@ -2723,6 +2723,10 @@ const char kContextualSearchRankerQueryDescription[] = const char kContextualSearchSecondTapName[] = "Contextual Search second tap triggering"; @@ -45,7 +45,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -614,6 +614,9 @@ extern const char kEnableWasmThreadsName[]; +@@ -616,6 +616,9 @@ extern const char kEnableWasmThreadsName[]; extern const char kEnableWasmThreadsDescription[]; extern const char kEnableWasmTieringName[]; @@ -109,7 +109,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc #include "net/log/net_log_with_source.h" #include "net/socket/client_socket_factory.h" #include "net/socket/datagram_client_socket.h" -@@ -3582,8 +3583,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) { +@@ -3707,8 +3708,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) { if (last_ipv6_probe_time_.is_null() || (tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() > kIPv6ProbePeriodMs) { @@ -128,7 +128,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.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 -@@ -39,6 +39,10 @@ const base::Feature kReporting{"Reporting", base::FEATURE_ENABLED_BY_DEFAULT}; +@@ -40,6 +40,10 @@ const base::Feature kReporting{"Reporting", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kThrottleDelayable{"ThrottleDelayable", base::FEATURE_ENABLED_BY_DEFAULT}; diff --git a/build/patches/Add-flag-to-disable-WebGL.patch b/build/patches/Add-flag-to-disable-WebGL.patch index 420427c4..eef9a451 100644 --- a/build/patches/Add-flag-to-disable-WebGL.patch +++ b/build/patches/Add-flag-to-disable-WebGL.patch @@ -11,7 +11,7 @@ Subject: Add flag to disable WebGL diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -2482,6 +2482,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -2465,6 +2465,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAccelerated2dCanvasName, flag_descriptions::kAccelerated2dCanvasDescription, kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)}, @@ -24,30 +24,30 @@ 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 -@@ -494,6 +494,10 @@ const char kForceEnableDevicesPageDescription[] = - "content, instead of a warning message. Note: chrome://devices is " - "no longer supported, and this flag will be permanently removed in M88."; - +@@ -494,6 +494,10 @@ const char kEnableAudioFocusEnforcementName[] = "Audio Focus Enforcement"; + const char kEnableAudioFocusEnforcementDescription[] = + "Enables enforcement of a single media session having audio focus at " + "any one time. Requires #enable-media-session-service to be enabled too."; +const char kDisableWebGLName[] = "Disable all versions of WebGL"; + +const char kDisableWebGLDescription[] = "Disable all versions of WebGL"; + - const char kDisableBestEffortTasksName[] = "Skip best effort tasks"; - const char kDisableBestEffortTasksDescription[] = - "With this flag on, tasks of the lowest priority will not be executed " + + const char kEnableAutofillAccountWalletStorageName[] = + "Enable the account data storage for autofill"; 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 -@@ -306,6 +306,9 @@ extern const char kDeviceDiscoveryNotificationsDescription[]; - extern const char kForceEnableDevicesPageName[]; - extern const char kForceEnableDevicesPageDescription[]; +@@ -306,6 +306,9 @@ extern const char kDisallowDocWrittenScriptsUiDescription[]; + extern const char kEnableAccessibilityObjectModelName[]; + extern const char kEnableAccessibilityObjectModelDescription[]; +extern const char kDisableWebGLName[]; +extern const char kDisableWebGLDescription[]; + - extern const char kDisableBestEffortTasksName[]; - extern const char kDisableBestEffortTasksDescription[]; + extern const char kEnableAudioFocusEnforcementName[]; + extern const char kEnableAudioFocusEnforcementDescription[]; -- 2.17.1 diff --git a/build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch b/build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch index b1e8b812..e7ec3b03 100644 --- a/build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch +++ b/build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch @@ -20,7 +20,7 @@ legacy acceleration events. diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -2701,6 +2701,12 @@ const FeatureEntry kFeatureEntries[] = { +@@ -2688,6 +2688,12 @@ const FeatureEntry kFeatureEntries[] = { {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName, flag_descriptions::kGpuRasterizationDescription, kOsAll, MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)}, @@ -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 -@@ -436,6 +436,12 @@ extern const char kWinrtGeolocationImplementationDescription[]; +@@ -444,6 +444,12 @@ extern const char kWinrtGeolocationImplementationDescription[]; extern const char kWinrtSensorsImplementationName[]; extern const char kWinrtSensorsImplementationDescription[]; @@ -70,7 +70,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc -@@ -94,6 +94,9 @@ void SetRuntimeFeatureDefaultsForPlatform( +@@ -89,6 +89,9 @@ void SetRuntimeFeatureDefaultsForPlatform( command_line.HasSwitch( blink::switches::kEnableGpuMemoryBufferCompositorResources) && !command_line.HasSwitch(switches::kDisableWebGLImageChromium) && @@ -83,8 +83,8 @@ 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 -@@ -856,6 +856,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend", - // TODO(rouslan): Remove this. +@@ -835,6 +835,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend", + // The JavaScript API for payments on the web. const base::Feature kWebPayments{"WebPayments", base::FEATURE_ENABLED_BY_DEFAULT}; +// Enables the device motion API used to track device acceleration; @@ -103,7 +103,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h -@@ -183,6 +183,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrArModule; +@@ -182,6 +182,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrArModule; CONTENT_EXPORT extern const base::Feature kWebXrHitTest; CONTENT_EXPORT extern const base::Feature kWebXrIncubations; @@ -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 -@@ -99,6 +99,8 @@ class WebRuntimeFeatures { +@@ -96,6 +96,8 @@ class WebRuntimeFeatures { BLINK_PLATFORM_EXPORT static void EnableCSSHexAlphaColor(bool); BLINK_PLATFORM_EXPORT static void EnableSameSiteByDefaultCookies(bool); BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool); @@ -127,7 +127,7 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc --- a/third_party/blink/renderer/modules/modules_initializer.cc +++ b/third_party/blink/renderer/modules/modules_initializer.cc -@@ -228,9 +228,13 @@ void ModulesInitializer::OnClearWindowObjectInMainWorld( +@@ -220,9 +220,13 @@ void ModulesInitializer::OnClearWindowObjectInMainWorld( Document& document, const Settings& settings) const { LocalDOMWindow& window = *document.domWindow(); @@ -147,7 +147,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 -@@ -187,6 +187,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) { +@@ -171,6 +171,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) { RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable); } @@ -165,7 +165,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -1313,6 +1313,14 @@ +@@ -1360,6 +1360,14 @@ name: "OffscreenCanvasCommit", status: "experimental", }, diff --git a/build/patches/Add-history-support-in-incognito-mode.patch b/build/patches/Add-history-support-in-incognito-mode.patch index b281a692..c6c9b128 100644 --- a/build/patches/Add-history-support-in-incognito-mode.patch +++ b/build/patches/Add-history-support-in-incognito-mode.patch @@ -31,7 +31,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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -36,6 +36,8 @@ import org.chromium.components.user_prefs.UserPrefs; +@@ -38,6 +38,8 @@ import org.chromium.components.user_prefs.UserPrefs; import org.chromium.ui.text.NoUnderlineClickableSpan; import org.chromium.ui.text.SpanApplier; @@ -40,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting /** * Fragment to keep track of the all the privacy related preferences. */ -@@ -50,11 +52,13 @@ public class PrivacySettings +@@ -52,11 +54,13 @@ public class PrivacySettings private static final String PREF_ALWAYS_INCOGNITO = "always_incognito"; public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents"; private static final String PREF_PROXY_OPTIONS = "proxy"; @@ -54,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting PREF_ALLOW_CUSTOM_TAB_INTENTS, PREF_CLOSE_TABS_ON_EXIT, PREF_PROXY_OPTIONS -@@ -97,6 +101,11 @@ public class PrivacySettings +@@ -99,6 +103,11 @@ public class PrivacySettings Preference secureDnsPref = findPreference(PREF_SECURE_DNS); secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled()); @@ -66,7 +66,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting updateSummaries(); } -@@ -116,6 +125,9 @@ public class PrivacySettings +@@ -118,6 +127,9 @@ public class PrivacySettings SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue); sharedPreferencesEditor.apply(); @@ -76,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; -@@ -160,6 +172,13 @@ public class PrivacySettings +@@ -162,6 +174,13 @@ public class PrivacySettings (ChromeSwitchPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT); closeTabsOnExitPref.setOnPreferenceChangeListener(this); closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate); @@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc --- a/chrome/browser/history/history_tab_helper.cc +++ b/chrome/browser/history/history_tab_helper.cc -@@ -29,6 +29,9 @@ +@@ -28,6 +28,9 @@ #if defined(OS_ANDROID) #include "chrome/browser/android/background_tab_manager.h" #include "components/feed/feed_feature_list.h" @@ -103,7 +103,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo #else #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" -@@ -256,6 +259,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -255,6 +258,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -117,7 +117,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) return NULL; -@@ -263,6 +273,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -262,6 +272,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -154,7 +154,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -208,6 +208,8 @@ +@@ -205,6 +205,8 @@ #endif #if defined(OS_ANDROID) @@ -163,7 +163,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h" #include "chrome/browser/android/explore_sites/history_statistics_reporter.h" #include "chrome/browser/android/ntp/recent_tabs_page_prefs.h" -@@ -872,6 +874,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -903,6 +905,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, variations::VariationsService::RegisterProfilePrefs(registry); video_tutorials::RegisterPrefs(registry); feed::prefs::RegisterFeedSharedProfilePrefs(registry); @@ -174,7 +174,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -827,6 +827,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -856,6 +856,12 @@ Your Google account may have other forms of browsing history like searches and a Opens links in incognito tabs when you click on new tab or on a link @@ -190,9 +190,9 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro 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 -@@ -3079,4 +3079,9 @@ const char kShowCaretBrowsingDialog[] = - "settings.a11y.caretbrowsing.show_dialog"; - #endif +@@ -3119,4 +3119,9 @@ const char kSecurityTokenSessionNotificationSeconds[] = + "security_token_session_notification_seconds"; + #endif // defined(OS_CHROMEOS) +#if defined(OS_ANDROID) +const char kIncognitoTabHistoryEnabled[] = @@ -203,8 +203,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 -@@ -1078,6 +1078,10 @@ extern const char kCaretBrowsingEnabled[]; - extern const char kShowCaretBrowsingDialog[]; +@@ -1093,6 +1093,10 @@ extern const char kSecurityTokenSessionBehavior[]; + extern const char kSecurityTokenSessionNotificationSeconds[]; #endif +#if defined(OS_ANDROID) diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index d2249be8..0fbcc685 100644 --- a/build/patches/Add-menu-item-to-view-source.patch +++ b/build/patches/Add-menu-item-to-view-source.patch @@ -41,7 +41,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android/java/res/menu/main_menu_regroup.xml --- a/chrome/android/java/res/menu/main_menu_regroup.xml +++ b/chrome/android/java/res/menu/main_menu_regroup.xml -@@ -113,6 +113,9 @@ +@@ -142,6 +142,9 @@ @@ -54,7 +54,7 @@ diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android 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 -@@ -1760,6 +1760,8 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -2054,6 +2054,8 @@ public abstract class ChromeActivity } catch (ActivityNotFoundException e) { Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show(); } @@ -78,15 +78,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -409,6 +409,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate - isChromeScheme, isFileScheme, isContentScheme, isIncognito, url)); +@@ -503,6 +503,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + } updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */); + updateViewSourceMenuItem(menu, currentTab); // Only display reader mode settings menu option if the current page is in reader mode. menu.findItem(R.id.reader_mode_prefs_id).setVisible(shouldShowReaderModePrefs(currentTab)); -@@ -786,6 +787,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -920,6 +921,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } } @@ -109,14 +109,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -222,6 +222,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat - } - +@@ -233,6 +233,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible); + MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id); + MenuItem openWebApkItem = menu.findItem(R.id.open_webapk_id); + updateViewSourceMenuItem(menu, currentTab); - prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible); + prepareAddToHomescreenMenuItem( + homescreenItem, null, openWebApkItem, menu, currentTab, addToHomeScreenVisible); } - } diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd diff --git a/build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch b/build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch deleted file mode 100644 index d83b3da6..00000000 --- a/build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch +++ /dev/null @@ -1,1234 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Thu, 5 Dec 2019 22:41:25 +0100 -Subject: Add option to configure the ad blocker filters URL - ---- - chrome/android/chrome_java_resources.gni | 2 + - chrome/android/chrome_java_sources.gni | 2 + - .../java/res/layout/adblock_editor.xml | 67 +++++ - chrome/android/java/res/values/values.xml | 2 + - .../java/res/xml/adblock_preferences.xml | 25 ++ - .../android/java/res/xml/main_preferences.xml | 5 + - .../browser/settings/AdBlockEditor.java | 92 +++++++ - .../browser/settings/AdBlockPreferences.java | 61 +++++ - chrome/app/generated_resources.grd | 10 + - chrome/browser/browser_process_impl.cc | 3 +- - .../flags/android/cached_feature_flags.cc | 11 + - .../browser/flags/CachedFeatureFlags.java | 10 + - .../net/system_network_context_manager.cc | 4 + - .../strings/android_chrome_strings.grd | 14 + - chrome/common/pref_names.cc | 3 + - chrome/common/pref_names.h | 1 + - .../adblock_updater_service.cc | 249 ++++++++++++++++++ - .../adblock_updater_service.h | 100 +++++++ - .../download_filters_task.cc | 222 ++++++++++++++++ - .../component_updater/download_filters_task.h | 129 +++++++++ - 20 files changed, 1011 insertions(+), 1 deletion(-) - create mode 100644 chrome/android/java/res/layout/adblock_editor.xml - create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml - create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java - create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java - create mode 100644 components/component_updater/adblock_updater_service.cc - create mode 100644 components/component_updater/adblock_updater_service.h - create mode 100644 components/component_updater/download_filters_task.cc - create mode 100644 components/component_updater/download_filters_task.h - -diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni ---- a/chrome/android/chrome_java_resources.gni -+++ b/chrome/android/chrome_java_resources.gni -@@ -786,6 +786,7 @@ chrome_java_resources = [ - "java/res/layout/account_picker_new_account_row_legacy.xml", - "java/res/layout/account_picker_row.xml", - "java/res/layout/account_picker_row_legacy.xml", -+ "java/res/layout/adblock_editor.xml", - "java/res/layout/add_languages_main.xml", - "java/res/layout/add_to_homescreen_dialog.xml", - "java/res/layout/auto_sign_in_first_run_dialog.xml", -@@ -1044,6 +1045,7 @@ chrome_java_resources = [ - "java/res/xml/about_chrome_preferences.xml", - "java/res/xml/accessibility_preferences.xml", - "java/res/xml/account_management_preferences.xml", -+ "java/res/xml/adblock_preferences.xml", - "java/res/xml/autofill_server_profile_preferences.xml", - "java/res/xml/bookmark_widget_info.xml", - "java/res/xml/clear_browsing_data_preferences_tab.xml", -diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni ---- a/chrome/android/chrome_java_sources.gni -+++ b/chrome/android/chrome_java_sources.gni -@@ -1306,6 +1306,8 @@ chrome_java_sources = [ - "java/src/org/chromium/chrome/browser/payments/ui/ShoppingCart.java", - "java/src/org/chromium/chrome/browser/permissions/PermissionSettingsBridge.java", - "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java", -+ "java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java", -+ "java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java", - "java/src/org/chromium/chrome/browser/policy/EnterpriseInfo.java", - "java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java", - "java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java", -diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/java/res/layout/adblock_editor.xml -new file mode 100644 ---- /dev/null -+++ b/chrome/android/java/res/layout/adblock_editor.xml -@@ -0,0 +1,67 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml ---- a/chrome/android/java/res/values/values.xml -+++ b/chrome/android/java/res/values/values.xml -@@ -32,6 +32,8 @@ - 0 - 1 - -+ https://www.bromite.org/custom-filters -+ - Proxy configuration - chrome://proxy - -diff --git a/chrome/android/java/res/xml/adblock_preferences.xml b/chrome/android/java/res/xml/adblock_preferences.xml -new file mode 100644 ---- /dev/null -+++ b/chrome/android/java/res/xml/adblock_preferences.xml -@@ -0,0 +1,25 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml ---- a/chrome/android/java/res/xml/main_preferences.xml -+++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -90,6 +90,11 @@ - android:key="privacy" - android:order="18" - android:title="@string/prefs_privacy"/> -+ - { -+ WebsitePreferenceBridge.setCategoryEnabled(browserContextHandle, ContentSettingsType.ADS, !(boolean) newValue); -+ return true; -+ }); -+ -+ mAdBlockEdit = findPreference(PREF_ADBLOCK_EDIT); -+ updateCurrentAdBlockUrl(); -+ } -+ -+ private void updateCurrentAdBlockUrl() { -+ mAdBlockEdit.setSummary(CachedFeatureFlags.getAdBlockFiltersURL()); -+ } -+ -+ @Override -+ public void onResume() { -+ super.onResume(); -+ updateCurrentAdBlockUrl(); -+ } -+} -diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd ---- a/chrome/app/generated_resources.grd -+++ b/chrome/app/generated_resources.grd -@@ -10208,6 +10208,16 @@ Please help our engineers fix this problem. Tell us what happened right before y - Never show this again. - - -+ -+ -+ -+ Ad Blocking -+ -+ -+ Configure Ad Blocking and filters URL -+ -+ -+ - - - Always allow ads on this site -diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc ---- a/chrome/browser/browser_process_impl.cc -+++ b/chrome/browser/browser_process_impl.cc -@@ -1073,7 +1073,8 @@ BrowserProcessImpl::adblock_updater() { - adblock_updater_ = std::make_unique( - g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(), - std::move(scheduler), -- g_browser_process->subresource_filter_ruleset_service()); -+ g_browser_process->subresource_filter_ruleset_service(), -+ local_state()->GetString(prefs::kAdBlockFiltersURL)); - - return adblock_updater_.get(); - } -diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/browser/flags/android/cached_feature_flags.cc ---- a/chrome/browser/flags/android/cached_feature_flags.cc -+++ b/chrome/browser/flags/android/cached_feature_flags.cc -@@ -8,6 +8,9 @@ - - #include "base/android/jni_string.h" - #include "base/feature_list.h" -+#include "chrome/browser/browser_process.h" -+#include "chrome/common/pref_names.h" -+#include "components/prefs/pref_service.h" - #include "content/public/common/content_features.h" - #include "content/public/common/network_service_util.h" - -@@ -41,3 +44,11 @@ static jboolean JNI_CachedFeatureFlags_IsNetworkServiceWarmUpEnabled( - return content::IsOutOfProcessNetworkService() && - base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess); - } -+ -+static ScopedJavaLocalRef JNI_CachedFeatureFlags_GetAdBlockFiltersURL(JNIEnv* env) { -+ return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kAdBlockFiltersURL)); -+} -+ -+static void JNI_CachedFeatureFlags_SetAdBlockFiltersURL(JNIEnv* env, const JavaParamRef& url) { -+ g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL, base::android::ConvertJavaStringToUTF8(env, url)); -+} -diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java ---- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -@@ -248,6 +248,14 @@ public class CachedFeatureFlags { - ChromeFeatureList.REACHED_CODE_PROFILER, "sampling_interval_us", 0)); - } - -+ public static void setAdBlockFiltersURL(String url) { -+ CachedFeatureFlagsJni.get().setAdBlockFiltersURL(url); -+ } -+ -+ public static String getAdBlockFiltersURL() { -+ return CachedFeatureFlagsJni.get().getAdBlockFiltersURL(); -+ } -+ - /** - * Caches flags that must take effect on startup but are set via native code. - */ -@@ -400,5 +408,7 @@ public class CachedFeatureFlags { - @NativeMethods - interface Natives { - boolean isNetworkServiceWarmUpEnabled(); -+ void setAdBlockFiltersURL(String url); -+ String getAdBlockFiltersURL(); - } - } -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 -@@ -331,6 +331,8 @@ SystemNetworkContextManager::SystemNetworkContextManager( - SSLConfigServiceManager::CreateDefaultManager(local_state_)), - proxy_config_monitor_(local_state_), - stub_resolver_config_reader_(local_state_) { -+ local_state_->SetDefaultPrefValue(prefs::kAdBlockFiltersURL, -+ base::Value("https://www.bromite.org/filters/filters.dat")); - #if !defined(OS_ANDROID) - // QuicAllowed was not part of Android policy. - const base::Value* value = -@@ -393,6 +395,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() { - void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { - StubResolverConfigReader::RegisterPrefs(registry); - -+ registry->RegisterStringPref(prefs::kAdBlockFiltersURL, std::string()); -+ - // Static auth params - registry->RegisterStringPref(prefs::kAuthSchemes, - "basic,digest,ntlm,negotiate"); -diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd ---- a/chrome/browser/ui/android/strings/android_chrome_strings.grd -+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -214,6 +214,20 @@ CHAR-LIMIT guidelines: - Enter VR - - -+ -+ -+ AdBlock settings -+ -+ -+ Edit filters URL -+ -+ -+ Filters URL -+ -+ -+ Visit help page -+ -+ - - - General -diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc ---- a/chrome/common/pref_names.cc -+++ b/chrome/common/pref_names.cc -@@ -2103,6 +2103,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; - // capture devices without prompt. - const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; - -+// Holds the URL to an indexed subresource filters file. -+const char kAdBlockFiltersURL[] = "adblock.filters_url"; -+ - // A pref holding the value of the policy used to explicitly allow or deny - // access to video capture devices. When enabled or not set, the user is - // prompted for device access. When disabled, access to video capture devices -diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h ---- a/chrome/common/pref_names.h -+++ b/chrome/common/pref_names.h -@@ -30,6 +30,7 @@ extern const char kDownloadRestrictions[]; - extern const char kForceEphemeralProfiles[]; - extern const char kHomePageIsNewTabPage[]; - extern const char kHomePage[]; -+extern const char kAdBlockFiltersURL[]; - extern const char kImportantSitesDialogHistory[]; - extern const char kProfileCreationTime[]; - #if defined(OS_WIN) -diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc -new file mode 100644 ---- /dev/null -+++ b/components/component_updater/adblock_updater_service.cc -@@ -0,0 +1,249 @@ -+/* -+ This file is part of Bromite. -+ -+ Bromite is free software: you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation, either version 3 of the License, or -+ (at your option) any later version. -+ -+ Bromite is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with Bromite. If not, see . -+*/ -+ -+#include "components/component_updater/adblock_updater_service.h" -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "base/bind.h" -+#include "base/bind_helpers.h" -+#include "base/callback.h" -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/logging.h" -+#include "base/macros.h" -+#include "base/threading/thread_checker.h" -+#include "base/threading/thread_task_runner_handle.h" -+#include "base/time/time.h" -+#include "base/timer/timer.h" -+#include "url/gurl.h" -+#include "base/strings/safe_sprintf.h" -+#include "base/strings/string_number_conversions.h" -+#include "base/strings/string_split.h" -+namespace adblock_updater { -+ -+// all constants express seconds -+// these could be made configurable -+const int initial_check_delay = 5, -+ next_check_delay = 60*60*24*7, // 1 week -+ on_demand_check_delay = 60; // minimum 1 minute between each on-demand check -+ -+AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr shared_url_network_factory, std::unique_ptr scheduler, -+ subresource_filter::RulesetService* ruleset_service, std::string filters_url) -+ : ruleset_service_(ruleset_service), shared_url_network_factory_(shared_url_network_factory), scheduler_(std::move(scheduler)) { -+ DCHECK(ruleset_service); -+ -+ filters_url_ = filters_url; -+} -+ -+AdBlockUpdaterService::~AdBlockUpdaterService() { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+} -+ -+void AdBlockUpdaterService::AddObserver(Observer* observer) { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ observer_list_.AddObserver(observer); -+} -+ -+void AdBlockUpdaterService::RemoveObserver(Observer* observer) { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ observer_list_.RemoveObserver(observer); -+} -+ -+//TODO: use this as in: base::Bind(&AdBlockUpdaterService::NotifyObservers, base::Unretained(this) -+void AdBlockUpdaterService::NotifyObservers(Event event) { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ for (auto& observer : observer_list_) -+ observer.OnEvent(event); -+} -+ -+void AdBlockUpdaterService::Start() { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ -+ // avoid multiple scheduling -+ if (scheduled_) -+ return; -+ scheduled_ = true; -+ -+ LOG(INFO) << "AdBlockUpdaterService: starting up. " -+ << "First update attempt will take place in " -+ << initial_check_delay << " seconds. " -+ << "Next update attempt will take place in " -+ << next_check_delay << " seconds. "; -+ -+ scheduler_->Schedule( -+ base::TimeDelta::FromSeconds(initial_check_delay), -+ base::TimeDelta::FromSeconds(next_check_delay), -+ base::Bind(&AdBlockUpdaterService::OnDemandScheduledUpdate, -+ base::Unretained(this)), base::DoNothing()); -+} -+ -+void AdBlockUpdaterService::OnDemandScheduledUpdate(component_updater::UpdateScheduler::OnFinishedCallback on_finished) { -+ //TODO: call on_finished -+ OnDemandUpdateAsNeeded(false, Callback()); -+} -+ -+bool AdBlockUpdaterService::OnDemandUpdate(Callback on_finished) { -+ return OnDemandUpdateAsNeeded(true, std::move(on_finished)); -+} -+ -+bool AdBlockUpdaterService::OnDemandUpdateAsNeeded(bool is_foreground, Callback on_finished) { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ -+ // Check if the request is too soon. -+ if (!last_update_.is_null()) { -+ base::TimeDelta delta = -+ base::TimeTicks::Now() - last_update_; -+ if (is_updating_ || (delta < base::TimeDelta::FromSeconds(on_demand_check_delay))) -+ LOG(INFO) << "AdBlockUpdaterService: update not necessary."; -+ return false; -+ } -+ -+ OnDemandUpdateInternal(is_foreground, std::move(on_finished)); -+ return true; -+} -+ -+void AdBlockUpdaterService::OnDemandUpdateInternal(bool is_foreground, Callback on_finished) { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ -+ if (is_updating_) { -+ base::ThreadTaskRunnerHandle::Get()->PostTask( -+ FROM_HERE, base::BindOnce(std::move(on_finished), -+ Error::UPDATE_IN_PROGRESS)); -+ return; -+ } -+ is_updating_ = true; -+ last_update_ = base::TimeTicks::Now(); -+ -+ base::Time::Exploded e = {0}; -+ base::Time t = base::Time(); -+ auto version = ruleset_service_->GetMostRecentlyIndexedVersion(); -+ LOG(INFO) << "AdBlockUpdaterService: MostRecentIndexedVersion = " << version.content_version; -+ std::vector tokens = -+ base::SplitString(version.content_version, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); -+ int i = 0; -+ bool failed = false; -+ for (const std::string& token : tokens) { -+ // parse as number -+ int n = 0; -+ if (!base::StringToInt(token, &n)) { -+ failed = true; -+ break; -+ } -+ -+ switch (i++) { -+ case 0: -+ e.year = 2019 + n; -+ break; -+ case 1: -+ e.month = n + 1; -+ break; -+ case 2: -+ e.day_of_month = n + 1; -+ break; -+ case 3: -+ e.second = n % 60; -+ n -= e.second; -+ n /= 60; -+ e.minute = n % 60; -+ e.hour = n / 60; -+ break; -+ default: -+ failed = true; -+ break; -+ } -+ } -+ -+ if (failed) { -+ LOG(WARNING) << "AdBlockUpdaterService: failed to parse most recent version as x.y.z.w dot-separated integers"; -+ } else { -+ if (!base::Time::FromUTCExploded(e, &t)) -+ LOG(WARNING) << "AdBlockUpdaterService: failed to convert version to time."; -+ } -+ -+ auto task = base::MakeRefCounted( -+ shared_url_network_factory_, -+ is_foreground, filters_url_, -+ t, -+ base::BindOnce(&AdBlockUpdaterService::OnUpdateComplete, base::Unretained(this), -+ std::move(on_finished))); -+ -+ // run task now; task is responsible for clearing the is_updating status -+ base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, -+ base::BindOnce(&DownloadFiltersTask::Run, base::Unretained(task.get()))); -+ tasks_.insert(task); -+} -+ -+void AdBlockUpdaterService::OnUpdateComplete(Callback on_finished, -+ scoped_refptr task, -+ Error error) { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ -+ auto file_path = task->file_path(); -+ if (error == Error::NONE) { -+ subresource_filter::UnindexedRulesetInfo ruleset_info; -+ ruleset_info.ruleset_path = file_path; -+ ruleset_info.delete_ruleset_path = true; -+ ruleset_info.content_version = "0.0.0.0"; -+ DCHECK(!ruleset_info.ruleset_path.empty()); -+ -+ // convert time to version -+ auto t = task->last_modified(); -+ bool ignore_version = t.is_null(); -+ if (!ignore_version) { -+ base::Time::Exploded e; -+ t.UTCExplode(&e); -+ -+ // convert time to version -+ const int major = e.year - 2019, -+ minor = e.month - 1, -+ patch = e.day_of_month - 1, -+ revision = (e.hour*60+e.minute)*60 + e.second; -+ if (major < 0) -+ LOG(WARNING) << "AdBlockUpdaterService: too old Last-Modified header, ignoring version check."; -+ else { -+ char version_buffer[32]; -+ base::strings::SafeSNPrintf(version_buffer, sizeof(version_buffer), "%d.%d.%d.%d", -+ major, minor, patch, revision); -+ -+ ruleset_info.content_version = version_buffer; -+ -+ LOG(INFO) << "AdBlockUpdaterService: indexing filters with version " << ruleset_info.content_version; -+ } -+ } else -+ LOG(WARNING) << "AdBlockUpdaterService: invalid Last-Modified header, ignoring version check."; -+ ruleset_service_->IndexAndStoreAndPublishRulesetIfNeeded(ruleset_info, ignore_version); -+ } else { -+ //TODO: generate event for ADBLOCK_NOT_UPDATED in case of error UPDATE_NOT_NEEDED -+ } -+ -+ //TODO: run these only when index-and-store is actually finished? -+ if (!on_finished.is_null()) { -+ base::ThreadTaskRunnerHandle::Get()->PostTask( -+ FROM_HERE, base::BindOnce(std::move(on_finished), error)); -+ } -+ -+ // mark as not updating -+ is_updating_ = false; -+ tasks_.erase(task); -+} -+ -+} // namespace adblock_updater -diff --git a/components/component_updater/adblock_updater_service.h b/components/component_updater/adblock_updater_service.h -new file mode 100644 ---- /dev/null -+++ b/components/component_updater/adblock_updater_service.h -@@ -0,0 +1,100 @@ -+/* -+ This file is part of Bromite. -+ -+ Bromite is free software: you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation, either version 3 of the License, or -+ (at your option) any later version. -+ -+ Bromite is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with Bromite. If not, see . -+*/ -+ -+#ifndef COMPONENTS_ADBLOCK_UPDATER_SERVICE_H -+#define COMPONENTS_ADBLOCK_UPDATER_SERVICE_H -+ -+#include -+ -+#include -+#include -+#include -+ -+#include "base/callback_forward.h" -+#include "base/gtest_prod_util.h" -+#include "base/memory/ref_counted.h" -+#include "base/version.h" -+#include "build/build_config.h" -+#include "components/component_updater/update_scheduler.h" -+#include "url/gurl.h" -+#include "components/component_updater/download_filters_task.h" -+#include "components/subresource_filter/content/browser/ruleset_service.h" -+#include "services/network/public/cpp/shared_url_loader_factory.h" -+ -+namespace adblock_updater { -+ -+// Called when a non-blocking call in this module completes. -+using Callback = base::OnceCallback; -+ -+class Observer { -+ public: -+ virtual ~Observer() {} -+ -+ // Called by the update service when a state change happens. -+ virtual void OnEvent(Event event) = 0; -+}; -+ -+// The AdBlock update service is in charge of downloading and saving the -+// AdBlock filters. -+// -+// All methods are safe to call ONLY from the browser's main thread. -+class AdBlockUpdaterService { -+ public: -+ AdBlockUpdaterService(scoped_refptr shared_url_network_factory, std::unique_ptr scheduler, -+ subresource_filter::RulesetService* ruleset_service, std::string filters_url); -+ ~AdBlockUpdaterService(); -+ -+ // Adds an observer for this class. An observer should not be added more -+ // than once. The caller retains the ownership of the observer object. -+ void AddObserver(Observer* observer); -+ -+ // Removes an observer. It is safe for an observer to be removed while -+ // the observers are being notified. -+ void RemoveObserver(Observer* observer); -+ -+ // Will schedule automatic updates, run in background. -+ void Start(); -+ -+ // To be called for an user-triggered update. -+ // Will not result in an actual update if the last update was too recently triggered. -+ bool OnDemandUpdate(Callback on_finished); -+ -+ private: -+ void NotifyObservers(Event event); -+ void OnDemandScheduledUpdate(component_updater::UpdateScheduler::OnFinishedCallback on_finished); -+ bool OnDemandUpdateAsNeeded(bool is_foreground, Callback on_finished); -+ void OnDemandUpdateInternal(bool is_foreground, Callback on_finished); -+ void OnUpdateComplete(Callback callback, scoped_refptr task, Error error); -+ -+ base::ObserverList::Unchecked observer_list_; -+ base::ThreadChecker thread_checker_; -+ base::TimeTicks last_update_; -+ -+ subresource_filter::RulesetService* ruleset_service_; -+ std::string filters_url_; -+ -+ scoped_refptr shared_url_network_factory_; -+ std::unique_ptr scheduler_; -+ -+ bool is_updating_ = false; -+ bool scheduled_ = false; -+ std::set> tasks_; -+}; -+ -+} // namespace adblock_updater -+ -+#endif // COMPONENTS_ADBLOCK_UPDATER_SERVICE_H -diff --git a/components/component_updater/download_filters_task.cc b/components/component_updater/download_filters_task.cc -new file mode 100644 ---- /dev/null -+++ b/components/component_updater/download_filters_task.cc -@@ -0,0 +1,222 @@ -+/* -+ This file is part of Bromite. -+ -+ Bromite is free software: you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation, either version 3 of the License, or -+ (at your option) any later version. -+ -+ Bromite is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with Bromite. If not, see . -+*/ -+#include "components/component_updater/download_filters_task.h" -+ -+#include -+ -+#include "base/files/file_util.h" -+#include "base/bind.h" -+#include "base/location.h" -+#include "base/threading/thread_task_runner_handle.h" -+#include "base/logging.h" -+#include "net/base/load_flags.h" -+#include "url/gurl.h" -+ -+namespace adblock_updater { -+ -+// maximum 10MB for the filters file -+const int kMaxBodySize = 1024 * 1024 * 10; -+ -+const int kMaxRetriesOnNetworkChange = 3; -+ -+const net::NetworkTrafficAnnotationTag traffic_annotation = -+ net::DefineNetworkTrafficAnnotation("update_client", R"( -+ semantics { -+ sender: "Bromite AdBlock filters updater" -+ description: -+ "The AdBlock filters updater is responsible for updating the subresource filters." -+ trigger: "Manual or automatic AdBlock filters updates." -+ data: -+ "Subresource filters rulesets, binary format" -+ destination: WEBSITE -+ } -+ )"); -+ -+DownloadFiltersTask::DownloadFiltersTask(scoped_refptr shared_url_network_factory, -+ bool is_foreground, const std::string& filters_url, base::Time min_last_modified, -+ Callback callback) -+ : shared_url_network_factory_(shared_url_network_factory), -+ is_foreground_(is_foreground), -+ complete_callback_(std::move(callback)) { -+ DCHECK(!filters_url.empty()); -+ filters_url_ = GURL(filters_url); -+ min_last_modified_ = min_last_modified; -+ -+ if (filters_url.empty()) { -+ return; -+ } -+ -+ createSimpleURLLoader(!min_last_modified_.is_null()); -+} -+ -+void DownloadFiltersTask::createSimpleURLLoader(bool headers_only) { -+ // always reset response-related fields -+ response_code_ = -1; -+ final_url_ = GURL(); -+ download_start_time_ = base::TimeTicks(); -+ -+ auto resource_request = std::make_unique(); -+ resource_request->url = filters_url_; -+ resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit; -+ resource_request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES; -+ resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit; -+ if (headers_only) -+ // will chain two requests - first one is to check last modified header alone -+ resource_request->method = "HEAD"; -+ else -+ resource_request->method = "GET"; -+ -+ simple_url_loader_ = network::SimpleURLLoader::Create( -+ std::move(resource_request), traffic_annotation); -+ simple_url_loader_->SetRetryOptions( -+ kMaxRetriesOnNetworkChange, -+ network::SimpleURLLoader::RetryMode::RETRY_ON_NETWORK_CHANGE); -+ simple_url_loader_->SetAllowPartialResults(false); -+ simple_url_loader_->SetOnResponseStartedCallback(base::BindOnce( -+ &DownloadFiltersTask::OnResponseStarted, base::Unretained(this))); -+} -+ -+DownloadFiltersTask::~DownloadFiltersTask() { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+} -+ -+void DownloadFiltersTask::Run() { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ -+ // will not be initialized if the URL was empty -+ if (!simple_url_loader_) { -+ TaskComplete(Error::INVALID_ARGUMENT); -+ return; -+ } -+ -+ download_start_time_ = base::TimeTicks::Now(); -+ if (min_last_modified_.is_null()) { -+ internalDownload(); -+ } else { -+ simple_url_loader_->DownloadHeadersOnly( -+ shared_url_network_factory_.get(), -+ base::BindOnce(&DownloadFiltersTask::OnHeadersDownloadComplete, base::Unretained(this)) -+ ); -+ } -+} -+ -+void DownloadFiltersTask::internalDownload() { -+ simple_url_loader_->DownloadToTempFile( -+ shared_url_network_factory_.get(), -+ base::BindOnce(&DownloadFiltersTask::OnDownloadComplete, base::Unretained(this)), -+ kMaxBodySize); -+} -+ -+void DownloadFiltersTask::OnHeadersDownloadComplete(scoped_refptr headers) { -+ // something went wrong -+ if (headers == nullptr) { -+ OnDownloadComplete(base::FilePath()); -+ return; -+ } -+ -+ // ignoring 'headers' as 'Last-Modified' has already been picked up by OnResponseStarted -+ const base::TimeDelta dt = -+ last_modified_ - min_last_modified_; -+ -+ if (dt.InSeconds() > 0) { -+ // prepare for next simple URL loader and trigger download -+ createSimpleURLLoader(false); -+ internalDownload(); -+ return; -+ } -+ -+ // the remote filters are not more recent than known ones -+ TaskComplete(Error::UPDATE_NOT_NEEDED); -+} -+ -+void DownloadFiltersTask::OnResponseStarted( -+ const GURL& final_url, -+ const network::mojom::URLResponseHead& response_head) { -+ -+ final_url_ = final_url; -+ response_code_ = response_head.headers ? response_head.headers->response_code() : -1; -+ -+ if (!response_head.headers->GetLastModifiedValue(&last_modified_)) -+ LOG(WARNING) << "DownloadFiltersTask: fetching URL '" << final_url.spec() << "' with method " << (min_last_modified_.is_null() ? "GET" : "HEAD") << " (no Last-Modified header)"; -+ else -+ LOG(INFO) << "DownloadFiltersTask: fetching URL '" << final_url.spec() << "' with method " << (min_last_modified_.is_null() ? "GET" : "HEAD"); -+} -+ -+void DownloadFiltersTask::OnDownloadComplete(base::FilePath file_path) { -+ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); -+ int net_error = simple_url_loader_->NetError(); -+ int64_t content_size = simple_url_loader_->GetContentSize(); -+ -+ const base::TimeTicks download_end_time(base::TimeTicks::Now()); -+ const base::TimeDelta download_time = -+ download_end_time >= download_start_time_ -+ ? download_end_time - download_start_time_ -+ : base::TimeDelta(); -+ -+ // Consider a 5xx response from the server as an indication to terminate -+ // the request and avoid overloading the server in this case. -+ // is not accepting requests for the moment. -+ int error = -1; -+ if (!file_path.empty() && response_code_ == 200) { -+ DCHECK_EQ(0, net_error); -+ error = 0; -+ } else if (response_code_ != -1) { -+ error = response_code_; -+ } else { -+ error = net_error; -+ } -+ -+ LOG(INFO) << "DownloadFiltersTask: downloaded " << content_size << " bytes in " -+ << download_time.InMilliseconds() << "ms from '" << final_url_.spec() -+ << "' to '" << file_path << "' with net_error " << net_error << " and error " << error; -+ -+ if (error) { -+ TaskComplete(Error::DOWNLOAD_ERROR); -+ return; -+ } -+ -+ file_path_ = file_path; -+ TaskComplete(Error::NONE); -+} -+ -+void DownloadFiltersTask::Cancel() { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ -+ LOG(INFO) << "DownloadFiltersTask: update cancelled"; -+ -+ // deletion of the simple_url_loader_ will cause cancellation of its active request, if any -+ -+ TaskComplete(Error::UPDATE_CANCELED); -+} -+ -+void DownloadFiltersTask::TaskComplete(Error error) { -+ DCHECK(thread_checker_.CalledOnValidThread()); -+ -+ base::ThreadTaskRunnerHandle::Get()->PostTask( -+ FROM_HERE, base::BindOnce(std::move(complete_callback_), -+ scoped_refptr(this), error)); -+} -+ -+base::Time DownloadFiltersTask::last_modified() { -+ return last_modified_; -+} -+ -+base::FilePath DownloadFiltersTask::file_path() { -+ return file_path_; -+} -+ -+} // namespace adblock_updater -diff --git a/components/component_updater/download_filters_task.h b/components/component_updater/download_filters_task.h -new file mode 100644 ---- /dev/null -+++ b/components/component_updater/download_filters_task.h -@@ -0,0 +1,129 @@ -+/* -+ This file is part of Bromite. -+ -+ Bromite is free software: you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation, either version 3 of the License, or -+ (at your option) any later version. -+ -+ Bromite is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with Bromite. If not, see . -+*/ -+ -+#ifndef COMPONENTS_DOWNLOAD_FILTERS_TASK_H_ -+#define COMPONENTS_DOWNLOAD_FILTERS_TASK_H_ -+ -+#include -+#include -+ -+#include "base/callback.h" -+#include "base/macros.h" -+#include "base/memory/ref_counted.h" -+#include "base/threading/thread_checker.h" -+#include "components/update_client/network.h" -+#include "url/gurl.h" -+#include "base/files/file_path.h" -+#include "services/network/public/cpp/shared_url_loader_factory.h" -+#include "services/network/public/cpp/simple_url_loader.h" -+ -+namespace adblock_updater { -+ -+// Errors generated as a result of calling Run() or by the service itself (UPDATE_IN_PROGRESS or UPDATE_CANCELED) -+enum class Error { -+ NONE = 0, -+ UPDATE_IN_PROGRESS = 1, -+ UPDATE_CANCELED = 2, -+ UPDATE_NOT_NEEDED = 3, -+ DOWNLOAD_ERROR = 4, -+ INVALID_ARGUMENT = 5, -+ MAX_VALUE, -+}; -+ -+enum class Event { -+ // Sent before the update client does an update check. -+ ADBLOCK_CHECKING_FOR_UPDATES = 1, -+ -+ // Sent after the new filters have been downloaded but before the install -+ // or the upgrade is attempted. -+ ADBLOCK_UPDATE_READY, -+ -+ // Sent when filters are being downloaded. -+ ADBLOCK_UPDATE_DOWNLOADING, -+ -+ // Sent when filters have been successfully updated. -+ ADBLOCK_UPDATED, -+ -+ // Sent when filters have not been updated because there -+ // was no new version available -+ //TODO: implement this with the headers check -+ ADBLOCK_NOT_UPDATED, -+ -+ // Sent when an error ocurred during an update for any reason, including -+ // the update check itself failed, or the download of the update payload -+ // failed, or applying the update failed. -+ ADBLOCK_UPDATE_ERROR, -+}; -+ -+// Defines a specialized task for updating AdBlock filters. -+class DownloadFiltersTask : public base::RefCounted { -+ public: -+ using Callback = -+ base::OnceCallback task, Error error)>; -+ -+ // |shared_url_network_factory| is injected here for the URL loader factory. -+ // |is_foreground| is true when the update task is initiated by the user. -+ // |filters_url| is the URL to load filters from. -+ // |complete_callback| is called to return the execution flow back to creator of -+ // this task when the task is done. -+ DownloadFiltersTask(scoped_refptr shared_url_network_factory, -+ bool is_foreground, const std::string& filters_url, base::Time min_last_modified, -+ Callback complete_callback); -+ -+ void Run(); -+ -+ void Cancel(); -+ -+ base::FilePath file_path(); -+ -+ base::Time last_modified(); -+ -+ private: -+ ~DownloadFiltersTask(); -+ -+ void OnDownloadProgress(uint64_t current); -+ void OnResponseStarted(const GURL& final_url, -+ const network::mojom::URLResponseHead& response_head); -+ void OnDownloadComplete(base::FilePath file_path); -+ void OnHeadersDownloadComplete(scoped_refptr headers); -+ void createSimpleURLLoader(bool); -+ void internalDownload(); -+ -+ // Called when the task has completed either because the task has run or -+ // it has been canceled. -+ void TaskComplete(Error error); -+ -+ base::ThreadChecker thread_checker_; -+ scoped_refptr shared_url_network_factory_; -+ const bool is_foreground_; -+ Callback complete_callback_; -+ std::unique_ptr simple_url_loader_; -+ -+ // fields populated while downloading -+ base::TimeTicks download_start_time_; -+ GURL final_url_, filters_url_; -+ int response_code_; -+ base::Time last_modified_, min_last_modified_; -+ base::FilePath file_path_; -+ -+ friend class base::RefCounted; -+ DISALLOW_COPY_AND_ASSIGN(DownloadFiltersTask); -+}; -+ -+} // namespace update_client -+ -+#endif // COMPONENTS_DOWNLOAD_FILTERS_TASK_H_ --- -2.17.1 - diff --git a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch index ab876b8f..8b0ec2b3 100644 --- a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch +++ b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch @@ -3,11 +3,11 @@ Date: Sat, 7 Sep 2019 15:07:42 +0200 Subject: Add option to not persist tabs across sessions --- - chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++ - .../chrome/browser/ChromeTabbedActivity.java | 4 +++- - .../browser/privacy/settings/PrivacySettings.java | 12 ++++++++++-- - .../ui/android/strings/android_chrome_strings.grd | 6 ++++++ - 4 files changed, 24 insertions(+), 3 deletions(-) + .../java/res/xml/privacy_preferences.xml | 5 +++++ + .../chrome/browser/ChromeTabbedActivity.java | 4 +++- + .../privacy/settings/PrivacySettings.java | 17 +++++++++++++++-- + .../android/strings/android_chrome_strings.grd | 6 ++++++ + 4 files changed, 29 insertions(+), 3 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 @@ -27,7 +27,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 -@@ -1047,8 +1047,10 @@ public class ChromeTabbedActivity extends ChromeActivity IMAGE diff --git a/build/patches/Allow-playing-audio-in-background.patch b/build/patches/Allow-playing-audio-in-background.patch index a67fedfe..c3715360 100644 --- a/build/patches/Allow-playing-audio-in-background.patch +++ b/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 -@@ -1094,6 +1094,12 @@ bool WebMediaPlayerImpl::HasAudio() const { +@@ -1096,6 +1096,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& enabledTrackIds) { DCHECK(main_task_runner_->BelongsToCurrentThread()); -@@ -3529,7 +3535,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { +@@ -3548,7 +3554,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { // Audio only stream is allowed to play when in background. // TODO: We should check IsBackgroundOptimizationCandidate here. But we need // to move the logic of checking video frames out of that function. @@ -39,7 +39,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h --- a/media/blink/webmediaplayer_impl.h +++ b/media/blink/webmediaplayer_impl.h -@@ -153,6 +153,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl +@@ -155,6 +155,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; diff --git a/build/patches/Always-allow-partner-customisation.patch b/build/patches/Always-allow-partner-customisation.patch index 04049559..39d81544 100644 --- a/build/patches/Always-allow-partner-customisation.patch +++ b/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 -@@ -325,14 +325,14 @@ public class PartnerBrowserCustomizations { +@@ -324,14 +324,14 @@ public class PartnerBrowserCustomizations { @Override protected Void doInBackground() { try { diff --git a/build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch b/build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch index 31995350..260ee042 100644 --- a/build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch +++ b/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 -@@ -150,7 +150,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams( +@@ -152,7 +152,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams( local_state->GetBoolean(prefs::kNtlmV2Enabled); #endif // defined(OS_POSIX) @@ -23,7 +23,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc --- a/components/cronet/url_request_context_config.cc +++ b/components/cronet/url_request_context_config.cc -@@ -555,7 +555,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions( +@@ -562,7 +562,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions( effective_experimental_options->Remove(it.key(), nullptr); continue; } diff --git a/build/patches/Always-use-new-tab-page-for-default-home-page.patch b/build/patches/Always-use-new-tab-page-for-default-home-page.patch index 310670b3..0cb7925a 100644 --- a/build/patches/Always-use-new-tab-page-for-default-home-page.patch +++ b/build/patches/Always-use-new-tab-page-for-default-home-page.patch @@ -10,7 +10,7 @@ Ignore any partner-provided home page. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -135,9 +135,6 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat +@@ -152,9 +152,6 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat * if the homepage button is force enabled via flag. */ public static String getDefaultHomepageUri() { diff --git a/build/patches/Automated-domain-substitution.patch b/build/patches/Automated-domain-substitution.patch index 2bfd4454..689a2e3f 100644 --- a/build/patches/Automated-domain-substitution.patch +++ b/build/patches/Automated-domain-substitution.patch @@ -16,8 +16,6 @@ Subject: Automated domain substitution .../chrome/browser/IntentHandler.java | 10 +- .../customtabs/CustomButtonParams.java | 2 +- .../browser/feedback/ConnectivityChecker.java | 4 +- - .../chrome/browser/help/HelpAndFeedback.java | 2 +- - .../indicator/ConnectivityDetector.java | 4 +- .../browser/omaha/RequestGenerator.java | 2 +- .../suggestions/SuggestionsConfig.java | 2 +- .../SuggestionsNavigationDelegate.java | 2 +- @@ -57,7 +55,6 @@ Subject: Automated domain substitution .../notification_platform_bridge_mac.mm | 2 +- .../ads_page_load_metrics_observer.cc | 2 +- chrome/browser/policy/policy_test_utils.cc | 2 +- - .../isolated/isolated_prerender_params.cc | 6 +- chrome/browser/profiles/profile_window.cc | 2 +- .../push_messaging_service_impl.cc | 2 +- .../resources/chromeos/emulator/icons.html | 2 +- @@ -94,7 +91,7 @@ Subject: Automated domain substitution .../browser/ui/webui/management_ui_handler.cc | 2 +- .../ui/webui/new_tab_page/new_tab_page_ui.cc | 4 +- chrome/browser/ui/webui/ntp/new_tab_ui.cc | 2 +- - .../ui/webui/ntp/ntp_resource_cache.cc | 8 +- + .../ui/webui/ntp/ntp_resource_cache.cc | 10 +- .../webui/settings/reset_settings_handler.cc | 2 +- .../settings_localized_strings_provider.cc | 2 +- .../web_applications/web_app_install_task.cc | 2 +- @@ -354,7 +351,7 @@ Subject: Automated domain substitution .../domain_reliability/bake_in_configs.py | 286 ++--- components/feed/core/feed_networking_host.cc | 2 +- .../minidump_uploader/MinidumpUploader.java | 2 +- - .../policy/resources/policy_templates.json | 1028 ++++++++--------- + .../policy/resources/policy_templates.json | 1036 ++++++++--------- .../CaptivePortalHelper.java | 2 +- .../browser/resources/interstitial_large.js | 2 +- .../components/sync/SyncConstants.java | 2 +- @@ -383,7 +380,7 @@ Subject: Automated domain substitution .../chromeos/mojom/camera_metadata.mojom | 4 +- media/mojo/mojom/provision_fetcher.mojom | 2 +- native_client_sdk/src/doc/_book.yaml | 2 +- - net/http/transport_security_state_static.json | 514 ++++----- + net/http/transport_security_state_static.json | 516 ++++---- .../org/chromium/chromoting/Chromoting.java | 4 +- .../chromoting/PrivacyPolicyActivity.java | 2 +- .../chromoting/TermsOfServiceActivity.java | 2 +- @@ -403,12 +400,11 @@ Subject: Automated domain substitution .../peer_connection_tracker.mojom | 2 +- .../mojom/remote_objects/remote_objects.mojom | 2 +- .../core/css/css_properties_ranking.json5 | 2 +- - .../blink/renderer/core/frame/deprecation.cc | 46 +- + .../blink/renderer/core/frame/deprecation.cc | 52 +- .../blink/renderer/core/frame/settings.json5 | 4 +- .../renderer/core/html/html_iframe_element.cc | 2 +- .../core/html/media/autoplay_policy.cc | 4 +- .../core/html/media/html_media_element.cc | 4 +- - .../renderer/core/loader/threadable_loader.cc | 2 +- .../modules/bluetooth/bluetooth_error.cc | 16 +- .../modules/clipboard/clipboard_promise.cc | 2 +- .../encryptedmedia/encrypted_media_utils.h | 2 +- @@ -434,7 +430,7 @@ Subject: Automated domain substitution third_party/blink/tools/blinkpy/w3c/common.py | 4 +- .../tools/blinkpy/w3c/export_notifier.py | 4 +- third_party/blink/tools/blinkpy/w3c/gerrit.py | 6 +- - .../tools/blinkpy/w3c/import_notifier.py | 2 +- + .../tools/blinkpy/w3c/import_notifier.py | 4 +- .../blink/tools/blinkpy/w3c/monorail.py | 2 +- .../tools/blinkpy/w3c/pr_cleanup_tool.py | 2 +- .../blink/tools/blinkpy/w3c/test_exporter.py | 4 +- @@ -481,7 +477,7 @@ Subject: Automated domain substitution tools/json_schema_compiler/preview.py | 2 +- tools/mb/mb.py | 6 +- tools/perf/benchmarks/dummy_benchmark.py | 6 +- - tools/perf/benchmarks/system_health.py | 24 +- + tools/perf/benchmarks/system_health.py | 26 +- tools/perf/core/perf_benchmark.py | 2 +- tools/perf/core/results_dashboard.py | 12 +- .../core/test_data/benchmarks_to_shard.json | 44 +- @@ -497,7 +493,7 @@ Subject: Automated domain substitution .../account_picker/user_pod_template.html | 2 +- ui/webui/resources/cr_elements/icons.html | 4 +- .../weblayer/shell/WebLayerShellActivity.java | 4 +- - 494 files changed, 2540 insertions(+), 2540 deletions(-) + 490 files changed, 2544 insertions(+), 2544 deletions(-) diff --git a/PRESUBMIT.py b/PRESUBMIT.py --- a/PRESUBMIT.py @@ -511,7 +507,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py for more details about the presubmit API built into depot_tools. """ PRESUBMIT_VERSION = '2.0.0' -@@ -168,7 +168,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -170,7 +170,7 @@ _BANNED_OBJC_FUNCTIONS = ( ( 'The use of -[NSView addTrackingRect:owner:userData:assumeInside:] is' 'prohibited. Please use CrTrackingArea instead.', @@ -520,7 +516,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), False, ), -@@ -177,7 +177,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -179,7 +179,7 @@ _BANNED_OBJC_FUNCTIONS = ( ( 'The use of NSTrackingAreas is prohibited. Please use CrTrackingArea', 'instead.', @@ -529,7 +525,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), False, ), -@@ -186,7 +186,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -188,7 +188,7 @@ _BANNED_OBJC_FUNCTIONS = ( ( 'The use of -[NSView convertPointFromBase:] is almost certainly wrong.', 'Please use |convertPoint:(point) fromView:nil| instead.', @@ -538,7 +534,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -195,7 +195,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -197,7 +197,7 @@ _BANNED_OBJC_FUNCTIONS = ( ( 'The use of -[NSView convertPointToBase:] is almost certainly wrong.', 'Please use |convertPoint:(point) toView:nil| instead.', @@ -547,7 +543,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -204,7 +204,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -206,7 +206,7 @@ _BANNED_OBJC_FUNCTIONS = ( ( 'The use of -[NSView convertRectFromBase:] is almost certainly wrong.', 'Please use |convertRect:(point) fromView:nil| instead.', @@ -556,7 +552,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -213,7 +213,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -215,7 +215,7 @@ _BANNED_OBJC_FUNCTIONS = ( ( 'The use of -[NSView convertRectToBase:] is almost certainly wrong.', 'Please use |convertRect:(point) toView:nil| instead.', @@ -565,7 +561,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -222,7 +222,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -224,7 +224,7 @@ _BANNED_OBJC_FUNCTIONS = ( ( 'The use of -[NSView convertSizeFromBase:] is almost certainly wrong.', 'Please use |convertSize:(point) fromView:nil| instead.', @@ -574,7 +570,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -231,7 +231,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -233,7 +233,7 @@ _BANNED_OBJC_FUNCTIONS = ( ( 'The use of -[NSView convertSizeToBase:] is almost certainly wrong.', 'Please use |convertSize:(point) toView:nil| instead.', @@ -583,7 +579,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -583,7 +583,7 @@ _BANNED_CPP_FUNCTIONS = ( +@@ -556,7 +556,7 @@ _BANNED_CPP_FUNCTIONS = ( ( "Don't use CallJavascriptFunctionUnsafe() in new code. Instead, use", 'AllowJavascript(), OnJavascriptAllowed()/OnJavascriptDisallowed(),', @@ -592,7 +588,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), False, ( -@@ -1247,7 +1247,7 @@ _DEPRECATED_MOJO_TYPES = ( +@@ -1230,7 +1230,7 @@ _DEPRECATED_MOJO_TYPES = ( _IPC_ENUM_TRAITS_DEPRECATED = ( 'You are using IPC_ENUM_TRAITS() in your code. It has been deprecated.\n' @@ -601,8 +597,8 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py 'security-tips-for-ipc') _LONG_PATH_ERROR = ( -@@ -1396,7 +1396,7 @@ _KNOWN_ROBOTS = set( - 'wpt-autoroller',) +@@ -1382,7 +1382,7 @@ _KNOWN_ROBOTS = set( + 'wpt-autoroller', 'chrome-weblayer-builder') ) | set('%s@skia-public.iam.gserviceaccount.com' % s for s in ('chromium-autoroll', 'chromium-release-autoroll') - ) | set('%s@skia-corp.google.com.iam.gserviceaccount.com' % s @@ -610,7 +606,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py for s in ('chromium-internal-autoroll',)) -@@ -1818,7 +1818,7 @@ def CheckNoDEPSGIT(input_api, output_api): +@@ -1738,7 +1738,7 @@ def CheckNoDEPSGIT(input_api, output_api): 'Never commit changes to .DEPS.git. This file is maintained by an\n' 'automated system based on what\'s in DEPS and your changes will be\n' 'overwritten.\n' @@ -619,7 +615,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py 'get-the-code#Rolling_DEPS\n' 'for more information')] return [] -@@ -2027,7 +2027,7 @@ def CheckNoPragmaOnce(input_api, output_api): +@@ -1947,7 +1947,7 @@ def CheckNoPragmaOnce(input_api, output_api): if files: return [output_api.PresubmitError( 'Do not use #pragma once in header files.\n' @@ -628,7 +624,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py files)] return [] -@@ -2212,7 +2212,7 @@ def CheckForVersionControlConflicts(input_api, output_api): +@@ -2132,7 +2132,7 @@ def CheckForVersionControlConflicts(input_api, output_api): def CheckGoogleSupportAnswerUrlOnUpload(input_api, output_api): @@ -637,7 +633,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py errors = [] for f in input_api.AffectedFiles(): for line_num, line in f.ChangedContents(): -@@ -2321,7 +2321,7 @@ def CheckNoAbbreviationInPngFileName(input_api, output_api): +@@ -2241,7 +2241,7 @@ def CheckNoAbbreviationInPngFileName(input_api, output_api): results.append(output_api.PresubmitError( 'The name of PNG files should not have abbreviations. \n' 'Use _hover.png, _center.png, instead of _h.png, _c.png.\n' @@ -646,7 +642,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py return results -@@ -3058,7 +3058,7 @@ def CheckSecurityOwners(input_api, output_api): +@@ -2978,7 +2978,7 @@ def CheckSecurityOwners(input_api, output_api): if to_check: # If there are any OWNERS files to check, there are IPC-related changes in # this CL. Auto-CC the review list. @@ -655,7 +651,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py # Go through the OWNERS files to check, filtering out rules that are already # present in that OWNERS file. -@@ -3356,7 +3356,7 @@ def _CheckAndroidToastUsage(input_api, output_api): +@@ -3276,7 +3276,7 @@ def _CheckAndroidToastUsage(input_api, output_api): 'android.widget.Toast usage is detected. Android toasts use hardware' ' acceleration, and can be\ncostly on low-end devices. Please use' ' org.chromium.ui.widget.Toast instead.\n' @@ -664,7 +660,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py errors)) return results -@@ -3490,7 +3490,7 @@ def _CheckAndroidTestJUnitFrameworkImport(input_api, output_api): +@@ -3410,7 +3410,7 @@ def _CheckAndroidTestJUnitFrameworkImport(input_api, output_api): if errors: results.append(output_api.PresubmitError( 'APIs from junit.framework.* are deprecated, please use JUnit4 framework' @@ -673,7 +669,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ' if you have any question.', errors)) return results -@@ -3521,7 +3521,7 @@ def _CheckAndroidTestJUnitInheritance(input_api, output_api): +@@ -3441,7 +3441,7 @@ def _CheckAndroidTestJUnitInheritance(input_api, output_api): results.append(output_api.PresubmitPromptWarning( 'The newly created files include Test classes that inherits from base' ' class. Please do not use inheritance in JUnit4 tests or add new' @@ -682,7 +678,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ' questions.', errors)) return results -@@ -3545,7 +3545,7 @@ def _CheckAndroidTestAnnotationUsage(input_api, output_api): +@@ -3465,7 +3465,7 @@ def _CheckAndroidTestAnnotationUsage(input_api, output_api): 'Annotations in android.test.suitebuilder.annotation have been' ' deprecated since API level 24. Please use android.support.test.filters' ' from //third_party/android_support_test_runner:runner_java instead.' @@ -691,7 +687,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py return results -@@ -3565,7 +3565,7 @@ def _CheckAndroidNewMdpiAssetLocation(input_api, output_api): +@@ -3485,7 +3485,7 @@ def _CheckAndroidNewMdpiAssetLocation(input_api, output_api): 'MDPI assets should be placed in /res/drawable-mdpi/ or ' '/res/drawable-ldrtl-mdpi/\ninstead of /res/drawable/ and' '/res/drawable-ldrtl/.\n' @@ -700,7 +696,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py return results -@@ -4265,7 +4265,7 @@ def CheckFuzzTargetsOnUpload(input_api, output_api): +@@ -4193,7 +4193,7 @@ def CheckFuzzTargetsOnUpload(input_api, output_api): 'LLVMFuzzerInitialize should not be used, unless your fuzz target needs ' 'to access command line arguments passed to the fuzzer. Instead, prefer ' 'static initialization and shared resources as documented in ' @@ -709,7 +705,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py 'libfuzzer/efficient_fuzzing.md#simplifying-initialization_cleanup.\n' % ( ', '.join(EXPORTED_SYMBOLS), REQUIRED_HEADER) ) -@@ -4300,7 +4300,7 @@ def _CheckNewImagesWarning(input_api, output_api): +@@ -4228,7 +4228,7 @@ def _CheckNewImagesWarning(input_api, output_api): errors.append(output_api.PresubmitPromptWarning( 'It looks like you are trying to commit some images. If these are ' 'non-test-only images, please make sure to read and apply the tips in ' @@ -718,7 +714,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py 'binary_size/optimization_advice.md#optimizing-images\nThis check is ' 'FYI only and will not block your CL on the CQ.', image_paths)) return errors -@@ -4581,7 +4581,7 @@ def CheckForInvalidIfDefinedMacros(input_api, output_api): +@@ -4509,7 +4509,7 @@ def CheckForInvalidIfDefinedMacros(input_api, output_api): def CheckForIPCRules(input_api, output_api): """Check for same IPC rules described in @@ -727,7 +723,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py """ base_pattern = r'IPC_ENUM_TRAITS\(' inclusion_pattern = input_api.re.compile(r'(%s)' % base_pattern) -@@ -4825,7 +4825,7 @@ def CheckChangeOnCommit(input_api, output_api): +@@ -4753,7 +4753,7 @@ def CheckChangeOnCommit(input_api, output_api): results.extend(input_api.canned_checks.CheckTreeIsOpen( input_api, output_api, @@ -736,7 +732,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py results.extend( input_api.canned_checks.CheckPatchFormatted(input_api, output_api)) -@@ -5157,7 +5157,7 @@ def CheckStrings(input_api, output_api): +@@ -5085,7 +5085,7 @@ def CheckStrings(input_api, output_api): if icu_syntax_errors: results.append(output_api.PresubmitPromptWarning( 'ICU syntax errors were found in the following strings (problems or ' @@ -784,7 +780,7 @@ diff --git a/build/android/pylib/device/commands/java/src/org/chromium/android/c diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni -@@ -1730,7 +1730,7 @@ if (enable_java_templates) { +@@ -1733,7 +1733,7 @@ if (enable_java_templates) { # * public.txt # * annotations.zip # * assets/ @@ -808,8 +804,8 @@ diff --git a/build/toolchain/cros_toolchain.gni b/build/toolchain/cros_toolchain diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantClient.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantClient.java --- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantClient.java +++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantClient.java -@@ -38,7 +38,7 @@ import java.util.Map; - class AutofillAssistantClient { +@@ -39,7 +39,7 @@ import java.util.Map; + public class AutofillAssistantClient { /** OAuth2 scope that RPCs require. */ private static final String AUTH_TOKEN_TYPE = - "oauth2:https://www.googleapis.com/auth/userinfo.profile"; @@ -847,7 +843,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeStringCon 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 -@@ -188,7 +188,7 @@ public class ChromeTabbedActivity extends ChromeActivityGetPrimaryAccountId(signin::ConsentLevel::kNotRequired); std::vector scopes; @@ -1150,7 +1119,7 @@ diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_drive.c diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc --- a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc -@@ -93,7 +93,7 @@ namespace { +@@ -81,7 +81,7 @@ namespace { using api::file_manager_private::ProfileInfo; @@ -1186,7 +1155,7 @@ diff --git a/chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc --- a/chrome/browser/chromeos/login/session/user_session_manager.cc +++ b/chrome/browser/chromeos/login/session/user_session_manager.cc -@@ -1212,7 +1212,7 @@ void ShowSupervisedUserDeprecationNotification(Profile* profile, +@@ -1202,7 +1202,7 @@ void ShowSupervisedUserDeprecationNotification(Profile* profile, NavigateParams params( profile, @@ -1550,7 +1519,7 @@ diff --git a/chrome/browser/media/router/providers/cast/cast_media_route_provide diff --git a/chrome/browser/media/router/providers/dial/dial_media_route_provider.cc b/chrome/browser/media/router/providers/dial/dial_media_route_provider.cc --- a/chrome/browser/media/router/providers/dial/dial_media_route_provider.cc +++ b/chrome/browser/media/router/providers/dial/dial_media_route_provider.cc -@@ -530,12 +530,12 @@ std::vector DialMediaRouteProvider::GetOrigins( +@@ -650,12 +650,12 @@ std::vector DialMediaRouteProvider::GetOrigins( base::flat_map>> origin_white_list( {{"YouTube", @@ -1584,7 +1553,7 @@ diff --git a/chrome/browser/media/webrtc/webrtc_browsertest_common.cc b/chrome/b diff --git a/chrome/browser/notifications/notification_platform_bridge_mac.mm b/chrome/browser/notifications/notification_platform_bridge_mac.mm --- a/chrome/browser/notifications/notification_platform_bridge_mac.mm +++ b/chrome/browser/notifications/notification_platform_bridge_mac.mm -@@ -319,7 +319,7 @@ bool NotificationPlatformBridgeMac::SupportsAlerts() { +@@ -321,7 +321,7 @@ bool NotificationPlatformBridgeMac::SupportsAlerts() { // Overriden from _NSUserNotificationCenterDelegatePrivate. // Emitted when a user closes a notification from the notification center. // This is an undocumented method introduced in 10.8 according to @@ -1596,12 +1565,12 @@ diff --git a/chrome/browser/notifications/notification_platform_bridge_mac.mm b/ diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc -@@ -115,7 +115,7 @@ void RecordFeatureUsage(content::RenderFrameHost* rfh, - std::string GetHeavyAdReportMessage(const FrameData& frame_data, +@@ -127,7 +127,7 @@ void RecordFeatureUsage(content::RenderFrameHost* rfh, + std::string GetHeavyAdReportMessage(const ad_metrics::FrameTreeData& frame_data, bool will_unload_adframe) { const char kChromeStatusMessage[] = -- "See https://www.chromestatus.com/feature/4800491902992384"; -+ "See https://www.ch40mestatus.qjz9zk/feature/4800491902992384"; +- "See https://www.chromestatus.com/feature/4800491902992384?utm_source=devtools"; ++ "See https://www.ch40mestatus.qjz9zk/feature/4800491902992384?utm_source=devtools"; const char kReportingOnlyMessage[] = "A future version of Chrome may remove this ad"; const char kInterventionMessage[] = "Ad was removed"; @@ -1617,40 +1586,10 @@ diff --git a/chrome/browser/policy/policy_test_utils.cc b/chrome/browser/policy/ if (expect_safe_search) { expected_url += "?" + std::string(safe_search_util::kSafeSearchSafeParameter) + -diff --git a/chrome/browser/prerender/isolated/isolated_prerender_params.cc b/chrome/browser/prerender/isolated/isolated_prerender_params.cc ---- a/chrome/browser/prerender/isolated/isolated_prerender_params.cc -+++ b/chrome/browser/prerender/isolated/isolated_prerender_params.cc -@@ -42,7 +42,7 @@ GURL IsolatedPrerenderProxyHost() { - if (url.is_valid() && url.SchemeIs(url::kHttpsScheme)) { - return url; - } -- return GURL("https://tunnel.googlezip.net/"); -+ return GURL("https://tunnel.9oo91e21p.qjz9zk/"); - } - - std::string IsolatedPrerenderProxyHeaderKey() { -@@ -155,7 +155,7 @@ GURL IsolatedPrerenderTLSCanaryCheckURL() { - if (url.is_valid()) { - return url; - } -- return GURL("http://tls.tunnel.check.googlezip.net/connect"); -+ return GURL("http://tls.tunnel.check.9oo91e21p.qjz9zk/connect"); - } - - GURL IsolatedPrerenderDNSCanaryCheckURL() { -@@ -164,7 +164,7 @@ GURL IsolatedPrerenderDNSCanaryCheckURL() { - if (url.is_valid()) { - return url; - } -- return GURL("http://dns.tunnel.check.googlezip.net/connect"); -+ return GURL("http://dns.tunnel.check.9oo91e21p.qjz9zk/connect"); - } - - base::TimeDelta IsolatedPrerenderCanaryCheckCacheLifetime() { diff --git a/chrome/browser/profiles/profile_window.cc b/chrome/browser/profiles/profile_window.cc --- a/chrome/browser/profiles/profile_window.cc +++ b/chrome/browser/profiles/profile_window.cc -@@ -376,7 +376,7 @@ bool IsLockAvailable(Profile* profile) { +@@ -364,7 +364,7 @@ bool IsLockAvailable(Profile* profile) { // TODO(mlerman): Prohibit only users who authenticate using SAML. Until then, // prohibited users who use hosted domains (aside from google.com). @@ -1732,7 +1671,7 @@ diff --git a/chrome/browser/resources/pdf/elements/icons.html b/chrome/browser/r diff --git a/chrome/browser/resources/print_preview/ui/icons.html b/chrome/browser/resources/print_preview/ui/icons.html --- a/chrome/browser/resources/print_preview/ui/icons.html +++ b/chrome/browser/resources/print_preview/ui/icons.html -@@ -49,7 +49,7 @@ +@@ -38,7 +38,7 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml +--- a/chrome/android/java/res/values/values.xml ++++ b/chrome/android/java/res/values/values.xml +@@ -32,6 +32,8 @@ + 0 + 1 + ++ https://www.bromite.org/custom-filters ++ + Proxy configuration + chrome://proxy + +diff --git a/chrome/android/java/res/xml/adblock_preferences.xml b/chrome/android/java/res/xml/adblock_preferences.xml +new file mode 100644 +--- /dev/null ++++ b/chrome/android/java/res/xml/adblock_preferences.xml +@@ -0,0 +1,25 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml +--- a/chrome/android/java/res/xml/main_preferences.xml ++++ b/chrome/android/java/res/xml/main_preferences.xml +@@ -64,6 +64,11 @@ + android:key="privacy" + android:order="12" + android:title="@string/prefs_privacy"/> ++ + { ++ WebsitePreferenceBridge.setCategoryEnabled(browserContextHandle, ContentSettingsType.ADS, !(boolean) newValue); ++ return true; ++ }); ++ ++ mAdBlockEdit = findPreference(PREF_ADBLOCK_EDIT); ++ updateCurrentAdBlockUrl(); ++ } ++ ++ private void updateCurrentAdBlockUrl() { ++ mAdBlockEdit.setSummary(CachedFeatureFlags.getAdBlockFiltersURL()); ++ } ++ ++ @Override ++ public void onResume() { ++ super.onResume(); ++ updateCurrentAdBlockUrl(); ++ } ++} +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java +@@ -815,7 +815,7 @@ public class TabModelImpl extends TabModelJniBridge { + Tab parent, Profile profile, WebContents webContents) { + return getTabCreator(profile.isOffTheRecord()) + .createTabWithWebContents( +- parent, webContents, TabLaunchType.FROM_LONGPRESS_BACKGROUND); ++ parent, webContents, TabLaunchType.FROM_LINK); + } + + @Override +diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd +--- a/chrome/app/generated_resources.grd ++++ b/chrome/app/generated_resources.grd +@@ -10242,6 +10242,16 @@ Please help our engineers fix this problem. Tell us what happened right before y + Never show this again. + + ++ ++ ++ ++ Ad Blocking ++ ++ ++ Configure Ad Blocking and filters URL ++ ++ ++ + + + Ads blocked on this site diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc --- a/chrome/browser/after_startup_task_utils.cc +++ b/chrome/browser/after_startup_task_utils.cc @@ -60,7 +443,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h class BackgroundModeManager; class BrowserProcessPlatformPart; -@@ -67,6 +68,10 @@ class ComponentUpdateService; +@@ -66,6 +67,10 @@ class ComponentUpdateService; class SupervisedUserWhitelistInstaller; } @@ -71,7 +454,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h namespace extensions { class EventRouterForwarder; } -@@ -249,6 +254,8 @@ class BrowserProcess { +@@ -244,6 +249,8 @@ class BrowserProcess { virtual component_updater::ComponentUpdateService* component_updater() = 0; @@ -83,7 +466,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -1050,6 +1050,34 @@ BrowserProcessImpl::component_updater() { +@@ -1047,6 +1047,35 @@ BrowserProcessImpl::component_updater() { return component_updater_.get(); } @@ -110,7 +493,8 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro + adblock_updater_ = std::make_unique( + g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(), + std::move(scheduler), -+ g_browser_process->subresource_filter_ruleset_service()); ++ g_browser_process->subresource_filter_ruleset_service(), ++ local_state()->GetString(prefs::kAdBlockFiltersURL)); + + return adblock_updater_.get(); +} @@ -121,7 +505,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h -@@ -184,6 +184,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -183,6 +183,7 @@ class BrowserProcessImpl : public BrowserProcess, #endif component_updater::ComponentUpdateService* component_updater() override; @@ -129,7 +513,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc #if BUILDFLAG(ENABLE_SUPERVISED_USERS) component_updater::SupervisedUserWhitelistInstaller* supervised_user_whitelist_installer() override; -@@ -371,6 +372,8 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -367,6 +368,8 @@ class BrowserProcessImpl : public BrowserProcess, // but some users of component updater only install per-user. std::unique_ptr component_updater_; @@ -141,7 +525,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc -@@ -1588,6 +1588,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1594,6 +1594,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) { component_updater::RegisterComponentsForUpdate(profile_->IsOffTheRecord(), profile_->GetPrefs()); @@ -153,7 +537,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -67,7 +67,6 @@ +@@ -68,7 +68,6 @@ #include "chrome/browser/hid/chrome_hid_delegate.h" #include "chrome/browser/interstitials/enterprise_util.h" #include "chrome/browser/lifetime/browser_shutdown.h" @@ -161,15 +545,15 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #include "chrome/browser/media/audio_service_util.h" #include "chrome/browser/media/router/media_router_feature.h" #include "chrome/browser/media/webrtc/audio_debug_recordings_handler.h" -@@ -219,7 +218,6 @@ - #include "components/metrics/client_info.h" - #include "components/metrics_services_manager/metrics_services_manager.h" - #include "components/net_log/chrome_net_log.h" +@@ -231,7 +230,6 @@ + #include "components/no_state_prefetch/common/prerender_types.mojom.h" + #include "components/no_state_prefetch/common/prerender_url_loader_throttle.h" + #include "components/no_state_prefetch/common/prerender_util.h" -#include "components/page_load_metrics/browser/metrics_navigation_throttle.h" #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" #include "components/payments/content/payment_request_display_manager.h" #include "components/performance_manager/embedder/performance_manager_registry.h" -@@ -3935,16 +3933,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( +@@ -3919,16 +3917,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( content::NavigationHandle* handle) { std::vector> throttles; @@ -183,10 +567,10 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch - page_load_metrics::MetricsNavigationThrottle::Create(handle)); - } - - #if BUILDFLAG(ENABLE_PLUGINS) - MaybeAddThrottle(FlashDownloadInterception::MaybeCreateThrottleFor(handle), - &throttles); -@@ -4058,10 +4046,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( + #if defined(OS_CHROMEOS) + MaybeAddThrottle( + chromeos::WebTimeLimitNavigationThrottle::MaybeCreateThrottleFor(handle), +@@ -4037,10 +4025,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( &throttles); #endif @@ -197,6 +581,78 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch MaybeAddThrottle(PDFIFrameNavigationThrottle::MaybeCreateThrottleFor(handle), &throttles); +diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/browser/flags/android/cached_feature_flags.cc +--- a/chrome/browser/flags/android/cached_feature_flags.cc ++++ b/chrome/browser/flags/android/cached_feature_flags.cc +@@ -8,6 +8,9 @@ + + #include "base/android/jni_string.h" + #include "base/feature_list.h" ++#include "chrome/browser/browser_process.h" ++#include "chrome/common/pref_names.h" ++#include "components/prefs/pref_service.h" + #include "content/public/common/content_features.h" + #include "content/public/common/network_service_util.h" + +@@ -41,3 +44,11 @@ static jboolean JNI_CachedFeatureFlags_IsNetworkServiceWarmUpEnabled( + return content::IsOutOfProcessNetworkService() && + base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess); + } ++ ++static ScopedJavaLocalRef JNI_CachedFeatureFlags_GetAdBlockFiltersURL(JNIEnv* env) { ++ return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kAdBlockFiltersURL)); ++} ++ ++static void JNI_CachedFeatureFlags_SetAdBlockFiltersURL(JNIEnv* env, const JavaParamRef& url) { ++ g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL, base::android::ConvertJavaStringToUTF8(env, url)); ++} +diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java +--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java ++++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java +@@ -250,6 +250,14 @@ public class CachedFeatureFlags { + ChromeFeatureList.REACHED_CODE_PROFILER, "sampling_interval_us", 0)); + } + ++ public static void setAdBlockFiltersURL(String url) { ++ CachedFeatureFlagsJni.get().setAdBlockFiltersURL(url); ++ } ++ ++ public static String getAdBlockFiltersURL() { ++ return CachedFeatureFlagsJni.get().getAdBlockFiltersURL(); ++ } ++ + /** + * Caches flags that must take effect on startup but are set via native code. + */ +@@ -402,5 +410,7 @@ public class CachedFeatureFlags { + @NativeMethods + interface Natives { + boolean isNetworkServiceWarmUpEnabled(); ++ void setAdBlockFiltersURL(String url); ++ String getAdBlockFiltersURL(); + } + } +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 +@@ -333,6 +333,8 @@ SystemNetworkContextManager::SystemNetworkContextManager( + SSLConfigServiceManager::CreateDefaultManager(local_state_)), + proxy_config_monitor_(local_state_), + stub_resolver_config_reader_(local_state_) { ++ local_state_->SetDefaultPrefValue(prefs::kAdBlockFiltersURL, ++ base::Value("https://www.bromite.org/filters/filters.dat")); + #if !defined(OS_ANDROID) + // QuicAllowed was not part of Android policy. + const base::Value* value = +@@ -397,6 +399,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() { + void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { + StubResolverConfigReader::RegisterPrefs(registry); + ++ registry->RegisterStringPref(prefs::kAdBlockFiltersURL, std::string()); ++ + // Static auth params + registry->RegisterStringPref(prefs::kAuthSchemes, + "basic,digest,ntlm,negotiate"); diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser/sessions/session_restore_android.cc --- a/chrome/browser/sessions/session_restore_android.cc +++ b/chrome/browser/sessions/session_restore_android.cc @@ -211,6 +667,54 @@ diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser } else { DCHECK(disposition == WindowOpenDisposition::NEW_FOREGROUND_TAB || disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB); +diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd +--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd ++++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd +@@ -214,6 +214,20 @@ CHAR-LIMIT guidelines: + Enter VR + + ++ ++ ++ AdBlock settings ++ ++ ++ Edit filters URL ++ ++ ++ Filters URL ++ ++ ++ Visit help page ++ ++ + + + General +diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc +--- a/chrome/common/pref_names.cc ++++ b/chrome/common/pref_names.cc +@@ -2120,6 +2120,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; + // capture devices without prompt. + const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; + ++// Holds the URL to an indexed subresource filters file. ++const char kAdBlockFiltersURL[] = "adblock.filters_url"; ++ + // A pref holding the value of the policy used to explicitly allow or deny + // access to video capture devices. When enabled or not set, the user is + // prompted for device access. When disabled, access to video capture devices +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 +@@ -31,6 +31,7 @@ extern const char kDownloadRestrictions[]; + extern const char kForceEphemeralProfiles[]; + extern const char kHomePageIsNewTabPage[]; + extern const char kHomePage[]; ++extern const char kAdBlockFiltersURL[]; + extern const char kImportantSitesDialogHistory[]; + extern const char kProfileCreationTime[]; + #if defined(OS_WIN) diff --git a/components/component_updater/BUILD.gn b/components/component_updater/BUILD.gn --- a/components/component_updater/BUILD.gn +++ b/components/component_updater/BUILD.gn @@ -227,10 +731,729 @@ diff --git a/components/component_updater/BUILD.gn b/components/component_update "component_updater_service.cc", "component_updater_service.h", "component_updater_service_internal.h", +diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc +new file mode 100644 +--- /dev/null ++++ b/components/component_updater/adblock_updater_service.cc +@@ -0,0 +1,248 @@ ++/* ++ This file is part of Bromite. ++ ++ Bromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Bromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Bromite. If not, see . ++*/ ++ ++#include "components/component_updater/adblock_updater_service.h" ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "base/bind.h" ++#include "base/callback.h" ++#include "base/files/file_path.h" ++#include "base/files/file_util.h" ++#include "base/logging.h" ++#include "base/macros.h" ++#include "base/threading/thread_checker.h" ++#include "base/threading/thread_task_runner_handle.h" ++#include "base/time/time.h" ++#include "base/timer/timer.h" ++#include "url/gurl.h" ++#include "base/strings/safe_sprintf.h" ++#include "base/strings/string_number_conversions.h" ++#include "base/strings/string_split.h" ++namespace adblock_updater { ++ ++// all constants express seconds ++// these could be made configurable ++const int initial_check_delay = 5, ++ next_check_delay = 60*60*24*7, // 1 week ++ on_demand_check_delay = 60; // minimum 1 minute between each on-demand check ++ ++AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr shared_url_network_factory, std::unique_ptr scheduler, ++ subresource_filter::RulesetService* ruleset_service, std::string filters_url) ++ : ruleset_service_(ruleset_service), shared_url_network_factory_(shared_url_network_factory), scheduler_(std::move(scheduler)) { ++ DCHECK(ruleset_service); ++ ++ filters_url_ = filters_url; ++} ++ ++AdBlockUpdaterService::~AdBlockUpdaterService() { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++} ++ ++void AdBlockUpdaterService::AddObserver(Observer* observer) { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ observer_list_.AddObserver(observer); ++} ++ ++void AdBlockUpdaterService::RemoveObserver(Observer* observer) { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ observer_list_.RemoveObserver(observer); ++} ++ ++//TODO: use this as in: base::Bind(&AdBlockUpdaterService::NotifyObservers, base::Unretained(this) ++void AdBlockUpdaterService::NotifyObservers(Event event) { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ for (auto& observer : observer_list_) ++ observer.OnEvent(event); ++} ++ ++void AdBlockUpdaterService::Start() { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ ++ // avoid multiple scheduling ++ if (scheduled_) ++ return; ++ scheduled_ = true; ++ ++ LOG(INFO) << "AdBlockUpdaterService: starting up. " ++ << "First update attempt will take place in " ++ << initial_check_delay << " seconds. " ++ << "Next update attempt will take place in " ++ << next_check_delay << " seconds. "; ++ ++ scheduler_->Schedule( ++ base::TimeDelta::FromSeconds(initial_check_delay), ++ base::TimeDelta::FromSeconds(next_check_delay), ++ base::Bind(&AdBlockUpdaterService::OnDemandScheduledUpdate, ++ base::Unretained(this)), base::DoNothing()); ++} ++ ++void AdBlockUpdaterService::OnDemandScheduledUpdate(component_updater::UpdateScheduler::OnFinishedCallback on_finished) { ++ //TODO: call on_finished ++ OnDemandUpdateAsNeeded(false, Callback()); ++} ++ ++bool AdBlockUpdaterService::OnDemandUpdate(Callback on_finished) { ++ return OnDemandUpdateAsNeeded(true, std::move(on_finished)); ++} ++ ++bool AdBlockUpdaterService::OnDemandUpdateAsNeeded(bool is_foreground, Callback on_finished) { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ ++ // Check if the request is too soon. ++ if (!last_update_.is_null()) { ++ base::TimeDelta delta = ++ base::TimeTicks::Now() - last_update_; ++ if (is_updating_ || (delta < base::TimeDelta::FromSeconds(on_demand_check_delay))) ++ LOG(INFO) << "AdBlockUpdaterService: update not necessary."; ++ return false; ++ } ++ ++ OnDemandUpdateInternal(is_foreground, std::move(on_finished)); ++ return true; ++} ++ ++void AdBlockUpdaterService::OnDemandUpdateInternal(bool is_foreground, Callback on_finished) { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ ++ if (is_updating_) { ++ base::ThreadTaskRunnerHandle::Get()->PostTask( ++ FROM_HERE, base::BindOnce(std::move(on_finished), ++ Error::UPDATE_IN_PROGRESS)); ++ return; ++ } ++ is_updating_ = true; ++ last_update_ = base::TimeTicks::Now(); ++ ++ base::Time::Exploded e = {0}; ++ base::Time t = base::Time(); ++ auto version = ruleset_service_->GetMostRecentlyIndexedVersion(); ++ LOG(INFO) << "AdBlockUpdaterService: MostRecentIndexedVersion = " << version.content_version; ++ std::vector tokens = ++ base::SplitString(version.content_version, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); ++ int i = 0; ++ bool failed = false; ++ for (const std::string& token : tokens) { ++ // parse as number ++ int n = 0; ++ if (!base::StringToInt(token, &n)) { ++ failed = true; ++ break; ++ } ++ ++ switch (i++) { ++ case 0: ++ e.year = 2019 + n; ++ break; ++ case 1: ++ e.month = n + 1; ++ break; ++ case 2: ++ e.day_of_month = n + 1; ++ break; ++ case 3: ++ e.second = n % 60; ++ n -= e.second; ++ n /= 60; ++ e.minute = n % 60; ++ e.hour = n / 60; ++ break; ++ default: ++ failed = true; ++ break; ++ } ++ } ++ ++ if (failed) { ++ LOG(WARNING) << "AdBlockUpdaterService: failed to parse most recent version as x.y.z.w dot-separated integers"; ++ } else { ++ if (!base::Time::FromUTCExploded(e, &t)) ++ LOG(WARNING) << "AdBlockUpdaterService: failed to convert version to time."; ++ } ++ ++ auto task = base::MakeRefCounted( ++ shared_url_network_factory_, ++ is_foreground, filters_url_, ++ t, ++ base::BindOnce(&AdBlockUpdaterService::OnUpdateComplete, base::Unretained(this), ++ std::move(on_finished))); ++ ++ // run task now; task is responsible for clearing the is_updating status ++ base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, ++ base::BindOnce(&DownloadFiltersTask::Run, base::Unretained(task.get()))); ++ tasks_.insert(task); ++} ++ ++void AdBlockUpdaterService::OnUpdateComplete(Callback on_finished, ++ scoped_refptr task, ++ Error error) { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ ++ auto file_path = task->file_path(); ++ if (error == Error::NONE) { ++ subresource_filter::UnindexedRulesetInfo ruleset_info; ++ ruleset_info.ruleset_path = file_path; ++ ruleset_info.delete_ruleset_path = true; ++ ruleset_info.content_version = "0.0.0.0"; ++ DCHECK(!ruleset_info.ruleset_path.empty()); ++ ++ // convert time to version ++ auto t = task->last_modified(); ++ bool ignore_version = t.is_null(); ++ if (!ignore_version) { ++ base::Time::Exploded e; ++ t.UTCExplode(&e); ++ ++ // convert time to version ++ const int major = e.year - 2019, ++ minor = e.month - 1, ++ patch = e.day_of_month - 1, ++ revision = (e.hour*60+e.minute)*60 + e.second; ++ if (major < 0) ++ LOG(WARNING) << "AdBlockUpdaterService: too old Last-Modified header, ignoring version check."; ++ else { ++ char version_buffer[32]; ++ base::strings::SafeSNPrintf(version_buffer, sizeof(version_buffer), "%d.%d.%d.%d", ++ major, minor, patch, revision); ++ ++ ruleset_info.content_version = version_buffer; ++ ++ LOG(INFO) << "AdBlockUpdaterService: indexing filters with version " << ruleset_info.content_version; ++ } ++ } else ++ LOG(WARNING) << "AdBlockUpdaterService: invalid Last-Modified header, ignoring version check."; ++ ruleset_service_->IndexAndStoreAndPublishRulesetIfNeeded(ruleset_info, ignore_version); ++ } else { ++ //TODO: generate event for ADBLOCK_NOT_UPDATED in case of error UPDATE_NOT_NEEDED ++ } ++ ++ //TODO: run these only when index-and-store is actually finished? ++ if (!on_finished.is_null()) { ++ base::ThreadTaskRunnerHandle::Get()->PostTask( ++ FROM_HERE, base::BindOnce(std::move(on_finished), error)); ++ } ++ ++ // mark as not updating ++ is_updating_ = false; ++ tasks_.erase(task); ++} ++ ++} // namespace adblock_updater +diff --git a/components/component_updater/adblock_updater_service.h b/components/component_updater/adblock_updater_service.h +new file mode 100644 +--- /dev/null ++++ b/components/component_updater/adblock_updater_service.h +@@ -0,0 +1,100 @@ ++/* ++ This file is part of Bromite. ++ ++ Bromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Bromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Bromite. If not, see . ++*/ ++ ++#ifndef COMPONENTS_ADBLOCK_UPDATER_SERVICE_H ++#define COMPONENTS_ADBLOCK_UPDATER_SERVICE_H ++ ++#include ++ ++#include ++#include ++#include ++ ++#include "base/callback_forward.h" ++#include "base/gtest_prod_util.h" ++#include "base/memory/ref_counted.h" ++#include "base/version.h" ++#include "build/build_config.h" ++#include "components/component_updater/update_scheduler.h" ++#include "url/gurl.h" ++#include "components/component_updater/download_filters_task.h" ++#include "components/subresource_filter/content/browser/ruleset_service.h" ++#include "services/network/public/cpp/shared_url_loader_factory.h" ++ ++namespace adblock_updater { ++ ++// Called when a non-blocking call in this module completes. ++using Callback = base::OnceCallback; ++ ++class Observer { ++ public: ++ virtual ~Observer() {} ++ ++ // Called by the update service when a state change happens. ++ virtual void OnEvent(Event event) = 0; ++}; ++ ++// The AdBlock update service is in charge of downloading and saving the ++// AdBlock filters. ++// ++// All methods are safe to call ONLY from the browser's main thread. ++class AdBlockUpdaterService { ++ public: ++ AdBlockUpdaterService(scoped_refptr shared_url_network_factory, std::unique_ptr scheduler, ++ subresource_filter::RulesetService* ruleset_service, std::string filters_url); ++ ~AdBlockUpdaterService(); ++ ++ // Adds an observer for this class. An observer should not be added more ++ // than once. The caller retains the ownership of the observer object. ++ void AddObserver(Observer* observer); ++ ++ // Removes an observer. It is safe for an observer to be removed while ++ // the observers are being notified. ++ void RemoveObserver(Observer* observer); ++ ++ // Will schedule automatic updates, run in background. ++ void Start(); ++ ++ // To be called for an user-triggered update. ++ // Will not result in an actual update if the last update was too recently triggered. ++ bool OnDemandUpdate(Callback on_finished); ++ ++ private: ++ void NotifyObservers(Event event); ++ void OnDemandScheduledUpdate(component_updater::UpdateScheduler::OnFinishedCallback on_finished); ++ bool OnDemandUpdateAsNeeded(bool is_foreground, Callback on_finished); ++ void OnDemandUpdateInternal(bool is_foreground, Callback on_finished); ++ void OnUpdateComplete(Callback callback, scoped_refptr task, Error error); ++ ++ base::ObserverList::Unchecked observer_list_; ++ base::ThreadChecker thread_checker_; ++ base::TimeTicks last_update_; ++ ++ subresource_filter::RulesetService* ruleset_service_; ++ std::string filters_url_; ++ ++ scoped_refptr shared_url_network_factory_; ++ std::unique_ptr scheduler_; ++ ++ bool is_updating_ = false; ++ bool scheduled_ = false; ++ std::set> tasks_; ++}; ++ ++} // namespace adblock_updater ++ ++#endif // COMPONENTS_ADBLOCK_UPDATER_SERVICE_H +diff --git a/components/component_updater/download_filters_task.cc b/components/component_updater/download_filters_task.cc +new file mode 100644 +--- /dev/null ++++ b/components/component_updater/download_filters_task.cc +@@ -0,0 +1,222 @@ ++/* ++ This file is part of Bromite. ++ ++ Bromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Bromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Bromite. If not, see . ++*/ ++#include "components/component_updater/download_filters_task.h" ++ ++#include ++ ++#include "base/files/file_util.h" ++#include "base/bind.h" ++#include "base/location.h" ++#include "base/threading/thread_task_runner_handle.h" ++#include "base/logging.h" ++#include "net/base/load_flags.h" ++#include "url/gurl.h" ++ ++namespace adblock_updater { ++ ++// maximum 10MB for the filters file ++const int kMaxBodySize = 1024 * 1024 * 10; ++ ++const int kMaxRetriesOnNetworkChange = 3; ++ ++const net::NetworkTrafficAnnotationTag traffic_annotation = ++ net::DefineNetworkTrafficAnnotation("update_client", R"( ++ semantics { ++ sender: "Bromite AdBlock filters updater" ++ description: ++ "The AdBlock filters updater is responsible for updating the subresource filters." ++ trigger: "Manual or automatic AdBlock filters updates." ++ data: ++ "Subresource filters rulesets, binary format" ++ destination: WEBSITE ++ } ++ )"); ++ ++DownloadFiltersTask::DownloadFiltersTask(scoped_refptr shared_url_network_factory, ++ bool is_foreground, const std::string& filters_url, base::Time min_last_modified, ++ Callback callback) ++ : shared_url_network_factory_(shared_url_network_factory), ++ is_foreground_(is_foreground), ++ complete_callback_(std::move(callback)) { ++ DCHECK(!filters_url.empty()); ++ filters_url_ = GURL(filters_url); ++ min_last_modified_ = min_last_modified; ++ ++ if (filters_url.empty()) { ++ return; ++ } ++ ++ createSimpleURLLoader(!min_last_modified_.is_null()); ++} ++ ++void DownloadFiltersTask::createSimpleURLLoader(bool headers_only) { ++ // always reset response-related fields ++ response_code_ = -1; ++ final_url_ = GURL(); ++ download_start_time_ = base::TimeTicks(); ++ ++ auto resource_request = std::make_unique(); ++ resource_request->url = filters_url_; ++ resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit; ++ resource_request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES; ++ resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit; ++ if (headers_only) ++ // will chain two requests - first one is to check last modified header alone ++ resource_request->method = "HEAD"; ++ else ++ resource_request->method = "GET"; ++ ++ simple_url_loader_ = network::SimpleURLLoader::Create( ++ std::move(resource_request), traffic_annotation); ++ simple_url_loader_->SetRetryOptions( ++ kMaxRetriesOnNetworkChange, ++ network::SimpleURLLoader::RetryMode::RETRY_ON_NETWORK_CHANGE); ++ simple_url_loader_->SetAllowPartialResults(false); ++ simple_url_loader_->SetOnResponseStartedCallback(base::BindOnce( ++ &DownloadFiltersTask::OnResponseStarted, base::Unretained(this))); ++} ++ ++DownloadFiltersTask::~DownloadFiltersTask() { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++} ++ ++void DownloadFiltersTask::Run() { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ ++ // will not be initialized if the URL was empty ++ if (!simple_url_loader_) { ++ TaskComplete(Error::INVALID_ARGUMENT); ++ return; ++ } ++ ++ download_start_time_ = base::TimeTicks::Now(); ++ if (min_last_modified_.is_null()) { ++ internalDownload(); ++ } else { ++ simple_url_loader_->DownloadHeadersOnly( ++ shared_url_network_factory_.get(), ++ base::BindOnce(&DownloadFiltersTask::OnHeadersDownloadComplete, base::Unretained(this)) ++ ); ++ } ++} ++ ++void DownloadFiltersTask::internalDownload() { ++ simple_url_loader_->DownloadToTempFile( ++ shared_url_network_factory_.get(), ++ base::BindOnce(&DownloadFiltersTask::OnDownloadComplete, base::Unretained(this)), ++ kMaxBodySize); ++} ++ ++void DownloadFiltersTask::OnHeadersDownloadComplete(scoped_refptr headers) { ++ // something went wrong ++ if (headers == nullptr) { ++ OnDownloadComplete(base::FilePath()); ++ return; ++ } ++ ++ // ignoring 'headers' as 'Last-Modified' has already been picked up by OnResponseStarted ++ const base::TimeDelta dt = ++ last_modified_ - min_last_modified_; ++ ++ if (dt.InSeconds() > 0) { ++ // prepare for next simple URL loader and trigger download ++ createSimpleURLLoader(false); ++ internalDownload(); ++ return; ++ } ++ ++ // the remote filters are not more recent than known ones ++ TaskComplete(Error::UPDATE_NOT_NEEDED); ++} ++ ++void DownloadFiltersTask::OnResponseStarted( ++ const GURL& final_url, ++ const network::mojom::URLResponseHead& response_head) { ++ ++ final_url_ = final_url; ++ response_code_ = response_head.headers ? response_head.headers->response_code() : -1; ++ ++ if (!response_head.headers->GetLastModifiedValue(&last_modified_)) ++ LOG(WARNING) << "DownloadFiltersTask: fetching URL '" << final_url.spec() << "' with method " << (min_last_modified_.is_null() ? "GET" : "HEAD") << " (no Last-Modified header)"; ++ else ++ LOG(INFO) << "DownloadFiltersTask: fetching URL '" << final_url.spec() << "' with method " << (min_last_modified_.is_null() ? "GET" : "HEAD"); ++} ++ ++void DownloadFiltersTask::OnDownloadComplete(base::FilePath file_path) { ++ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); ++ int net_error = simple_url_loader_->NetError(); ++ int64_t content_size = simple_url_loader_->GetContentSize(); ++ ++ const base::TimeTicks download_end_time(base::TimeTicks::Now()); ++ const base::TimeDelta download_time = ++ download_end_time >= download_start_time_ ++ ? download_end_time - download_start_time_ ++ : base::TimeDelta(); ++ ++ // Consider a 5xx response from the server as an indication to terminate ++ // the request and avoid overloading the server in this case. ++ // is not accepting requests for the moment. ++ int error = -1; ++ if (!file_path.empty() && response_code_ == 200) { ++ DCHECK_EQ(0, net_error); ++ error = 0; ++ } else if (response_code_ != -1) { ++ error = response_code_; ++ } else { ++ error = net_error; ++ } ++ ++ LOG(INFO) << "DownloadFiltersTask: downloaded " << content_size << " bytes in " ++ << download_time.InMilliseconds() << "ms from '" << final_url_.spec() ++ << "' to '" << file_path << "' with net_error " << net_error << " and error " << error; ++ ++ if (error) { ++ TaskComplete(Error::DOWNLOAD_ERROR); ++ return; ++ } ++ ++ file_path_ = file_path; ++ TaskComplete(Error::NONE); ++} ++ ++void DownloadFiltersTask::Cancel() { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ ++ LOG(INFO) << "DownloadFiltersTask: update cancelled"; ++ ++ // deletion of the simple_url_loader_ will cause cancellation of its active request, if any ++ ++ TaskComplete(Error::UPDATE_CANCELED); ++} ++ ++void DownloadFiltersTask::TaskComplete(Error error) { ++ DCHECK(thread_checker_.CalledOnValidThread()); ++ ++ base::ThreadTaskRunnerHandle::Get()->PostTask( ++ FROM_HERE, base::BindOnce(std::move(complete_callback_), ++ scoped_refptr(this), error)); ++} ++ ++base::Time DownloadFiltersTask::last_modified() { ++ return last_modified_; ++} ++ ++base::FilePath DownloadFiltersTask::file_path() { ++ return file_path_; ++} ++ ++} // namespace adblock_updater +diff --git a/components/component_updater/download_filters_task.h b/components/component_updater/download_filters_task.h +new file mode 100644 +--- /dev/null ++++ b/components/component_updater/download_filters_task.h +@@ -0,0 +1,129 @@ ++/* ++ This file is part of Bromite. ++ ++ Bromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Bromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Bromite. If not, see . ++*/ ++ ++#ifndef COMPONENTS_DOWNLOAD_FILTERS_TASK_H_ ++#define COMPONENTS_DOWNLOAD_FILTERS_TASK_H_ ++ ++#include ++#include ++ ++#include "base/callback.h" ++#include "base/macros.h" ++#include "base/memory/ref_counted.h" ++#include "base/threading/thread_checker.h" ++#include "components/update_client/network.h" ++#include "url/gurl.h" ++#include "base/files/file_path.h" ++#include "services/network/public/cpp/shared_url_loader_factory.h" ++#include "services/network/public/cpp/simple_url_loader.h" ++ ++namespace adblock_updater { ++ ++// Errors generated as a result of calling Run() or by the service itself (UPDATE_IN_PROGRESS or UPDATE_CANCELED) ++enum class Error { ++ NONE = 0, ++ UPDATE_IN_PROGRESS = 1, ++ UPDATE_CANCELED = 2, ++ UPDATE_NOT_NEEDED = 3, ++ DOWNLOAD_ERROR = 4, ++ INVALID_ARGUMENT = 5, ++ MAX_VALUE, ++}; ++ ++enum class Event { ++ // Sent before the update client does an update check. ++ ADBLOCK_CHECKING_FOR_UPDATES = 1, ++ ++ // Sent after the new filters have been downloaded but before the install ++ // or the upgrade is attempted. ++ ADBLOCK_UPDATE_READY, ++ ++ // Sent when filters are being downloaded. ++ ADBLOCK_UPDATE_DOWNLOADING, ++ ++ // Sent when filters have been successfully updated. ++ ADBLOCK_UPDATED, ++ ++ // Sent when filters have not been updated because there ++ // was no new version available ++ //TODO: implement this with the headers check ++ ADBLOCK_NOT_UPDATED, ++ ++ // Sent when an error ocurred during an update for any reason, including ++ // the update check itself failed, or the download of the update payload ++ // failed, or applying the update failed. ++ ADBLOCK_UPDATE_ERROR, ++}; ++ ++// Defines a specialized task for updating AdBlock filters. ++class DownloadFiltersTask : public base::RefCounted { ++ public: ++ using Callback = ++ base::OnceCallback task, Error error)>; ++ ++ // |shared_url_network_factory| is injected here for the URL loader factory. ++ // |is_foreground| is true when the update task is initiated by the user. ++ // |filters_url| is the URL to load filters from. ++ // |complete_callback| is called to return the execution flow back to creator of ++ // this task when the task is done. ++ DownloadFiltersTask(scoped_refptr shared_url_network_factory, ++ bool is_foreground, const std::string& filters_url, base::Time min_last_modified, ++ Callback complete_callback); ++ ++ void Run(); ++ ++ void Cancel(); ++ ++ base::FilePath file_path(); ++ ++ base::Time last_modified(); ++ ++ private: ++ ~DownloadFiltersTask(); ++ ++ void OnDownloadProgress(uint64_t current); ++ void OnResponseStarted(const GURL& final_url, ++ const network::mojom::URLResponseHead& response_head); ++ void OnDownloadComplete(base::FilePath file_path); ++ void OnHeadersDownloadComplete(scoped_refptr headers); ++ void createSimpleURLLoader(bool); ++ void internalDownload(); ++ ++ // Called when the task has completed either because the task has run or ++ // it has been canceled. ++ void TaskComplete(Error error); ++ ++ base::ThreadChecker thread_checker_; ++ scoped_refptr shared_url_network_factory_; ++ const bool is_foreground_; ++ Callback complete_callback_; ++ std::unique_ptr simple_url_loader_; ++ ++ // fields populated while downloading ++ base::TimeTicks download_start_time_; ++ GURL final_url_, filters_url_; ++ int response_code_; ++ base::Time last_modified_, min_last_modified_; ++ base::FilePath file_path_; ++ ++ friend class base::RefCounted; ++ DISALLOW_COPY_AND_ASSIGN(DownloadFiltersTask); ++}; ++ ++} // namespace update_client ++ ++#endif // COMPONENTS_DOWNLOAD_FILTERS_TASK_H_ diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc -@@ -391,6 +391,17 @@ ContentSubresourceFilterThrottleManager:: +@@ -551,6 +551,17 @@ ContentSubresourceFilterThrottleManager:: throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(), ad_tagging_state); } @@ -251,7 +1474,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/components/subresource_filter/content/browser/ruleset_service.cc --- a/components/subresource_filter/content/browser/ruleset_service.cc +++ b/components/subresource_filter/content/browser/ruleset_service.cc -@@ -46,9 +46,7 @@ namespace { +@@ -47,9 +47,7 @@ namespace { void RecordIndexAndWriteRulesetResult( RulesetService::IndexAndWriteRulesetResult result) { @@ -262,7 +1485,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ } // Implements operations on a `sentinel file`, which is used as a safeguard to -@@ -227,10 +225,13 @@ RulesetService::RulesetService( +@@ -228,10 +226,13 @@ RulesetService::RulesetService( RulesetService::~RulesetService() {} void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( @@ -278,7 +1501,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ // Trying to store a ruleset with the same version for a second time would // not only be futile, but would fail on Windows due to "File System // Tunneling" as long as the previously stored copy of the rules is still -@@ -240,13 +241,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( +@@ -241,13 +242,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( if (most_recently_indexed_version.IsCurrentFormatVersion() && most_recently_indexed_version.content_version == unindexed_ruleset_info.content_version) { @@ -295,7 +1518,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ return; } -@@ -265,6 +269,18 @@ IndexedRulesetVersion RulesetService::GetMostRecentlyIndexedVersion() const { +@@ -266,6 +270,18 @@ IndexedRulesetVersion RulesetService::GetMostRecentlyIndexedVersion() const { IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( const base::FilePath& indexed_ruleset_base_dir, const UnindexedRulesetInfo& unindexed_ruleset_info) { @@ -314,15 +1537,15 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, base::BlockingType::MAY_BLOCK); -@@ -272,6 +288,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( - unindexed_ruleset_info.ruleset_path, - base::File::FLAG_OPEN | base::File::FLAG_READ); - if (!unindexed_ruleset_file.IsValid()) { +@@ -273,6 +289,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( + unindexed_ruleset_info); + + if (!unindexed_ruleset_stream_generator.ruleset_stream()) { + LOG(WARNING) << "RulesetService: failed to open: " << unindexed_ruleset_info.ruleset_path; RecordIndexAndWriteRulesetResult( IndexAndWriteRulesetResult::FAILED_OPENING_UNINDEXED_RULESET); return IndexedRulesetVersion(); -@@ -285,6 +302,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -286,6 +303,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( indexed_ruleset_base_dir, indexed_version); if (!base::CreateDirectory(indexed_ruleset_version_dir)) { @@ -330,15 +1553,15 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ RecordIndexAndWriteRulesetResult( IndexAndWriteRulesetResult::FAILED_CREATING_VERSION_DIR); return IndexedRulesetVersion(); -@@ -310,6 +328,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -311,6 +329,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( RulesetIndexer indexer; - if (!(*g_index_ruleset_func)(std::move(unindexed_ruleset_file), &indexer)) { + if (!(*g_index_ruleset_func)(&unindexed_ruleset_stream_generator, &indexer)) { + LOG(WARNING) << "RulesetService: failed parsing."; RecordIndexAndWriteRulesetResult( IndexAndWriteRulesetResult::FAILED_PARSING_UNINDEXED_RULESET); return IndexedRulesetVersion(); -@@ -330,6 +349,8 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -331,6 +350,8 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( if (result != IndexAndWriteRulesetResult::SUCCESS) return IndexedRulesetVersion(); @@ -347,7 +1570,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ DCHECK(indexed_version.IsValid()); return indexed_version; } -@@ -454,6 +475,7 @@ void RulesetService::IndexAndStoreRuleset( +@@ -455,6 +476,7 @@ void RulesetService::IndexAndStoreRuleset( void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback, const IndexedRulesetVersion& version) { DCHECK(!result_callback.is_null()); @@ -355,7 +1578,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ if (!version.IsValid()) return; version.SaveToPrefs(local_state_); -@@ -466,7 +488,6 @@ void RulesetService::OpenAndPublishRuleset( +@@ -467,7 +489,6 @@ void RulesetService::OpenAndPublishRuleset( IndexedRulesetLocator::GetRulesetDataFilePath( IndexedRulesetLocator::GetSubdirectoryPathForVersion( indexed_ruleset_base_dir_, version)); @@ -366,7 +1589,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/components/subresource_filter/content/browser/ruleset_service.h --- a/components/subresource_filter/content/browser/ruleset_service.h +++ b/components/subresource_filter/content/browser/ruleset_service.h -@@ -181,7 +181,7 @@ class RulesetService : public base::SupportsWeakPtr { +@@ -182,7 +182,7 @@ class RulesetService : public base::SupportsWeakPtr { // // Virtual so that it can be mocked out in tests. virtual void IndexAndStoreAndPublishRulesetIfNeeded( @@ -375,7 +1598,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/c // Get the ruleset version associated with the current local_state_. IndexedRulesetVersion GetMostRecentlyIndexedVersion() const; -@@ -214,6 +214,11 @@ class RulesetService : public base::SupportsWeakPtr { +@@ -215,6 +215,11 @@ class RulesetService : public base::SupportsWeakPtr { const base::FilePath& indexed_ruleset_base_dir, const UnindexedRulesetInfo& unindexed_ruleset_info); @@ -384,32 +1607,13 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/c + const base::FilePath& indexed_ruleset_base_dir, + const UnindexedRulesetInfo& unindexed_ruleset_info); + - // Reads the rules from the |unindexed_ruleset_file|, and indexes them using - // |indexer|. Returns whether the entire ruleset could be parsed. - static bool IndexRuleset(base::File unindexed_ruleset_file, -diff --git a/components/subresource_filter/content/browser/ruleset_version.cc b/components/subresource_filter/content/browser/ruleset_version.cc ---- a/components/subresource_filter/content/browser/ruleset_version.cc -+++ b/components/subresource_filter/content/browser/ruleset_version.cc -@@ -25,6 +25,7 @@ const char kSubresourceFilterRulesetChecksum[] = - } // namespace - - UnindexedRulesetInfo::UnindexedRulesetInfo() = default; -+UnindexedRulesetInfo::UnindexedRulesetInfo(const UnindexedRulesetInfo& other) = default; - UnindexedRulesetInfo::~UnindexedRulesetInfo() = default; - - IndexedRulesetVersion::IndexedRulesetVersion() = default; + // Reads the rules via the |unindexed_ruleset_stream_generator|, and indexes + // them using |indexer|. Returns whether the entire ruleset could be parsed. + static bool IndexRuleset( diff --git a/components/subresource_filter/content/browser/ruleset_version.h b/components/subresource_filter/content/browser/ruleset_version.h --- a/components/subresource_filter/content/browser/ruleset_version.h +++ b/components/subresource_filter/content/browser/ruleset_version.h -@@ -25,6 +25,7 @@ namespace subresource_filter { - // filtering rules on disk. - struct UnindexedRulesetInfo { - UnindexedRulesetInfo(); -+ UnindexedRulesetInfo(const UnindexedRulesetInfo& other); - ~UnindexedRulesetInfo(); - - // The version of the ruleset contents. Because the wire format of unindexed -@@ -43,6 +44,10 @@ struct UnindexedRulesetInfo { +@@ -53,6 +53,10 @@ struct UnindexedRulesetInfo { // can be indicated not only by setting |license_path| to empty, but also by // setting it to any non existent path. base::FilePath license_path; @@ -602,10 +1806,10 @@ diff --git a/components/subresource_filter/core/common/common_features.cc b/comp diff --git a/content/browser/renderer_host/navigation_throttle_runner.cc b/content/browser/renderer_host/navigation_throttle_runner.cc --- a/content/browser/renderer_host/navigation_throttle_runner.cc +++ b/content/browser/renderer_host/navigation_throttle_runner.cc -@@ -124,11 +124,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() { - devtools_instrumentation::CreateNavigationThrottles(request)) { - AddThrottle(std::move(throttle)); - } +@@ -131,11 +131,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() { + // than other throttles that might care about those navigations, e.g. + // throttles handling pages with 407 errors that require extra authentication. + AddThrottle(HttpErrorNavigationThrottle::MaybeCreateThrottleFor(*request)); - - // Insert all testing NavigationThrottles last. - throttles_.insert(throttles_.end(), diff --git a/build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch b/build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch index d12c7c23..ef19aab2 100644 --- a/build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch +++ b/build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch @@ -6,28 +6,13 @@ This prevents leakage of the local IP address. See also: https://github.com/bromite/bromite/issues/553 --- - chrome/browser/ui/browser_ui_prefs.cc | 4 ++-- .../peerconnection/peer_connection_dependency_factory.cc | 7 ++++--- - 2 files changed, 6 insertions(+), 5 deletions(-) + 1 file changed, 4 insertions(+), 3 deletions(-) -diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc ---- a/chrome/browser/ui/browser_ui_prefs.cc -+++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -87,8 +87,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { - false); - #endif - // TODO(guoweis): Remove next 2 options at M50. -- registry->RegisterBooleanPref(prefs::kWebRTCMultipleRoutesEnabled, true); -- registry->RegisterBooleanPref(prefs::kWebRTCNonProxiedUdpEnabled, true); -+ registry->RegisterBooleanPref(prefs::kWebRTCMultipleRoutesEnabled, false); -+ registry->RegisterBooleanPref(prefs::kWebRTCNonProxiedUdpEnabled, false); - registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy, - blink::kWebRTCIPHandlingDefault); - registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string()); diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -@@ -422,12 +422,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -423,12 +423,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator( port_config.enable_nonproxied_udp = false; break; case DEFAULT: diff --git a/build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch b/build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch index 7e1e5dc1..11cc84ae 100644 --- a/build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch +++ b/build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch @@ -9,7 +9,7 @@ Subject: Disable DRM media origin IDs preprovisioning diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -557,7 +557,7 @@ const base::Feature kMediaDrmPersistentLicense{ +@@ -562,7 +562,7 @@ const base::Feature kMediaDrmPersistentLicense{ // MediaDrmBridge. If disabled, MediaDrmBridge will get unprovisioned origin IDs // which will trigger provisioning process after MediaDrmBridge is created. const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning", diff --git a/build/patches/Disable-all-promo-dialogs.patch b/build/patches/Disable-all-promo-dialogs.patch index 55b544c6..f04c8577 100644 --- a/build/patches/Disable-all-promo-dialogs.patch +++ b/build/patches/Disable-all-promo-dialogs.patch @@ -9,7 +9,7 @@ Subject: Disable all promo dialogs diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -428,7 +428,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native +@@ -475,7 +475,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { * displayed. */ private boolean triggerPromo(boolean intentWithEffect) { @@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab SharedPreferencesManager preferenceManager = SharedPreferencesManager.getInstance(); // Promos can only be shown when we start with ACTION_MAIN intent and // after FRE is complete. Native initialization can finish before the FRE flow is -@@ -459,8 +459,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native +@@ -506,8 +506,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { preferenceManager.writeBoolean( ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true); } diff --git a/build/patches/Disable-autofill-assistant-by-default.patch b/build/patches/Disable-autofill-assistant-by-default.patch index d8c45ad7..43987fb5 100644 --- a/build/patches/Disable-autofill-assistant-by-default.patch +++ b/build/patches/Disable-autofill-assistant-by-default.patch @@ -9,7 +9,7 @@ Subject: Disable autofill assistant by default diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java --- a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java +++ b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java -@@ -22,7 +22,7 @@ class AutofillAssistantPreferencesUtil { +@@ -23,7 +23,7 @@ public class AutofillAssistantPreferencesUtil { /** Checks whether the Autofill Assistant switch preference in settings is on. */ static boolean isAutofillAssistantSwitchOn() { return SharedPreferencesManager.getInstance().readBoolean( @@ -17,7 +17,7 @@ diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chro + ChromePreferenceKeys.AUTOFILL_ASSISTANT_ENABLED, false); } - /** Returns whether the user has seen a lite script before or not. */ + /** Checks whether the proactive help switch preference in settings is on. */ -- 2.17.1 diff --git a/build/patches/Disable-media-router-and-remoting-by-default.patch b/build/patches/Disable-media-router-and-remoting-by-default.patch index 1ac76017..2f3aeef0 100644 --- a/build/patches/Disable-media-router-and-remoting-by-default.patch +++ b/build/patches/Disable-media-router-and-remoting-by-default.patch @@ -11,7 +11,7 @@ Subject: Disable media router and remoting by default diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc --- a/chrome/browser/media/router/media_router_feature.cc +++ b/chrome/browser/media/router/media_router_feature.cc -@@ -67,17 +67,16 @@ bool MediaRouterEnabled(content::BrowserContext* context) { +@@ -66,17 +66,16 @@ bool MediaRouterEnabled(content::BrowserContext* context) { #endif // !defined(OFFICIAL_BUILD) && !defined(OS_ANDROID) #if defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS) @@ -40,7 +40,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc -@@ -345,7 +345,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -356,7 +356,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { media_router::prefs::kMediaRouterEnableCloudServices, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref( diff --git a/build/patches/Disable-metrics-collection-for-NTP-tiles.patch b/build/patches/Disable-metrics-collection-for-NTP-tiles.patch index ef4412c8..eea4e896 100644 --- a/build/patches/Disable-metrics-collection-for-NTP-tiles.patch +++ b/build/patches/Disable-metrics-collection-for-NTP-tiles.patch @@ -66,7 +66,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br diff --git a/components/ntp_tiles/BUILD.gn b/components/ntp_tiles/BUILD.gn --- a/components/ntp_tiles/BUILD.gn +++ b/components/ntp_tiles/BUILD.gn -@@ -29,8 +29,6 @@ static_library("ntp_tiles") { +@@ -20,8 +20,6 @@ static_library("ntp_tiles") { "icon_cacher.h", "icon_cacher_impl.cc", "icon_cacher_impl.h", @@ -75,7 +75,7 @@ diff --git a/components/ntp_tiles/BUILD.gn b/components/ntp_tiles/BUILD.gn "most_visited_sites.cc", "most_visited_sites.h", "ntp_tile.cc", -@@ -86,7 +84,6 @@ source_set("unit_tests") { +@@ -85,7 +83,6 @@ source_set("unit_tests") { "custom_links_manager_impl_unittest.cc", "custom_links_store_unittest.cc", "icon_cacher_impl_unittest.cc", diff --git a/build/patches/Disable-metrics-on-all-I-O-threads.patch b/build/patches/Disable-metrics-on-all-I-O-threads.patch index 2311eeb5..4d585df0 100644 --- a/build/patches/Disable-metrics-on-all-I-O-threads.patch +++ b/build/patches/Disable-metrics-on-all-I-O-threads.patch @@ -3,14 +3,13 @@ Date: Wed, 25 Apr 2018 10:23:51 +0200 Subject: Disable metrics on all I/O threads --- - chrome/browser/browser_process_impl.cc | 2 +- - chrome/browser/profiles/profile_io_data.cc | 2 -- - 2 files changed, 1 insertion(+), 3 deletions(-) + chrome/browser/browser_process_impl.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -939,7 +939,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) { +@@ -944,7 +944,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) { #endif // defined(OS_CHROMEOS) registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled, @@ -19,18 +18,6 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro } DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { -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 -@@ -45,8 +45,6 @@ - #include "components/content_settings/core/browser/host_content_settings_map.h" - #include "components/cookie_config/cookie_store_util.h" - #include "components/dom_distiller/core/url_constants.h" --#include "components/metrics/metrics_pref_names.h" --#include "components/metrics/metrics_service.h" - #include "components/net_log/chrome_net_log.h" - #include "components/policy/core/common/cloud/user_cloud_policy_manager.h" - #include "components/signin/public/base/signin_pref_names.h" -- 2.17.1 diff --git a/build/patches/Disable-plugins-enumeration.patch b/build/patches/Disable-plugins-enumeration.patch index 8d5c5631..7ea21455 100644 --- a/build/patches/Disable-plugins-enumeration.patch +++ b/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 -@@ -1701,10 +1701,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() { +@@ -1782,10 +1782,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() { } PluginData* LocalFrame::GetPluginData() const { diff --git a/build/patches/Disable-promos-displayed-in-bookmarks-manager.patch b/build/patches/Disable-promos-displayed-in-bookmarks-manager.patch index cc335e28..ed40d6dd 100644 --- a/build/patches/Disable-promos-displayed-in-bookmarks-manager.patch +++ b/build/patches/Disable-promos-displayed-in-bookmarks-manager.patch @@ -16,7 +16,7 @@ bookmarks, never reach signin thresholds. diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -931,7 +931,6 @@ chrome_java_resources = [ +@@ -934,7 +934,6 @@ chrome_java_resources = [ "java/res/layout/passwords_error_dialog.xml", "java/res/layout/passwords_progress_dialog.xml", "java/res/layout/personalized_signin_promo_view_body.xml", @@ -63,23 +63,23 @@ deleted file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java -@@ -21,7 +21,6 @@ import org.chromium.chrome.R; - import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem; - import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver; +@@ -25,7 +25,6 @@ import org.chromium.chrome.browser.bookmarks.BookmarkListEntry.ViewType; import org.chromium.chrome.browser.bookmarks.BookmarkRow.Location; + import org.chromium.chrome.browser.feature_engagement.TrackerFactory; + import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView; import org.chromium.chrome.browser.sync.ProfileSyncService; import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.bookmarks.BookmarkType; -@@ -64,7 +63,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter +@@ -51,7 +50,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter @ViewType - private int mPromoHeaderType = ViewType.INVALID_PROMO; + private int mPromoHeaderType = ViewType.INVALID; private BookmarkDelegate mDelegate; - private BookmarkPromoHeader mPromoHeaderManager; private String mSearchText; private BookmarkId mCurrentFolder; private ProfileSyncService mProfileSyncService; -@@ -187,9 +185,9 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter +@@ -180,9 +178,9 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter case ViewType.PERSONALIZED_SIGNIN_PROMO: // fall through case ViewType.PERSONALIZED_SYNC_PROMO: @@ -88,10 +88,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm case ViewType.SYNC_PROMO: - return mPromoHeaderManager.createSyncPromoHolder(parent); + return null; + case ViewType.SECTION_HEADER: + return createSectionHeaderViewHolder(parent, viewType); case ViewType.FOLDER: - return createViewHolderHelper(parent, R.layout.bookmark_folder_row); - case ViewType.BOOKMARK: -@@ -203,11 +201,7 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter +@@ -202,11 +200,7 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter @Override public void onBindViewHolder(ViewHolder holder, int position) { if (holder.getItemViewType() == ViewType.PERSONALIZED_SIGNIN_PROMO) { @@ -100,10 +100,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm } else if (holder.getItemViewType() == ViewType.PERSONALIZED_SYNC_PROMO) { - PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView; - mPromoHeaderManager.setupPersonalizedSyncPromo(view); - } else if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) { - BookmarkRow row = ((BookmarkRow) holder.itemView); - BookmarkId id = getIdByPosition(position); -@@ -236,7 +230,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter + } else if (holder.getItemViewType() == ViewType.SECTION_HEADER) { + bindSectionHeaderViewHolder(holder.itemView, getItemByPosition(position)); + } else if (BookmarkListEntry.isBookmarkEntry(holder.getItemViewType())) { +@@ -254,7 +248,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter case ViewType.PERSONALIZED_SIGNIN_PROMO: // fall through case ViewType.PERSONALIZED_SYNC_PROMO: @@ -111,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm break; default: // Other view holders don't have special recycling code. -@@ -262,7 +255,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter +@@ -280,7 +273,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter updateHeader(!topLevelFoldersShowing()); }; @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm populateTopLevelFoldersList(); mElements = new ArrayList<>(); -@@ -277,7 +269,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter +@@ -295,7 +287,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter mDelegate.getModel().removeObserver(mBookmarkModelObserver); mDelegate.getSelectionDelegate().removeObserver(this); mDelegate = null; @@ -127,14 +127,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm mProfileSyncService.removeSyncStateChangedListener(this); } -@@ -387,23 +378,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter +@@ -418,23 +409,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter return; } else if (currentUIState == BookmarkUIState.STATE_SEARCHING) { - mPromoHeaderType = ViewType.INVALID_PROMO; + mPromoHeaderType = ViewType.INVALID; - } else { - switch (mPromoHeaderManager.getPromoState()) { - case BookmarkPromoHeader.PromoState.PROMO_NONE: -- mPromoHeaderType = ViewType.INVALID_PROMO; +- mPromoHeaderType = ViewType.INVALID; - break; - case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED: - mPromoHeaderType = ViewType.PERSONALIZED_SIGNIN_PROMO; diff --git a/build/patches/Disable-safe-browsing.patch b/build/patches/Disable-safe-browsing.patch index 833d6f6a..600585ea 100644 --- a/build/patches/Disable-safe-browsing.patch +++ b/build/patches/Disable-safe-browsing.patch @@ -11,12 +11,12 @@ Disable CrowdDeny feature .../res/xml/sync_and_services_preferences.xml | 20 ------ .../EnhancedProtectionPromoController.java | 8 --- .../EnhancedProtectionPromoUtils.java | 3 +- - .../privacy/settings/PrivacySettings.java | 55 ++------------ + .../privacy/settings/PrivacySettings.java | 50 +------------ .../SafeBrowsingSettingsLauncher.java | 9 --- .../sync/settings/GoogleServicesSettings.java | 10 +-- - .../settings/SyncAndServicesSettings.java | 9 +-- + .../settings/SyncAndServicesSettings.java | 15 +--- .../android/chrome_main_delegate_android.cc | 1 + - chrome/browser/BUILD.gn | 4 -- + chrome/browser/BUILD.gn | 23 ------ chrome/browser/about_flags.cc | 2 +- .../tab_web_contents_delegate_android.cc | 4 ++ chrome/browser/browser_process.h | 7 -- @@ -40,15 +40,16 @@ Disable CrowdDeny feature .../extensions/api/downloads/downloads_api.cc | 42 +---------- .../extensions/api/downloads/downloads_api.h | 9 --- .../webstore_private/webstore_private_api.cc | 44 +----------- + .../lookalike_url_controller_client.cc | 4 -- .../metrics/chrome_metrics_service_client.cc | 3 - ...e_native_file_system_permission_context.cc | 5 +- ...me_native_file_system_permission_context.h | 3 + ...ial_comparison_cert_verifier_controller.cc | 3 - .../chrome_password_manager_client.cc | 2 + ...ve_origin_permission_revocation_request.cc | 2 + - .../permissions/chrome_permissions_client.cc | 8 --- + .../permissions/chrome_permissions_client.cc | 15 ---- .../permissions/chrome_permissions_client.h | 3 - - ...hrome_browser_main_extra_parts_profiles.cc | 1 - + ...hrome_browser_main_extra_parts_profiles.cc | 2 - chrome/browser/profiles/profile_impl.cc | 4 +- chrome/browser/safe_browsing/BUILD.gn | 3 +- chrome/browser/safe_browsing/android/BUILD.gn | 3 - @@ -60,11 +61,11 @@ Disable CrowdDeny feature .../url_lookup_service_factory.cc | 4 ++ .../safety_check/SafetyCheckMediator.java | 25 ------- .../ssl/sct_reporting_service_factory.cc | 11 +-- - .../browser/ssl/security_state_tab_helper.cc | 2 + + .../browser/ssl/security_state_tab_helper.cc | 10 +-- .../chrome_subresource_filter_client.cc | 4 ++ chrome/browser/ui/BUILD.gn | 1 - .../strings/android_chrome_strings.grd | 21 ------ - chrome/browser/ui/tab_helpers.cc | 8 --- + chrome/browser/ui/tab_helpers.cc | 10 --- .../ui/webui/interstitials/interstitial_ui.cc | 13 ++-- chrome/common/safe_browsing/BUILD.gn | 5 +- .../chrome_content_renderer_client.cc | 2 + @@ -77,12 +78,12 @@ Disable CrowdDeny feature .../native_file_system_file_writer_impl.cc | 50 +------------ .../native_file_system_file_writer_impl.h | 14 +--- .../native_file_system_permission_context.h | 6 -- - 71 files changed, 193 insertions(+), 681 deletions(-) + 72 files changed, 189 insertions(+), 727 deletions(-) diff --git a/chrome/android/java/res/xml/google_services_preferences.xml b/chrome/android/java/res/xml/google_services_preferences.xml --- a/chrome/android/java/res/xml/google_services_preferences.xml +++ b/chrome/android/java/res/xml/google_services_preferences.xml -@@ -18,30 +18,10 @@ +@@ -24,30 +24,10 @@ android:title="@string/autocomplete_searches_and_urls_title" android:summary="@string/autocomplete_searches_and_urls_summary" android:persistent="false"/> @@ -136,7 +137,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi - android:key="safe_browsing" - android:title="@string/prefs_safe_browsing_title" - android:summary="@string/prefs_safe_browsing_summary" -- android:fragment="org.chromium.chrome.browser.safe_browsing.settings.SecuritySettingsFragment" +- android:fragment="org.chromium.chrome.browser.safe_browsing.settings.SafeBrowsingSettingsFragment" - android:order="6"/> @@ -183,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/promo import org.chromium.chrome.browser.ntp.cards.promo.enhanced_protection.EnhancedProtectionPromoUtils.EnhancedProtectionPromoAction; import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.safe_browsing.metrics.SettingsAccessPoint; --import org.chromium.chrome.browser.safe_browsing.settings.SecuritySettingsFragment; +-import org.chromium.chrome.browser.safe_browsing.settings.SafeBrowsingSettingsFragment; import org.chromium.chrome.browser.settings.SettingsLauncher; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; import org.chromium.components.browser_ui.widget.promo.PromoCardCoordinator; @@ -194,8 +195,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/promo - EnhancedProtectionPromoUtils.recordEnhancedProtectionPromoEvent( - EnhancedProtectionPromoAction.ACCEPTED); - SettingsLauncher launcher = new SettingsLauncherImpl(); -- launcher.launchSettingsActivity(mContext, SecuritySettingsFragment.class, -- SecuritySettingsFragment.createArguments( +- launcher.launchSettingsActivity(mContext, SafeBrowsingSettingsFragment.class, +- SafeBrowsingSettingsFragment.createArguments( - SettingsAccessPoint.SURFACE_EXPLORER_PROMO_SLINGER)); } @@ -216,16 +217,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/promo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -21,8 +21,6 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.preferences.Pref; - import org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings; - import org.chromium.chrome.browser.profiles.Profile; --import org.chromium.chrome.browser.safe_browsing.metrics.SettingsAccessPoint; --import org.chromium.chrome.browser.safe_browsing.settings.SecuritySettingsFragment; - import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; - import org.chromium.chrome.browser.settings.SettingsLauncher; - import org.chromium.chrome.browser.settings.SettingsLauncherImpl; -@@ -30,7 +28,6 @@ import org.chromium.chrome.browser.signin.IdentityServicesProvider; +@@ -30,7 +30,6 @@ import org.chromium.chrome.browser.signin.IdentityServicesProvider; import org.chromium.chrome.browser.sync.settings.GoogleServicesSettings; import org.chromium.chrome.browser.sync.settings.ManageSyncSettings; import org.chromium.chrome.browser.sync.settings.SyncAndServicesSettings; @@ -233,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; import org.chromium.components.browser_ui.settings.SettingsUtils; -@@ -48,14 +45,13 @@ public class PrivacySettings +@@ -48,14 +47,13 @@ public class PrivacySettings private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; private static final String PREF_NETWORK_PREDICTIONS = "preload_pages"; private static final String PREF_SECURE_DNS = "secure_dns"; @@ -251,21 +243,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private ManagedPreferenceDelegate mManagedPreferenceDelegate; -@@ -76,23 +72,6 @@ public class PrivacySettings +@@ -76,23 +74,6 @@ public class PrivacySettings } } -- // If the flag for adding a "Security" section UI is enabled, a "Security" section will be -- // added under this section and this section will be renamed to "Privacy and security". -- // See (go/esb-clank-dd) for more context. -- if (ChromeFeatureList.isEnabled(ChromeFeatureList.SAFE_BROWSING_SECURITY_SECTION_UI)) { +- // If the flag for adding a "Safe Browsing" section UI is enabled, a "Safe Browsing" section +- // will be added under this section and this section will be renamed to "Privacy and +- // security". See (go/esb-clank-dd) for more context. +- if (ChromeFeatureList.isEnabled(ChromeFeatureList.SAFE_BROWSING_SECTION_UI)) { - getActivity().setTitle(R.string.prefs_privacy_security); - Preference safeBrowsingPreference = findPreference(PREF_SAFE_BROWSING); - safeBrowsingPreference.setSummary( -- SecuritySettingsFragment.getSafeBrowsingSummaryString(getContext())); +- SafeBrowsingSettingsFragment.getSafeBrowsingSummaryString(getContext())); - safeBrowsingPreference.setOnPreferenceClickListener((preference) -> { -- preference.getExtras().putInt( -- SecuritySettingsFragment.ACCESS_POINT, SettingsAccessPoint.PARENT_SETTINGS); +- preference.getExtras().putInt(SafeBrowsingSettingsFragment.ACCESS_POINT, +- SettingsAccessPoint.PARENT_SETTINGS); - return false; - }); - } else { @@ -275,14 +267,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting setHasOptionsMenu(true); mManagedPreferenceDelegate = createManagedPreferenceDelegate(); -@@ -195,30 +174,10 @@ public class PrivacySettings +@@ -194,31 +175,6 @@ public class PrivacySettings + if (secureDnsPref != null && secureDnsPref.isVisible()) { secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext())); } - +- - Preference safeBrowsingPreference = findPreference(PREF_SAFE_BROWSING); - if (safeBrowsingPreference != null && safeBrowsingPreference.isVisible()) { - safeBrowsingPreference.setSummary( -- SecuritySettingsFragment.getSafeBrowsingSummaryString(getContext())); +- SafeBrowsingSettingsFragment.getSafeBrowsingSummaryString(getContext())); - } - - Preference usageStatsPref = findPreference(PREF_USAGE_STATS); @@ -303,10 +296,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting - getPreferenceScreen().removePreference(usageStatsPref); - } - } -+ ChromeSwitchPreference closeTabsOnExitPref = -+ (ChromeSwitchPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT); -+ closeTabsOnExitPref.setOnPreferenceChangeListener(this); -+ closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate); } private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() { @@ -318,7 +307,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/safe_browsing/S import org.chromium.base.annotations.CalledByNative; -import org.chromium.chrome.browser.safe_browsing.metrics.SettingsAccessPoint; --import org.chromium.chrome.browser.safe_browsing.settings.SecuritySettingsFragment; +-import org.chromium.chrome.browser.safe_browsing.settings.SafeBrowsingSettingsFragment; import org.chromium.chrome.browser.settings.SettingsLauncher; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; import org.chromium.content_public.browser.WebContents; @@ -330,15 +319,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/safe_browsing/S - if (window == null) return; - Context currentContext = window.getContext().get(); - SettingsLauncher settingsLauncher = new SettingsLauncherImpl(); -- settingsLauncher.launchSettingsActivity(currentContext, SecuritySettingsFragment.class, -- SecuritySettingsFragment.createArguments( +- settingsLauncher.launchSettingsActivity(currentContext, SafeBrowsingSettingsFragment.class, +- SafeBrowsingSettingsFragment.createArguments( - SettingsAccessPoint.SECURITY_INTERSTITIAL)); } } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java -@@ -28,7 +28,6 @@ import org.chromium.chrome.browser.preferences.Pref; +@@ -29,7 +29,6 @@ import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManager; import org.chromium.chrome.browser.profiles.Profile; @@ -346,7 +335,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/G import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; import org.chromium.chrome.browser.signin.IdentityServicesProvider; import org.chromium.chrome.browser.signin.SignOutDialogFragment; -@@ -232,9 +231,6 @@ public class GoogleServicesSettings +@@ -254,9 +253,6 @@ public class GoogleServicesSettings } else if (PREF_PASSWORD_LEAK_DETECTION.equals(key)) { assert !mIsSecurityPreferenceRemoved; mPrefService.setBoolean(Pref.PASSWORD_LEAK_DETECTION_ENABLED, (boolean) newValue); @@ -356,7 +345,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/G } else if (PREF_NAVIGATION_ERROR.equals(key)) { mPrefService.setBoolean(Pref.ALTERNATE_ERROR_PAGES_ENABLED, (boolean) newValue); } else if (PREF_USAGE_AND_CRASH_REPORTING.equals(key)) { -@@ -287,8 +283,7 @@ public class GoogleServicesSettings +@@ -309,8 +305,7 @@ public class GoogleServicesSettings assert !mIsSecurityPreferenceRemoved; boolean safe_browsing_enabled = mPrefService.getBoolean(Pref.SAFE_BROWSING_ENABLED); mSafeBrowsingReporting.setEnabled(safe_browsing_enabled); @@ -366,7 +355,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/G boolean has_token_for_leak_check = PasswordUIView.hasAccountForLeakCheckRequest(); boolean leak_detection_enabled = -@@ -318,9 +313,6 @@ public class GoogleServicesSettings +@@ -340,9 +335,6 @@ public class GoogleServicesSettings if (PREF_SEARCH_SUGGESTIONS.equals(key)) { return mPrefService.isManagedPreference(Pref.SEARCH_SUGGEST_ENABLED); } @@ -387,18 +376,44 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/S import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; import org.chromium.chrome.browser.settings.SettingsActivity; import org.chromium.chrome.browser.signin.IdentityServicesProvider; -@@ -391,9 +390,6 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat +@@ -108,8 +107,6 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat + public static final String PREF_SAFE_BROWSING = "safe_browsing"; + @VisibleForTesting + public static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection"; +- @VisibleForTesting +- public static final String PREF_SAFE_BROWSING_SCOUT_REPORTING = "safe_browsing_scout_reporting"; + private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports"; + private static final String PREF_URL_KEYED_ANONYMIZED_DATA = "url_keyed_anonymized_data"; + private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search"; +@@ -224,7 +221,6 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat + if (mIsSafeBrowsingPreferenceRemoved) { + removePreference(servicesCategory, findPreference(PREF_SAFE_BROWSING)); + removePreference(servicesCategory, findPreference(PREF_PASSWORD_LEAK_DETECTION)); +- removePreference(servicesCategory, findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING)); + mSafeBrowsing = null; + mPasswordLeakDetection = null; + mSafeBrowsingReporting = null; +@@ -238,8 +234,6 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat + mPasswordLeakDetection.setOnPreferenceChangeListener(this); + mPasswordLeakDetection.setManagedPreferenceDelegate(mManagedPreferenceDelegate); + +- mSafeBrowsingReporting = +- (ChromeSwitchPreference) findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING); + mSafeBrowsingReporting.setOnPreferenceChangeListener(this); + mSafeBrowsingReporting.setManagedPreferenceDelegate(mManagedPreferenceDelegate); + } +@@ -406,9 +400,6 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat } else if (PREF_PASSWORD_LEAK_DETECTION.equals(key)) { - assert !mIsSecurityPreferenceRemoved; + assert !mIsSafeBrowsingPreferenceRemoved; mPrefService.setBoolean(Pref.PASSWORD_LEAK_DETECTION_ENABLED, (boolean) newValue); - } else if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) { -- assert !mIsSecurityPreferenceRemoved; +- assert !mIsSafeBrowsingPreferenceRemoved; - SafeBrowsingBridge.setSafeBrowsingExtendedReportingEnabled((boolean) newValue); } else if (PREF_NAVIGATION_ERROR.equals(key)) { mPrefService.setBoolean(Pref.ALTERNATE_ERROR_PAGES_ENABLED, (boolean) newValue); } else if (PREF_USAGE_AND_CRASH_REPORTING.equals(key)) { -@@ -647,8 +643,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat - assert !mIsSecurityPreferenceRemoved; +@@ -662,8 +653,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat + assert !mIsSafeBrowsingPreferenceRemoved; boolean safe_browsing_enabled = mPrefService.getBoolean(Pref.SAFE_BROWSING_ENABLED); mSafeBrowsingReporting.setEnabled(safe_browsing_enabled); - mSafeBrowsingReporting.setChecked(safe_browsing_enabled @@ -407,15 +422,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/S boolean has_token_for_leak_check = PasswordUIView.hasAccountForLeakCheckRequest(); boolean leak_detection_enabled = -@@ -676,7 +671,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat +@@ -690,9 +680,6 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat + if (PREF_SEARCH_SUGGESTIONS.equals(key)) { return mPrefService.isManagedPreference(Pref.SEARCH_SUGGEST_ENABLED); } - if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) { +- if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) { - return SafeBrowsingBridge.isSafeBrowsingExtendedReportingManaged(); -+ return false; - } +- } if (PREF_SAFE_BROWSING.equals(key)) { return mPrefService.isManagedPreference(Pref.SAFE_BROWSING_ENABLED); + } diff --git a/chrome/app/android/chrome_main_delegate_android.cc b/chrome/app/android/chrome_main_delegate_android.cc --- a/chrome/app/android/chrome_main_delegate_android.cc +++ b/chrome/app/android/chrome_main_delegate_android.cc @@ -430,7 +446,7 @@ diff --git a/chrome/app/android/chrome_main_delegate_android.cc b/chrome/app/and diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -1114,8 +1114,6 @@ static_library("browser") { +@@ -1134,8 +1134,6 @@ static_library("browser") { "permissions/adaptive_quiet_notification_permission_ui_enabler.h", "permissions/chrome_permissions_client.cc", "permissions/chrome_permissions_client.h", @@ -439,7 +455,45 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "permissions/crowd_deny_preload_data.cc", "permissions/crowd_deny_preload_data.h", "permissions/crowd_deny_safe_browsing_request.cc", -@@ -3353,8 +3351,6 @@ static_library("browser") { +@@ -1487,17 +1485,6 @@ static_library("browser") { + "renderer_host/chrome_navigation_ui_data.h", + "renderer_preferences_util.cc", + "renderer_preferences_util.h", +- "reputation/local_heuristics.cc", +- "reputation/local_heuristics.h", +- "reputation/reputation_service.cc", +- "reputation/reputation_service.h", +- "reputation/reputation_web_contents_observer.cc", +- "reputation/reputation_web_contents_observer.h", +- "reputation/safety_tip_ui.h", +- "reputation/safety_tip_ui_helper.cc", +- "reputation/safety_tip_ui_helper.h", +- "reputation/url_elision_policy.cc", +- "reputation/url_elision_policy.h", + "resource_coordinator/resource_coordinator_parts.cc", + "resource_coordinator/resource_coordinator_parts.h", + "resource_coordinator/session_restore_policy.cc", +@@ -2125,8 +2112,6 @@ static_library("browser") { + "//components/reading_list/core", + "//components/reading_list/features:flags", + "//components/renderer_context_menu", +- "//components/reputation/core", +- "//components/reputation/core:proto", + "//components/resources", + "//components/safe_browsing/content/browser", + "//components/safe_browsing/content/password_protection", +@@ -3121,10 +3106,6 @@ static_library("browser") { + "profiles/profile_manager_android.cc", + "profiles/profile_manager_android.h", + "query_tiles/android/tile_provider_factory.cc", +- "reputation/safety_tip_infobar.cc", +- "reputation/safety_tip_infobar.h", +- "reputation/safety_tip_infobar_delegate.cc", +- "reputation/safety_tip_infobar_delegate.h", + "safe_browsing/android/password_reuse_controller_android.cc", + "safe_browsing/android/password_reuse_controller_android.h", + "safe_browsing/android/safe_browsing_settings_launcher_android.cc", +@@ -3449,8 +3430,6 @@ static_library("browser") { "download/download_commands.h", "download/download_crx_util.cc", "download/download_crx_util.h", @@ -448,10 +502,19 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "download/download_dir_policy_handler.cc", "download/download_dir_policy_handler.h", "download/download_dir_util.cc", +@@ -6619,8 +6598,6 @@ static_library("test_support") { + "//components/policy/core/browser:test_support", + "//components/policy/proto:reporting_record_proto", + "//components/prefs:test_support", +- "//components/reputation/core", +- "//components/reputation/core:proto", + "//components/safe_browsing/core:csd_proto", + "//components/search_engines:test_support", + "//components/security_interstitials/content:security_interstitial_page", 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 -@@ -2092,7 +2092,7 @@ const FeatureEntry::FeatureParam +@@ -2049,7 +2049,7 @@ const FeatureEntry::FeatureParam {QuietNotificationPermissionUiConfig::kEnableAbusiveRequestWarning, "true"}, {QuietNotificationPermissionUiConfig::kEnableCrowdDenyTriggering, @@ -465,15 +528,15 @@ diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrom +++ b/chrome/browser/android/tab_web_contents_delegate_android.cc @@ -39,7 +39,9 @@ #include "chrome/browser/picture_in_picture/picture_in_picture_window_manager.h" - #include "chrome/browser/prerender/prerender_manager_factory.h" + #include "chrome/browser/prefetch/no_state_prefetch/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" +#if BUILDFLAG(FULL_SAFE_BROWSING) #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" +#endif #include "chrome/browser/ssl/security_state_tab_helper.h" - #include "chrome/browser/ui/android/device_dialog/bluetooth_chooser_android.h" - #include "chrome/browser/ui/android/device_dialog/bluetooth_scanning_prompt_android.h" -@@ -176,8 +178,10 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated( + #include "chrome/browser/ui/android/infobars/chrome_confirm_infobar.h" + #include "chrome/browser/ui/android/infobars/framebust_block_infobar.h" +@@ -173,8 +175,10 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated( InfoBarService::CreateForWebContents(portal_contents); PrefsTabHelper::CreateForWebContents(portal_contents); DataReductionProxyTabHelper::CreateForWebContents(portal_contents); @@ -498,7 +561,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h namespace subresource_filter { class RulesetService; } -@@ -217,9 +213,6 @@ class BrowserProcess { +@@ -216,9 +212,6 @@ class BrowserProcess { // on this platform (or this is a unit test). virtual StatusTray* status_tray() = 0; @@ -519,7 +582,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro #include "chrome/browser/shell_integration.h" #include "chrome/browser/site_isolation/prefs_observer.h" #include "chrome/browser/ssl/secure_origin_prefs_observer.h" -@@ -108,7 +107,6 @@ +@@ -107,7 +106,6 @@ #include "components/prefs/pref_service.h" #include "components/rappor/public/rappor_utils.h" #include "components/rappor/rappor_service_impl.h" @@ -527,7 +590,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro #include "components/sessions/core/session_id_generator.h" #include "components/subresource_filter/content/browser/ruleset_service.h" #include "components/translate/core/browser/translate_download_manager.h" -@@ -372,8 +370,6 @@ void BrowserProcessImpl::StartTearDown() { +@@ -377,8 +375,6 @@ void BrowserProcessImpl::StartTearDown() { metrics_services_manager_.reset(); intranet_redirect_detector_.reset(); @@ -536,7 +599,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro network_time_tracker_.reset(); #if BUILDFLAG(ENABLE_PLUGINS) plugins_resource_service_.reset(); -@@ -980,14 +976,6 @@ StatusTray* BrowserProcessImpl::status_tray() { +@@ -985,14 +981,6 @@ StatusTray* BrowserProcessImpl::status_tray() { return status_tray_.get(); } @@ -551,7 +614,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro subresource_filter::RulesetService* BrowserProcessImpl::subresource_filter_ruleset_service() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -@@ -1251,23 +1239,6 @@ void BrowserProcessImpl::CreateBackgroundPrintingManager() { +@@ -1252,23 +1240,6 @@ void BrowserProcessImpl::CreateBackgroundPrintingManager() { } void BrowserProcessImpl::CreateSafeBrowsingService() { @@ -585,8 +648,8 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc - safe_browsing::SafeBrowsingService* safe_browsing_service() override; subresource_filter::RulesetService* subresource_filter_ruleset_service() override; - federated_learning::FlocBlocklistService* floc_blocklist_service() override; -@@ -320,9 +319,6 @@ class BrowserProcessImpl : public BrowserProcess, + federated_learning::FlocSortingLshClustersService* +@@ -319,9 +318,6 @@ class BrowserProcessImpl : public BrowserProcess, std::unique_ptr background_mode_manager_; #endif @@ -599,7 +662,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 -@@ -658,10 +658,12 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -657,10 +657,12 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( base::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies")); network::mojom::NetworkContext* safe_browsing_context = nullptr; @@ -615,7 +678,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 -@@ -113,12 +113,14 @@ +@@ -118,12 +118,14 @@ #include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h" #include "chrome/browser/renderer_preferences_util.h" #include "chrome/browser/resource_coordinator/background_tab_navigation_throttle.h" @@ -630,7 +693,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #include "chrome/browser/safe_browsing/ui_manager.h" #include "chrome/browser/safe_browsing/url_checker_delegate_impl.h" #include "chrome/browser/safe_browsing/url_lookup_service_factory.h" -@@ -894,21 +896,13 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) { +@@ -910,21 +912,13 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) { class CertificateReportingServiceCertReporter : public SSLCertReporter { public: explicit CertificateReportingServiceCertReporter( @@ -653,7 +716,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch }; #if BUILDFLAG(ENABLE_EXTENSIONS) -@@ -1433,7 +1427,9 @@ void ChromeContentBrowserClient::PostAfterStartupTask( +@@ -1450,7 +1444,9 @@ void ChromeContentBrowserClient::PostAfterStartupTask( InitNetworkContextsParentDirectory(); DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -663,7 +726,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch } bool ChromeContentBrowserClient::IsBrowserStartupComplete() { -@@ -2146,7 +2142,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( +@@ -2170,7 +2166,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( } #elif defined(OS_POSIX) #if defined(OS_ANDROID) @@ -672,7 +735,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #else bool enable_crash_reporter = false; if (crash_reporter::IsCrashpadEnabled()) { -@@ -2270,6 +2266,9 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( +@@ -2294,6 +2290,9 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( instant_service->IsInstantProcess(process->GetID())) { command_line->AppendSwitch(switches::kInstantProcess); } @@ -682,7 +745,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #endif if (prefs->HasPrefPath(prefs::kAllowDinosaurEasterEgg) && -@@ -4094,14 +4093,13 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( +@@ -4073,14 +4072,13 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( &throttles); #endif @@ -699,7 +762,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if defined(OS_WIN) || defined(OS_MAC) || \ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) -@@ -5213,6 +5211,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate( +@@ -5191,6 +5189,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate( bool should_check_on_sb_disabled) { DCHECK_CURRENTLY_ON(BrowserThread::IO); @@ -707,7 +770,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch // Should not bypass safe browsing check if the check is for enterprise // lookup. if (!safe_browsing_enabled_for_profile && !should_check_on_sb_disabled) -@@ -5227,6 +5226,9 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate( +@@ -5205,6 +5204,9 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate( } return safe_browsing_url_checker_delegate_; @@ -795,7 +858,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom #include "components/services/quarantine/public/mojom/quarantine.mojom.h" #include "components/services/quarantine/quarantine_impl.h" #include "content/public/browser/browser_task_traits.h" -@@ -128,8 +132,10 @@ using content::DownloadManager; +@@ -129,8 +133,10 @@ using content::DownloadManager; using download::DownloadItem; using download::DownloadPathReservationTracker; using download::PathValidationResult; @@ -806,7 +869,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom namespace { -@@ -327,12 +333,12 @@ void HandleMixedDownloadInfoBarResult( +@@ -328,12 +334,12 @@ void HandleMixedDownloadInfoBarResult( } #endif @@ -820,7 +883,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom if (download_restriction != DownloadPrefs::DownloadRestriction::POTENTIALLY_DANGEROUS_FILES && download_restriction != -@@ -362,8 +368,8 @@ void MaybeReportDangerousDownloadBlocked( +@@ -363,8 +369,8 @@ void MaybeReportDangerousDownloadBlocked( base::HexEncode(raw_digest_sha256.data(), raw_digest_sha256.size()), danger_type, download->GetMimeType(), download->GetTotalBytes(), safe_browsing::EventResult::BLOCKED); @@ -830,7 +893,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom } // namespace -@@ -385,13 +391,6 @@ ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() { +@@ -386,13 +392,6 @@ ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() { void ChromeDownloadManagerDelegate::SetDownloadManager(DownloadManager* dm) { download_manager_ = dm; @@ -844,7 +907,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom } #if defined(OS_ANDROID) -@@ -728,16 +727,6 @@ void ChromeDownloadManagerDelegate::ChooseSavePath( +@@ -733,16 +732,6 @@ void ChromeDownloadManagerDelegate::ChooseSavePath( void ChromeDownloadManagerDelegate::SanitizeSavePackageResourceName( base::FilePath* filename) { @@ -861,7 +924,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom } void ChromeDownloadManagerDelegate::SanitizeDownloadParameters( -@@ -850,18 +839,18 @@ ChromeDownloadManagerDelegate::ApplicationClientIdForFileScanning() { +@@ -855,18 +844,18 @@ ChromeDownloadManagerDelegate::ApplicationClientIdForFileScanning() { return std::string(chrome::kApplicationClientIDStringForAVScanning); } @@ -882,7 +945,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom void ChromeDownloadManagerDelegate::GetMixedContentStatus( download::DownloadItem* download, -@@ -1398,8 +1387,11 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined( +@@ -1405,8 +1394,11 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined( DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true); #endif @@ -894,7 +957,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom if (ShouldBlockFile(target_info->danger_type, item)) { MaybeReportDangerousDownloadBlocked( download_prefs_->download_restriction(), "DANGEROUS_FILE_TYPE", -@@ -1408,6 +1400,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined( +@@ -1415,6 +1407,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined( // A dangerous type would take precedence over the blocking of the file. target_info->danger_type = download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS; } @@ -1415,7 +1478,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" -@@ -1327,9 +1326,6 @@ DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {} +@@ -1326,9 +1325,6 @@ DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {} DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {} @@ -1425,7 +1488,7 @@ diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/b ExtensionFunction::ResponseAction DownloadsAcceptDangerFunction::Run() { std::unique_ptr params( downloads::AcceptDanger::Params::Create(*args_)); -@@ -1367,43 +1363,7 @@ void DownloadsAcceptDangerFunction::PromptOrWait(int download_id, int retries) { +@@ -1366,43 +1362,7 @@ void DownloadsAcceptDangerFunction::PromptOrWait(int download_id, int retries) { return; } RecordApiFunctions(DOWNLOADS_FUNCTION_ACCEPT_DANGER); @@ -1563,10 +1626,30 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api } WebstorePrivateGetExtensionStatusFunction:: +diff --git a/chrome/browser/lookalikes/lookalike_url_controller_client.cc b/chrome/browser/lookalikes/lookalike_url_controller_client.cc +--- a/chrome/browser/lookalikes/lookalike_url_controller_client.cc ++++ b/chrome/browser/lookalikes/lookalike_url_controller_client.cc +@@ -9,7 +9,6 @@ + + #include "chrome/browser/browser_process.h" + #include "chrome/browser/profiles/profile.h" +-#include "chrome/browser/reputation/reputation_service.h" + #include "chrome/common/url_constants.h" + #include "components/security_interstitials/content/settings_page_helper.h" + #include "components/security_interstitials/core/metrics_helper.h" +@@ -56,8 +55,5 @@ void LookalikeUrlControllerClient::GoBack() { + } + + void LookalikeUrlControllerClient::Proceed() { +- ReputationService::Get( +- Profile::FromBrowserContext(web_contents_->GetBrowserContext())) +- ->SetUserIgnore(request_url_); + Reload(); + } 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 -@@ -759,9 +759,6 @@ void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() { +@@ -777,9 +777,6 @@ void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() { metrics_service_->RegisterMetricsProvider( std::make_unique()); @@ -1579,7 +1662,7 @@ diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/br diff --git a/chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc b/chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc --- a/chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc +++ b/chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc -@@ -18,7 +18,6 @@ +@@ -20,7 +20,6 @@ #include "chrome/browser/native_file_system/native_file_system_permission_context_factory.h" #include "chrome/browser/native_file_system/native_file_system_permission_request_manager.h" #include "chrome/browser/profiles/profile.h" @@ -1587,7 +1670,7 @@ diff --git a/chrome/browser/native_file_system/chrome_native_file_system_permiss #include "chrome/browser/ui/native_file_system_dialogs.h" #include "chrome/common/chrome_paths.h" #include "components/content_settings/core/browser/host_content_settings_map.h" -@@ -226,6 +225,7 @@ BindResultCallbackToCurrentSequence( +@@ -231,6 +230,7 @@ BindResultCallbackToCurrentSequence( base::SequencedTaskRunnerHandle::Get(), std::move(callback)); } @@ -1595,7 +1678,7 @@ diff --git a/chrome/browser/native_file_system/chrome_native_file_system_permiss void DoSafeBrowsingCheckOnUIThread( content::GlobalFrameRoutingId frame_id, std::unique_ptr item, -@@ -298,6 +298,7 @@ InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) { +@@ -303,6 +303,7 @@ InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) { NOTREACHED(); return ChromeNativeFileSystemPermissionContext::AfterWriteCheckResult::kBlock; } @@ -1603,7 +1686,7 @@ diff --git a/chrome/browser/native_file_system/chrome_native_file_system_permiss } // namespace -@@ -372,6 +373,7 @@ void ChromeNativeFileSystemPermissionContext::ConfirmSensitiveDirectoryAccess( +@@ -379,6 +380,7 @@ void ChromeNativeFileSystemPermissionContext::ConfirmSensitiveDirectoryAccess( std::move(callback))); } @@ -1611,7 +1694,7 @@ diff --git a/chrome/browser/native_file_system/chrome_native_file_system_permiss void ChromeNativeFileSystemPermissionContext::PerformAfterWriteChecks( std::unique_ptr item, content::GlobalFrameRoutingId frame_id, -@@ -394,6 +396,7 @@ void ChromeNativeFileSystemPermissionContext::PerformAfterWriteChecks( +@@ -401,6 +403,7 @@ void ChromeNativeFileSystemPermissionContext::PerformAfterWriteChecks( }, base::SequencedTaskRunnerHandle::Get(), std::move(callback)))); } @@ -1630,7 +1713,7 @@ diff --git a/chrome/browser/native_file_system/chrome_native_file_system_permiss #include "content/public/browser/native_file_system_permission_context.h" #include "third_party/blink/public/mojom/permissions/permission_status.mojom.h" -@@ -52,10 +53,12 @@ class ChromeNativeFileSystemPermissionContext +@@ -53,10 +54,12 @@ class ChromeNativeFileSystemPermissionContext HandleType handle_type, content::GlobalFrameRoutingId frame_id, base::OnceCallback callback) override; @@ -1659,7 +1742,7 @@ diff --git a/chrome/browser/net/trial_comparison_cert_verifier_controller.cc b/c diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc -@@ -1364,6 +1364,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage( +@@ -1423,6 +1423,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage( is_enabled = false; } @@ -1667,7 +1750,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b // SafeBrowsing Delayed Warnings experiment can delay some SafeBrowsing // warnings until user interaction. If the current page has a delayed warning, // it'll have a user interaction observer attached. Disable password -@@ -1374,6 +1375,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage( +@@ -1433,6 +1434,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage( observer->OnPasswordSaveOrAutofillDenied(); is_enabled = false; } @@ -1678,7 +1761,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b diff --git a/chrome/browser/permissions/abusive_origin_permission_revocation_request.cc b/chrome/browser/permissions/abusive_origin_permission_revocation_request.cc --- a/chrome/browser/permissions/abusive_origin_permission_revocation_request.cc +++ b/chrome/browser/permissions/abusive_origin_permission_revocation_request.cc -@@ -122,6 +122,7 @@ void AbusiveOriginPermissionRevocationRequest::CheckAndRevokeIfAbusive() { +@@ -120,6 +120,7 @@ void AbusiveOriginPermissionRevocationRequest::CheckAndRevokeIfAbusive() { return; } @@ -1686,7 +1769,7 @@ diff --git a/chrome/browser/permissions/abusive_origin_permission_revocation_req CrowdDenyPreloadData* crowd_deny = CrowdDenyPreloadData::GetInstance(); permissions::PermissionUmaUtil::RecordCrowdDenyIsLoadedAtAbuseCheckTime( crowd_deny->is_loaded_from_disk()); -@@ -147,6 +148,7 @@ void AbusiveOriginPermissionRevocationRequest::CheckAndRevokeIfAbusive() { +@@ -145,6 +146,7 @@ void AbusiveOriginPermissionRevocationRequest::CheckAndRevokeIfAbusive() { return; } } @@ -1697,23 +1780,30 @@ diff --git a/chrome/browser/permissions/abusive_origin_permission_revocation_req diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc --- a/chrome/browser/permissions/chrome_permissions_client.cc +++ b/chrome/browser/permissions/chrome_permissions_client.cc -@@ -15,7 +15,6 @@ +@@ -17,7 +17,6 @@ #include "chrome/browser/metrics/ukm_background_recorder_service.h" #include "chrome/browser/permissions/abusive_origin_permission_revocation_request.h" #include "chrome/browser/permissions/adaptive_quiet_notification_permission_ui_enabler.h" -#include "chrome/browser/permissions/contextual_notification_permission_ui_selector.h" #include "chrome/browser/permissions/permission_decision_auto_blocker_factory.h" #include "chrome/browser/permissions/permission_manager_factory.h" - #include "chrome/browser/permissions/quiet_notification_permission_ui_config.h" -@@ -195,13 +194,6 @@ ChromePermissionsClient::GetOverrideIconId(ContentSettingsType type) { + #include "chrome/browser/permissions/prediction_based_permission_ui_selector.h" +@@ -199,20 +198,6 @@ ChromePermissionsClient::GetOverrideIconId(ContentSettingsType type) { return PermissionsClient::GetOverrideIconId(type); } --std::unique_ptr --ChromePermissionsClient::CreateNotificationPermissionUiSelector( +-std::vector> +-ChromePermissionsClient::CreateNotificationPermissionUiSelectors( - content::BrowserContext* browser_context) { -- return std::make_unique( -- Profile::FromBrowserContext(browser_context)); +- std::vector> +- selectors; +- selectors.emplace_back( +- std::make_unique()); +- selectors.emplace_back(std::make_unique( +- Profile::FromBrowserContext(browser_context))); +- selectors.emplace_back(std::make_unique( +- Profile::FromBrowserContext(browser_context))); +- return selectors; -} - void ChromePermissionsClient::OnPromptResolved( @@ -1726,8 +1816,8 @@ diff --git a/chrome/browser/permissions/chrome_permissions_client.h b/chrome/bro GetUkmSourceIdCallback callback) override; permissions::PermissionRequest::IconId GetOverrideIconId( ContentSettingsType type) override; -- std::unique_ptr -- CreateNotificationPermissionUiSelector( +- std::vector> +- CreateNotificationPermissionUiSelectors( - content::BrowserContext* browser_context) override; void OnPromptResolved(content::BrowserContext* browser_context, permissions::PermissionRequestType request_type, @@ -1735,18 +1825,26 @@ diff --git a/chrome/browser/permissions/chrome_permissions_client.h b/chrome/bro 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 -@@ -244,7 +244,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -63,7 +63,6 @@ + #include "chrome/browser/prefs/pref_metrics_service.h" + #include "chrome/browser/profiles/gaia_info_update_service_factory.h" + #include "chrome/browser/profiles/renderer_updater_factory.h" +-#include "chrome/browser/safe_browsing/certificate_reporting_service_factory.h" + #include "chrome/browser/search/suggestions/suggestions_service_factory.h" + #include "chrome/browser/search_engines/template_url_fetcher_factory.h" + #include "chrome/browser/search_engines/template_url_service_factory.h" +@@ -249,7 +248,6 @@ void ChromeBrowserMainExtraPartsProfiles:: #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION) CaptivePortalServiceFactory::GetInstance(); #endif - CertificateReportingServiceFactory::GetInstance(); - ChromeBrowsingDataRemoverDelegateFactory::GetInstance(); - ChromeSigninClientFactory::GetInstance(); - ClientHintsFactory::GetInstance(); + #if !defined(OS_ANDROID) + ChromeBrowsingDataLifetimeManagerFactory::GetInstance(); + #endif 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 -@@ -93,7 +93,6 @@ +@@ -92,7 +92,6 @@ #include "chrome/browser/profiles/profile_metrics.h" #include "chrome/browser/push_messaging/push_messaging_service_factory.h" #include "chrome/browser/push_messaging/push_messaging_service_impl.h" @@ -1774,23 +1872,23 @@ 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 -@@ -13,6 +13,7 @@ import("//build/config/deprecated_default_sources_assignment_filter.gni") - set_sources_assignment_filter(deprecated_default_sources_assignment_filter) +@@ -6,6 +6,7 @@ import("//components/safe_browsing/buildflags.gni") + import("//extensions/buildflags/buildflags.gni") static_library("safe_browsing") { + if (false) { sources = [ "chrome_controller_client.cc", "chrome_controller_client.h", -@@ -71,6 +72,7 @@ static_library("safe_browsing") { - ] +@@ -68,6 +69,7 @@ static_library("safe_browsing") { + } deps += [ "//extensions/browser" ] } + } if (safe_browsing_mode != 0) { # "Safe Browsing Basic" files used for safe browsing in full mode -@@ -136,7 +138,6 @@ static_library("safe_browsing") { +@@ -129,7 +131,6 @@ static_library("safe_browsing") { "//components/safe_browsing/content/triggers:ad_sampler_trigger", "//components/safe_browsing/content/triggers:suspicious_site_trigger", "//components/safe_browsing/core:csd_proto", @@ -1809,11 +1907,12 @@ diff --git a/chrome/browser/safe_browsing/android/BUILD.gn b/chrome/browser/safe "//components/safe_browsing/core/common:safe_browsing_prefs", "//components/signin/public/identity_manager", ] -@@ -28,8 +27,6 @@ android_library("java") { +@@ -27,9 +26,7 @@ android_library("java") { + "java/src/org/chromium/chrome/browser/safe_browsing/settings/EnhancedProtectionSettingsFragment.java", "java/src/org/chromium/chrome/browser/safe_browsing/settings/NoProtectionConfirmationDialog.java", "java/src/org/chromium/chrome/browser/safe_browsing/settings/RadioButtonGroupSafeBrowsingPreference.java", +- "java/src/org/chromium/chrome/browser/safe_browsing/settings/SafeBrowsingSettingsFragment.java", "java/src/org/chromium/chrome/browser/safe_browsing/settings/SafeBrowsingSettingsFragmentBase.java", -- "java/src/org/chromium/chrome/browser/safe_browsing/settings/SecuritySettingsFragment.java", - "java/src/org/chromium/chrome/browser/safe_browsing/settings/StandardProtectionSettingsFragment.java", ] deps = [ @@ -2063,7 +2162,7 @@ diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/br import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.safe_browsing.metrics.SettingsAccessPoint; --import org.chromium.chrome.browser.safe_browsing.settings.SecuritySettingsFragment; +-import org.chromium.chrome.browser.safe_browsing.settings.SafeBrowsingSettingsFragment; import org.chromium.chrome.browser.safety_check.SafetyCheckBridge.SafetyCheckCommonObserver; import org.chromium.chrome.browser.safety_check.SafetyCheckProperties.PasswordsState; import org.chromium.chrome.browser.safety_check.SafetyCheckProperties.SafeBrowsingState; @@ -2077,13 +2176,13 @@ diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/br - SafetyCheckInteractions.SAFE_BROWSING_MANAGE, - SafetyCheckInteractions.MAX_VALUE + 1); - String safeBrowsingSettingsClassName; -- if (ChromeFeatureList.isEnabled( -- ChromeFeatureList.SAFE_BROWSING_SECURITY_SECTION_UI)) { -- // Open the Security settings since the flag for them is enabled. -- safeBrowsingSettingsClassName = SecuritySettingsFragment.class.getName(); +- if (ChromeFeatureList.isEnabled(ChromeFeatureList.SAFE_BROWSING_SECTION_UI)) { +- // Open the Safe Browsing settings since the flag for them is enabled. +- safeBrowsingSettingsClassName = +- SafeBrowsingSettingsFragment.class.getName(); - p.getContext().startActivity(settingsLauncher.createSettingsActivityIntent( - p.getContext(), safeBrowsingSettingsClassName, -- SecuritySettingsFragment.createArguments( +- SafeBrowsingSettingsFragment.createArguments( - SettingsAccessPoint.SAFETY_CHECK))); - } else { - // Open the Sync and Services settings. @@ -2102,7 +2201,7 @@ diff --git a/chrome/browser/ssl/sct_reporting_service_factory.cc b/chrome/browse --- a/chrome/browser/ssl/sct_reporting_service_factory.cc +++ b/chrome/browser/ssl/sct_reporting_service_factory.cc @@ -7,7 +7,6 @@ - #include "base/bind_helpers.h" + #include "base/callback_helpers.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/safe_browsing/safe_browsing_service.h" @@ -2129,7 +2228,30 @@ diff --git a/chrome/browser/ssl/sct_reporting_service_factory.cc b/chrome/browse 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 -@@ -274,6 +274,7 @@ bool SecurityStateTabHelper::UsedPolicyInstalledCertificate() const { +@@ -15,7 +15,6 @@ + #include "build/build_config.h" + #include "chrome/browser/browser_process.h" + #include "chrome/browser/profiles/profile.h" +-#include "chrome/browser/reputation/reputation_web_contents_observer.h" + #include "chrome/browser/safe_browsing/safe_browsing_service.h" + #include "chrome/browser/safe_browsing/ui_manager.h" + #include "chrome/browser/ssl/known_interception_disclosure_infobar_delegate.h" +@@ -167,13 +166,8 @@ SecurityStateTabHelper::GetVisibleSecurityState() { + // information is still being initialized, thus no need to check for that. + state->malicious_content_status = GetMaliciousContentStatus(); + +- ReputationWebContentsObserver* reputation_web_contents_observer = +- ReputationWebContentsObserver::FromWebContents(web_contents()); + state->safety_tip_info = +- reputation_web_contents_observer +- ? reputation_web_contents_observer +- ->GetSafetyTipInfoForVisibleNavigation() +- : security_state::SafetyTipInfo( ++ security_state::SafetyTipInfo( + {security_state::SafetyTipStatus::kUnknown, GURL()}); + + // If both the on-form warning and the on-submit warning are enabled for mixed +@@ -274,6 +268,7 @@ bool SecurityStateTabHelper::UsedPolicyInstalledCertificate() const { security_state::MaliciousContentStatus SecurityStateTabHelper::GetMaliciousContentStatus() const { @@ -2137,7 +2259,7 @@ diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ss content::NavigationEntry* entry = web_contents()->GetController().GetVisibleEntry(); if (!entry) -@@ -360,6 +361,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const { +@@ -360,6 +355,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const { break; } } @@ -2148,7 +2270,7 @@ diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ss diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc --- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc +++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc -@@ -167,10 +167,14 @@ void ChromeSubresourceFilterClient::AllowlistByContentSettings( +@@ -205,10 +205,14 @@ void ChromeSubresourceFilterClient::AllowlistByContentSettings( const scoped_refptr ChromeSubresourceFilterClient::GetSafeBrowsingDatabaseManager() { @@ -2166,7 +2288,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 -@@ -3454,7 +3454,6 @@ static_library("ui") { +@@ -3513,7 +3513,6 @@ static_library("ui") { "views/device_chooser_content_view.h", "views/devtools_process_observer.cc", "views/devtools_process_observer.h", @@ -2203,7 +2325,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Cancel sync? -@@ -714,12 +702,6 @@ CHAR-LIMIT guidelines: +@@ -743,12 +731,6 @@ CHAR-LIMIT guidelines: Privacy and security @@ -2216,7 +2338,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Safe Browsing (protects you and your device from dangerous sites) -@@ -3889,9 +3871,6 @@ Data from your Incognito session will only be cleared from Chrome when you You can see sites you visit in Chrome and set timers for them.\n\nGoogle gets info about the sites you set timers for and how long you visit them. This info is used to make Digital Wellbeing better. @@ -2229,9 +2351,11 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro 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 -@@ -58,9 +58,6 @@ +@@ -57,11 +57,7 @@ + #include "chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.h" + #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_key.h" - #include "chrome/browser/reputation/reputation_web_contents_observer.h" +-#include "chrome/browser/reputation/reputation_web_contents_observer.h" #include "chrome/browser/resource_coordinator/tab_helper.h" -#include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" -#include "chrome/browser/safe_browsing/safe_browsing_tab_observer.h" @@ -2239,7 +2363,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc #include "chrome/browser/sessions/session_tab_helper_factory.h" #include "chrome/browser/ssl/chrome_security_blocking_page_factory.h" #include "chrome/browser/ssl/connection_help_tab_helper.h" -@@ -308,11 +305,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -310,12 +306,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { resource_coordinator::ResourceCoordinatorTabHelper::CreateForWebContents( web_contents); ResourceLoadingHintsWebContentsObserver::CreateForWebContents(web_contents); @@ -2248,9 +2372,10 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc - safe_browsing::SafeBrowsingTabObserver::CreateForWebContents(web_contents); - safe_browsing::TriggerCreator::MaybeCreateTriggersForWebContents( - profile, web_contents); - ReputationWebContentsObserver::CreateForWebContents(web_contents); +- ReputationWebContentsObserver::CreateForWebContents(web_contents); SearchEngineTabHelper::CreateForWebContents(web_contents); SecurityStateTabHelper::CreateForWebContents(web_contents); + if (SiteEngagementService::IsEnabled()) 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 @@ -2306,7 +2431,7 @@ diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/b diff --git a/chrome/common/safe_browsing/BUILD.gn b/chrome/common/safe_browsing/BUILD.gn --- a/chrome/common/safe_browsing/BUILD.gn +++ b/chrome/common/safe_browsing/BUILD.gn -@@ -28,7 +28,6 @@ if (safe_browsing_mode == 1) { +@@ -21,7 +21,6 @@ if (safe_browsing_mode == 1) { ":download_type_util", "//base", "//base:i18n", @@ -2314,7 +2439,7 @@ diff --git a/chrome/common/safe_browsing/BUILD.gn b/chrome/common/safe_browsing/ "//crypto", ] if (is_mac) { -@@ -45,7 +44,6 @@ if (safe_browsing_mode == 1) { +@@ -38,7 +37,6 @@ if (safe_browsing_mode == 1) { deps = [ "//base", "//components/safe_browsing/core:features", @@ -2322,7 +2447,7 @@ diff --git a/chrome/common/safe_browsing/BUILD.gn b/chrome/common/safe_browsing/ ] public_deps = [ "//components/safe_browsing/core:csd_proto" ] } -@@ -62,7 +60,6 @@ if (safe_browsing_mode == 1) { +@@ -55,7 +53,6 @@ if (safe_browsing_mode == 1) { "//base", "//base:i18n", "//components/safe_browsing/core:features", @@ -2343,8 +2468,8 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc @@ -95,7 +95,9 @@ - #include "components/prerender/renderer/prerender_utils.h" - #include "components/prerender/renderer/prerenderer_client.h" + #include "components/paint_preview/buildflags/buildflags.h" + #include "components/pdf/renderer/pepper_pdf_host.h" #include "components/safe_browsing/buildflags.h" +#if defined(FULL_SAFE_BROWSING) #include "components/safe_browsing/content/renderer/threat_dom_details.h" @@ -2382,17 +2507,17 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p bool IsMessageTextEqual(PermissionRequest* a, PermissionRequest* b) { if (a == b) return true; -@@ -414,10 +434,10 @@ PermissionRequestManager::PermissionRequestManager( +@@ -449,10 +469,10 @@ PermissionRequestManager::PermissionRequestManager( view_(nullptr), tab_is_hidden_(web_contents->GetVisibility() == content::Visibility::HIDDEN), - auto_response_for_test_(NONE), -- notification_permission_ui_selector_( -- PermissionsClient::Get()->CreateNotificationPermissionUiSelector( +- notification_permission_ui_selectors_( +- PermissionsClient::Get()->CreateNotificationPermissionUiSelectors( - web_contents->GetBrowserContext())) {} + auto_response_for_test_(NONE) { -+ notification_permission_ui_selector_ = -+ std::make_unique(); ++ notification_permission_ui_selectors_.emplace_back( ++ std::make_unique()); +} void PermissionRequestManager::ScheduleShowBubble() { @@ -2400,7 +2525,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p diff --git a/components/safe_browsing/core/features.cc b/components/safe_browsing/core/features.cc --- a/components/safe_browsing/core/features.cc +++ b/components/safe_browsing/core/features.cc -@@ -142,7 +142,7 @@ const base::Feature kSafeBrowsingSecuritySectionUIAndroid{ +@@ -139,7 +139,7 @@ const base::Feature kSafeBrowsingSectionUIAndroid{ "SafeBrowsingSecuritySectionUIAndroid", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kSuspiciousSiteTriggerQuotaFeature{ @@ -2581,7 +2706,7 @@ diff --git a/content/browser/file_system_access/native_file_system_file_writer_i diff --git a/content/public/browser/native_file_system_permission_context.h b/content/public/browser/native_file_system_permission_context.h --- a/content/public/browser/native_file_system_permission_context.h +++ b/content/public/browser/native_file_system_permission_context.h -@@ -85,12 +85,6 @@ class NativeFileSystemPermissionContext { +@@ -99,12 +99,6 @@ class NativeFileSystemPermissionContext { base::OnceCallback callback) = 0; enum class AfterWriteCheckResult { kAllow, kBlock }; diff --git a/build/patches/Disable-seed-based-field-trials.patch b/build/patches/Disable-seed-based-field-trials.patch index a4aaba06..38d8ab72 100644 --- a/build/patches/Disable-seed-based-field-trials.patch +++ b/build/patches/Disable-seed-based-field-trials.patch @@ -9,17 +9,17 @@ 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 -@@ -521,8 +521,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials( +@@ -523,8 +523,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials( #endif // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED) bool used_seed = false; if (!used_testing_config) { +#if defined(FIELDTRIAL_SEED_ENABLED) - used_seed = CreateTrialsFromSeed(std::move(low_entropy_provider), - feature_list.get(), safe_seed_manager); + used_seed = CreateTrialsFromSeed(*low_entropy_provider, feature_list.get(), + safe_seed_manager); +#endif } - platform_field_trials->SetupFeatureControllingFieldTrials(used_seed, + platform_field_trials->SetupFeatureControllingFieldTrials( -- 2.17.1 diff --git a/build/patches/Disable-smart-selection-by-default.patch b/build/patches/Disable-smart-selection-by-default.patch index 4e76797e..9ebe6c8f 100644 --- a/build/patches/Disable-smart-selection-by-default.patch +++ b/build/patches/Disable-smart-selection-by-default.patch @@ -15,7 +15,7 @@ leak information through the TextClassifier set by OEM, if any diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -440,7 +440,7 @@ const base::Feature kDownloadProgressInfoBar{"DownloadProgressInfoBar", +@@ -476,7 +476,7 @@ const base::Feature kDownloadProgressInfoBar{"DownloadProgressInfoBar", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kDownloadFileProvider{"DownloadFileProvider", @@ -27,7 +27,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java -@@ -814,7 +814,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -831,7 +831,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper menu.removeItem(R.id.select_action_menu_share); } diff --git a/build/patches/Disable-some-signed-exchange-features.patch b/build/patches/Disable-some-signed-exchange-features.patch index 40b0aa91..1b358216 100644 --- a/build/patches/Disable-some-signed-exchange-features.patch +++ b/build/patches/Disable-some-signed-exchange-features.patch @@ -9,7 +9,7 @@ Subject: Disable some signed exchange features diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -631,7 +631,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{ +@@ -615,7 +615,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{ // Signed Exchange Reporting for distributors // https://www.chromestatus.com/features/5687904902840320 const base::Feature kSignedExchangeReportingForDistributors{ @@ -18,7 +18,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c // Subresource prefetching+loading via Signed HTTP Exchange // https://www.chromestatus.com/features/5126805474246656 -@@ -641,7 +641,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{ +@@ -625,7 +625,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{ // Origin-Signed HTTP Exchanges (for WebPackage Loading) // https://www.chromestatus.com/features/5745285984681984 const base::Feature kSignedHTTPExchange{"SignedHTTPExchange", diff --git a/build/patches/Disable-support-for-RAR-files-inspection.patch b/build/patches/Disable-support-for-RAR-files-inspection.patch index b6db47ec..748382f3 100644 --- a/build/patches/Disable-support-for-RAR-files-inspection.patch +++ b/build/patches/Disable-support-for-RAR-files-inspection.patch @@ -23,7 +23,7 @@ diff --git a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc b diff --git a/chrome/common/safe_browsing/BUILD.gn b/chrome/common/safe_browsing/BUILD.gn --- a/chrome/common/safe_browsing/BUILD.gn +++ b/chrome/common/safe_browsing/BUILD.gn -@@ -48,38 +48,6 @@ if (safe_browsing_mode == 1) { +@@ -41,38 +41,6 @@ if (safe_browsing_mode == 1) { public_deps = [ "//components/safe_browsing/core:csd_proto" ] } @@ -59,9 +59,9 @@ diff --git a/chrome/common/safe_browsing/BUILD.gn b/chrome/common/safe_browsing/ - public_deps = [ "//components/safe_browsing/core:csd_proto" ] - } - - source_set("disk_image_type_sniffer_mac") { - sources = [ - "disk_image_type_sniffer_mac.cc", + if (is_mac) { + source_set("disk_image_type_sniffer_mac") { + sources = [ @@ -142,7 +110,6 @@ source_set("safe_browsing") { ":archive_analyzer_results", ":binary_feature_extractor", diff --git a/build/patches/Disable-sync-services-menu-entry.patch b/build/patches/Disable-sync-services-menu-entry.patch index 28667269..a334faa8 100644 --- a/build/patches/Disable-sync-services-menu-entry.patch +++ b/build/patches/Disable-sync-services-menu-entry.patch @@ -52,7 +52,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/sync/settings/SyncSettingsUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncSettingsUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncSettingsUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncSettingsUtils.java -@@ -256,23 +256,6 @@ public class SyncSettingsUtils { +@@ -257,23 +257,6 @@ public class SyncSettingsUtils { } boolean syncEnabled = AndroidSyncSettings.get().isSyncEnabled(); diff --git a/build/patches/Disable-text-fragments-by-default.patch b/build/patches/Disable-text-fragments-by-default.patch index 2899c7b7..862f64b0 100644 --- a/build/patches/Disable-text-fragments-by-default.patch +++ b/build/patches/Disable-text-fragments-by-default.patch @@ -17,9 +17,9 @@ Revert "[Text Fragment] Unflag fragment directive removal." 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 -@@ -5258,6 +5258,7 @@ const FeatureEntry kFeatureEntries[] = { - flag_descriptions::kEnableCSSOMViewScrollCoordinatesDescription, kOsAll, - FEATURE_VALUE_TYPE(blink::features::kCSSOMViewScrollCoordinates)}, +@@ -5164,6 +5164,7 @@ const FeatureEntry kFeatureEntries[] = { + flag_descriptions::kEnableImplicitRootScrollerDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kImplicitRootScroller)}, + // will override runtime text fragment identifiers setting too {"enable-text-fragment-anchor", @@ -28,7 +28,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -2221,7 +2221,7 @@ +@@ -2267,7 +2267,7 @@ { "name": "enable-text-fragment-anchor", "owners": [ "bokan", "input-dev" ], @@ -53,17 +53,17 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc @@ -269,6 +269,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() { - {wf::EnableImplicitRootScroller, blink::features::kImplicitRootScroller}, - {wf::EnableCSSOMViewScrollCoordinates, - blink::features::kCSSOMViewScrollCoordinates}, -+ // will set the TextFragmentIdentifiers runtime feature - {wf::EnableTextFragmentAnchor, blink::features::kTextFragmentAnchor}, {wf::EnableBackgroundFetch, features::kBackgroundFetch}, {wf::EnableForcedColors, features::kForcedColors}, + {wf::EnableFractionalScrollOffsets, features::kFractionalScrollOffsets}, ++ // will set the TextFragmentIdentifiers runtime feature + #if defined(OS_ANDROID) + {wf::EnableGetDisplayMedia, features::kUserMediaScreenCapturing}, + #endif diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -286,7 +286,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI", +@@ -289,7 +289,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI", // Enable text snippets in URL fragments. https://crbug.com/919204. const base::Feature kTextFragmentAnchor{"TextFragmentAnchor", @@ -75,7 +75,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea 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 -@@ -4432,6 +4432,10 @@ void Document::SetURL(const KURL& url) { +@@ -4462,6 +4462,10 @@ void Document::SetURL(const KURL& url) { } } @@ -86,7 +86,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink // Strip the fragment directive from the URL fragment. E.g. "#id:~:text=a" // --> "#id". See https://github.com/WICG/scroll-to-text-fragment. String fragment = new_url.FragmentIdentifier(); -@@ -4445,6 +4449,7 @@ void Document::SetURL(const KURL& url) { +@@ -4475,6 +4479,7 @@ void Document::SetURL(const KURL& url) { else new_url.SetFragmentIdentifier(fragment.Substring(0, start_pos)); } @@ -97,7 +97,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc -@@ -952,34 +952,25 @@ TEST_P(TextFragmentRelatedMetricTest, ElementIdSuccessFailureCounts) { +@@ -1164,34 +1164,25 @@ TEST_P(TextFragmentRelatedMetricTest, ElementIdSuccessFailureCounts) { // result of the element-id fragment if a text directive is successfully // parsed. If the feature is off we treat the text directive as an element-id // and should count the result. @@ -145,7 +145,7 @@ diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor 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 -@@ -1862,8 +1862,7 @@ +@@ -1926,8 +1926,7 @@ }, { name: "TextFragmentIdentifiers", diff --git a/build/patches/Disable-third-party-cookies-by-default.patch b/build/patches/Disable-third-party-cookies-by-default.patch index 2da3647e..dbb64131 100644 --- a/build/patches/Disable-third-party-cookies-by-default.patch +++ b/build/patches/Disable-third-party-cookies-by-default.patch @@ -10,7 +10,7 @@ author: Chad Miller diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -535,7 +535,7 @@ void RegisterProfilePrefsForMigration( +@@ -549,7 +549,7 @@ void RegisterProfilePrefsForMigration( registry->RegisterDictionaryPref(kObservedSessionTime); diff --git a/build/patches/Disable-unified-autoplay-feature.patch b/build/patches/Disable-unified-autoplay-feature.patch index 7592a337..2b6664ae 100644 --- a/build/patches/Disable-unified-autoplay-feature.patch +++ b/build/patches/Disable-unified-autoplay-feature.patch @@ -9,15 +9,15 @@ Subject: Disable unified autoplay feature 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 -@@ -421,7 +421,7 @@ const base::Feature kUseR16Texture{"use-r16-texture", +@@ -422,7 +422,7 @@ const base::Feature kUseR16Texture{"use-r16-texture", // Enables the Unified Autoplay policy by overriding the platform's default // autoplay policy. const base::Feature kUnifiedAutoplay{"UnifiedAutoplay", - base::FEATURE_ENABLED_BY_DEFAULT}; + base::FEATURE_DISABLED_BY_DEFAULT}; - // Enable VA-API hardware low power encoder for all codecs on intel Gen9x gpu. - const base::Feature kVaapiLowPowerEncoderGen9x{ + // Enable VA-API hardware decode acceleration for AV1. + const base::Feature kVaapiAV1Decoder{"VaapiAV1Decoder", -- 2.17.1 diff --git a/build/patches/Disable-update-scheduler.patch b/build/patches/Disable-update-scheduler.patch index dc285745..6c2366e4 100644 --- a/build/patches/Disable-update-scheduler.patch +++ b/build/patches/Disable-update-scheduler.patch @@ -3,20 +3,19 @@ Date: Sat, 27 Oct 2018 17:54:01 +0200 Subject: Disable update scheduler --- - .../chrome/browser/component_updater/UpdateScheduler.java | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) + .../chrome/browser/component_updater/UpdateScheduler.java | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java -@@ -36,10 +36,7 @@ public class UpdateScheduler { +@@ -34,9 +34,7 @@ public class UpdateScheduler { @CalledByNative /* package */ static boolean isAvailable() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -- || GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( -- ContextUtils.getApplicationContext()) -- == ConnectionResult.SUCCESS; +- || ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable( +- ContextUtils.getApplicationContext()); + return false; } diff --git a/build/patches/Do-not-compile-QR-code-sharing.patch b/build/patches/Do-not-compile-QR-code-sharing.patch index dfdc91b6..c063dc8b 100644 --- a/build/patches/Do-not-compile-QR-code-sharing.patch +++ b/build/patches/Do-not-compile-QR-code-sharing.patch @@ -18,7 +18,7 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s import org.chromium.chrome.browser.share.screenshot.ScreenshotCoordinator; import org.chromium.chrome.browser.share.send_tab_to_self.SendTabToSelfCoordinator; import org.chromium.chrome.browser.share.share_sheet.ShareSheetPropertyModelBuilder.ContentType; -@@ -222,10 +221,6 @@ class ChromeProvidedSharingOptionsProvider { +@@ -229,10 +228,6 @@ class ChromeProvidedSharingOptionsProvider { && ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_HIGHLIGHTS_ANDROID)) { mOrderedFirstPartyOptions.add(createHighlightsFirstPartyOption()); } @@ -29,7 +29,7 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s if (UserPrefs.get(Profile.getLastUsedRegularProfile()).getBoolean(Pref.PRINTING_ENABLED)) { mOrderedFirstPartyOptions.add(createPrintingFirstPartyOption()); } -@@ -344,18 +339,6 @@ class ChromeProvidedSharingOptionsProvider { +@@ -352,18 +347,6 @@ class ChromeProvidedSharingOptionsProvider { .build(); } @@ -73,9 +73,9 @@ diff --git a/chrome/browser/share/android/java_sources.gni b/chrome/browser/shar - "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareView.java", - "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewBinder.java", - "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewProperties.java", + "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/EditorScreenshotSource.java", + "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/EditorScreenshotTask.java", "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/ScreenshotCoordinator.java", - "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/ScreenshotShareSheetCoordinator.java", - "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/ScreenshotShareSheetDialog.java", -- 2.17.1 diff --git a/build/patches/Do-not-hide-component-extensions.patch b/build/patches/Do-not-hide-component-extensions.patch index 8ba12392..9e1110a1 100644 --- a/build/patches/Do-not-hide-component-extensions.patch +++ b/build/patches/Do-not-hide-component-extensions.patch @@ -9,7 +9,7 @@ Subject: Do not hide component extensions diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc --- a/extensions/common/extension.cc +++ b/extensions/common/extension.cc -@@ -361,9 +361,8 @@ bool Extension::ShouldDisplayInNewTabPage() const { +@@ -378,9 +378,8 @@ bool Extension::ShouldDisplayInNewTabPage() const { } bool Extension::ShouldExposeViaManagementAPI() const { diff --git a/build/patches/Do-not-ignore-download-location-prompt-setting.patch b/build/patches/Do-not-ignore-download-location-prompt-setting.patch index 481f59c5..da824274 100644 --- a/build/patches/Do-not-ignore-download-location-prompt-setting.patch +++ b/build/patches/Do-not-ignore-download-location-prompt-setting.patch @@ -15,7 +15,7 @@ Do not tick "Don't show again" by default diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java --- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java +++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java -@@ -73,10 +73,6 @@ public class DownloadLocationCustomView +@@ -75,10 +75,6 @@ public class DownloadLocationCustomView CharSequence title) { mDialogType = dialogType; diff --git a/build/patches/Do-not-store-passwords-by-default.patch b/build/patches/Do-not-store-passwords-by-default.patch index 87c1e363..92051c87 100644 --- a/build/patches/Do-not-store-passwords-by-default.patch +++ b/build/patches/Do-not-store-passwords-by-default.patch @@ -9,7 +9,7 @@ Subject: Do not store passwords by default diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc --- a/components/password_manager/core/browser/password_manager.cc +++ b/components/password_manager/core/browser/password_manager.cc -@@ -205,10 +205,10 @@ FormData SimplifiedFormDataFromFormStructure( +@@ -207,10 +207,10 @@ FormData SimplifiedFormDataFromFormStructure( void PasswordManager::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( diff --git a/build/patches/Enable-SPPI-for-devices-with-enough-memory.patch b/build/patches/Enable-SPPI-for-devices-with-enough-memory.patch index 2c5c2267..452d7e4a 100644 --- a/build/patches/Enable-SPPI-for-devices-with-enough-memory.patch +++ b/build/patches/Enable-SPPI-for-devices-with-enough-memory.patch @@ -10,7 +10,7 @@ Subject: Enable SPPI for devices with enough memory diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc -@@ -724,11 +724,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL", +@@ -752,11 +752,7 @@ const base::Feature kShow10_10ObsoleteInfobar{ // browser_features, as they are only used on the browser side. const base::Feature kSitePerProcess { "site-per-process", diff --git a/build/patches/Enable-darken-websites-checkbox-in-themes.patch b/build/patches/Enable-darken-websites-checkbox-in-themes.patch index ab6e3449..844571ca 100644 --- a/build/patches/Enable-darken-websites-checkbox-in-themes.patch +++ b/build/patches/Enable-darken-websites-checkbox-in-themes.patch @@ -11,7 +11,7 @@ Unexpire #darken-websites-checkbox-in-themes-setting diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -913,7 +913,7 @@ +@@ -952,7 +952,7 @@ { "name": "disable-keepalive-fetch", "owners": [ "yhirano" ], @@ -23,7 +23,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -428,7 +428,7 @@ const base::Feature kContextualSearchTranslations{ +@@ -464,7 +464,7 @@ const base::Feature kContextualSearchTranslations{ "ContextualSearchTranslations", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kDarkenWebsitesCheckboxInThemesSetting{ diff --git a/build/patches/Enable-legacy-TLS-interstitital-warning.patch b/build/patches/Enable-legacy-TLS-interstitital-warning.patch index 13446295..4c3c7b72 100644 --- a/build/patches/Enable-legacy-TLS-interstitital-warning.patch +++ b/build/patches/Enable-legacy-TLS-interstitital-warning.patch @@ -15,7 +15,7 @@ Expose show-legacy-tls-warnings flag on Android as well diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -6045,11 +6045,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -5956,11 +5956,9 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kElasticOverscrollWin)}, #endif @@ -74,7 +74,7 @@ diff --git a/components/security_state/core/features.cc b/components/security_st diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -152,7 +152,7 @@ const base::Feature kTurnOffStreamingMediaCachingAlways{ +@@ -150,7 +150,7 @@ const base::Feature kTurnOffStreamingMediaCachingAlways{ "TurnOffStreamingMediaCachingAlways", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kLegacyTLSEnforced{"LegacyTLSEnforced", diff --git a/build/patches/Enable-network-isolation-features.patch b/build/patches/Enable-network-isolation-features.patch index 8fcb2bf2..db280875 100644 --- a/build/patches/Enable-network-isolation-features.patch +++ b/build/patches/Enable-network-isolation-features.patch @@ -12,7 +12,7 @@ kPartitionSSLSessionsByNetworkIsolationKey diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -61,22 +61,22 @@ const base::Feature kNetworkQualityEstimator{"NetworkQualityEstimator", +@@ -71,22 +71,22 @@ const base::Feature kNetworkQualityEstimator{"NetworkQualityEstimator", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kSplitCacheByNetworkIsolationKey{ diff --git a/build/patches/Enable-prefetch-privacy-changes-by-default.patch b/build/patches/Enable-prefetch-privacy-changes-by-default.patch index 2ac069de..89358f52 100644 --- a/build/patches/Enable-prefetch-privacy-changes-by-default.patch +++ b/build/patches/Enable-prefetch-privacy-changes-by-default.patch @@ -9,7 +9,7 @@ Subject: Enable prefetch-privacy-changes by default diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -308,7 +308,7 @@ const base::Feature kWebComponentsV0{"WebComponentsV0", +@@ -310,7 +310,7 @@ const base::Feature kFontAccessChooser{"FontAccessChooser", // Prefetch request properties are updated to be privacy-preserving. See // crbug.com/988956. const base::Feature kPrefetchPrivacyChanges{"PrefetchPrivacyChanges", diff --git a/build/patches/Enable-reduced-referrer-granularity-by-default.patch b/build/patches/Enable-reduced-referrer-granularity-by-default.patch index 79b10322..d47a0320 100644 --- a/build/patches/Enable-reduced-referrer-granularity-by-default.patch +++ b/build/patches/Enable-reduced-referrer-granularity-by-default.patch @@ -9,15 +9,15 @@ Subject: Enable reduced-referrer-granularity by default diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -741,7 +741,7 @@ const base::Feature kCompositingOptimizations{ +@@ -748,7 +748,7 @@ const base::Feature kCompositingOptimizations{ // Reduce the amount of information in the default 'referer' header for // cross-origin requests. const base::Feature kReducedReferrerGranularity{ - "ReducedReferrerGranularity", base::FEATURE_DISABLED_BY_DEFAULT}; + "ReducedReferrerGranularity", base::FEATURE_ENABLED_BY_DEFAULT}; - // Enables the user activated exponential delay in the ContentCapture task. - const base::Feature kContentCaptureUserActivatedDelay = { + // Enables the constant streaming in the ContentCapture task. + const base::Feature kContentCaptureConstantStreaming = { -- 2.17.1 diff --git a/build/patches/Enable-user-agent-freeze-by-default.patch b/build/patches/Enable-user-agent-freeze-by-default.patch index 17681db2..77bc297b 100644 --- a/build/patches/Enable-user-agent-freeze-by-default.patch +++ b/build/patches/Enable-user-agent-freeze-by-default.patch @@ -9,7 +9,7 @@ Subject: Enable user-agent freeze by default diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -52,7 +52,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{ +@@ -53,7 +53,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{ // Freezes the user-agent as part of https://github.com/WICG/ua-client-hints. const base::Feature kFreezeUserAgent{"FreezeUserAgent", diff --git a/build/patches/Hardening-against-incognito-mode-detection.patch b/build/patches/Hardening-against-incognito-mode-detection.patch index 715b78a0..5dfa75eb 100644 --- a/build/patches/Hardening-against-incognito-mode-detection.patch +++ b/build/patches/Hardening-against-incognito-mode-detection.patch @@ -3,21 +3,21 @@ Date: Sat, 5 Sep 2020 21:38:15 +0200 Subject: Hardening against incognito mode detection --- - storage/browser/quota/quota_features.cc | 2 +- + storage/browser/quota/quota_settings.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/storage/browser/quota/quota_features.cc b/storage/browser/quota/quota_features.cc ---- a/storage/browser/quota/quota_features.cc -+++ b/storage/browser/quota/quota_features.cc -@@ -19,7 +19,7 @@ const base::Feature kIncognitoDynamicQuota{"IncognitoDynamicQuota", - constexpr base::FeatureParam kIncognitoQuotaRatioLowerBound{ - &kIncognitoDynamicQuota, "IncognitoQuotaRatioLowerBound", 0.15}; - constexpr base::FeatureParam kIncognitoQuotaRatioUpperBound{ -- &kIncognitoDynamicQuota, "IncognitoQuotaRatioUpperBound", 0.2}; -+ &kIncognitoDynamicQuota, "IncognitoQuotaRatioUpperBound", 0.3}; +diff --git a/storage/browser/quota/quota_settings.cc b/storage/browser/quota/quota_settings.cc +--- a/storage/browser/quota/quota_settings.cc ++++ b/storage/browser/quota/quota_settings.cc +@@ -29,7 +29,7 @@ const int kRandomizedPercentage = 10; + const double kDefaultPerHostRatio = 0.75; + const double kDefaultPoolSizeRatio = 0.8; + const double kIncognitoQuotaRatioLowerBound = 0.15; +-const double kIncognitoQuotaRatioUpperBound = 0.2; ++const double kIncognitoQuotaRatioUpperBound = 0.3; - // Enables Storage Pressure Event. - const base::Feature kStoragePressureEvent{"StoragePressureEvent", + // Skews |value| by +/- |percent|. + int64_t RandomizeByPercent(int64_t value, int percent) { -- 2.17.1 diff --git a/build/patches/Hide-passwords-manager-link.patch b/build/patches/Hide-passwords-manager-link.patch index ddeef034..5266bc61 100644 --- a/build/patches/Hide-passwords-manager-link.patch +++ b/build/patches/Hide-passwords-manager-link.patch @@ -9,7 +9,7 @@ Subject: Hide passwords manager link diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java -@@ -315,7 +315,7 @@ public class PasswordSettings +@@ -314,7 +314,7 @@ public class PasswordSettings return; } @@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage PreferenceGroup passwordParent; if (mSearchQuery == null) { -@@ -391,7 +391,7 @@ public class PasswordSettings +@@ -390,7 +390,7 @@ public class PasswordSettings return; } diff --git a/build/patches/Hide-send-reports-checkbox.patch b/build/patches/Hide-send-reports-checkbox.patch index 0b0bd768..dfb12c85 100644 --- a/build/patches/Hide-send-reports-checkbox.patch +++ b/build/patches/Hide-send-reports-checkbox.patch @@ -9,10 +9,10 @@ Subject: Hide send reports checkbox diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml --- a/chrome/android/java/res/layout/fre_tosanduma.xml +++ b/chrome/android/java/res/layout/fre_tosanduma.xml -@@ -91,7 +91,7 @@ - android:layout_height="wrap_content" +@@ -92,7 +92,7 @@ android:lineSpacingMultiplier="1.4" android:text="@string/fre_send_report_check" + android:paddingStart="@dimen/fre_tos_checkbox_padding" - android:textAppearance="@style/TextAppearance.TextMedium.Primary" /> + android:textAppearance="@style/TextAppearance.TextMedium.Primary" android:visibility="gone" /> diff --git a/build/patches/Ignore-managed-state-for-secure-DNS.patch b/build/patches/Ignore-managed-state-for-secure-DNS.patch new file mode 100644 index 00000000..a404f5b2 --- /dev/null +++ b/build/patches/Ignore-managed-state-for-secure-DNS.patch @@ -0,0 +1,38 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Tue, 26 Jan 2021 00:21:51 +0100 +Subject: Ignore managed state for secure DNS + +--- + chrome/browser/net/stub_resolver_config_reader.cc | 3 +-- + chrome/browser/privacy/secure_dns_bridge.cc | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/net/stub_resolver_config_reader.cc +--- a/chrome/browser/net/stub_resolver_config_reader.cc ++++ b/chrome/browser/net/stub_resolver_config_reader.cc +@@ -269,8 +269,7 @@ SecureDnsConfig StubResolverConfigReader::GetAndUpdateConfiguration( + SecureDnsModeDetailsForHistogram mode_details; + SecureDnsConfig::ManagementMode forced_management_mode = + SecureDnsConfig::ManagementMode::kNoOverride; +- bool is_managed = +- local_state_->FindPreference(prefs::kDnsOverHttpsMode)->IsManaged(); ++ bool is_managed = false; + if (!is_managed && ShouldDisableDohForManaged()) { + secure_dns_mode = net::SecureDnsMode::kOff; + forced_management_mode = SecureDnsConfig::ManagementMode::kDisabledManaged; +diff --git a/chrome/browser/privacy/secure_dns_bridge.cc b/chrome/browser/privacy/secure_dns_bridge.cc +--- a/chrome/browser/privacy/secure_dns_bridge.cc ++++ b/chrome/browser/privacy/secure_dns_bridge.cc +@@ -86,8 +86,7 @@ static void JNI_SecureDnsBridge_SetMode(JNIEnv* env, jint mode) { + } + + static jboolean JNI_SecureDnsBridge_IsModeManaged(JNIEnv* env) { +- PrefService* local_state = g_browser_process->local_state(); +- return local_state->IsManagedPreference(prefs::kDnsOverHttpsMode); ++ return false; + } + + static ScopedJavaLocalRef JNI_SecureDnsBridge_GetProviders( +-- +2.17.1 + diff --git a/build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch b/build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch index b97dd585..171a1aea 100644 --- a/build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch +++ b/build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch @@ -11,7 +11,7 @@ Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc --- a/components/omnibox/browser/autocomplete_result.cc +++ b/components/omnibox/browser/autocomplete_result.cc -@@ -66,7 +66,8 @@ struct MatchGURLHash { +@@ -67,7 +67,8 @@ struct MatchGURLHash { // static size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) { #if (defined(OS_ANDROID)) @@ -24,7 +24,7 @@ diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omni diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc --- a/components/omnibox/browser/omnibox_field_trial.cc +++ b/components/omnibox/browser/omnibox_field_trial.cc -@@ -382,11 +382,11 @@ void OmniboxFieldTrial::GetDemotionsByType( +@@ -335,11 +335,11 @@ void OmniboxFieldTrial::GetDemotionsByType( size_t OmniboxFieldTrial::GetProviderMaxMatches( AutocompleteProvider::Type provider) { @@ -38,7 +38,7 @@ diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omni return default_max_matches_per_provider; std::string param_value = base::GetFieldTrialParamValueByFeature( -@@ -413,7 +413,7 @@ size_t OmniboxFieldTrial::GetProviderMaxMatches( +@@ -366,7 +366,7 @@ size_t OmniboxFieldTrial::GetProviderMaxMatches( else if (k == provider) return v; } diff --git a/build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch b/build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch index 8a5460f5..7a0ad993 100644 --- a/build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch +++ b/build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch @@ -7,7 +7,7 @@ Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com to al Set proper injection script nonce Send a random key press to circumvent idle status detection --- - third_party/blink/renderer/core/dom/BUILD.gn | 2 + + third_party/blink/renderer/core/dom/build.gni | 2 + .../blink/renderer/core/dom/document.cc | 62 +++++++++++++++++++ .../blink/renderer/core/dom/document.h | 3 + .../core/dom/extensions/anti_amp_cure.h | 6 ++ @@ -18,22 +18,22 @@ Send a random key press to circumvent idle status detection create mode 100644 third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h -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 -@@ -178,6 +178,8 @@ blink_core_sources("dom") { - "global_event_handlers.h", - "icon_url.cc", - "icon_url.h", -+ "extensions/anti_amp_cure.h", -+ "extensions/video_bg_play.h", - "id_target_observer.cc", - "id_target_observer.h", - "id_target_observer_registry.cc", +diff --git a/third_party/blink/renderer/core/dom/build.gni b/third_party/blink/renderer/core/dom/build.gni +--- a/third_party/blink/renderer/core/dom/build.gni ++++ b/third_party/blink/renderer/core/dom/build.gni +@@ -167,6 +167,8 @@ blink_core_sources_dom = [ + "global_event_handlers.h", + "icon_url.cc", + "icon_url.h", ++ "extensions/anti_amp_cure.h", ++ "extensions/video_bg_play.h", + "id_target_observer.cc", + "id_target_observer.h", + "id_target_observer_registry.cc", diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc -@@ -273,6 +273,7 @@ +@@ -274,6 +274,7 @@ #include "third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h" #include "third_party/blink/renderer/core/page/scrolling/scroll_state_callback.h" #include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h" @@ -41,7 +41,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink #include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h" #include "third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.h" #include "third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h" -@@ -338,6 +339,8 @@ +@@ -339,6 +340,8 @@ #include "third_party/blink/renderer/platform/wtf/text/string_buffer.h" #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h" @@ -50,8 +50,8 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink #ifndef NDEBUG using WeakDocumentSet = blink::HeapHashSet>; static WeakDocumentSet& liveDocumentSet(); -@@ -6932,6 +6935,61 @@ void Document::MarkFirstPaint() { - MaybeExecuteDelayedAsyncScripts(); +@@ -6972,6 +6975,61 @@ void Document::setAllowDeclarativeShadowRoot(bool val) { + val ? AllowState::kAllow : AllowState::kDeny; } +void Document::injectScripts() { @@ -112,7 +112,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink void Document::FinishedParsing() { DCHECK(!GetScriptableDocumentParser() || !parser_->IsParsing()); DCHECK(!GetScriptableDocumentParser() || ready_state_ != kLoading); -@@ -6984,6 +7042,10 @@ void Document::FinishedParsing() { +@@ -7024,6 +7082,10 @@ void Document::FinishedParsing() { frame->Loader().FinishedParsing(); @@ -126,7 +126,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h --- a/third_party/blink/renderer/core/dom/document.h +++ b/third_party/blink/renderer/core/dom/document.h -@@ -1694,6 +1694,9 @@ class CORE_EXPORT Document : public ContainerNode, +@@ -1707,6 +1707,9 @@ class CORE_EXPORT Document : public ContainerNode, void AddAXContext(AXContext*); void RemoveAXContext(AXContext*); @@ -161,7 +161,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third_party/blink/renderer/core/html/html_script_element.cc --- a/third_party/blink/renderer/core/html/html_script_element.cc +++ b/third_party/blink/renderer/core/html/html_script_element.cc -@@ -168,6 +168,11 @@ void HTMLScriptElement::setTextContent( +@@ -167,6 +167,11 @@ void HTMLScriptElement::setTextContent( } } diff --git a/build/patches/Modify-default-preferences.patch b/build/patches/Modify-default-preferences.patch index fc82b36e..1c0a0bdd 100644 --- a/build/patches/Modify-default-preferences.patch +++ b/build/patches/Modify-default-preferences.patch @@ -20,7 +20,7 @@ Subject: Modify default preferences diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc --- a/chrome/browser/background/background_mode_manager.cc +++ b/chrome/browser/background/background_mode_manager.cc -@@ -339,7 +339,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) { +@@ -340,7 +340,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false); registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false); #endif @@ -32,7 +32,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 -@@ -1314,7 +1314,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( +@@ -1328,7 +1328,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( void ChromeContentBrowserClient::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false); @@ -68,7 +68,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 -@@ -266,7 +266,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; +@@ -277,7 +277,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( prefs::kSearchSuggestEnabled, @@ -80,7 +80,7 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html --- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html +++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html -@@ -34,7 +34,7 @@ +@@ -36,7 +36,7 @@
@@ -121,7 +121,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 -@@ -962,10 +962,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl( +@@ -964,10 +964,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl( // suggestions available. // TODO(mathp): Differentiate between number of suggestions available // (current metric) and number shown to the user. @@ -133,7 +133,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a } } -@@ -1592,8 +1589,8 @@ void AutofillManager::Reset() { +@@ -1600,8 +1597,8 @@ void AutofillManager::Reset() { credit_card_access_manager_.reset(new CreditCardAccessManager( driver(), client_, personal_data_, credit_card_form_event_logger_.get())); @@ -159,7 +159,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc --- a/components/bookmarks/browser/bookmark_utils.cc +++ b/components/bookmarks/browser/bookmark_utils.cc -@@ -439,12 +439,12 @@ bool DoesBookmarkContainWords(const base::string16& title, +@@ -442,12 +442,12 @@ bool DoesBookmarkContainWords(const base::string16& title, void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( prefs::kShowBookmarkBar, @@ -177,7 +177,7 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.cc b/components/safe_browsing/core/common/safe_browsing_prefs.cc --- a/components/safe_browsing/core/common/safe_browsing_prefs.cc +++ b/components/safe_browsing/core/common/safe_browsing_prefs.cc -@@ -210,9 +210,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -190,9 +190,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { registry->RegisterBooleanPref( prefs::kSafeBrowsingSawInterstitialScoutReporting, false); registry->RegisterBooleanPref( diff --git a/build/patches/Move-some-account-settings-back-to-privacy-settings.patch b/build/patches/Move-some-account-settings-back-to-privacy-settings.patch index 7753b440..9100976f 100644 --- a/build/patches/Move-some-account-settings-back-to-privacy-settings.patch +++ b/build/patches/Move-some-account-settings-back-to-privacy-settings.patch @@ -5,8 +5,8 @@ Subject: Move some account settings back to privacy settings Search suggestions, autofill assistant and contextual search --- .../java/res/xml/privacy_preferences.xml | 19 ++++++ - .../privacy/settings/PrivacySettings.java | 62 ++++++++++++++++++- - 2 files changed, 79 insertions(+), 2 deletions(-) + .../privacy/settings/PrivacySettings.java | 63 ++++++++++++++++++- + 2 files changed, 79 insertions(+), 3 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 @@ -38,7 +38,15 @@ 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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -38,6 +38,13 @@ import org.chromium.ui.text.SpanApplier; +@@ -24,7 +24,6 @@ import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings; + import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.safe_browsing.metrics.SettingsAccessPoint; +-import org.chromium.chrome.browser.safe_browsing.settings.SafeBrowsingSettingsFragment; + import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; + import org.chromium.chrome.browser.settings.SettingsLauncher; + import org.chromium.chrome.browser.settings.SettingsLauncherImpl; +@@ -40,6 +39,13 @@ import org.chromium.ui.text.SpanApplier; import org.chromium.base.Log; @@ -52,7 +60,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting /** * Fragment to keep track of the all the privacy related preferences. */ -@@ -54,6 +61,18 @@ public class PrivacySettings +@@ -56,6 +62,18 @@ public class PrivacySettings private static final String PREF_PROXY_OPTIONS = "proxy"; public static final String PREF_INCOGNITO_TAB_HISTORY_ENABLED = "incognito_history_enabled"; @@ -71,7 +79,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String[] NEW_PRIVACY_PREFERENCE_ORDER = {PREF_CLEAR_BROWSING_DATA, PREF_CAN_MAKE_PAYMENT, PREF_NETWORK_PREDICTIONS, PREF_SECURE_DNS, PREF_DO_NOT_TRACK, -@@ -61,7 +80,8 @@ public class PrivacySettings +@@ -63,7 +81,8 @@ public class PrivacySettings PREF_INCOGNITO_TAB_HISTORY_ENABLED, PREF_ALLOW_CUSTOM_TAB_INTENTS, PREF_CLOSE_TABS_ON_EXIT, @@ -81,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting }; private ManagedPreferenceDelegate mManagedPreferenceDelegate; -@@ -87,6 +107,29 @@ public class PrivacySettings +@@ -89,6 +108,29 @@ public class PrivacySettings mManagedPreferenceDelegate = createManagedPreferenceDelegate(); @@ -111,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting ChromeSwitchPreference canMakePaymentPref = (ChromeSwitchPreference) findPreference(PREF_CAN_MAKE_PAYMENT); canMakePaymentPref.setOnPreferenceChangeListener(this); -@@ -119,6 +162,11 @@ public class PrivacySettings +@@ -121,6 +163,11 @@ public class PrivacySettings } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) { UserPrefs.get(Profile.getLastUsedRegularProfile()) .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); @@ -123,7 +131,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } else if (PREF_NETWORK_PREDICTIONS.equals(key)) { PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue); } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) { -@@ -133,6 +181,16 @@ public class PrivacySettings +@@ -135,6 +182,16 @@ public class PrivacySettings return true; } @@ -140,7 +148,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public void onResume() { super.onResume(); -@@ -143,7 +201,7 @@ public class PrivacySettings +@@ -145,7 +202,7 @@ public class PrivacySettings * Updates the summaries for several preferences. */ public void updateSummaries() { diff --git a/build/patches/Multiple-fingerprinting-mitigations.patch b/build/patches/Multiple-fingerprinting-mitigations.patch index 94284c4a..a17475ec 100644 --- a/build/patches/Multiple-fingerprinting-mitigations.patch +++ b/build/patches/Multiple-fingerprinting-mitigations.patch @@ -55,7 +55,7 @@ Added flag --fingerprinting-canvas-image-data-noise to disable Canvas image data diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2212,6 +2212,7 @@ static_library("browser") { +@@ -2244,6 +2244,7 @@ static_library("browser") { "//services/device/public/cpp:device_features", "//services/device/public/cpp/serial:switches", "//services/device/public/cpp/usb", @@ -66,7 +66,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -164,6 +164,7 @@ +@@ -168,6 +168,7 @@ #include "services/media_session/public/cpp/features.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/network_switches.h" @@ -74,7 +74,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "storage/browser/quota/quota_features.h" #include "third_party/blink/public/common/experiments/memory_ablation_experiment.h" #include "third_party/blink/public/common/features.h" -@@ -2523,6 +2524,18 @@ const FeatureEntry kFeatureEntries[] = { +@@ -2516,6 +2517,18 @@ const FeatureEntry kFeatureEntries[] = { {"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName, flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll, SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)}, @@ -96,18 +96,18 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn -@@ -227,6 +227,7 @@ source_set("browser") { +@@ -217,6 +217,7 @@ source_set("browser") { "//third_party/libyuv", "//third_party/re2", "//third_party/sqlite", + "//third_party/ungoogled:switches", "//third_party/webrtc_overrides:webrtc_component", + "//third_party/wtl", "//third_party/zlib", - "//third_party/zlib/google:zip", diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -221,6 +221,7 @@ +@@ -219,6 +219,7 @@ #include "third_party/blink/public/common/user_agent/user_agent_metadata.h" #include "third_party/blink/public/mojom/disk_allocator.mojom.h" #include "third_party/blink/public/public_buildflags.h" @@ -115,7 +115,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content #include "third_party/skia/include/core/SkBitmap.h" #include "ui/accessibility/accessibility_switches.h" #include "ui/base/ui_base_switches.h" -@@ -3324,6 +3325,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3280,6 +3281,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kDisableBreakpad, switches::kDisableDatabases, switches::kDisableFileSystem, @@ -128,7 +128,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn --- a/content/child/BUILD.gn +++ b/content/child/BUILD.gn -@@ -130,6 +130,7 @@ target(link_target_type, "child") { +@@ -103,6 +103,7 @@ target(link_target_type, "child") { "//third_party/blink/public/common", "//third_party/blink/public/strings", "//third_party/ced", @@ -139,7 +139,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc -@@ -36,6 +36,8 @@ +@@ -37,6 +37,8 @@ #include "ui/gl/gl_switches.h" #include "ui/native_theme/native_theme_features.h" @@ -148,7 +148,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. #if defined(OS_ANDROID) #include "base/android/build_info.h" #endif -@@ -532,6 +534,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( +@@ -530,6 +532,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( // They're moved here to distinguish them from actual base checks WebRuntimeFeatures::EnableOverlayScrollbars(ui::IsOverlayScrollbarEnabled()); @@ -165,9 +165,9 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h --- a/third_party/blink/public/platform/web_runtime_features.h +++ b/third_party/blink/public/platform/web_runtime_features.h -@@ -224,6 +224,9 @@ class WebRuntimeFeatures { - BLINK_PLATFORM_EXPORT static void EnableTranslateService(bool); +@@ -200,6 +200,9 @@ class WebRuntimeFeatures { BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool); + BLINK_PLATFORM_EXPORT static void EnableGetCurrentBrowsingContextMedia(bool); BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool); + BLINK_PLATFORM_EXPORT static void EnableFingerprintingClientRectsNoise(bool); + BLINK_PLATFORM_EXPORT static void EnableFingerprintingCanvasMeasureTextNoise(bool); @@ -178,15 +178,15 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc -@@ -41,6 +41,7 @@ - #include "base/auto_reset.h" +@@ -42,6 +42,7 @@ #include "base/macros.h" + #include "base/metrics/histogram_functions.h" #include "base/optional.h" +#include "base/rand_util.h" #include "base/time/time.h" #include "cc/input/overscroll_behavior.h" #include "cc/input/scroll_snap_data.h" -@@ -2489,6 +2490,23 @@ void Document::UpdateStyleAndLayoutTree() { +@@ -2513,6 +2514,23 @@ void Document::UpdateStyleAndLayoutTree() { #if DCHECK_IS_ON() AssertLayoutTreeUpdated(*this); #endif @@ -213,7 +213,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 -@@ -447,6 +447,10 @@ class CORE_EXPORT Document : public ContainerNode, +@@ -448,6 +448,10 @@ class CORE_EXPORT Document : public ContainerNode, has_xml_declaration_ = has_xml_declaration ? 1 : 0; } @@ -224,7 +224,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/ AtomicString visibilityState() const; bool IsPageVisible() const; bool hidden() const; -@@ -1969,6 +1973,9 @@ class CORE_EXPORT Document : public ContainerNode, +@@ -1984,6 +1988,9 @@ class CORE_EXPORT Document : public ContainerNode, base::ElapsedTimer start_time_; @@ -237,7 +237,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 -@@ -2049,6 +2049,11 @@ DOMRectList* Element::getClientRects() { +@@ -2062,6 +2062,11 @@ DOMRectList* Element::getClientRects() { DCHECK(element_layout_object); GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom( quads, *element_layout_object); @@ -249,7 +249,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/ return MakeGarbageCollected(quads); } -@@ -2066,6 +2071,9 @@ DOMRect* Element::getBoundingClientRect() { +@@ -2079,6 +2084,9 @@ DOMRect* Element::getBoundingClientRect() { DCHECK(element_layout_object); GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result, *element_layout_object); @@ -275,7 +275,7 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re return MakeGarbageCollected(quads); } -@@ -1742,7 +1748,11 @@ FloatRect Range::BoundingRect() const { +@@ -1741,7 +1747,11 @@ FloatRect Range::BoundingRect() const { // If all rects are empty, return the first rect. if (result.IsEmpty() && !quads.IsEmpty()) @@ -331,7 +331,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc -@@ -838,9 +838,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) { +@@ -947,9 +947,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) { else direction = ToTextDirection(GetState().GetDirection(), canvas()); @@ -351,7 +351,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn -@@ -1575,7 +1575,9 @@ component("platform") { +@@ -1584,7 +1584,9 @@ component("platform") { "//third_party/blink/renderer:non_test_config", ] @@ -362,7 +362,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re allow_circular_includes_from = [ "//third_party/blink/renderer/platform/blob", -@@ -1635,6 +1637,7 @@ component("platform") { +@@ -1647,6 +1649,7 @@ component("platform") { "//third_party/blink/public/strings", "//third_party/blink/renderer/platform/wtf", "//third_party/ced", @@ -373,8 +373,8 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc -@@ -731,4 +731,16 @@ void WebRuntimeFeatures::EnableConversionMeasurementInfraSupport(bool enable) { - RuntimeEnabledFeatures::SetConversionMeasurementInfraSupportEnabled(enable); +@@ -647,4 +647,16 @@ void WebRuntimeFeatures::EnableTargetBlankImpliesNoOpener(bool enable) { + RuntimeEnabledFeatures::SetTargetBlankImpliesNoOpenerEnabled(enable); } +void WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(bool enable) { @@ -614,7 +614,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -808,6 +808,15 @@ +@@ -850,6 +850,15 @@ origin_trial_feature_name: "FeaturePolicyReporting", status: "experimental" }, diff --git a/build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch b/build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch index 480ff309..d008f1ee 100644 --- a/build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch +++ b/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 -@@ -314,6 +314,8 @@ std::vector ChromeAutocompleteProviderClient::GetBuiltinURLs() { +@@ -329,6 +329,8 @@ std::vector ChromeAutocompleteProviderClient::GetBuiltinURLs() { std::vector ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { std::vector builtins_to_provide; diff --git a/build/patches/Password-service-build-fixes.patch b/build/patches/Password-service-build-fixes.patch index ae8d176a..db228e03 100644 --- a/build/patches/Password-service-build-fixes.patch +++ b/build/patches/Password-service-build-fixes.patch @@ -3,11 +3,27 @@ Date: Wed, 23 Sep 2020 14:47:44 +0200 Subject: Password service build fixes --- + .../password_manager/chrome_password_manager_client.cc | 2 ++ .../safe_browsing/chrome_password_protection_service.h | 2 -- + .../password_manager/core/browser/password_manager_client.h | 2 ++ + .../core/browser/password_reuse_detection_manager.cc | 2 ++ .../password_protection/password_protection_request.cc | 2 -- .../password_protection/password_protection_service.h | 5 ----- - 3 files changed, 9 deletions(-) + 6 files changed, 6 insertions(+), 9 deletions(-) +diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc +--- a/chrome/browser/password_manager/chrome_password_manager_client.cc ++++ b/chrome/browser/password_manager/chrome_password_manager_client.cc +@@ -462,7 +462,9 @@ void ChromePasswordManagerClient::ShowTouchToFill( + #if defined(OS_ANDROID) + void ChromePasswordManagerClient::OnPasswordSelected( + const base::string16& text) { ++#if defined(PASSWORD_REUSE_DETECTION_ENABLED) + password_reuse_detection_manager_.OnPaste(text); ++#endif + } + #endif + diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.h b/chrome/browser/safe_browsing/chrome_password_protection_service.h --- a/chrome/browser/safe_browsing/chrome_password_protection_service.h +++ b/chrome/browser/safe_browsing/chrome_password_protection_service.h @@ -20,10 +36,45 @@ diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.h b // Stores |verdict| in the cache based on its |trigger_type|, |url|, // reused |password_type|, |verdict| and |receive_time|. +diff --git a/components/password_manager/core/browser/password_manager_client.h b/components/password_manager/core/browser/password_manager_client.h +--- a/components/password_manager/core/browser/password_manager_client.h ++++ b/components/password_manager/core/browser/password_manager_client.h +@@ -325,6 +325,7 @@ class PasswordManagerClient { + // Returns the current best guess as to the page's display language. + virtual std::string GetPageLanguage() const; + ++#if defined(PASSWORD_REUSE_DETECTION_ENABLED) + // Return the PasswordProtectionService associated with this instance. + virtual safe_browsing::PasswordProtectionService* + GetPasswordProtectionService() const = 0; +@@ -349,6 +350,7 @@ class PasswordManagerClient { + const std::string& username, + const std::vector& matching_reused_credentials, + bool password_field_exists) = 0; ++#endif + + #if defined(PASSWORD_REUSE_WARNING_ENABLED) + // Records a Chrome Sync event that GAIA password reuse was detected. +diff --git a/components/password_manager/core/browser/password_reuse_detection_manager.cc b/components/password_manager/core/browser/password_reuse_detection_manager.cc +--- a/components/password_manager/core/browser/password_reuse_detection_manager.cc ++++ b/components/password_manager/core/browser/password_reuse_detection_manager.cc +@@ -172,10 +172,12 @@ void PasswordReuseDetectionManager::OnReuseCheckDone( + ? reused_protected_password_hash->username + : ""; + ++#if defined(PASSWORD_REUSE_DETECTION_ENABLED) + client_->CheckProtectedPasswordEntry( + reused_password_type, username, + std::move(all_matching_reused_credentials_).extract(), + password_field_detected); ++#endif + + all_matching_reused_credentials_.clear(); + } diff --git a/components/safe_browsing/content/password_protection/password_protection_request.cc b/components/safe_browsing/content/password_protection/password_protection_request.cc --- a/components/safe_browsing/content/password_protection/password_protection_request.cc +++ b/components/safe_browsing/content/password_protection/password_protection_request.cc -@@ -132,8 +132,6 @@ PasswordProtectionRequest::PasswordProtectionRequest( +@@ -133,8 +133,6 @@ PasswordProtectionRequest::PasswordProtectionRequest( password_type_ != PasswordType::SAVED_PASSWORD || !matching_reused_credentials_.empty()); request_proto_->set_trigger_type(trigger_type_); diff --git a/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch b/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch index 9c1db405..71e8b805 100644 --- a/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch +++ b/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch @@ -27,7 +27,7 @@ diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc --- a/net/dns/dns_transaction.cc +++ b/net/dns/dns_transaction.cc -@@ -418,7 +418,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate { +@@ -406,7 +406,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate { // Disable secure DNS for any DoH server hostname lookups to avoid deadlock. request_->SetDisableSecureDns(true); request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE | @@ -39,7 +39,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 -@@ -319,6 +319,7 @@ void URLRequestHttpJob::Start() { +@@ -326,6 +326,7 @@ void URLRequestHttpJob::Start() { // plugin could set a referrer although sending the referrer is inhibited. request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer); @@ -47,7 +47,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque // Our consumer should have made sure that this is a safe referrer (e.g. via // URLRequestJob::ComputeReferrerForPolicy). if (referrer.is_valid()) { -@@ -326,11 +327,14 @@ void URLRequestHttpJob::Start() { +@@ -333,11 +334,14 @@ void URLRequestHttpJob::Start() { request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer, referer_value); } @@ -62,7 +62,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque AddExtraHeaders(); AddCookieHeaderAndStart(); -@@ -527,10 +531,12 @@ void URLRequestHttpJob::AddExtraHeaders() { +@@ -534,10 +538,12 @@ void URLRequestHttpJob::AddExtraHeaders() { } else { // Advertise "br" encoding only if transferred data is opaque to proxy. bool advertise_brotli = false; @@ -79,7 +79,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque } } -@@ -548,7 +554,7 @@ void URLRequestHttpJob::AddExtraHeaders() { +@@ -555,7 +561,7 @@ void URLRequestHttpJob::AddExtraHeaders() { } } diff --git a/build/patches/Remove-SMS-integration.patch b/build/patches/Remove-SMS-integration.patch index 018c2038..20335203 100644 --- a/build/patches/Remove-SMS-integration.patch +++ b/build/patches/Remove-SMS-integration.patch @@ -3,31 +3,57 @@ Date: Sun, 3 Nov 2019 08:22:29 +0100 Subject: Remove SMS integration --- - .../browser/sms/SmsUserConsentReceiver.java | 42 ++----------------- - .../browser/sms/SmsVerificationReceiver.java | 30 +------------ - .../content/browser/sms/Wrappers.java | 14 +------ - 3 files changed, 7 insertions(+), 79 deletions(-) + .../content/browser/sms/SmsProviderGms.java | 9 +--- + .../browser/sms/SmsUserConsentReceiver.java | 46 ++----------------- + .../browser/sms/SmsVerificationReceiver.java | 43 +++-------------- + .../content/browser/sms/Wrappers.java | 28 +---------- + 4 files changed, 12 insertions(+), 114 deletions(-) +diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java +--- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java ++++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java +@@ -126,13 +126,6 @@ public class SmsProviderGms { + } + + public Wrappers.SmsRetrieverClientWrapper getClient() { +- if (mClient != null) { +- return mClient; +- } +- mClient = new Wrappers.SmsRetrieverClientWrapper( +- mUserConsentReceiver != null ? mUserConsentReceiver.createClient() : null, +- mVerificationReceiver != null ? mVerificationReceiver.createClient() : null); +- + return mClient; + } + +@@ -153,4 +146,4 @@ public class SmsProviderGms { + void onTimeout(long nativeSmsProviderGms); + void onCancel(long nativeSmsProviderGms); + } +-} +\ No newline at end of file ++} diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java --- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java +++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java -@@ -12,12 +12,6 @@ import android.content.IntentFilter; - - import androidx.annotation.VisibleForTesting; +@@ -10,13 +10,6 @@ import android.content.Context; + import android.content.Intent; + import android.content.IntentFilter; -import com.google.android.gms.auth.api.phone.SmsRetriever; +-import com.google.android.gms.auth.api.phone.SmsRetrieverClient; -import com.google.android.gms.common.api.CommonStatusCodes; -import com.google.android.gms.common.api.Status; -import com.google.android.gms.tasks.OnFailureListener; -import com.google.android.gms.tasks.Task; - - import org.chromium.base.ContextUtils; import org.chromium.base.Log; - import org.chromium.base.annotations.CalledByNative; -@@ -46,18 +40,6 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { - mSmsProviderAndroid = smsProviderAndroid; + import org.chromium.ui.base.WindowAndroid; - mContext = new Wrappers.SmsReceiverContext(ContextUtils.getApplicationContext()); +@@ -34,28 +27,11 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { + mDestroyed = false; + mProvider = provider; + mContext = context; - - // A broadcast receiver is registered upon the creation of this class - // which happens when the SMS Retriever API is used for the first time @@ -40,18 +66,20 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm - IntentFilter filter = new IntentFilter(); - filter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION); - mContext.registerReceiver(this, filter); +- } +- +- public SmsRetrieverClient createClient() { +- return SmsRetriever.getClient(mContext); } - @CalledByNative -@@ -70,7 +52,6 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { - private void destroy() { + public void destroy() { if (DEBUG) Log.d(TAG, "Destroying SmsUserConsentReceiver."); mDestroyed = true; - mContext.unregisterReceiver(this); } @Override -@@ -83,7 +64,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { +@@ -66,7 +42,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { return; } @@ -60,28 +88,27 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm return; } -@@ -115,35 +96,20 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { +@@ -100,28 +76,14 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { if (DEBUG) Log.d(TAG, "Timeout"); - SmsUserConsentReceiverJni.get().onTimeout(mSmsProviderAndroid); + mProvider.onTimeout(); break; - } -+ }*/ ++ } */ } void onConsentResult(int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK) { - String message = data.getStringExtra(SmsRetriever.EXTRA_SMS_MESSAGE); -- SmsUserConsentReceiverJni.get().onReceive(mSmsProviderAndroid, message); +- mProvider.onReceive(message); - } else if (resultCode == Activity.RESULT_CANCELED) { - if (DEBUG) Log.d(TAG, "Activity result cancelled."); +- mProvider.onCancel(); - } + if (DEBUG) Log.d(TAG, "Activity result discarded."); } - @CalledByNative - private void listen(WindowAndroid windowAndroid) { - mWindowAndroid = windowAndroid; -- Task task = getClient().startSmsUserConsent(null); + public void listen(WindowAndroid windowAndroid) { +- Task task = mProvider.getClient().startSmsUserConsent(null); - - task.addOnFailureListener(new OnFailureListener() { - @Override @@ -90,122 +117,143 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm - } - }); - if (DEBUG) Log.d(TAG, "Installed task"); -+ Log.d(TAG, "Ignored task"); ++ if (DEBUG) Log.d(TAG, "Ignored task"); } - - private Wrappers.SmsRetrieverClientWrapper getClient() { -- if (mClient != null) return mClient; -- mClient = new Wrappers.SmsRetrieverClientWrapper(SmsRetriever.getClient(mContext)); - return mClient; - } - + } diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java --- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java +++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java -@@ -11,11 +11,6 @@ import android.content.IntentFilter; - - import androidx.annotation.VisibleForTesting; +@@ -11,16 +11,6 @@ import android.content.Context; + import android.content.Intent; + import android.content.IntentFilter; +-import com.google.android.gms.auth.api.phone.SmsCodeBrowserClient; +-import com.google.android.gms.auth.api.phone.SmsCodeRetriever; -import com.google.android.gms.auth.api.phone.SmsRetriever; +-import com.google.android.gms.auth.api.phone.SmsRetrieverStatusCodes; +-import com.google.android.gms.common.api.ApiException; -import com.google.android.gms.common.api.CommonStatusCodes; +-import com.google.android.gms.common.api.ResolvableApiException; -import com.google.android.gms.common.api.Status; -import com.google.android.gms.tasks.Task; - - import org.chromium.base.ContextUtils; import org.chromium.base.Log; - import org.chromium.base.annotations.CalledByNative; -@@ -42,18 +37,6 @@ public class SmsVerificationReceiver extends BroadcastReceiver { - mSmsProviderAndroid = smsProviderAndroid; + import org.chromium.ui.base.WindowAndroid; - mContext = new Wrappers.SmsReceiverContext(ContextUtils.getApplicationContext()); +@@ -46,35 +36,18 @@ public class SmsVerificationReceiver extends BroadcastReceiver { + mDestroyed = false; + mProvider = provider; + mContext = context; - -- // A broadcast receiver is registered upon the creation of this class -- // which happens when the SMS Retriever API is used for the first time -- // since chrome last restarted (which, on android, happens frequently). -- // The broadcast receiver is fairly lightweight (e.g. it responds -- // quickly without much computation). -- // If this broadcast receiver becomes more heavyweight, we should make -- // this registration expire after the SMS message is received. -- if (DEBUG) Log.d(TAG, "Registering intent filters."); +- // A broadcast receiver is registered upon the creation of this class which happens when the +- // SMS Retriever API or SMS Browser Code API is used for the first time since chrome last +- // restarted (which, on android, happens frequently). The broadcast receiver is fairly +- // lightweight (e.g. it responds quickly without much computation). If this broadcast +- // receiver becomes more heavyweight, we should make this registration expire after the SMS +- // message is received. +- if (DEBUG) Log.i(TAG, "Registering intent filters."); - IntentFilter filter = new IntentFilter(); -- filter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION); +- filter.addAction(SmsCodeRetriever.SMS_CODE_RETRIEVED_ACTION); +- - mContext.registerReceiver(this, filter); +- } +- +- public SmsCodeBrowserClient createClient() { +- return SmsCodeRetriever.getBrowserClient(mContext); } - @CalledByNative -@@ -66,7 +49,6 @@ public class SmsVerificationReceiver extends BroadcastReceiver { - private void destroy() { + public void destroy() { if (DEBUG) Log.d(TAG, "Destroying SmsVerificationReceiver."); mDestroyed = true; - mContext.unregisterReceiver(this); } @Override -@@ -77,7 +59,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver { + public void onReceive(Context context, Intent intent) { + if (DEBUG) Log.d(TAG, "Received something!"); + +- if (mDestroyed) { ++ /*if (mDestroyed) { return; } -- if (!SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) { -+/* if (!SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) { - return; - } - -@@ -104,22 +86,14 @@ public class SmsVerificationReceiver extends BroadcastReceiver { +@@ -105,7 +78,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver { if (DEBUG) Log.d(TAG, "Timeout"); - SmsVerificationReceiverJni.get().onTimeout(mSmsProviderAndroid); + mProvider.onTimeout(); break; - } + }*/ } - @CalledByNative - private void listen() { -- Wrappers.SmsRetrieverClientWrapper client = getClient(); -- Task task = client.startSmsRetriever(); + public void onPermissionDone(WindowAndroid window, int resultCode) { +@@ -125,7 +98,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver { + * task. + */ + public void onRetrieverTaskFailure(WindowAndroid window, Exception e) { +- if (DEBUG) Log.d(TAG, "Task failed. Attempting recovery.", e); ++/* if (DEBUG) Log.d(TAG, "Task failed. Attempting recovery.", e); + ApiException exception = (ApiException) e; + if (exception.getStatusCode() == SmsRetrieverStatusCodes.API_NOT_CONNECTED) { + mProvider.onMethodNotAvailable(); +@@ -162,15 +135,11 @@ public class SmsVerificationReceiver extends BroadcastReceiver { + } + } else { + Log.w(TAG, "Unexpected exception", e); +- } ++ }*/ ++ Log.w(TAG, "Unexpected exception", e); + } + + public void listen(WindowAndroid window) { +- Wrappers.SmsRetrieverClientWrapper client = mProvider.getClient(); +- Task task = client.startSmsCodeBrowserRetriever(); +- +- task.addOnFailureListener((Exception e) -> { this.onRetrieverTaskFailure(window, e); }); - - if (DEBUG) Log.d(TAG, "Installed task"); ++ if (DEBUG) Log.d(TAG, "Ignored task"); } - - private Wrappers.SmsRetrieverClientWrapper getClient() { -- if (mClient != null) { -- return mClient; -- } -- mClient = new Wrappers.SmsRetrieverClientWrapper(SmsRetriever.getClient(mContext)); - return mClient; - } - + } diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java --- a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java +++ b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java -@@ -10,9 +10,6 @@ import android.content.ContextWrapper; +@@ -10,11 +10,6 @@ import android.content.ContextWrapper; import android.content.Intent; import android.content.IntentFilter; +-import com.google.android.gms.auth.api.phone.SmsCodeBrowserClient; +-import com.google.android.gms.auth.api.phone.SmsCodeRetriever; -import com.google.android.gms.auth.api.phone.SmsRetrieverClient; -import com.google.android.gms.tasks.Task; - class Wrappers { // Prevent instantiation. private Wrappers() {} -@@ -21,11 +18,9 @@ class Wrappers { +@@ -23,16 +18,9 @@ class Wrappers { * Wraps com.google.android.gms.auth.api.phone.SmsRetrieverClient. */ static class SmsRetrieverClientWrapper { +- // Used for user consent flow. - private final SmsRetrieverClient mSmsRetrieverClient; - private SmsReceiverContext mContext; +- // Used for browser code flow. +- private final SmsCodeBrowserClient mSmsCodeBrowserClient; + private WebOTPServiceContext mContext; -- public SmsRetrieverClientWrapper(SmsRetrieverClient smsRetrieverClient) { +- public SmsRetrieverClientWrapper( +- SmsRetrieverClient smsRetrieverClient, SmsCodeBrowserClient smsCodeBrowserClient) { - mSmsRetrieverClient = smsRetrieverClient; +- mSmsCodeBrowserClient = smsCodeBrowserClient; + public SmsRetrieverClientWrapper() { } - public void setContext(SmsReceiverContext context) { -@@ -36,13 +31,6 @@ class Wrappers { + public void setContext(WebOTPServiceContext context) { +@@ -42,14 +30,6 @@ class Wrappers { + public WebOTPServiceContext getContext() { return mContext; } - -- public Task startSmsRetriever() { -- return mSmsRetrieverClient.startSmsRetriever(); +- +- public Task startSmsCodeBrowserRetriever() { +- return mSmsCodeBrowserClient.startSmsCodeRetriever(); - } - - public Task startSmsUserConsent(String senderAddress) { @@ -214,6 +262,19 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Wr } /** +@@ -77,12 +57,6 @@ class Wrappers { + + @Override + public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { +- if (filter.hasAction(SmsCodeRetriever.SMS_CODE_RETRIEVED_ACTION)) { +- mVerificationReceiver = receiver; +- } else { +- mUserConsentReceiver = receiver; +- } +- + return super.registerReceiver(receiver, filter); + } + -- 2.17.1 diff --git a/build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch b/build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch index a87f6224..ad93dd5b 100644 --- a/build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch +++ b/build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch @@ -9,7 +9,7 @@ Subject: Remove blocklisted URLs upon bookmark creation diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -137,6 +137,8 @@ import org.chromium.chrome.browser.settings.SettingsLauncher; +@@ -135,6 +135,8 @@ import org.chromium.chrome.browser.settings.SettingsLauncher; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegateImpl; @@ -17,8 +17,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv +import org.chromium.chrome.browser.suggestions.mostvisited.MostVisitedSites; import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler; import org.chromium.chrome.browser.tab.Tab; - import org.chromium.chrome.browser.tab.TabDelegateFactory; -@@ -207,6 +209,8 @@ import org.chromium.ui.widget.Toast; + import org.chromium.chrome.browser.tab.TabHidingType; +@@ -205,6 +207,8 @@ import org.chromium.ui.widget.Toast; import org.chromium.url.Origin; import org.chromium.webapk.lib.client.WebApkNavigationClient; @@ -27,7 +27,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; -@@ -251,6 +255,7 @@ public abstract class ChromeActivity +@@ -249,6 +253,7 @@ public abstract class ChromeActivity private UmaSessionStats mUmaSessionStats; private ContextReporter mContextReporter; @@ -35,7 +35,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv private boolean mPartnerBrowserRefreshNeeded; -@@ -1230,6 +1235,11 @@ public abstract class ChromeActivity +@@ -1234,6 +1239,11 @@ public abstract class ChromeActivity mCompositorViewHolder = null; } @@ -47,10 +47,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv onDestroyInternal(); if (mDidAddPolicyChangeListener) { -@@ -1466,6 +1476,13 @@ public abstract class ChromeActivity - return; - } +@@ -1470,6 +1480,13 @@ public abstract class ChromeActivity + // Defense in depth against the UI being erroneously enabled. + BookmarkBridge bridge = mBookmarkBridgeSupplier.get(); + // remove blocklisted URL from most visited sites + if (mMostVisitedSites == null) { + mMostVisitedSites = @@ -58,9 +58,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv + } + mMostVisitedSites.removeBlocklistedUrl(new GURL(tabToBookmark.getOriginalUrl())); + - // Note we get user bookmark ID over just a bookmark ID here: Managed bookmarks can't be - // edited. If the current URL is only bookmarked by managed bookmarks, this will return - // INVALID_ID, so the code below will fall back on adding a new bookmark instead. + if (bridge == null || !bridge.isEditBookmarksEnabled()) { + assert false; + return; -- 2.17.1 diff --git a/build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch b/build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch index b64ec320..e3c1e5e9 100644 --- a/build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch +++ b/build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch @@ -7,8 +7,8 @@ Subject: Remove dependency on auth, signin, dynamic and tasks chrome/android/java/AndroidManifest.xml | 9 -- .../org/chromium/chrome/browser/AppHooks.java | 14 +--- .../browser/PlayServicesVersionInfo.java | 12 +-- - .../component_updater/UpdateScheduler.java | 3 - - .../externalauth/ExternalAuthUtils.java | 14 +--- + .../component_updater/UpdateScheduler.java | 1 - + .../externalauth/ExternalAuthUtils.java | 18 +--- .../UserRecoverableErrorHandler.java | 7 -- .../gcore/ChromeGoogleApiClientImpl.java | 25 +----- .../browser/gcore/GoogleApiClientHelper.java | 82 +------------------ @@ -26,13 +26,13 @@ Subject: Remove dependency on auth, signin, dynamic and tasks services/BUILD.gn | 2 - services/device/geolocation/BUILD.gn | 2 - services/shape_detection/BUILD.gn | 2 - - third_party/android_deps/BUILD.gn | 41 ---------- - 24 files changed, 15 insertions(+), 263 deletions(-) + third_party/android_deps/BUILD.gn | 46 ----------- + 24 files changed, 15 insertions(+), 270 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -282,9 +282,6 @@ android_library("chrome_java") { +@@ -278,9 +278,6 @@ android_library("chrome_java") { ":partner_location_descriptor_proto_java", ":update_proto_java", ":usage_stats_proto_java", @@ -42,7 +42,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:jni_java", "//chrome/android/features/keyboard_accessory:public_java", -@@ -758,8 +755,6 @@ junit_binary("chrome_junit_tests") { +@@ -765,8 +762,6 @@ junit_binary("chrome_junit_tests") { ":chrome_app_java_resources", ":chrome_java", ":partner_location_descriptor_proto_java", @@ -51,7 +51,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", -@@ -951,9 +946,6 @@ android_library("chrome_test_java") { +@@ -980,9 +975,6 @@ android_library("chrome_test_java") { ":chrome_app_java_resources", ":chrome_test_util_java", ":partner_location_descriptor_proto_java", @@ -64,7 +64,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 -@@ -786,15 +786,6 @@ by a child template that "extends" this file. +@@ -774,15 +774,6 @@ by a child template that "extends" this file. @@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b import org.chromium.base.ContextUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.chrome.browser.banners.AppDetailsDelegate; -@@ -333,16 +330,7 @@ public abstract class AppHooks { +@@ -327,16 +324,7 @@ public abstract class AppHooks { * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}. */ public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) { @@ -149,30 +149,35 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVer diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java -@@ -6,9 +6,6 @@ package org.chromium.chrome.browser.component_updater; +@@ -14,7 +14,6 @@ import org.chromium.components.background_task_scheduler.BackgroundTask.TaskFini + import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; + import org.chromium.components.background_task_scheduler.TaskIds; + import org.chromium.components.background_task_scheduler.TaskInfo; +-import org.chromium.gms.ChromiumPlayServicesAvailability; - import android.os.Build; - --import com.google.android.gms.common.ConnectionResult; --import com.google.android.gms.common.GoogleApiAvailability; -- - import org.chromium.base.ContextUtils; - import org.chromium.base.annotations.CalledByNative; - import org.chromium.base.annotations.JNINamespace; + /** Java-side implementation of the component update scheduler using the BackgroundTaskScheduler. */ + @JNINamespace("component_updater") diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java -@@ -15,9 +15,6 @@ import android.text.TextUtils; +@@ -15,16 +15,12 @@ import android.text.TextUtils; import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.GoogleApiAvailability; - - import org.chromium.base.CommandLine; import org.chromium.base.ContextUtils; import org.chromium.base.Log; -@@ -158,9 +155,7 @@ public class ExternalAuthUtils { + import org.chromium.base.StrictModeContext; + import org.chromium.base.task.PostTask; + import org.chromium.components.embedder_support.util.Origin; + import org.chromium.content_public.browser.UiThreadTaskTraits; +-import org.chromium.gms.ChromiumPlayServicesAvailability; + + /** + * Utility class for external authentication tools. +@@ -157,9 +153,7 @@ public class ExternalAuthUtils { * when it is updating. */ public boolean isGooglePlayServicesMissing(final Context context) { @@ -183,24 +188,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex } /** -@@ -182,7 +177,6 @@ public class ExternalAuthUtils { - +@@ -176,7 +170,6 @@ public class ExternalAuthUtils { + public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) { Context context = ContextUtils.getApplicationContext(); final int resultCode = checkGooglePlayServicesAvailable(context); - if (resultCode == ConnectionResult.SUCCESS) return true; // resultCode is some kind of error. Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode)); if (isUserRecoverableError(resultCode)) { -@@ -251,7 +245,7 @@ public class ExternalAuthUtils { +@@ -239,10 +232,7 @@ public class ExternalAuthUtils { + * @return The code produced by calling the external code + */ protected int checkGooglePlayServicesAvailable(final Context context) { - // TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in. - try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) { -- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context); -+ return 1; /*SERVICE_MISSING*/ - } +- // TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in. +- try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) { +- return ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context); +- } ++ return 1; /*SERVICE_MISSING*/ } -@@ -263,7 +257,7 @@ public class ExternalAuthUtils { + /** +@@ -253,7 +243,7 @@ public class ExternalAuthUtils { * @return true If the code represents a user-recoverable error */ protected boolean isUserRecoverableError(final int errorCode) { @@ -209,7 +217,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex } /** -@@ -273,6 +267,6 @@ public class ExternalAuthUtils { +@@ -263,6 +253,6 @@ public class ExternalAuthUtils { * @return a textual description of the error code */ protected String describeError(final int errorCode) { @@ -487,7 +495,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn --- a/chrome/test/android/BUILD.gn +++ b/chrome/test/android/BUILD.gn -@@ -259,8 +259,6 @@ android_library("chrome_java_test_support") { +@@ -260,8 +260,6 @@ android_library("chrome_java_test_support") { ] deps = [ @@ -523,7 +531,7 @@ diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components "//base:base_java", "//components/background_task_scheduler:background_task_scheduler_task_ids_java", "//components/background_task_scheduler:public_java", -@@ -95,9 +92,6 @@ if (is_android) { +@@ -96,9 +93,6 @@ if (is_android) { deps = [ ":internal_java", @@ -603,7 +611,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn --- a/content/public/android/BUILD.gn +++ b/content/public/android/BUILD.gn -@@ -71,9 +71,6 @@ action_with_pydeps("generate_sandboxed_service_srcjar") { +@@ -75,9 +75,6 @@ action_with_pydeps("generate_sandboxed_service_srcjar") { android_library("content_java") { deps = [ ":content_java_resources", @@ -616,7 +624,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn -@@ -2545,9 +2545,6 @@ if (is_android) { +@@ -2608,9 +2608,6 @@ if (is_android) { testonly = true sources = content_java_sources_needing_jni deps = [ @@ -629,7 +637,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn diff --git a/device/BUILD.gn b/device/BUILD.gn --- a/device/BUILD.gn +++ b/device/BUILD.gn -@@ -405,8 +405,6 @@ if (is_android) { +@@ -421,8 +421,6 @@ if (is_android) { junit_binary("device_junit_tests") { sources = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ] deps = [ @@ -654,7 +662,7 @@ diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_jav diff --git a/services/BUILD.gn b/services/BUILD.gn --- a/services/BUILD.gn +++ b/services/BUILD.gn -@@ -133,8 +133,6 @@ if (is_android) { +@@ -132,8 +132,6 @@ if (is_android) { "shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java", ] deps = [ @@ -666,7 +674,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn --- a/services/device/geolocation/BUILD.gn +++ b/services/device/geolocation/BUILD.gn -@@ -164,8 +164,6 @@ if (is_android) { +@@ -155,8 +155,6 @@ if (is_android) { deps = [ ":geolocation_jni_headers", @@ -678,7 +686,7 @@ diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/ 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 -@@ -97,8 +97,6 @@ if (is_android) { +@@ -107,8 +107,6 @@ if (is_android) { ] deps = [ @@ -690,13 +698,13 @@ diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD. diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn --- a/third_party/android_deps/BUILD.gn +++ b/third_party/android_deps/BUILD.gn -@@ -1061,37 +1061,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") { +@@ -1135,42 +1135,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") { ] } -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead. -android_aar_prebuilt("google_play_services_base_java") { -- aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-17.0.0.aar" +- aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-17.1.0.aar" - info_path = "libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info" - deps = [ - ":androidx_collection_collection_java", @@ -712,7 +720,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead. -android_aar_prebuilt("google_play_services_basement_java") { -- aar_path = "libs/com_google_android_gms_play_services_basement/play-services-basement-17.0.0.aar" +- aar_path = "libs/com_google_android_gms_play_services_basement/play-services-basement-17.1.0.aar" - info_path = "libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info" - deps = [ - ":androidx_collection_collection_java", @@ -722,13 +730,18 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - - # Removing drawables from GMS .aars as they are unused bloat. - strip_drawables = true +- +- # https://crbug.com/989505 +- jar_excluded_patterns = [ "META-INF/proguard/*" ] - input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ] +- bytecode_rewriter_target = +- "//build/android/bytecode:fragment_activity_replacer" -} - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. android_aar_prebuilt("google_play_services_gcm_java") { aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar" -@@ -1110,16 +1079,6 @@ android_aar_prebuilt("google_play_services_gcm_java") { +@@ -1189,16 +1153,6 @@ android_aar_prebuilt("google_play_services_gcm_java") { strip_drawables = true } diff --git a/build/patches/Remove-dependency-on-com.google.android.gms.auth.patch b/build/patches/Remove-dependency-on-com.google.android.gms.auth.patch index 38e04ea4..32092002 100644 --- a/build/patches/Remove-dependency-on-com.google.android.gms.auth.patch +++ b/build/patches/Remove-dependency-on-com.google.android.gms.auth.patch @@ -5,16 +5,16 @@ Subject: Remove dependency on com.google.android.gms.auth --- chrome/android/BUILD.gn | 1 - .../signin/core/browser/android/BUILD.gn | 1 - - .../signin/SystemAccountManagerDelegate.java | 22 +-------- + .../signin/SystemAccountManagerDelegate.java | 21 +-------- content/public/android/BUILD.gn | 1 - content/test/BUILD.gn | 1 - third_party/android_deps/BUILD.gn | 47 ------------------- - 6 files changed, 2 insertions(+), 71 deletions(-) + 6 files changed, 2 insertions(+), 70 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -282,7 +282,6 @@ android_library("chrome_java") { +@@ -278,7 +278,6 @@ android_library("chrome_java") { ":partner_location_descriptor_proto_java", ":update_proto_java", ":usage_stats_proto_java", @@ -46,13 +46,13 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback; import org.chromium.base.ContextUtils; -@@ -85,17 +82,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -86,17 +83,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { } protected void checkCanUseGooglePlayServices() throws AccountManagerDelegateException { - Context context = ContextUtils.getApplicationContext(); - final int resultCode = -- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context); +- ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context); - if (resultCode == ConnectionResult.SUCCESS) { - return; - } @@ -65,15 +65,14 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon } @Override -@@ -181,12 +168,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -182,11 +169,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { @Override public boolean isGooglePlayServicesAvailable() { - // TODO(http://crbug.com/577190): Remove StrictMode override. - try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) { -- int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( +- return ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable( - ContextUtils.getApplicationContext()); -- return resultCode == ConnectionResult.SUCCESS; - } + return false; } @@ -82,7 +81,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn --- a/content/public/android/BUILD.gn +++ b/content/public/android/BUILD.gn -@@ -71,7 +71,6 @@ action_with_pydeps("generate_sandboxed_service_srcjar") { +@@ -75,7 +75,6 @@ action_with_pydeps("generate_sandboxed_service_srcjar") { android_library("content_java") { deps = [ ":content_java_resources", @@ -93,7 +92,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn -@@ -2545,7 +2545,6 @@ if (is_android) { +@@ -2608,7 +2608,6 @@ if (is_android) { testonly = true sources = content_java_sources_needing_jni deps = [ @@ -104,7 +103,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn --- a/third_party/android_deps/BUILD.gn +++ b/third_party/android_deps/BUILD.gn -@@ -1062,53 +1062,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") { +@@ -1136,53 +1136,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") { ] } @@ -128,7 +127,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead. -android_aar_prebuilt("google_play_services_auth_api_phone_java") { -- aar_path = "libs/com_google_android_gms_play_services_auth_api_phone/play-services-auth-api-phone-17.1.0.aar" +- aar_path = "libs/com_google_android_gms_play_services_auth_api_phone/play-services-auth-api-phone-17.5.0.aar" - info_path = "libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info" - deps = [ - ":google_play_services_base_java", @@ -157,7 +156,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. android_aar_prebuilt("google_play_services_base_java") { - aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-17.0.0.aar" + aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-17.1.0.aar" -- 2.17.1 diff --git a/build/patches/Remove-dependency-on-com.google.android.gms.cast.patch b/build/patches/Remove-dependency-on-com.google.android.gms.cast.patch index eb7e8bb8..43e51a70 100644 --- a/build/patches/Remove-dependency-on-com.google.android.gms.cast.patch +++ b/build/patches/Remove-dependency-on-com.google.android.gms.cast.patch @@ -3,12 +3,11 @@ Date: Sat, 2 Nov 2019 08:00:04 +0100 Subject: Remove dependency on com.google.android.gms.cast --- - chrome/android/BUILD.gn | 7 -- - chrome/android/java/AndroidManifest.xml | 26 ----- + chrome/android/BUILD.gn | 8 -- + chrome/android/java/AndroidManifest.xml | 16 --- .../settings/PasswordSettings.java | 14 --- .../modules/chrome_feature_modules.gni | 3 - - chrome/test/android/cast_emulator/BUILD.gn | 1 - - .../media_router/browser/android/BUILD.gn | 7 -- + .../media_router/browser/android/BUILD.gn | 9 -- .../media_router/CastSessionUtil.java | 35 ------ .../components/media_router/MediaSink.java | 44 +------- .../media_router/MediaStatusBridge.java | 40 ++----- @@ -20,19 +19,20 @@ Subject: Remove dependency on com.google.android.gms.cast .../media_router/caf/CastMediaSource.java | 10 +- .../media_router/caf/CastOptionsProvider.java | 22 +--- .../caf/CastSessionController.java | 84 -------------- - .../media_router/caf/CastUtils.java | 6 - + .../media_router/caf/CastUtils.java | 18 --- .../CafExpandedControllerActivity.java | 33 +----- .../CafRemotingMediaRouteProvider.java | 2 +- .../remoting/FlingingControllerAdapter.java | 74 ------------- .../caf/remoting/RemotingMediaSource.java | 8 +- .../remoting/RemotingSessionController.java | 26 ----- + .../test/android/cast_emulator/BUILD.gn | 1 - third_party/android_deps/BUILD.gn | 39 ------- - 24 files changed, 29 insertions(+), 814 deletions(-) + 24 files changed, 29 insertions(+), 819 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -284,14 +284,11 @@ android_library("chrome_java") { +@@ -280,13 +280,10 @@ android_library("chrome_java") { ":usage_stats_proto_java", "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", @@ -42,12 +42,11 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:jni_java", "//chrome/android/features/keyboard_accessory:public_java", - "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library:piet_resources", - "//chrome/android/modules/cablev2_authenticator/public:java", "//chrome/android/modules/image_editor/provider:java", - "//chrome/android/modules/image_editor/public:java", "//chrome/android/modules/stack_unwinder/provider:java", -@@ -763,8 +760,6 @@ junit_binary("chrome_junit_tests") { + "//chrome/android/webapk/libs/client:client_java", +@@ -770,8 +767,6 @@ junit_binary("chrome_junit_tests") { ":partner_location_descriptor_proto_java", "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", @@ -56,7 +55,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", -@@ -958,8 +953,6 @@ android_library("chrome_test_java") { +@@ -987,8 +982,6 @@ android_library("chrome_test_java") { ":partner_location_descriptor_proto_java", "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", @@ -65,23 +64,18 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//base:base_java_test_support", +@@ -2136,7 +2129,6 @@ android_library("base_module_java") { + # Deps to pull services into base module. + # TODO(crbug.com/1126301): Consider moving these to the chrome module to + # reduce base dex size. +- "$google_play_services_package:google_play_services_cast_framework_java", + "//components/background_task_scheduler:background_task_scheduler_java", + "//components/payments/content/android:service_java", + "//third_party/android_sdk/androidx_browser:androidx_browser_java", diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -197,12 +197,6 @@ by a child template that "extends" this file. - - {% endif %} - -- -- -- - + {% endif %} - {% block extra_application_definitions %} -- -- - {% endblock %} - {% endmacro %} - {% if not definitions_in_split %} +- +- +- + {% block base_application_definitions %} + {% endblock %} + {% block extra_application_definitions_for_test %} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java -@@ -42,7 +42,6 @@ import org.chromium.chrome.browser.profiles.Profile; +@@ -41,7 +41,6 @@ import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; import org.chromium.chrome.browser.settings.SettingsLauncher; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; @@ -126,7 +116,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage import org.chromium.components.browser_ui.settings.ChromeBasePreference; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.SearchUtils; -@@ -557,19 +556,6 @@ public class PasswordSettings +@@ -559,19 +558,6 @@ public class PasswordSettings } private void displaySecurityKeyLink() { @@ -155,10 +145,10 @@ diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/ import("//chrome/android/modules/buildflags.gni") -import( - "//chrome/android/modules/cablev2_authenticator/cablev2_authenticator_module.gni") - import("//chrome/android/modules/chime/chime_module.gni") import("//chrome/android/modules/extra_icu/extra_icu_module.gni") - import("//chrome/android/modules/image_editor/image_editor_module.gni") -@@ -72,7 +70,6 @@ if (!disable_autofill_assistant_dfm) { + import("//chrome/android/modules/stack_unwinder/stack_unwinder_module.gni") + import("//chrome/android/modules/test_dummy/test_dummy_module.gni") +@@ -68,7 +66,6 @@ if (!disable_autofill_assistant_dfm) { if (!disable_tab_ui_dfm) { monochrome_module_descs += [ tab_ui_module_desc ] } @@ -166,21 +156,10 @@ diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/ # Modules shipped in Trichrome (Android Q+). trichrome_module_descs = monochrome_module_descs -diff --git a/chrome/test/android/cast_emulator/BUILD.gn b/chrome/test/android/cast_emulator/BUILD.gn ---- a/chrome/test/android/cast_emulator/BUILD.gn -+++ b/chrome/test/android/cast_emulator/BUILD.gn -@@ -20,7 +20,6 @@ android_library("cast_emulator_java") { - "src/org/chromium/chrome/browser/media/router/DummyRoutePublisher.java", - ] - deps = [ -- "$google_play_services_package:google_play_services_cast_java", - "//base:base_java", - "//third_party/android_deps:android_support_v7_appcompat_java", - "//third_party/android_deps:androidx_mediarouter_mediarouter_java", diff --git a/components/media_router/browser/android/BUILD.gn b/components/media_router/browser/android/BUILD.gn --- a/components/media_router/browser/android/BUILD.gn +++ b/components/media_router/browser/android/BUILD.gn -@@ -10,10 +10,6 @@ android_library("java") { +@@ -11,10 +11,6 @@ android_library("java") { resources_package = "org.chromium.components.media_router" deps = [ ":java_resources", @@ -191,7 +170,16 @@ diff --git a/components/media_router/browser/android/BUILD.gn b/components/media "//base:base_java", "//base:jni_java", "//components/browser_ui/media/android:java", -@@ -130,9 +126,6 @@ java_library("junit") { +@@ -75,8 +71,6 @@ android_library("java") { + android_library("cast_options_provider_java") { + sources = [ "java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java" ] + deps = [ +- "$google_play_services_package:google_play_services_cast_framework_java", +- "$google_play_services_package:google_play_services_cast_java", + ] + } + +@@ -142,9 +136,6 @@ java_library("junit") { deps = [ ":java", ":test_support_java", @@ -1252,9 +1240,9 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java -@@ -4,16 +4,10 @@ - - package org.chromium.components.media_router.caf; +@@ -8,28 +8,10 @@ import android.app.Application; + import android.content.Context; + import android.content.ContextWrapper; -import com.google.android.gms.cast.framework.CastContext; - @@ -1264,11 +1252,23 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo public class CastUtils { - /** Helper method to return the {@link CastContext} instance. */ - public static CastContext getCastContext() { -- return CastContext.getSharedInstance(ContextUtils.getApplicationContext()); +- Context context = ContextUtils.getApplicationContext(); +- // The GMS Cast framework assumes the passed {@link Context} returns an instance of {@link +- // Application} from {@link getApplicationContext()}, so we make sure to remove any +- // wrappers. +- while (!(context.getApplicationContext() instanceof Application)) { +- if (context instanceof ContextWrapper) { +- context = ((ContextWrapper) context).getBaseContext(); +- } else { +- return null; +- } +- } +- return CastContext.getSharedInstance(context); - } - +- /** * Compares two origins. Empty origin strings correspond to unique origins in + * url::Origin. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java @@ -1484,7 +1484,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java -@@ -12,8 +12,6 @@ import android.util.Base64; +@@ -13,8 +13,6 @@ import android.util.Base64; import androidx.annotation.Nullable; import androidx.mediarouter.media.MediaRouteSelector; @@ -1493,7 +1493,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.components.media_router.MediaSource; -@@ -79,9 +77,7 @@ public class RemotingMediaSource implements MediaSource { +@@ -84,9 +82,7 @@ public class RemotingMediaSource implements MediaSource { */ @Override public MediaRouteSelector buildRouteSelector() { @@ -1504,7 +1504,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo } /** -@@ -108,7 +104,7 @@ public class RemotingMediaSource implements MediaSource { +@@ -113,7 +109,7 @@ public class RemotingMediaSource implements MediaSource { sApplicationId = (customAppId != null && !customAppId.isEmpty()) ? customAppId @@ -1563,11 +1563,22 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo @Override public BaseNotificationController getNotificationController() { return mNotificationController; +diff --git a/components/media_router/test/android/cast_emulator/BUILD.gn b/components/media_router/test/android/cast_emulator/BUILD.gn +--- a/components/media_router/test/android/cast_emulator/BUILD.gn ++++ b/components/media_router/test/android/cast_emulator/BUILD.gn +@@ -20,7 +20,6 @@ android_library("cast_emulator_java") { + "src/org/chromium/components/media_router/cast_emulator/router/DummyRoutePublisher.java", + ] + deps = [ +- "$google_play_services_package:google_play_services_cast_java", + "//base:base_java", + "//third_party/android_deps:android_support_v7_appcompat_java", + "//third_party/android_deps:androidx_mediarouter_mediarouter_java", diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn --- a/third_party/android_deps/BUILD.gn +++ b/third_party/android_deps/BUILD.gn -@@ -1092,45 +1092,6 @@ android_aar_prebuilt("google_play_services_basement_java") { - input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ] +@@ -1171,45 +1171,6 @@ android_aar_prebuilt("google_play_services_basement_java") { + "//build/android/bytecode:fragment_activity_replacer" } -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead. diff --git a/build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch b/build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch index 56f9dda0..f0a707b2 100644 --- a/build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch +++ b/build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch @@ -5,23 +5,21 @@ Subject: Remove dependency on com.google.android.gms.gcm It also disalbes Snippets, auto-update of offline pages and launching browser from background service. The snippets are already disabled in native codes, this will disable it on Java level. --- - chrome/android/BUILD.gn | 3 - - .../browser/ChromeBackgroundService.java | 4 - - .../gcm/ChromeGcmListenerService.java | 220 ------------------ + chrome/android/BUILD.gn | 11 -- components/background_task_scheduler/BUILD.gn | 1 - .../internal/BUILD.gn | 3 - - .../BackgroundTaskGcmTaskService.java | 160 ------------- + .../BackgroundTaskGcmTaskService.java | 160 ------------------ ...ackgroundTaskSchedulerFactoryInternal.java | 6 +- - ...kgroundTaskSchedulerGcmNetworkManager.java | 55 ----- - 8 files changed, 1 insertion(+), 451 deletions(-) - delete mode 100644 chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java + ...kgroundTaskSchedulerGcmNetworkManager.java | 60 ------- + .../gms/ChromiumPlayServicesAvailability.java | 10 +- + 7 files changed, 3 insertions(+), 248 deletions(-) delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -287,7 +287,6 @@ android_library("chrome_java") { +@@ -283,7 +283,6 @@ android_library("chrome_java") { "$google_play_services_package:google_play_services_cast_framework_java", "$google_play_services_package:google_play_services_cast_java", "$google_play_services_package:google_play_services_fido_java", @@ -29,7 +27,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "$google_play_services_package:google_play_services_iid_java", "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", -@@ -966,7 +965,6 @@ android_library("chrome_test_java") { +@@ -995,7 +994,6 @@ android_library("chrome_test_java") { "$google_play_services_package:google_play_services_cast_framework_java", "$google_play_services_package:google_play_services_cast_java", "$google_play_services_package:google_play_services_fido_java", @@ -37,7 +35,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "$google_play_services_package:google_play_services_iid_java", "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", -@@ -1915,7 +1913,6 @@ android_library("browser_java_test_support") { +@@ -1950,7 +1948,6 @@ android_library("browser_java_test_support") { ] deps = [ ":chrome_java", @@ -45,245 +43,39 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//chrome/browser/profiles/android:java", -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java -@@ -8,10 +8,6 @@ import android.content.Context; - - import androidx.annotation.VisibleForTesting; - --import com.google.android.gms.gcm.GcmNetworkManager; --import com.google.android.gms.gcm.GcmTaskService; --import com.google.android.gms.gcm.TaskParams; -- - import org.chromium.base.Log; - import org.chromium.base.task.PostTask; - import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler; -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java -deleted file mode 100644 ---- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java -+++ /dev/null -@@ -1,220 +0,0 @@ --// Copyright 2015 The Chromium Authors. All rights reserved. --// Use of this source code is governed by a BSD-style license that can be --// found in the LICENSE file. -- --package org.chromium.chrome.browser.services.gcm; -- --import android.content.Context; --import android.content.Intent; --import android.os.Build; --import android.os.Bundle; --import android.text.TextUtils; -- --import com.google.android.gms.gcm.GcmListenerService; -- --import org.chromium.base.ContextUtils; --import org.chromium.base.Log; --import org.chromium.base.ThreadUtils; --import org.chromium.base.task.PostTask; --import org.chromium.chrome.browser.device.DeviceConditions; --import org.chromium.chrome.browser.init.ChromeBrowserInitializer; --import org.chromium.chrome.browser.init.ProcessInitializationHandler; --import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; --import org.chromium.components.background_task_scheduler.TaskIds; --import org.chromium.components.background_task_scheduler.TaskInfo; --import org.chromium.components.gcm_driver.GCMDriver; --import org.chromium.components.gcm_driver.GCMMessage; --import org.chromium.components.gcm_driver.InstanceIDFlags; --import org.chromium.components.gcm_driver.LazySubscriptionsManager; --import org.chromium.components.gcm_driver.SubscriptionFlagManager; --import org.chromium.content_public.browser.UiThreadTaskTraits; -- --/** -- * Receives Downstream messages and status of upstream messages from GCM. -- */ --public class ChromeGcmListenerService extends GcmListenerService { -- private static final String TAG = "ChromeGcmListener"; -- -- @Override -- public void onCreate() { -- ProcessInitializationHandler.getInstance().initializePreNative(); -- super.onCreate(); -- } -- -- @Override -- public void onMessageReceived(final String from, final Bundle data) { -- boolean hasCollapseKey = !TextUtils.isEmpty(data.getString("collapse_key")); -- GcmUma.recordDataMessageReceived(ContextUtils.getApplicationContext(), hasCollapseKey); -- -- // Dispatch the message to the GCM Driver for native features. -- PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { -- GCMMessage message = null; -- try { -- message = new GCMMessage(from, data); -- } catch (IllegalArgumentException e) { -- Log.e(TAG, "Received an invalid GCM Message", e); -- return; -- } -- -- scheduleOrDispatchMessageToDriver(message); -- }); -- } -- -- @Override -- public void onMessageSent(String msgId) { -- Log.d(TAG, "Message sent successfully. Message id: " + msgId); -- GcmUma.recordGcmUpstreamHistogram( -- ContextUtils.getApplicationContext(), GcmUma.UMA_UPSTREAM_SUCCESS); -- } -- -- @Override -- public void onSendError(String msgId, String error) { -- Log.w(TAG, "Error in sending message. Message id: " + msgId + " Error: " + error); -- GcmUma.recordGcmUpstreamHistogram( -- ContextUtils.getApplicationContext(), GcmUma.UMA_UPSTREAM_SEND_FAILED); -- } -- -- @Override -- public void onDeletedMessages() { -- // TODO(johnme): Ask GCM to include the subtype in this event. -- Log.w(TAG, "Push messages were deleted, but we can't tell the Service Worker as we don't" -- + "know what subtype (app ID) it occurred for."); -- GcmUma.recordDeletedMessages(ContextUtils.getApplicationContext()); -- } -- -- /** -- * Returns if we deliver the GCMMessage with a background service by calling -- * Context#startService. This will only work if Android has put us in a whitelist to allow -- * background services to be started. -- */ -- private static boolean maybeBypassScheduler(GCMMessage message) { -- // Android only puts us on a whitelist for high priority messages. -- if (message.getOriginalPriority() != GCMMessage.Priority.HIGH) { -- return false; -- } -- -- final String subscriptionId = SubscriptionFlagManager.buildSubscriptionUniqueId( -- message.getAppId(), message.getSenderId()); -- if (!SubscriptionFlagManager.hasFlags(subscriptionId, InstanceIDFlags.BYPASS_SCHEDULER)) { -- return false; -- } -- -- try { -- Context context = ContextUtils.getApplicationContext(); -- Intent intent = new Intent(context, GCMBackgroundService.class); -- intent.putExtras(message.toBundle()); -- context.startService(intent); -- return true; -- } catch (IllegalStateException e) { -- // Failed to start service, maybe we're not whitelisted? Fallback to using -- // BackgroundTaskScheduler to start Chrome. -- // TODO(knollr): Add metrics for this. -- Log.e(TAG, "Could not start background service", e); -- return false; -- } -- } -- -- /** -- * Returns if the |message| is sent from a lazy subscription and we persist it to be delivered -- * the next time Chrome is launched into foreground. -- */ -- private static boolean maybePersistLazyMessage(GCMMessage message) { -- if (isFullBrowserLoaded()) { -- return false; -- } -- -- final String subscriptionId = LazySubscriptionsManager.buildSubscriptionUniqueId( -- message.getAppId(), message.getSenderId()); -- -- boolean isSubscriptionLazy = LazySubscriptionsManager.isSubscriptionLazy(subscriptionId); -- boolean isHighPriority = message.getOriginalPriority() == GCMMessage.Priority.HIGH; -- // TODO(crbug.com/945402): Add metrics for the new high priority message logic. -- boolean shouldPersistMessage = isSubscriptionLazy && !isHighPriority; -- if (shouldPersistMessage) { -- LazySubscriptionsManager.persistMessage(subscriptionId, message); -- } -- -- return shouldPersistMessage; -- } -- -- /** -- * Schedules a background task via Job Scheduler to deliver the |message|. Delivery might get -- * delayed by Android if the device is currently in doze mode. -- */ -- private static void scheduleBackgroundTask(GCMMessage message) { -- // TODO(peter): Add UMA for measuring latency introduced by the BackgroundTaskScheduler. -- TaskInfo backgroundTask = -- TaskInfo.createOneOffTask(TaskIds.GCM_BACKGROUND_TASK_JOB_ID, 0 /* immediately */) -- .setExtras(message.toBundle()) -- .build(); -- BackgroundTaskSchedulerFactory.getScheduler().schedule( -- ContextUtils.getApplicationContext(), backgroundTask); -- } -- -- private static void recordWebPushMetrics(GCMMessage message) { -- Context context = ContextUtils.getApplicationContext(); -- boolean inIdleMode = DeviceConditions.isCurrentlyInIdleMode(context); -- boolean isHighPriority = message.getOriginalPriority() == GCMMessage.Priority.HIGH; -- -- @GcmUma.WebPushDeviceState -- int state; -- if (inIdleMode) { -- state = isHighPriority ? GcmUma.WebPushDeviceState.IDLE_HIGH_PRIORITY -- : GcmUma.WebPushDeviceState.IDLE_NOT_HIGH_PRIORITY; -- } else { -- state = isHighPriority ? GcmUma.WebPushDeviceState.NOT_IDLE_HIGH_PRIORITY -- : GcmUma.WebPushDeviceState.NOT_IDLE_NOT_HIGH_PRIORITY; -- } -- GcmUma.recordWebPushReceivedDeviceState(state); -- } -- -- /** -- * If Chrome is backgrounded, messages coming from lazy subscriptions are -- * persisted on disk and replayed next time Chrome is forgrounded. If Chrome is forgrounded or -- * if the message isn't coming from a lazy subscription, this method either schedules |message| -- * to be dispatched through the Job Scheduler, which we use on Android N and beyond, or -- * immediately dispatches the message on other versions of Android. Some subscriptions bypass -- * the Job Scheduler and use Context#startService instead if the |message| has a high priority. -- * Must be called on the UI thread both for the BackgroundTaskScheduler and for dispatching the -- * |message| to the GCMDriver. -- */ -- static void scheduleOrDispatchMessageToDriver(GCMMessage message) { -- ThreadUtils.assertOnUiThread(); -- -- // GCMMessage#getAppId never returns null. -- if (message.getAppId().startsWith("wp:")) { -- recordWebPushMetrics(message); -- } -- -- // Check if we should only persist the message for now. -- if (maybePersistLazyMessage(message)) { -- return; -- } -- -- // Dispatch message immediately on pre N versions of Android. -- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { -- dispatchMessageToDriver(message); -- return; -- } -- -- // Check if we should bypass the scheduler for high priority messages. -- if (!maybeBypassScheduler(message)) { -- scheduleBackgroundTask(message); -- } -- } -- -- /** -- * To be called when a GCM message is ready to be dispatched. Will initialise the native code -- * of the browser process, and forward the message to the GCM Driver. Must be called on the UI -- * thread. -- */ -- static void dispatchMessageToDriver(GCMMessage message) { -- ThreadUtils.assertOnUiThread(); -- ChromeBrowserInitializer.getInstance().handleSynchronousStartup(); -- GCMDriver.dispatchMessage(message); -- } -- -- private static boolean isFullBrowserLoaded() { -- return ChromeBrowserInitializer.getInstance().isFullBrowserInitialized(); -- } --} +@@ -2089,8 +2086,6 @@ android_library("base_monochrome_module_java") { + # enable_chrome_module is true and //chrome code is in a DFM. + android_library("base_module_java") { + sources = [ +- "java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java", +- "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java", + "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java", + "java/src/org/chromium/chrome/browser/base/MainDexApplicationImpl.java", + "java/src/org/chromium/chrome/browser/base/SplitChromeApplication.java", +@@ -2098,8 +2093,6 @@ android_library("base_module_java") { + "java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java", + "java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java", + "java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java", +- "java/src/org/chromium/chrome/browser/base/SplitCompatGcmListenerService.java", +- "java/src/org/chromium/chrome/browser/base/SplitCompatGcmTaskService.java", + "java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java", + "java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java", + "java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java", +@@ -2121,14 +2114,10 @@ android_library("base_module_java") { + "java/src/org/chromium/chrome/browser/omaha/OmahaClient.java", + "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java", + "java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java", +- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java", +- "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundService.java", +- "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java", + "java/src/org/chromium/chrome/browser/tracing/TracingNotificationService.java", + ] + deps = [ + ":chrome_base_module_resources", +- "$google_play_services_package:google_play_services_gcm_java", + "//base:base_java", + "//components/embedder_support/android:application_java", + "//components/media_router/browser/android:cast_options_provider_java", diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn --- a/components/background_task_scheduler/BUILD.gn +++ b/components/background_task_scheduler/BUILD.gn @@ -314,7 +106,7 @@ diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//components/background_task_scheduler:background_task_scheduler_task_ids_java", -@@ -99,7 +97,6 @@ if (is_android) { +@@ -100,7 +98,6 @@ if (is_android) { ":internal_java", "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", @@ -507,7 +299,7 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/ deleted file mode 100644 --- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java +++ /dev/null -@@ -1,55 +0,0 @@ +@@ -1,60 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. @@ -520,10 +312,17 @@ deleted file mode 100644 -import androidx.annotation.NonNull; -import androidx.annotation.VisibleForTesting; - +-import com.google.android.gms.gcm.GcmNetworkManager; +-import com.google.android.gms.gcm.OneoffTask; +-import com.google.android.gms.gcm.PeriodicTask; +-import com.google.android.gms.gcm.Task; +-import com.google.android.gms.gcm.TaskParams; +- -import org.chromium.base.Log; -import org.chromium.base.ThreadUtils; -import org.chromium.components.background_task_scheduler.TaskInfo; -import org.chromium.components.background_task_scheduler.TaskParameters; +-import org.chromium.gms.ChromiumPlayServicesAvailability; - -import java.util.concurrent.TimeUnit; - @@ -550,19 +349,50 @@ deleted file mode 100644 - @Override - public boolean schedule(Context context, @NonNull TaskInfo taskInfo) { - ThreadUtils.assertOnUiThread(); -- - return false; - } - - @Override - public void cancel(Context context, int taskId) { -- ThreadUtils.assertOnUiThread(); - } - - private static String taskIdToTaskTag(int taskId) { - return Integer.toString(taskId); - } -} +diff --git a/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java b/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java +--- a/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java ++++ b/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java +@@ -5,9 +5,6 @@ package org.chromium.gms; + + import android.content.Context; + +-import com.google.android.gms.common.ConnectionResult; +-import com.google.android.gms.common.GoogleApiAvailability; +- + public final class ChromiumPlayServicesAvailability { + /** + * The minimum GMS version we're requesting. isGooglePlayServicesAvailable will fail if the +@@ -30,8 +27,7 @@ public final class ChromiumPlayServicesAvailability { + * PM/UX. + */ + public static int getGooglePlayServicesConnectionResult(final Context context) { +- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( +- context, GMS_VERSION_NUMBER); ++ return 16; // API_UNAVAILABLE + } + + /** +@@ -44,8 +40,6 @@ public final class ChromiumPlayServicesAvailability { + * PM/UX. + */ + public static boolean isGooglePlayServicesAvailable(final Context context) { +- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( +- context, GMS_VERSION_NUMBER) +- == ConnectionResult.SUCCESS; ++ return false; + } + } -- 2.17.1 diff --git a/build/patches/Remove-dependency-on-com.google.android.play.patch b/build/patches/Remove-dependency-on-com.google.android.play.patch index eeb5d753..f9a4d410 100644 --- a/build/patches/Remove-dependency-on-com.google.android.play.patch +++ b/build/patches/Remove-dependency-on-com.google.android.play.patch @@ -14,14 +14,14 @@ Subject: Remove dependency on com.google.android.play diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -511,7 +511,6 @@ android_library("chrome_java") { +@@ -515,7 +515,6 @@ android_library("chrome_java") { "//third_party/blink/public/mojom:android_mojo_bindings_java", "//third_party/blink/public/mojom:mojom_platform_java", "//third_party/gif_player:gif_player_java", - "//third_party/google_android_play_core:com_google_android_play_core_java", + "//third_party/metrics_proto:metrics_proto_java", "//ui/android:ui_java", "//ui/base/mojom:mojom_java", - "//ui/gfx/geometry/mojom:mojom_java", diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java diff --git a/build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch b/build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch index 66dc36a3..0806f071 100644 --- a/build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch +++ b/build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch @@ -14,14 +14,14 @@ Subject: Remove dependency on fido, iid, instantapps, location device/BUILD.gn | 1 - services/BUILD.gn | 3 - services/device/geolocation/BUILD.gn | 1 - - .../geolocation/LocationProviderGmsCore.java | 103 +----------------- + .../geolocation/LocationProviderGmsCore.java | 102 +----------------- third_party/android_deps/BUILD.gn | 75 ------------- - 13 files changed, 15 insertions(+), 301 deletions(-) + 13 files changed, 14 insertions(+), 301 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -286,8 +286,6 @@ android_library("chrome_java") { +@@ -282,8 +282,6 @@ android_library("chrome_java") { "$google_play_services_package:google_play_services_basement_java", "$google_play_services_package:google_play_services_cast_framework_java", "$google_play_services_package:google_play_services_cast_java", @@ -30,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//base:jni_java", -@@ -767,7 +765,6 @@ junit_binary("chrome_junit_tests") { +@@ -774,7 +772,6 @@ junit_binary("chrome_junit_tests") { "$google_play_services_package:google_play_services_basement_java", "$google_play_services_package:google_play_services_cast_framework_java", "$google_play_services_package:google_play_services_cast_java", @@ -38,7 +38,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", -@@ -963,8 +960,6 @@ android_library("chrome_test_java") { +@@ -992,8 +989,6 @@ android_library("chrome_test_java") { "$google_play_services_package:google_play_services_basement_java", "$google_play_services_package:google_play_services_cast_framework_java", "$google_play_services_package:google_play_services_cast_java", @@ -50,7 +50,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -1695,9 +1695,6 @@ chrome_java_sources = [ +@@ -1684,9 +1684,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenViewDelegate.java", "java/src/org/chromium/chrome/browser/webauth/AuthenticatorFactory.java", "java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java", @@ -58,8 +58,8 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java - "java/src/org/chromium/chrome/browser/webauth/Fido2CredentialRequest.java", - "java/src/org/chromium/chrome/browser/webauth/Fido2Helper.java", "java/src/org/chromium/chrome/browser/webauth/HandlerResponseCallback.java", + "java/src/org/chromium/chrome/browser/webauth/authenticator/CableAuthenticatorActivity.java", "java/src/org/chromium/chrome/browser/webshare/ShareServiceImplementationFactory.java", - ] diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java @@ -345,7 +345,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -805,7 +805,7 @@ const base::Feature kWebContentsOcclusion { +@@ -782,7 +782,7 @@ const base::Feature kWebContentsOcclusion { // Controls whether the WebAuthentication API is enabled: // https://w3c.github.io/webauthn const base::Feature kWebAuth{"WebAuthentication", @@ -357,7 +357,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c diff --git a/device/BUILD.gn b/device/BUILD.gn --- a/device/BUILD.gn +++ b/device/BUILD.gn -@@ -407,7 +407,6 @@ if (is_android) { +@@ -423,7 +423,6 @@ if (is_android) { deps = [ "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", @@ -368,7 +368,7 @@ diff --git a/device/BUILD.gn b/device/BUILD.gn diff --git a/services/BUILD.gn b/services/BUILD.gn --- a/services/BUILD.gn +++ b/services/BUILD.gn -@@ -105,9 +105,6 @@ if (is_android) { +@@ -104,9 +104,6 @@ if (is_android) { "shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java", ] deps = [ @@ -381,7 +381,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn --- a/services/device/geolocation/BUILD.gn +++ b/services/device/geolocation/BUILD.gn -@@ -166,7 +166,6 @@ if (is_android) { +@@ -157,7 +157,6 @@ if (is_android) { ":geolocation_jni_headers", "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", @@ -392,12 +392,11 @@ diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java --- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java +++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java -@@ -8,16 +8,6 @@ import android.content.Context; +@@ -8,132 +8,40 @@ import android.content.Context; import android.location.Location; import android.os.Bundle; -import com.google.android.gms.common.ConnectionResult; --import com.google.android.gms.common.GoogleApiAvailability; -import com.google.android.gms.common.api.GoogleApiClient; -import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; -import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; @@ -409,7 +408,10 @@ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/ge import org.chromium.base.Log; import org.chromium.base.ThreadUtils; import org.chromium.components.location.LocationUtils; -@@ -27,126 +17,39 @@ import org.chromium.components.location.LocationUtils; +-import org.chromium.gms.ChromiumPlayServicesAvailability; + + /** + * This is a LocationProvider using Google Play Services. * * https://developers.google.com/android/reference/com/google/android/gms/location/package-summary */ @@ -425,12 +427,11 @@ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/ge - private final GoogleApiClient mGoogleApiClient; - private FusedLocationProviderApi mLocationProviderApi = LocationServices.FusedLocationApi; - - private boolean mEnablehighAccuracy; +- private boolean mEnablehighAccuracy; - private LocationRequest mLocationRequest; - +- public static boolean isGooglePlayServicesAvailable(Context context) { -- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) -- == ConnectionResult.SUCCESS; +- return ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(context); + return false; } @@ -510,7 +511,7 @@ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/ge public void start(boolean enableHighAccuracy) { ThreadUtils.assertOnUiThread(); - if (mGoogleApiClient.isConnected()) mGoogleApiClient.disconnect(); - +- mEnablehighAccuracy = enableHighAccuracy; - mGoogleApiClient.connect(); // Should return via onConnected(). } @@ -526,18 +527,16 @@ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/ge } @Override - public boolean isRunning() { - assert ThreadUtils.runningOnUiThread(); -- if (mGoogleApiClient == null) return false; -- return mGoogleApiClient.isConnecting() || mGoogleApiClient.isConnected(); -- } +@@ -142,10 +50,4 @@ public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectio + if (mGoogleApiClient == null) return false; + return mGoogleApiClient.isConnecting() || mGoogleApiClient.isConnected(); + } - - // LocationListener implementation - @Override - public void onLocationChanged(Location location) { - LocationProviderAdapter.onNewLocationAvailable(location); -+ return false; - } +- } } diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn --- a/third_party/android_deps/BUILD.gn @@ -550,7 +549,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. ":org_robolectric_utils_java", ":org_robolectric_utils_reflector_java", "//third_party/robolectric:android-all-10-robolectric-5803371_java", -@@ -1132,20 +1131,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") { +@@ -1211,20 +1210,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") { strip_resources = !is_java_debug } @@ -571,7 +570,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. android_aar_prebuilt("google_play_services_gcm_java") { aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar" -@@ -1164,52 +1149,6 @@ android_aar_prebuilt("google_play_services_gcm_java") { +@@ -1243,52 +1228,6 @@ android_aar_prebuilt("google_play_services_gcm_java") { strip_drawables = true } @@ -624,7 +623,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. android_aar_prebuilt("google_play_services_tasks_java") { aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-17.0.0.aar" -@@ -1584,20 +1523,6 @@ java_prebuilt("org_robolectric_shadows_multidex_java") { +@@ -1690,20 +1629,6 @@ java_prebuilt("org_robolectric_shadows_multidex_java") { bypass_platform_checks = true } diff --git a/build/patches/Remove-dependency-on-flags-places-and-stats.patch b/build/patches/Remove-dependency-on-flags-places-and-stats.patch index e59da75b..961a3800 100644 --- a/build/patches/Remove-dependency-on-flags-places-and-stats.patch +++ b/build/patches/Remove-dependency-on-flags-places-and-stats.patch @@ -9,7 +9,7 @@ Subject: Remove dependency on flags, places and stats diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn --- a/third_party/android_deps/BUILD.gn +++ b/third_party/android_deps/BUILD.gn -@@ -2066,37 +2066,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") { +@@ -2251,37 +2251,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") { visibility = [ ":*" ] } diff --git a/build/patches/Remove-dependency-on-vision-clearcut-and-phenotype.patch b/build/patches/Remove-dependency-on-vision-clearcut-and-phenotype.patch index ba5d6da2..88d6acae 100644 --- a/build/patches/Remove-dependency-on-vision-clearcut-and-phenotype.patch +++ b/build/patches/Remove-dependency-on-vision-clearcut-and-phenotype.patch @@ -5,17 +5,17 @@ Subject: Remove dependency on vision, clearcut and phenotype --- services/BUILD.gn | 4 - services/shape_detection/BUILD.gn | 2 - - .../shape_detection/BarcodeDetectionImpl.java | 114 +--------------- - .../BarcodeDetectionProviderImpl.java | 30 +---- - .../FaceDetectionImplGmsCore.java | 122 +----------------- - .../shape_detection/TextDetectionImpl.java | 60 +-------- - third_party/android_deps/BUILD.gn | 86 ------------ - 7 files changed, 10 insertions(+), 408 deletions(-) + .../shape_detection/BarcodeDetectionImpl.java | 114 +----------------- + .../BarcodeDetectionProviderImpl.java | 31 +---- + .../FaceDetectionImplGmsCore.java | 96 +-------------- + .../shape_detection/TextDetectionImpl.java | 58 +-------- + third_party/android_deps/BUILD.gn | 86 ------------- + 7 files changed, 10 insertions(+), 381 deletions(-) diff --git a/services/BUILD.gn b/services/BUILD.gn --- a/services/BUILD.gn +++ b/services/BUILD.gn -@@ -108,8 +108,6 @@ if (is_android) { +@@ -107,8 +107,6 @@ if (is_android) { "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", "$google_play_services_package:google_play_services_location_java", @@ -24,7 +24,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", -@@ -140,8 +138,6 @@ if (is_android) { +@@ -139,8 +137,6 @@ if (is_android) { deps = [ "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", @@ -36,7 +36,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn 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 -@@ -99,8 +99,6 @@ if (is_android) { +@@ -109,8 +109,6 @@ if (is_android) { deps = [ "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", @@ -198,20 +198,22 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java --- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java +++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java -@@ -8,9 +8,6 @@ import android.content.Context; +@@ -8,8 +8,6 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; --import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.GoogleApiAvailability; - import org.chromium.base.ContextUtils; import org.chromium.base.Log; - import org.chromium.mojo.bindings.InterfaceRequest; -@@ -39,12 +36,6 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider { - // Keep this list in sync with the constants defined in - // com.google.android.gms.vision.barcode.Barcode and the format hints - // supported by BarcodeDetectionImpl. + import org.chromium.gms.ChromiumPlayServicesAvailability; +@@ -36,15 +34,6 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider { + + @Override + public void enumerateSupportedFormats(EnumerateSupportedFormatsResponse callback) { +- // Keep this list in sync with the constants defined in +- // com.google.android.gms.vision.barcode.Barcode and the format hints +- // supported by BarcodeDetectionImpl. - int[] supportedFormats = {BarcodeFormat.AZTEC, BarcodeFormat.CODE_128, - BarcodeFormat.CODE_39, BarcodeFormat.CODE_93, BarcodeFormat.CODABAR, - BarcodeFormat.DATA_MATRIX, BarcodeFormat.EAN_13, BarcodeFormat.EAN_8, @@ -221,13 +223,12 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect } @Override -@@ -54,24 +45,7 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider { +@@ -54,23 +43,7 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider { public void onConnectionError(MojoException e) {} public static BarcodeDetectionProvider create() { - Context ctx = ContextUtils.getApplicationContext(); -- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(ctx) -- != ConnectionResult.SUCCESS) { +- if (!ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(ctx)) { - Log.w(TAG, "Google Play Services not available"); - return null; - } @@ -263,7 +264,7 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.gfx.mojom.RectF; -@@ -36,133 +31,20 @@ public class FaceDetectionImplGmsCore implements FaceDetection { +@@ -36,107 +31,20 @@ public class FaceDetectionImplGmsCore implements FaceDetection { private static final int MAX_EULER_Z = 15; private final int mMaxFaces; private final boolean mFastMode; @@ -320,13 +321,17 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect - faceArray[i] = new FaceDetectionResult(); - final Face face = faces.valueAt(i); - +- final PointF corner = face.getPosition(); +- faceArray[i].boundingBox = new RectF(); +- faceArray[i].boundingBox.x = corner.x; +- faceArray[i].boundingBox.y = corner.y; +- faceArray[i].boundingBox.width = face.getWidth(); +- faceArray[i].boundingBox.height = face.getHeight(); +- - final List landmarks = face.getLandmarks(); - ArrayList mojoLandmarks = - new ArrayList(landmarks.size()); - -- int leftEyeIndex = -1; -- int rightEyeIndex = -1; -- int bottomMouthIndex = -1; - for (int j = 0; j < landmarks.size(); j++) { - final Landmark landmark = landmarks.get(j); - final int landmarkType = landmark.getType(); @@ -345,13 +350,10 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect - - if (landmarkType == Landmark.LEFT_EYE) { - mojoLandmark.type = LandmarkType.EYE; -- leftEyeIndex = j; - } else if (landmarkType == Landmark.RIGHT_EYE) { - mojoLandmark.type = LandmarkType.EYE; -- rightEyeIndex = j; - } else if (landmarkType == Landmark.BOTTOM_MOUTH) { - mojoLandmark.type = LandmarkType.MOUTH; -- bottomMouthIndex = j; - } else { - assert landmarkType == Landmark.NOSE_BASE; - mojoLandmark.type = LandmarkType.NOSE; @@ -360,33 +362,6 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect - } - faceArray[i].landmarks = mojoLandmarks.toArray( - new org.chromium.shape_detection.mojom.Landmark[mojoLandmarks.size()]); -- -- final PointF corner = face.getPosition(); -- faceArray[i].boundingBox = new RectF(); -- if (leftEyeIndex != -1 && rightEyeIndex != -1 -- && Math.abs(face.getEulerZ()) < MAX_EULER_Z) { -- // Tighter calculation of the bounding box because the GMScore -- // and Android Face APIs give different results. -- final PointF leftEyePoint = landmarks.get(leftEyeIndex).getPosition(); -- final PointF rightEyePoint = landmarks.get(rightEyeIndex).getPosition(); -- final float eyesDistance = leftEyePoint.x - rightEyePoint.x; -- final float eyeMouthDistance = bottomMouthIndex != -1 -- ? landmarks.get(bottomMouthIndex).getPosition().y - leftEyePoint.y -- : -1; -- final PointF midEyePoint = -- new PointF(corner.x + face.getWidth() / 2, leftEyePoint.y); -- faceArray[i].boundingBox.x = 2 * rightEyePoint.x - midEyePoint.x; -- faceArray[i].boundingBox.y = midEyePoint.y - eyesDistance; -- faceArray[i].boundingBox.width = 2 * eyesDistance; -- faceArray[i].boundingBox.height = eyeMouthDistance > eyesDistance -- ? eyeMouthDistance + eyesDistance -- : 2 * eyesDistance; -- } else { -- faceArray[i].boundingBox.x = corner.x; -- faceArray[i].boundingBox.y = corner.y; -- faceArray[i].boundingBox.width = face.getWidth(); -- faceArray[i].boundingBox.height = face.getHeight(); -- } - } - callback.call(faceArray); + Log.e(TAG, "FaceDetector is not operational"); @@ -402,12 +377,10 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java --- a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java +++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java -@@ -8,12 +8,6 @@ import android.graphics.Point; +@@ -8,15 +8,10 @@ import android.graphics.Point; import android.graphics.Rect; import android.util.SparseArray; --import com.google.android.gms.common.ConnectionResult; --import com.google.android.gms.common.GoogleApiAvailability; -import com.google.android.gms.vision.Frame; -import com.google.android.gms.vision.text.TextBlock; -import com.google.android.gms.vision.text.TextRecognizer; @@ -415,7 +388,12 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.gfx.mojom.PointF; -@@ -29,58 +23,17 @@ import org.chromium.shape_detection.mojom.TextDetectionResult; + import org.chromium.gfx.mojom.RectF; +-import org.chromium.gms.ChromiumPlayServicesAvailability; + import org.chromium.mojo.system.MojoException; + import org.chromium.shape_detection.mojom.TextDetection; + import org.chromium.shape_detection.mojom.TextDetectionResult; +@@ -27,58 +22,17 @@ import org.chromium.shape_detection.mojom.TextDetectionResult; public class TextDetectionImpl implements TextDetection { private static final String TAG = "TextDetectionImpl"; @@ -476,13 +454,12 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect } @Override -@@ -89,12 +42,7 @@ public class TextDetectionImpl implements TextDetection { +@@ -87,11 +41,7 @@ public class TextDetectionImpl implements TextDetection { } public static TextDetection create() { -- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( -- ContextUtils.getApplicationContext()) -- != ConnectionResult.SUCCESS) { +- if (!ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable( +- ContextUtils.getApplicationContext())) { - Log.e(TAG, "Google Play Services not available"); - return null; - } @@ -494,7 +471,7 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn --- a/third_party/android_deps/BUILD.gn +++ b/third_party/android_deps/BUILD.gn -@@ -1220,36 +1220,6 @@ android_aar_prebuilt("google_play_services_tasks_java") { +@@ -1299,36 +1299,6 @@ android_aar_prebuilt("google_play_services_tasks_java") { strip_drawables = true } @@ -531,7 +508,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. android_aar_prebuilt("com_google_android_material_material_java") { aar_path = -@@ -2096,62 +2066,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") { +@@ -2281,62 +2251,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") { visibility = [ ":*" ] } diff --git a/build/patches/Remove-google_services_gcm.patch b/build/patches/Remove-google_services_gcm.patch index a47937f8..2a5644a8 100644 --- a/build/patches/Remove-google_services_gcm.patch +++ b/build/patches/Remove-google_services_gcm.patch @@ -3,9 +3,9 @@ Date: Sun, 3 May 2020 12:15:33 +0200 Subject: Remove google_services_gcm --- - .../browser/language/AppLocaleUtils.java | 19 ------------------- - third_party/android_deps/BUILD.gn | 18 ------------------ - 2 files changed, 37 deletions(-) + .../browser/language/AppLocaleUtils.java | 32 +------------------ + third_party/android_deps/BUILD.gn | 20 +----------- + 2 files changed, 2 insertions(+), 50 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java @@ -21,13 +21,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/language/AppLoc - import org.chromium.base.BundleUtils; import org.chromium.base.ContextUtils; - import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; -@@ -75,25 +70,11 @@ public class AppLocaleUtils { + import org.chromium.base.Log; +@@ -78,31 +73,12 @@ public class AppLocaleUtils { * @param context Activity context to enable downloaded language splits on. */ public static void maybeInstallActivitySplitCompat(Context context) { - if (GlobalAppLocaleController.getInstance().isOverridden() && BundleUtils.isBundle()) { +- Log.i(TAG, "maybeInstallActivitySplit isOverridden: %s isBundle: %s", +- GlobalAppLocaleController.getInstance().isOverridden(), BundleUtils.isBundle()); +- Log.i(TAG, "Override Locale: %s", getAppLanguagePref()); +- logInstalledLanguages(context); - SplitCompat.installActivity(context); +- logInstalledLanguages(context); - } } @@ -47,11 +52,35 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/language/AppLoc - splitInstallManager.startInstall(installRequest); - } } + + /** +@@ -110,12 +86,6 @@ public class AppLocaleUtils { + * @param context Context to log installed languages on. + */ + private static void logInstalledLanguages(Context context) { +- if (BundleUtils.isBundle()) { +- SplitInstallManager splitInstallManager = SplitInstallManagerFactory.create(context); +- Log.i(TAG, "Installed Languages: %s", +- TextUtils.join(", ", splitInstallManager.getInstalledLanguages())); +- } else { +- Log.i(TAG, "Installed Languages: None - not a bundle"); +- } ++ Log.i(TAG, "Installed Languages: None - feature disabled"); + } } diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn --- a/third_party/android_deps/BUILD.gn +++ b/third_party/android_deps/BUILD.gn -@@ -1061,24 +1061,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") { +@@ -81,7 +81,7 @@ java_annotation_processor("dagger_processor") { + + android_library("chromium_play_services_availability_java") { + sources = [ "util/org/chromium/gms/ChromiumPlayServicesAvailability.java" ] +- deps = [ "$google_play_services_package:google_play_services_base_java" ] ++ deps = [ ] + } + + android_library("chromium_play_services_availability_shadows_java") { +@@ -1135,24 +1135,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") { ] } diff --git a/build/patches/Remove-help-menu-item.patch b/build/patches/Remove-help-menu-item.patch index a3885e13..9f65e0ad 100644 --- a/build/patches/Remove-help-menu-item.patch +++ b/build/patches/Remove-help-menu-item.patch @@ -38,14 +38,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -1936,15 +1936,6 @@ public abstract class ChromeActivity +@@ -1963,15 +1963,6 @@ public abstract class ChromeActivity final Tab currentTab = getActivityTab(); - if (id == R.id.help_id) { - String url = currentTab != null ? currentTab.getUrlString() : ""; - Profile profile = mTabModelSelector.isIncognitoSelected() -- ? Profile.getLastUsedRegularProfile().getOffTheRecordProfile() +- ? Profile.getLastUsedRegularProfile().getPrimaryOTRProfile() - : Profile.getLastUsedRegularProfile(); - startHelpAndFeedback(url, "MobileMenuFeedback", profile); - return true; @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java -@@ -544,7 +544,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity 27 or target_sdk_version == "Q" %} {% endif %} @@ -58,6 +58,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro - + - - @@ -73,7 +74,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro {% set enable_vr = enable_vr|default(0) %} {% if enable_vr == "true" %} -@@ -105,8 +99,6 @@ by a child template that "extends" this file. +@@ -107,8 +101,6 @@ by a child template that "extends" this file. @@ -82,7 +83,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro {% block extra_uses_permissions %} {% endblock %} -@@ -910,16 +902,6 @@ by a child template that "extends" this file. +@@ -908,16 +900,6 @@ by a child template that "extends" this file. android:resource="@xml/file_paths" /> @@ -113,14 +114,14 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j - + import org.chromium.chrome.browser.tab.TabHidingType; +@@ -265,9 +263,6 @@ public abstract class ChromeActivity private boolean mRemoveWindowBackgroundDone; protected AccessibilityVisibilityHandler mAccessibilityVisibilityHandler; @@ -147,7 +148,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv // The PictureInPictureController is initialized lazily https://crbug.com/729738. private PictureInPictureController mPictureInPictureController; -@@ -890,28 +885,6 @@ public abstract class ChromeActivity +@@ -888,28 +883,6 @@ public abstract class ChromeActivity private void createContextReporterIfNeeded() { if (!mStarted) return; // Sync state reporting should work only in started state. if (mContextReporter != null || getActivityTab() == null) return; @@ -176,7 +177,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv } @Override -@@ -977,13 +950,6 @@ public abstract class ChromeActivity +@@ -971,13 +944,6 @@ public abstract class ChromeActivity if (GSAState.getInstance(this).isGsaAvailable() && !SysUtils.isLowEndDevice()) { GSAAccountChangeListener.getInstance().disconnect(); } @@ -234,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/s diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -25,9 +25,6 @@ import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; +@@ -27,9 +27,6 @@ import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; import org.chromium.chrome.browser.settings.SettingsLauncher; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; import org.chromium.chrome.browser.signin.IdentityServicesProvider; @@ -244,7 +245,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; import org.chromium.components.browser_ui.settings.SettingsUtils; -@@ -46,11 +43,10 @@ public class PrivacySettings +@@ -48,11 +45,10 @@ public class PrivacySettings private static final String PREF_NETWORK_PREDICTIONS = "preload_pages"; private static final String PREF_SECURE_DNS = "secure_dns"; private static final String PREF_DO_NOT_TRACK = "do_not_track"; @@ -257,7 +258,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting }; private ManagedPreferenceDelegate mManagedPreferenceDelegate; -@@ -90,47 +86,9 @@ public class PrivacySettings +@@ -92,47 +88,9 @@ public class PrivacySettings Preference secureDnsPref = findPreference(PREF_SECURE_DNS); secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled()); @@ -308,7 +309,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -18,10 +18,8 @@ import androidx.preference.PreferenceFragmentCompat; +@@ -19,10 +19,8 @@ import androidx.preference.PreferenceFragmentCompat; import org.chromium.base.ContextUtils; import org.chromium.chrome.R; @@ -319,7 +320,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe import org.chromium.chrome.browser.night_mode.NightModeUtils; import org.chromium.chrome.browser.offlinepages.prefetch.PrefetchConfiguration; import org.chromium.chrome.browser.password_check.PasswordCheck; -@@ -31,14 +29,7 @@ import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; +@@ -32,14 +30,7 @@ import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; @@ -334,7 +335,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe import org.chromium.chrome.browser.tracing.settings.DeveloperSettings; import org.chromium.components.browser_ui.settings.ChromeBasePreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; -@@ -56,23 +47,17 @@ import java.util.Map; +@@ -57,23 +48,17 @@ import java.util.Map; * The main settings screen, shown when the user first opens Settings. */ public class MainSettings extends PreferenceFragmentCompat @@ -359,7 +360,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe public static final String PREF_NOTIFICATIONS = "notifications"; public static final String PREF_DOWNLOADS = "downloads"; public static final String PREF_DEVELOPER = "developer"; -@@ -83,9 +68,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -84,9 +69,6 @@ public class MainSettings extends PreferenceFragmentCompat private final ManagedPreferenceDelegate mManagedPreferenceDelegate; private final Map mAllPreferences = new HashMap<>(); @@ -369,7 +370,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe private @Nullable PasswordCheck mPasswordCheck; public MainSettings() { -@@ -115,8 +97,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -116,42 +98,12 @@ public class MainSettings extends PreferenceFragmentCompat @Override public void onDestroy() { super.onDestroy(); @@ -378,39 +379,41 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe // The component should only be destroyed when the activity has been closed by the user // (e.g. by pressing on the back button) and not when the activity is temporarily destroyed // by the system. -@@ -126,31 +106,11 @@ public class MainSettings extends PreferenceFragmentCompat - @Override - public void onStart() { - super.onStart(); + if (getActivity().isFinishing() && mPasswordCheck != null) PasswordCheckFactory.destroy(); + } + +- @Override +- public void onStart() { +- super.onStart(); - SigninManager signinManager = IdentityServicesProvider.get().getSigninManager( - Profile.getLastUsedRegularProfile()); - if (signinManager.isSigninSupported()) { - signinManager.addSignInStateObserver(this); -- mSignInPreference.registerForUpdates(); - } - ProfileSyncService syncService = ProfileSyncService.get(); - if (syncService != null) { - syncService.addSyncStateChangedListener(this); - } - } - - @Override - public void onStop() { - super.onStop(); +- } +- +- @Override +- public void onStop() { +- super.onStop(); - SigninManager signinManager = IdentityServicesProvider.get().getSigninManager( - Profile.getLastUsedRegularProfile()); - if (signinManager.isSigninSupported()) { - signinManager.removeSignInStateObserver(this); -- mSignInPreference.unregisterForUpdates(); - } - ProfileSyncService syncService = ProfileSyncService.get(); - if (syncService != null) { - syncService.removeSyncStateChangedListener(this); - } - } - +- } +- @Override -@@ -185,12 +145,9 @@ public class MainSettings extends PreferenceFragmentCompat + public void onResume() { + super.onResume(); +@@ -170,12 +122,9 @@ public class MainSettings extends PreferenceFragmentCompat cachePreferences(); @@ -423,7 +426,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // If we are on Android O+ the Notifications preference should lead to the Android -@@ -234,17 +191,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -214,17 +163,6 @@ public class MainSettings extends PreferenceFragmentCompat .setTitle(SafetyCheckSettingsFragment.getSafetyCheckSettingsElementTitle( getContext())); } @@ -441,7 +444,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe } /** -@@ -257,9 +203,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -237,9 +175,6 @@ public class MainSettings extends PreferenceFragmentCompat Preference preference = getPreferenceScreen().getPreference(index); mAllPreferences.put(preference.getKey(), preference); } @@ -451,7 +454,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe } private void setManagedPreferenceDelegateForPreference(String key) { -@@ -268,15 +211,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -248,15 +183,6 @@ public class MainSettings extends PreferenceFragmentCompat } private void updatePreferences() { @@ -467,7 +470,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe updateSearchEnginePreference(); Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE); -@@ -293,10 +227,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -273,10 +199,6 @@ public class MainSettings extends PreferenceFragmentCompat } else { removePreferenceIfPresent(PREF_DEVELOPER); } @@ -478,7 +481,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe } private Preference addPreferenceIfAbsent(String key) { -@@ -310,52 +240,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -290,55 +212,6 @@ public class MainSettings extends PreferenceFragmentCompat if (preference != null) getPreferenceScreen().removePreference(preference); } @@ -517,12 +520,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe - mManageSync.setIcon(SyncSettingsUtils.getSyncStatusIcon(getActivity())); - mManageSync.setSummary(SyncSettingsUtils.getSyncStatusSummary(getActivity())); - mManageSync.setOnPreferenceClickListener(pref -> { -- if (isSyncConsentAvailable) { +- Context context = getContext(); +- if (ProfileSyncService.get().isSyncDisabledByEnterprisePolicy()) { +- SyncSettingsUtils.showSyncDisabledByAdministratorToast(context); +- } else if (isSyncConsentAvailable) { - SettingsLauncher settingsLauncher = new SettingsLauncherImpl(); -- settingsLauncher.launchSettingsActivity(getContext(), ManageSyncSettings.class); +- settingsLauncher.launchSettingsActivity(context, ManageSyncSettings.class); - } else { - SigninActivityLauncherImpl.get().launchActivityForPromoDefaultFlow( -- getContext(), SigninAccessPoint.SETTINGS, primaryAccountName); +- context, SigninAccessPoint.SETTINGS, primaryAccountName); - } - return true; - }); @@ -531,7 +537,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe private void updateSearchEnginePreference() { if (!TemplateUrlServiceFactory.get().isLoaded()) { ChromeBasePreference searchEnginePref = -@@ -387,34 +271,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -370,30 +243,6 @@ public class MainSettings extends PreferenceFragmentCompat pref.setSummary(isOn ? R.string.text_on : R.string.text_off); } @@ -553,20 +559,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe - // "You and Google" section header if the personalized sync promo is shown. - boolean isShowingPersonalizedPromo = - mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO; -- if (ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)) { -- findPreference(PREF_ACCOUNT_AND_GOOGLE_SERVICES_SECTION) -- .setVisible(!isShowingPersonalizedPromo); -- } else if (isShowingPersonalizedPromo) { -- removePreferenceIfPresent(PREF_ACCOUNT_SECTION); -- } else { -- addPreferenceIfAbsent(PREF_ACCOUNT_SECTION); -- } +- String prefName = ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) +- ? PREF_ACCOUNT_AND_GOOGLE_SERVICES_SECTION +- : PREF_ACCOUNT_SECTION; +- findPreference(prefName).setVisible(!isShowingPersonalizedPromo); - } - // TemplateUrlService.LoadListener implementation. @Override public void onTemplateUrlServiceLoaded() { -@@ -422,11 +278,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -401,11 +250,6 @@ public class MainSettings extends PreferenceFragmentCompat updateSearchEnginePreference(); } @@ -578,7 +580,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe @VisibleForTesting public ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() { return mManagedPreferenceDelegate; -@@ -436,9 +287,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -415,9 +259,6 @@ public class MainSettings extends PreferenceFragmentCompat return new ChromeManagedPreferenceDelegate() { @Override public boolean isPreferenceControlledByPolicy(Preference preference) { @@ -588,7 +590,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe if (PREF_SEARCH_ENGINE.equals(preference.getKey())) { return TemplateUrlServiceFactory.get().isDefaultSearchManaged(); } -@@ -447,11 +295,6 @@ public class MainSettings extends PreferenceFragmentCompat +@@ -426,11 +267,6 @@ public class MainSettings extends PreferenceFragmentCompat @Override public boolean isPreferenceClickDisabledByPolicy(Preference preference) { @@ -603,15 +605,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java -@@ -25,7 +25,6 @@ import org.chromium.chrome.browser.AppHooks; - import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; - import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.sync.AndroidSyncSettings; --import org.chromium.components.signin.AccountTrackerService; - import org.chromium.components.signin.AccountUtils; - import org.chromium.components.signin.base.CoreAccountInfo; - import org.chromium.components.signin.identitymanager.ClearAccountsAction; -@@ -52,7 +51,7 @@ import java.util.List; +@@ -53,7 +53,7 @@ import java.util.List; * See chrome/browser/signin/signin_manager_android.h for more details. */ public class SigninManager @@ -620,7 +614,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa private static final String TAG = "SigninManager"; /** -@@ -204,7 +203,6 @@ public class SigninManager +@@ -205,7 +205,6 @@ public class SigninManager * This is not final, as destroy() updates this. */ private long mNativeSigninManagerAndroid; @@ -628,7 +622,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa private final IdentityManager mIdentityManager; private final IdentityMutator mIdentityMutator; private final AndroidSyncSettings mAndroidSyncSettings; -@@ -242,24 +240,22 @@ public class SigninManager +@@ -243,24 +242,22 @@ public class SigninManager */ @CalledByNative private static SigninManager create(long nativeSigninManagerAndroid, @@ -656,7 +650,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa mIdentityManager = identityManager; mIdentityMutator = identityMutator; mAndroidSyncSettings = androidSyncSettings; -@@ -268,7 +264,6 @@ public class SigninManager +@@ -269,7 +266,6 @@ public class SigninManager mSigninAllowedByPolicy = SigninManagerJni.get().isSigninAllowedByPolicy(mNativeSigninManagerAndroid); @@ -664,7 +658,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa mIdentityManager.addObserver(this); reloadAllAccountsFromSystem(); -@@ -302,7 +297,6 @@ public class SigninManager +@@ -303,7 +299,6 @@ public class SigninManager @CalledByNative public void destroy() { mIdentityManager.removeObserver(this); @@ -672,7 +666,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa mNativeSigninManagerAndroid = 0; } -@@ -341,9 +335,7 @@ public class SigninManager +@@ -342,9 +337,7 @@ public class SigninManager * Returns true if signin can be started now. */ public boolean isSignInAllowed() { @@ -683,7 +677,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa } /** -@@ -398,17 +390,6 @@ public class SigninManager +@@ -399,17 +392,6 @@ public class SigninManager }); } @@ -701,7 +695,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa /** * Starts the sign-in flow, and executes the callback when finished. * -@@ -498,11 +479,8 @@ public class SigninManager +@@ -499,11 +481,8 @@ public class SigninManager mSignInState = signinState; notifySignInAllowedChanged(); @@ -715,7 +709,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa } /** -@@ -549,31 +527,6 @@ public class SigninManager +@@ -550,44 +529,6 @@ public class SigninManager mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount( mSignInState.mCoreAccountInfo.getId()); @@ -735,7 +729,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa - SigninPreferencesManager.getInstance().setLegacySyncAccountEmail( - mSignInState.mCoreAccountInfo.getEmail()); - -- enableSync(mSignInState.mCoreAccountInfo); +- // Cache the signed-in account name. This must be done after the native call, otherwise +- // sync tries to start without being signed in the native code and crashes. +- mAndroidSyncSettings.updateAccount( +- AccountUtils.createAccountFromName(mSignInState.mCoreAccountInfo.getEmail())); +- boolean atLeastOneDataTypeSynced = +- !ProfileSyncService.get().getChosenDataTypes().isEmpty(); +- if (!ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) +- || atLeastOneDataTypeSynced) { +- // Turn on sync only when user has at least one data type to sync, this is +- // consistent with {@link ManageSyncSettings#updataSyncStateFromSelectedModelTypes}, +- // in which we turn off sync we stop sync service when the user toggles off all the +- // sync types. +- mAndroidSyncSettings.enableChromeSync(); +- } - - RecordUserAction.record("Signin_Signin_Succeed"); - RecordHistogram.recordEnumeratedHistogram("Signin.SigninCompletedAccessPoint", @@ -747,7 +754,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa if (mSignInState.mCallback != null) { mSignInState.mCallback.onSignInComplete(); } -@@ -718,13 +671,8 @@ public class SigninManager +@@ -732,13 +673,8 @@ public class SigninManager Log.d(TAG, "On native signout, wipe user data: " + mSignOutState.mShouldWipeUserData); @@ -761,25 +768,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa } void finishSignOut() { -@@ -797,14 +745,6 @@ public class SigninManager - SigninManagerJni.get().stopApplyingCloudPolicy(mNativeSigninManagerAndroid); - } - -- private void enableSync(CoreAccountInfo accountInfo) { -- // Cache the signed-in account name. This must be done after the native call, otherwise -- // sync tries to start without being signed in the native code and crashes. -- mAndroidSyncSettings.updateAccount( -- AccountUtils.createAccountFromName(accountInfo.getEmail())); -- mAndroidSyncSettings.enableChromeSync(); -- } -- - private void disableSyncAndWipeData( - boolean shouldWipeUserData, final Runnable wipeDataCallback) { - mAndroidSyncSettings.updateAccount(null); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java -@@ -224,12 +224,8 @@ public class AndroidSyncSettings { +@@ -223,10 +223,8 @@ public class AndroidSyncSettings { private void setChromeSyncEnabled(boolean value) { updateSyncability(); @@ -787,30 +779,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyn + if (value == mChromeSyncEnabled) return; mChromeSyncEnabled = value; - -- try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) { -- mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mContractAuthority, value); -- } +- mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mContractAuthority, value); notifyObservers(); } -@@ -282,31 +278,9 @@ public class AndroidSyncSettings { - private boolean updateCachedSettings() { +@@ -275,27 +273,9 @@ public class AndroidSyncSettings { boolean oldChromeSyncEnabled = mChromeSyncEnabled; boolean oldMasterSyncEnabled = mMasterSyncEnabled; -- -- try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) { -- if (mAccount != null) { -- mIsSyncable = -- mSyncContentResolverDelegate.getIsSyncable(mAccount, mContractAuthority) -- > 0; -- mChromeSyncEnabled = mSyncContentResolverDelegate.getSyncAutomatically( -- mAccount, mContractAuthority); -- } else { -- mIsSyncable = false; -- mChromeSyncEnabled = false; -- } -- mMasterSyncEnabled = mSyncContentResolverDelegate.getMasterSyncAutomatically(); + +- if (mAccount != null) { +- mIsSyncable = +- mSyncContentResolverDelegate.getIsSyncable(mAccount, mContractAuthority) > 0; +- mChromeSyncEnabled = +- mSyncContentResolverDelegate.getSyncAutomatically(mAccount, mContractAuthority); +- } else { +- mIsSyncable = false; +- mChromeSyncEnabled = false; - } +- mMasterSyncEnabled = mSyncContentResolverDelegate.getMasterSyncAutomatically(); - - if (mAccount != null && ProfileSyncService.get() != null - && ChromeFeatureList.isEnabled( @@ -831,7 +817,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyn diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java -@@ -170,15 +170,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat +@@ -172,15 +172,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat mPrivacyPrefManager.migrateNetworkPredictionPreferences(); @@ -902,7 +888,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java -@@ -171,16 +171,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -172,16 +172,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { @Override public boolean hasFeatures(Account account, String[] features) { @@ -919,7 +905,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon return false; } -@@ -220,32 +210,10 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -221,32 +211,10 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { public void updateCredentials( Account account, Activity activity, final Callback callback) { ThreadUtils.assertOnUiThread(); diff --git a/build/patches/Remove-weblayer-dependency-on-Play-Services.patch b/build/patches/Remove-weblayer-dependency-on-Play-Services.patch index 8272569f..1d0af35c 100644 --- a/build/patches/Remove-weblayer-dependency-on-Play-Services.patch +++ b/build/patches/Remove-weblayer-dependency-on-Play-Services.patch @@ -13,14 +13,14 @@ diff --git a/weblayer/shell/android/BUILD.gn b/weblayer/shell/android/BUILD.gn testonly = true resources_package = "org.chromium.weblayer.shell" -- # The play services dependency is necessary for the +- # The google_play_services_base_java dependency is necessary for the - # google_play_services_version definition in the manifest. deps = [ ":weblayer_shell_resources", - "$google_play_services_package:google_play_services_base_java", "//base:base_java", + "//components/strictmode/android:java", "//third_party/android_deps:android_support_v4_java", - "//third_party/android_deps:android_support_v7_appcompat_java", -- 2.17.1 diff --git a/build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch b/build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch index c18a5a7b..1177b45a 100644 --- a/build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch +++ b/build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch @@ -9,7 +9,7 @@ Subject: Replace DoH probe domain with RIPE domain diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc --- a/net/dns/dns_transaction.cc +++ b/net/dns/dns_transaction.cc -@@ -837,7 +837,7 @@ class DnsTCPAttempt : public DnsAttempt { +@@ -828,7 +828,7 @@ class DnsTCPAttempt : public DnsAttempt { // ---------------------------------------------------------------------------- diff --git a/build/patches/Restore-Search-Ready-Omnibox-flag.patch b/build/patches/Restore-Search-Ready-Omnibox-flag.patch index 5daa12ba..c54b3115 100644 --- a/build/patches/Restore-Search-Ready-Omnibox-flag.patch +++ b/build/patches/Restore-Search-Ready-Omnibox-flag.patch @@ -20,7 +20,7 @@ Disable search-ready omnibox by default diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java -@@ -62,6 +62,7 @@ class DropdownItemViewInfoListBuilder { +@@ -63,6 +63,7 @@ class DropdownItemViewInfoListBuilder { private int mDropdownHeight; private boolean mEnableAdaptiveSuggestionsCount; private boolean mBuiltListHasFullyConcealedElements; @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggest DropdownItemViewInfoListBuilder(AutocompleteController controller) { mPriorityOrderedSuggestionProcessors = new ArrayList<>(); -@@ -91,8 +92,9 @@ class DropdownItemViewInfoListBuilder { +@@ -92,8 +93,9 @@ class DropdownItemViewInfoListBuilder { () -> mShareDelegateSupplier == null ? null : mShareDelegateSupplier.get(); mHeaderProcessor = new HeaderProcessor(context, host, delegate); @@ -40,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggest registerSuggestionProcessor( new AnswerSuggestionProcessor(context, host, textProvider, imageFetcherSupplier)); registerSuggestionProcessor( -@@ -220,6 +222,10 @@ class DropdownItemViewInfoListBuilder { +@@ -223,6 +225,10 @@ class DropdownItemViewInfoListBuilder { /** Signals that native initialization has completed. */ void onNativeInitialized() { @@ -54,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggest diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -3045,6 +3045,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3028,6 +3028,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAndroidAutofillAccessibilityName, flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid, FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)}, @@ -67,7 +67,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -1919,6 +1919,11 @@ +@@ -1972,6 +1972,11 @@ // with neural net palm detection. "expiry_milestone": 90 }, @@ -82,7 +82,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -3153,6 +3153,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] = +@@ -3105,6 +3105,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] = "process to check the Safe Browsing reputation of URLs without calling " "into GmsCore for every URL."; @@ -97,7 +97,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 -@@ -1812,6 +1812,9 @@ extern const char kSafeBrowsingSecuritySectionUiAndroidDescription[]; +@@ -1801,6 +1801,9 @@ extern const char kSafeBrowsingSectionUiAndroidDescription[]; extern const char kSafeBrowsingUseLocalBlacklistsV2Name[]; extern const char kSafeBrowsingUseLocalBlacklistsV2Description[]; @@ -110,7 +110,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -182,6 +182,7 @@ const base::Feature* kFeaturesExposedToJava[] = { +@@ -194,6 +194,7 @@ const base::Feature* kFeaturesExposedToJava[] = { &kReachedCodeProfiler, &kReaderModeInCCT, &kReengagementNotification, @@ -118,7 +118,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kRelatedSearches, &kSearchEnginePromoExistingDevice, &kSearchEnginePromoNewDevice, -@@ -545,6 +546,9 @@ const base::Feature kReengagementNotification{ +@@ -576,6 +577,9 @@ const base::Feature kReengagementNotification{ const base::Feature kRelatedSearches{"RelatedSearches", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -131,7 +131,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h -@@ -100,6 +100,7 @@ extern const base::Feature kReaderModeInCCT; +@@ -103,6 +103,7 @@ extern const base::Feature kReaderModeInCCT; extern const base::Feature kRelatedSearches; extern const base::Feature kSearchEnginePromoExistingDevice; extern const base::Feature kSearchEnginePromoNewDevice; @@ -142,14 +142,14 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -326,6 +326,7 @@ public abstract class ChromeFeatureList { +@@ -342,6 +342,7 @@ public abstract class ChromeFeatureList { public static final String OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT = "OmniboxAdaptiveSuggestionsCount"; public static final String OMNIBOX_ASSISTANT_VOICE_SEARCH = "OmniboxAssistantVoiceSearch"; + public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String OMNIBOX_COMPACT_SUGGESTIONS = "OmniboxCompactSuggestions"; - public static final String OMNIBOX_DEFERRED_KEYBOARD_POPUP = "OmniboxDeferredKeyboardPopup"; public static final String OMNIBOX_ENABLE_CLIPBOARD_PROVIDER_IMAGE_SUGGESTIONS = + "OmniboxEnableClipboardProviderImageSuggestions"; -- 2.17.1 diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index 2cf2c8d8..ba6d0166 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -8,7 +8,6 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad. chrome/android/chrome_java_sources.gni | 1 + .../java/res/layout/new_tab_page_layout.xml | 7 ++ .../android/java/res/layout/ntp_shortcuts.xml | 65 +++++++++++++++++++ - .../browser/bookmarks/BookmarkUtils.java | 2 +- .../feedback/ChromeFeedbackCollector.java | 1 + .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++++++++++ .../chrome/browser/ntp/NewTabPageLayout.java | 30 ++++++++- @@ -22,14 +21,14 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad. .../browser/flags/ChromeFeatureList.java | 1 + components/ntp_snippets/features.cc | 6 +- .../variations/fieldtrial_testing_config.json | 18 +++++ - 18 files changed, 197 insertions(+), 5 deletions(-) + 17 files changed, 196 insertions(+), 4 deletions(-) create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -911,6 +911,7 @@ chrome_java_resources = [ +@@ -914,6 +914,7 @@ chrome_java_resources = [ "java/res/layout/new_tab_page_snippets_expandable_header.xml", "java/res/layout/new_tab_page_snippets_expandable_header_with_menu.xml", "java/res/layout/new_tab_page_tile_grid_placeholder.xml", @@ -40,20 +39,20 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -702,6 +702,7 @@ chrome_java_sources = [ - "java/src/org/chromium/chrome/browser/feedback/IMEFeedbackSource.java", - "java/src/org/chromium/chrome/browser/feedback/InterestFeedFeedbackSource.java", - "java/src/org/chromium/chrome/browser/feedback/LowEndDeviceFeedbackSource.java", +@@ -700,6 +700,7 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java", + "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java", + "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java", + "java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java", - "java/src/org/chromium/chrome/browser/feedback/PermissionFeedbackSource.java", - "java/src/org/chromium/chrome/browser/feedback/ProcessIdFeedbackSource.java", - "java/src/org/chromium/chrome/browser/feedback/ScreenshotSource.java", + "java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java", + "java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java", + "java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java", diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml --- a/chrome/android/java/res/layout/new_tab_page_layout.xml +++ b/chrome/android/java/res/layout/new_tab_page_layout.xml -@@ -60,6 +60,13 @@ - android:layout="@layout/video_tutorial_iph_card" - android:inflatedId="@+id/video_iph_card"/> +@@ -51,6 +51,13 @@ + android:layout_marginTop="16dp" + android:visibility="gone"/> + + + -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java -@@ -170,7 +170,7 @@ public class BookmarkUtils { - * Shows bookmark main UI. - * @param activity An activity to start the manager with. - */ -- public static void showBookmarkManager(ChromeActivity activity) { -+ public static void showBookmarkManager(Activity activity) { - ThreadUtils.assertOnUiThread(); - String url = getFirstUrlToLoad(activity); - diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java --- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java @@ -204,15 +191,15 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -27,6 +27,7 @@ import org.chromium.base.MathUtils; - import org.chromium.base.TraceEvent; - import org.chromium.base.supplier.Supplier; - import org.chromium.chrome.R; -+import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider; - import org.chromium.chrome.browser.cryptids.ProbabilisticCryptidRenderer; +@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.cryptids.ProbabilisticCryptidRenderer; import org.chromium.chrome.browser.explore_sites.ExperimentalExploreSitesSection; -@@ -94,6 +95,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer + import org.chromium.chrome.browser.explore_sites.ExploreSitesBridge; + import org.chromium.chrome.browser.feature_engagement.TrackerFactory; ++import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; + import org.chromium.chrome.browser.native_page.ContextMenuManager; + import org.chromium.chrome.browser.ntp.LogoBridge.Logo; +@@ -104,6 +105,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer private UiConfig mUiConfig; private CallbackController mCallbackController = new CallbackController(); @@ -221,7 +208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL /** * Whether the tiles shown in the layout have finished loading. * With {@link #mHasShownView}, it's one of the 2 flags used to track initialisation progress. -@@ -253,6 +256,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer +@@ -264,6 +267,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer } mNoSearchLogoSpacer = findViewById(R.id.no_search_logo_spacer); @@ -229,7 +216,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLayoutChangeListener(); -@@ -549,10 +553,16 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer +@@ -553,10 +557,16 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer * Updates the padding for the tile grid based on what is shown above it. */ private void updateTileGridPadding() { @@ -248,8 +235,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL mSiteSectionViewHolder.itemView.setPadding( 0, paddingTop, 0, mSiteSectionViewHolder.itemView.getPaddingBottom()); } -@@ -885,6 +895,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer - mSearchBoxCoordinator.destroy(); +@@ -954,6 +964,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer + return iphCommandBuilder; } + private void initializeShortcuts() { @@ -319,7 +306,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug 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 -@@ -3564,6 +3564,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3571,6 +3571,9 @@ const FeatureEntry kFeatureEntries[] = { SINGLE_VALUE_TYPE_AND_VALUE( switches::kForceShowUpdateMenuItemCustomSummary, "Custom Summary")}, @@ -332,7 +319,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 -@@ -3196,6 +3196,9 @@ const char kStartSurfaceAndroidDescription[] = +@@ -3148,6 +3148,9 @@ const char kStartSurfaceAndroidDescription[] = "Enable showing the start surface when launching Chrome via the " "launcher."; @@ -345,7 +332,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 -@@ -1836,6 +1836,9 @@ extern const char kSiteIsolationForPasswordSitesDescription[]; +@@ -1825,6 +1825,9 @@ extern const char kSiteIsolationForPasswordSitesDescription[]; extern const char kSmartSuggestionForLargeDownloadsName[]; extern const char kSmartSuggestionForLargeDownloadsDescription[]; @@ -358,15 +345,15 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -173,6 +173,7 @@ const base::Feature* kFeaturesExposedToJava[] = { +@@ -186,6 +186,7 @@ const base::Feature* kFeaturesExposedToJava[] = { &kNewPhotoPicker, &kNotificationSuspender, &kOfflineIndicatorV2, + &kSimplifiedNTP, &kOmniboxSpareRenderer, - &kOverlayNewLayout, &kPayWithGoogleV1, -@@ -514,6 +515,9 @@ const base::Feature kNotificationSuspender{"NotificationSuspender", + &kPhotoPickerVideoSupport, +@@ -548,6 +549,9 @@ const base::Feature kNotificationSuspender{"NotificationSuspender", const base::Feature kOfflineIndicatorV2{"OfflineIndicatorV2", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -379,18 +366,18 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h -@@ -88,6 +88,7 @@ extern const base::Feature kLanguagesPreference; +@@ -92,6 +92,7 @@ extern const base::Feature kLanguagesPreference; extern const base::Feature kNewPhotoPicker; extern const base::Feature kNotificationSuspender; extern const base::Feature kOfflineIndicatorV2; +extern const base::Feature kSimplifiedNTP; extern const base::Feature kOmniboxSpareRenderer; - extern const base::Feature kOverlayNewLayout; extern const base::Feature kPayWithGoogleV1; + extern const base::Feature kPhotoPickerVideoSupport; diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -306,6 +306,7 @@ public abstract class ChromeFeatureList { +@@ -322,6 +322,7 @@ public abstract class ChromeFeatureList { public static final String LOOKALIKE_NAVIGATION_URL_SUGGESTIONS_UI = "LookalikeUrlNavigationSuggestionsUI"; public static final String MARK_HTTP_AS = "MarkHttpAs"; @@ -423,7 +410,7 @@ diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/featu diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json -@@ -6669,6 +6669,24 @@ +@@ -6736,6 +6736,24 @@ ] } ], diff --git a/build/patches/Restore-classic-new-tab-page.patch b/build/patches/Restore-classic-new-tab-page.patch index f590dba9..d6b18f50 100644 --- a/build/patches/Restore-classic-new-tab-page.patch +++ b/build/patches/Restore-classic-new-tab-page.patch @@ -58,7 +58,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc // Used to look up the URL to use for the New Tab page. Also tracks how we // arrived at that URL so it can be logged with UMA. struct NewTabURLDetails { -@@ -185,10 +150,9 @@ struct NewTabURLDetails { +@@ -187,10 +152,9 @@ struct NewTabURLDetails { : chrome::kChromeSearchLocalNtpUrl); #endif @@ -71,7 +71,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc GetDefaultSearchProviderTemplateURL(profile); if (!profile || !template_url) return NewTabURLDetails(local_url, NEW_TAB_URL_BAD); -@@ -204,7 +168,7 @@ struct NewTabURLDetails { +@@ -206,7 +170,7 @@ struct NewTabURLDetails { if (!IsURLAllowedForSupervisedUser(search_provider_url, profile)) return NewTabURLDetails(local_url, NEW_TAB_URL_BLOCKED); diff --git a/build/patches/Restore-enable-horizontal-tab-switcher-flag.patch b/build/patches/Restore-enable-horizontal-tab-switcher-flag.patch index 3e0c21e1..9e9a744b 100644 --- a/build/patches/Restore-enable-horizontal-tab-switcher-flag.patch +++ b/build/patches/Restore-enable-horizontal-tab-switcher-flag.patch @@ -9,7 +9,7 @@ Subject: Restore enable-horizontal-tab-switcher flag diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -1671,7 +1671,7 @@ +@@ -1697,7 +1697,7 @@ { "name": "enable-horizontal-tab-switcher", "owners": [ "memex-team@google.com" ], diff --git a/build/patches/Revert-Remove-ChromeActivity-reference-from-BookmarkPage.patch b/build/patches/Revert-Remove-ChromeActivity-reference-from-BookmarkPage.patch new file mode 100644 index 00000000..8b69970d --- /dev/null +++ b/build/patches/Revert-Remove-ChromeActivity-reference-from-BookmarkPage.patch @@ -0,0 +1,291 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sun, 24 Jan 2021 14:47:49 +0100 +Subject: Revert "Remove ChromeActivity reference from BookmarkPage" + +This reverts commit 1858b3af2a7d28e4e8b396a230a486fdc8cb0f0c. +--- + .../java/src/org/chromium/chrome/browser/DEPS | 3 ++ + .../browser/bookmarks/BookmarkActivity.java | 7 +---- + .../browser/bookmarks/BookmarkManager.java | 28 +++++++---------- + .../browser/bookmarks/BookmarkPage.java | 11 ++----- + .../bookmarks/BookmarkUndoController.java | 3 +- + .../browser/bookmarks/BookmarkUtils.java | 30 ++++++++++--------- + .../native_page/NativePageFactory.java | 3 +- + 7 files changed, 37 insertions(+), 48 deletions(-) + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/DEPS +--- a/chrome/android/java/src/org/chromium/chrome/browser/DEPS ++++ b/chrome/android/java/src/org/chromium/chrome/browser/DEPS +@@ -68,6 +68,9 @@ specific_include_rules = { + "CardUnmaskPrompt\.java": [ + "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", + ], ++ "BookmarkPage\.java": [ ++ "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", ++ ], + "QualityEnforcer\.java": [ + "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", + ], +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java +@@ -10,8 +10,6 @@ import android.text.TextUtils; + + import androidx.annotation.VisibleForTesting; + +-import org.chromium.base.IntentUtils; +-import org.chromium.chrome.browser.IntentHandler; + import org.chromium.chrome.browser.SnackbarActivity; + import org.chromium.components.bookmarks.BookmarkId; + import org.chromium.components.embedder_support.util.UrlConstants; +@@ -30,10 +28,7 @@ public class BookmarkActivity extends SnackbarActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); +- mBookmarkManager = new BookmarkManager(this, +- IntentUtils.safeGetParcelableExtra( +- getIntent(), IntentHandler.EXTRA_PARENT_COMPONENT), +- true, getSnackbarManager()); ++ mBookmarkManager = new BookmarkManager(this, true, getSnackbarManager()); + String url = getIntent().getDataString(); + if (TextUtils.isEmpty(url)) url = UrlConstants.BOOKMARKS_URL; + mBookmarkManager.updateForUrl(url); +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java +@@ -4,11 +4,10 @@ + + package org.chromium.chrome.browser.bookmarks; + ++import android.app.Activity; + import android.app.ActivityManager; +-import android.content.ComponentName; + import android.content.Context; + import android.text.TextUtils; +-import android.view.LayoutInflater; + import android.view.View; + import android.view.ViewGroup; + import android.view.accessibility.AccessibilityManager; +@@ -50,8 +49,7 @@ public class BookmarkManager + + private static boolean sPreventLoadingForTesting; + +- private Context mContext; +- private ComponentName mOpenBookmarkComponentName; ++ private Activity mActivity; + private ViewGroup mMainView; + private BookmarkModel mBookmarkModel; + private BookmarkUndoController mUndoController; +@@ -160,15 +158,12 @@ public class BookmarkManager + /** + * Creates an instance of {@link BookmarkManager}. It also initializes resources, + * bookmark models and jni bridges. +- * @param context The current {@link Context} used to obtain resources or inflate views. +- * @param openBookmarkComponentName The component to use when opening a bookmark. ++ * @param activity The activity context to use. + * @param isDialogUi Whether the main bookmarks UI will be shown in a dialog, not a NativePage. + * @param snackbarManager The {@link SnackbarManager} used to display snackbars. + */ +- public BookmarkManager(Context context, ComponentName openBookmarkComponentName, +- boolean isDialogUi, SnackbarManager snackbarManager) { +- mContext = context; +- mOpenBookmarkComponentName = openBookmarkComponentName; ++ public BookmarkManager(Activity activity, boolean isDialogUi, SnackbarManager snackbarManager) { ++ mActivity = activity; + mIsDialogUi = isDialogUi; + + mSelectionDelegate = new SelectionDelegate() { +@@ -185,7 +180,7 @@ public class BookmarkManager + mDragStateDelegate = new BookmarkDragStateDelegate(); + + mBookmarkModel = new BookmarkModel(); +- mMainView = (ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.bookmark_main, null); ++ mMainView = (ViewGroup) mActivity.getLayoutInflater().inflate(R.layout.bookmark_main, null); + + @SuppressWarnings("unchecked") + SelectableListLayout selectableList = +@@ -194,7 +189,7 @@ public class BookmarkManager + mSelectableListLayout.initializeEmptyView( + R.string.bookmarks_folder_empty, R.string.bookmark_no_result); + +- mAdapter = new BookmarkItemsAdapter(mContext); ++ mAdapter = new BookmarkItemsAdapter(activity); + + mAdapterDataObserver = new AdapterDataObserver() { + @Override +@@ -219,7 +214,7 @@ public class BookmarkManager + + mSelectableListLayout.configureWideDisplayStyle(); + +- mUndoController = new BookmarkUndoController(mContext, mBookmarkModel, snackbarManager); ++ mUndoController = new BookmarkUndoController(activity, mBookmarkModel, snackbarManager); + mBookmarkModel.addObserver(mBookmarkModelObserver); + initializeToLoadingState(); + if (!sPreventLoadingForTesting) { +@@ -405,7 +400,7 @@ public class BookmarkManager + if (state.mState == BookmarkUIState.STATE_FOLDER) { + // Loading and searching states may be pushed to the stack but should never be stored in + // preferences. +- BookmarkUtils.setLastUsedUrl(mContext, state.mUrl); ++ BookmarkUtils.setLastUsedUrl(mActivity, state.mUrl); + // If a loading state is replaced by another loading state, do not notify this change. + if (mNativePage != null) { + mNativePage.onStateChange(state.mUrl, false); +@@ -494,9 +489,8 @@ public class BookmarkManager + + @Override + public void openBookmark(BookmarkId bookmark) { +- if (BookmarkUtils.openBookmark( +- mContext, mOpenBookmarkComponentName, mBookmarkModel, bookmark)) { +- BookmarkUtils.finishActivityOnPhone(mContext); ++ if (BookmarkUtils.openBookmark(mBookmarkModel, mActivity, bookmark)) { ++ BookmarkUtils.finishActivityOnPhone(mActivity); + } + } + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java +@@ -4,12 +4,10 @@ + + package org.chromium.chrome.browser.bookmarks; + +-import android.content.ComponentName; +- + import androidx.annotation.VisibleForTesting; + + import org.chromium.chrome.R; +-import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; ++import org.chromium.chrome.browser.app.ChromeActivity; + import org.chromium.chrome.browser.ui.native_page.BasicNativePage; + import org.chromium.chrome.browser.ui.native_page.NativePageHost; + import org.chromium.components.embedder_support.util.UrlConstants; +@@ -23,16 +21,13 @@ public class BookmarkPage extends BasicNativePage { + + /** + * Create a new instance of the bookmarks page. +- * @param componentName The current activity component, used to open bookmarks. +- * @param snackbarManager Allows control over the app snackbar. + * @param activity The activity to get context and manage fragments. + * @param host A NativePageHost to load urls. + */ +- public BookmarkPage( +- ComponentName componentName, SnackbarManager snackbarManager, NativePageHost host) { ++ public BookmarkPage(ChromeActivity activity, NativePageHost host) { + super(host); + +- mManager = new BookmarkManager(host.getContext(), componentName, false, snackbarManager); ++ mManager = new BookmarkManager(activity, false, activity.getSnackbarManager()); + mManager.setBasicNativePage(this); + mTitle = host.getContext().getResources().getString(R.string.bookmarks); + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java +@@ -16,7 +16,8 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; + import java.util.Locale; + + /** +- * Shows an undo bar when the user modifies bookmarks, allowing them to undo their changes. ++ * Shows an undo bar when the user modifies bookmarks, ++ * allowing them to undo their changes. + */ + public class BookmarkUndoController extends BookmarkModelObserver implements + SnackbarManager.SnackbarController, BookmarkDeleteObserver { +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java +@@ -336,16 +336,17 @@ public class BookmarkUtils { + + /** + * Opens a bookmark and reports UMA. +- * @param context The current context used to launch the intent. +- * @param openBookmarkComponentName The component to use when opening a bookmark. + * @param model Bookmarks model to manage the bookmark. ++ * @param activity Activity requesting to open the bookmark. + * @param bookmarkId ID of the bookmark to be opened. + * @return Whether the bookmark was successfully opened. + */ +- public static boolean openBookmark(Context context, ComponentName openBookmarkComponentName, +- BookmarkModel model, BookmarkId bookmarkId) { ++ public static boolean openBookmark( ++ BookmarkModel model, Activity activity, BookmarkId bookmarkId) { + if (model.getBookmarkById(bookmarkId) == null) return false; + ++ String url = model.getBookmarkById(bookmarkId).getUrl(); ++ + RecordUserAction.record("MobileBookmarkManagerEntryOpened"); + RecordHistogram.recordEnumeratedHistogram( + "Bookmarks.OpenBookmarkType", bookmarkId.getType(), BookmarkType.LAST + 1); +@@ -353,9 +354,9 @@ public class BookmarkUtils { + BookmarkItem bookmarkItem = model.getBookmarkById(bookmarkId); + if (bookmarkItem.getId().getType() == BookmarkType.READING_LIST) { + model.setReadStatusForReadingList(bookmarkItem.getUrl(), true); +- openUrlInCustomTab(context, bookmarkItem.getUrl()); ++ openUrlInCustomTab(activity, bookmarkItem.getUrl()); + } else { +- openUrl(context, bookmarkItem.getUrl(), openBookmarkComponentName); ++ openUrl(activity, bookmarkItem.getUrl(), activity.getComponentName()); + } + return true; + } +@@ -383,10 +384,10 @@ public class BookmarkUtils { + : R.color.default_icon_color_tint_list; + } + +- private static void openUrl(Context context, String url, ComponentName componentName) { ++ private static void openUrl(Activity activity, String url, ComponentName componentName) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); +- intent.putExtra( +- Browser.EXTRA_APPLICATION_ID, context.getApplicationContext().getPackageName()); ++ intent.putExtra(Browser.EXTRA_APPLICATION_ID, ++ activity.getApplicationContext().getPackageName()); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, PageTransition.AUTO_BOOKMARK); + +@@ -396,13 +397,13 @@ public class BookmarkUtils { + // If the bookmark manager is shown in a tab on a phone (rather than in a separate + // activity) the component name may be null. Send the intent through + // ChromeLauncherActivity instead to avoid crashing. See crbug.com/615012. +- intent.setClass(context.getApplicationContext(), ChromeLauncherActivity.class); ++ intent.setClass(activity, ChromeLauncherActivity.class); + } + + IntentHandler.startActivityForTrustedIntent(intent); + } + +- private static void openUrlInCustomTab(Context context, String url) { ++ private static void openUrlInCustomTab(Activity activity, String url) { + CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); + builder.setShowTitle(true); + builder.setShareState(CustomTabsIntent.SHARE_STATE_ON); +@@ -410,9 +411,10 @@ public class BookmarkUtils { + customTabIntent.intent.setData(Uri.parse(url)); + + Intent intent = LaunchIntentDispatcher.createCustomTabActivityIntent( +- context, customTabIntent.intent); +- intent.setPackage(context.getPackageName()); +- intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); ++ activity.getApplicationContext(), customTabIntent.intent); ++ intent.setPackage(activity.getApplicationContext().getPackageName()); ++ intent.putExtra(Browser.EXTRA_APPLICATION_ID, ++ activity.getApplicationContext().getPackageName()); + intent.putExtra(CustomTabIntentDataProvider.EXTRA_UI_TYPE, CustomTabsUiType.READ_LATER); + intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, + Profile.getLastUsedRegularProfile().isOffTheRecord()); +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +@@ -94,8 +94,7 @@ public class NativePageFactory { + } + + protected NativePage buildBookmarksPage(Tab tab) { +- return new BookmarkPage(mActivity.getComponentName(), mActivity.getSnackbarManager(), +- new TabShim(tab, mActivity)); ++ return new BookmarkPage(mActivity, new TabShim(tab, mActivity)); + } + + protected NativePage buildDownloadsPage(Tab tab) { +-- +2.17.1 + diff --git a/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch b/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch index 964d0239..f67a8e92 100644 --- a/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch +++ b/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch @@ -13,7 +13,7 @@ This reverts commit 4e598f38a0e6dd3dbede009c6a99b2a520a94e1f. diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -3070,6 +3070,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3053,6 +3053,10 @@ const FeatureEntry kFeatureEntries[] = { SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)}, #endif // OS_MAC #if defined(OS_ANDROID) @@ -27,7 +27,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -905,6 +905,11 @@ +@@ -944,6 +944,11 @@ // enable-javascript-harmony. "expiry_milestone": -1 }, @@ -42,7 +42,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -3086,6 +3086,10 @@ const char kQueryTilesInstantFetchName[] = "Query tile instant fetch"; +@@ -3038,6 +3038,10 @@ const char kQueryTilesInstantFetchName[] = "Query tile instant fetch"; const char kQueryTilesInstantFetchDescription[] = "Immediately schedule background task to fetch query tiles"; @@ -56,7 +56,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -1777,6 +1777,9 @@ extern const char kQueryTilesLocalOrderingDescription[]; +@@ -1766,6 +1766,9 @@ extern const char kQueryTilesLocalOrderingDescription[]; extern const char kQueryTilesInstantFetchName[]; extern const char kQueryTilesInstantFetchDescription[]; diff --git a/build/patches/Revert-flags-remove-num-raster-threads.patch b/build/patches/Revert-flags-remove-num-raster-threads.patch new file mode 100644 index 00000000..9b4b42f8 --- /dev/null +++ b/build/patches/Revert-flags-remove-num-raster-threads.patch @@ -0,0 +1,94 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sat, 23 Jan 2021 17:47:21 +0100 +Subject: Revert "flags: remove num-raster-threads" + +This reverts commit 2a51528a1737e9038f7f96f29403032a6a845a25. +--- + chrome/browser/about_flags.cc | 12 ++++++++++++ + chrome/browser/flag-metadata.json | 5 +++++ + chrome/browser/flag_descriptions.cc | 8 ++++++++ + chrome/browser/flag_descriptions.h | 7 +++++++ + 4 files changed, 32 insertions(+) + +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 +@@ -290,6 +290,15 @@ const FeatureEntry::Choice kOverlayStrategiesChoices[] = { + "single-fullscreen,single-on-top,underlay"}, + }; + ++const FeatureEntry::Choice kNumRasterThreadsChoices[] = { ++ {flags_ui::kGenericExperimentChoiceDefault, "", ""}, ++ {flag_descriptions::kNumRasterThreadsOne, switches::kNumRasterThreads, "1"}, ++ {flag_descriptions::kNumRasterThreadsTwo, switches::kNumRasterThreads, "2"}, ++ {flag_descriptions::kNumRasterThreadsThree, switches::kNumRasterThreads, ++ "3"}, ++ {flag_descriptions::kNumRasterThreadsFour, switches::kNumRasterThreads, ++ "4"}}; ++ + const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = { + {flags_ui::kGenericExperimentChoiceDefault, "", ""}, + {flag_descriptions::kTouchSelectionStrategyCharacter, +@@ -3141,6 +3150,9 @@ const FeatureEntry kFeatureEntries[] = { + feature_engagement::kIPHDemoMode, + feature_engagement::kIPHDemoModeChoiceVariations, + "IPH_DemoMode")}, ++ {"num-raster-threads", flag_descriptions::kNumRasterThreadsName, ++ flag_descriptions::kNumRasterThreadsDescription, kOsAll, ++ MULTI_VALUE_TYPE(kNumRasterThreadsChoices)}, + {"disable-threaded-scrolling", flag_descriptions::kThreadedScrollingName, + flag_descriptions::kThreadedScrollingDescription, kOsAll, + SINGLE_DISABLE_VALUE_TYPE(blink::switches::kDisableThreadedScrolling)}, +diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json +--- a/chrome/browser/flag-metadata.json ++++ b/chrome/browser/flag-metadata.json +@@ -3360,6 +3360,11 @@ + "owners": [ "reillyg@chromium.org" ], + "expiry_milestone": 90 + }, ++ { ++ "name": "num-raster-threads", ++ // "owners": [ "your-team" ], ++ "expiry_milestone": -1 ++ }, + { + "name": "notification-scheduler-debug-options", + "owners": [ "//chrome/browser/notifications/scheduler/OWNERS" ], +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 +@@ -1497,6 +1497,14 @@ const char kUseMultiloginEndpointName[] = "Use Multilogin endpoint."; + const char kUseMultiloginEndpointDescription[] = + "Use Gaia OAuth multilogin for identity consistency."; + ++const char kNumRasterThreadsName[] = "Number of raster threads"; ++const char kNumRasterThreadsDescription[] = ++ "Specify the number of raster threads."; ++const char kNumRasterThreadsOne[] = "1"; ++const char kNumRasterThreadsTwo[] = "2"; ++const char kNumRasterThreadsThree[] = "3"; ++const char kNumRasterThreadsFour[] = "4"; ++ + const char kOmniboxAdaptiveSuggestionsCountName[] = + "Adaptive Omnibox Suggestions count"; + const char kOmniboxAdaptiveSuggestionsCountDescription[] = +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 +@@ -896,6 +896,13 @@ extern const char kNotificationsNativeFlagDescription[]; + extern const char kUseMultiloginEndpointName[]; + extern const char kUseMultiloginEndpointDescription[]; + ++extern const char kNumRasterThreadsName[]; ++extern const char kNumRasterThreadsDescription[]; ++extern const char kNumRasterThreadsOne[]; ++extern const char kNumRasterThreadsTwo[]; ++extern const char kNumRasterThreadsThree[]; ++extern const char kNumRasterThreadsFour[]; ++ + extern const char kOmniboxAdaptiveSuggestionsCountName[]; + extern const char kOmniboxAdaptiveSuggestionsCountDescription[]; + +-- +2.17.1 + diff --git a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch index 40ddf80e..a542b0e8 100644 --- a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch +++ b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch @@ -11,14 +11,14 @@ Subject: Revert the removal of an option to block autoplay .../drawable-xxxhdpi/settings_autoplay.png | Bin 0 -> 1064 bytes .../res/xml/single_website_preferences.xml | 2 ++ .../res/xml/site_settings_preferences.xml | 4 +++ - .../ContentSettingsResources.java | 5 ++++ + .../ContentSettingsResources.java | 4 +++ .../site_settings/SingleCategorySettings.java | 4 +++ - .../site_settings/SingleWebsiteSettings.java | 22 +++++++++++++++++ + .../site_settings/SingleWebsiteSettings.java | 22 ++++++++++++++++ .../site_settings/SiteSettingsCategory.java | 9 +++++-- .../browser_ui/site_settings/Website.java | 8 ++++++ .../WebsitePermissionsFetcher.java | 1 + - .../WebsitePreferenceBridge.java | 14 +++++++++++ - .../android/website_preference_bridge.cc | 23 ++++++++++++++++++ + .../WebsitePreferenceBridge.java | 4 +++ + .../android/website_preference_bridge.cc | 24 +++++++++++++++++- .../strings/android/site_settings.grdp | 9 +++++++ .../core/browser/content_settings_registry.cc | 2 +- .../core/browser/content_settings_utils.cc | 2 ++ @@ -27,7 +27,7 @@ Subject: Revert the removal of an option to block autoplay .../core/common/content_settings.mojom | 1 + .../common/content_settings_mojom_traits.cc | 1 + .../common/content_settings_mojom_traits.h | 5 ++++ - .../renderer/content_settings_agent_impl.cc | 11 +++++++++ + .../renderer/content_settings_agent_impl.cc | 11 ++++++++ .../renderer/content_settings_agent_impl.h | 1 + .../android/page_info_controller_android.cc | 1 + components/page_info/page_info.cc | 6 +++++ @@ -36,7 +36,7 @@ Subject: Revert the removal of an option to block autoplay .../platform/web_content_settings_client.h | 3 +++ .../core/html/media/autoplay_policy.cc | 12 ++++++++- .../core/html/media/autoplay_policy.h | 4 +++ - 33 files changed, 157 insertions(+), 4 deletions(-) + 33 files changed, 146 insertions(+), 5 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_autoplay.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/settings_autoplay.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_autoplay.png @@ -195,18 +195,17 @@ diff --git a/components/browser_ui/site_settings/android/java/res/xml/site_setti diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java -@@ -112,6 +112,11 @@ public class ContentSettingsResources { - R.string.automatic_downloads_permission_title, +@@ -104,6 +104,10 @@ public class ContentSettingsResources { + new ResourceItem(R.drawable.infobar_downloading, R.string.automatic_downloads_permission_title, ContentSettingValues.ASK, ContentSettingValues.BLOCK, R.string.website_settings_category_ask, 0)); + localMap.put(ContentSettingsType.AUTOPLAY, + new ResourceItem(R.drawable.settings_autoplay, R.string.autoplay_title, -+ R.string.autoplay_title, ContentSettingValues.ALLOW, -+ ContentSettingValues.BLOCK, ++ ContentSettingValues.ALLOW, ContentSettingValues.BLOCK, + R.string.website_settings_category_autoplay_allowed, 0)); localMap.put(ContentSettingsType.BACKGROUND_SYNC, new ResourceItem(R.drawable.permission_background_sync, - R.string.background_sync_permission_title, + R.string.background_sync_permission_title, ContentSettingValues.ALLOW, diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java @@ -231,7 +230,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -100,6 +100,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -101,6 +101,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment return "bluetooth_scanning_permission_list"; case ContentSettingsType.COOKIES: return "cookies_permission_list"; @@ -240,7 +239,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c case ContentSettingsType.IDLE_DETECTION: return "idle_detection_permission_list"; case ContentSettingsType.JAVASCRIPT: -@@ -417,6 +419,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -435,6 +437,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment setUpSoundPreference(preference); } else if (type == ContentSettingsType.JAVASCRIPT) { setUpJavascriptPreference(preference); @@ -249,7 +248,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (type == ContentSettingsType.COOKIES) { setUpCookiePreference(preference); } else if (type == ContentSettingsType.GEOLOCATION) { -@@ -892,6 +896,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -921,6 +925,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment } } @@ -349,73 +348,24 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -62,6 +62,9 @@ public class WebsitePreferenceBridge { - WebsitePreferenceBridgeJni.get().getNfcOrigins(browserContextHandle, list); - } else if (type == ContentSettingsType.NOTIFICATIONS) { - WebsitePreferenceBridgeJni.get().getNotificationOrigins(browserContextHandle, list); -+ } else if (type == ContentSettingsType.AUTOPLAY) { -+ WebsitePreferenceBridgeJni.get().getAutoplayOrigins( -+ browserContextHandle, list, false); - } else if (type == ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER) { - WebsitePreferenceBridgeJni.get().getProtectedMediaIdentifierOrigins( - browserContextHandle, list); -@@ -101,6 +104,13 @@ public class WebsitePreferenceBridge { - ContentSettingsType.MEDIASTREAM_CAMERA, list, origin, embedder, isEmbargoed); - } - -+ @CalledByNative -+ private static void insertAutoplayInfoIntoList( -+ ArrayList list, String origin, String embedder, boolean isEmbargoed) { -+ insertInfoIntoList( -+ ContentSettingsType.AUTOPLAY, list, origin, embedder, isEmbargoed); -+ } -+ - @CalledByNative - private static void insertClipboardInfoIntoList( - ArrayList list, String origin, String embedder, boolean isEmbargoed) { -@@ -447,6 +457,8 @@ public class WebsitePreferenceBridge { - BrowserContextHandle browserContextHandle, Object list, boolean managedOnly); - void getMidiOrigins(BrowserContextHandle browserContextHandle, Object list); - void getNotificationOrigins(BrowserContextHandle browserContextHandle, Object list); +@@ -366,6 +366,10 @@ public class WebsitePreferenceBridge { + int value); + boolean isPermissionControlledByDSE(BrowserContextHandle browserContextHandle, + @ContentSettingsType int contentSettingsType, String origin); + void getAutoplayOrigins( + BrowserContextHandle browserContextHandle, Object list, boolean managedOnly); - void getNfcOrigins(BrowserContextHandle browserContextHandle, Object list); - void getProtectedMediaIdentifierOrigins( - BrowserContextHandle browserContextHandle, Object list); -@@ -495,6 +507,8 @@ public class WebsitePreferenceBridge { - String embedder, int value); - void setNotificationSettingForOrigin( - BrowserContextHandle browserContextHandle, String origin, int value); + void setAutoplaySettingForOrigin( + BrowserContextHandle browserContextHandle, String origin, int value); - void reportNotificationRevokedForOrigin( - BrowserContextHandle browserContextHandle, String origin, int newSettingValue); - void setProtectedMediaIdentifierSettingForOrigin(BrowserContextHandle browserContextHandle, + boolean getAdBlockingActivated(BrowserContextHandle browserContextHandle, String origin); + boolean isContentSettingEnabled( + BrowserContextHandle browserContextHandle, int contentSettingType); diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc -@@ -579,6 +579,17 @@ static void JNI_WebsitePreferenceBridge_GetCameraOrigins( +@@ -447,6 +447,17 @@ static void JNI_WebsitePreferenceBridge_GetOriginsForPermission( managedOnly); } -+static void JNI_WebsitePreferenceBridge_GetAutoplayOrigins( -+ JNIEnv* env, -+ const JavaParamRef& jbrowser_context_handle, -+ const JavaParamRef& list, -+ jboolean managedOnly) { -+ GetOrigins(env, jbrowser_context_handle, -+ ContentSettingsType::AUTOPLAY, -+ &Java_WebsitePreferenceBridge_insertAutoplayInfoIntoList, list, -+ managedOnly); -+} -+ - static void JNI_WebsitePreferenceBridge_GetMicrophoneOrigins( - JNIEnv* env, - const JavaParamRef& jbrowser_context_handle, -@@ -631,6 +642,17 @@ static void JNI_WebsitePreferenceBridge_SetCameraSettingForOrigin( - static_cast(value)); - } - +static void JNI_WebsitePreferenceBridge_SetAutoplaySettingForOrigin( + JNIEnv* env, + const JavaParamRef& jbrowser_context_handle, @@ -430,7 +380,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid static jboolean JNI_WebsitePreferenceBridge_IsContentSettingsPatternValid( JNIEnv* env, const JavaParamRef& pattern) { -@@ -1113,6 +1135,7 @@ static void JNI_WebsitePreferenceBridge_SetContentSettingEnabled( +@@ -819,6 +830,7 @@ static void JNI_WebsitePreferenceBridge_SetContentSettingEnabled( case ContentSettingsType::POPUPS: case ContentSettingsType::SENSORS: case ContentSettingsType::SOUND: @@ -438,6 +388,29 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid value = CONTENT_SETTING_ALLOW; break; default: +@@ -899,6 +911,17 @@ static jboolean JNI_WebsitePreferenceBridge_IsContentSettingUserModifiable( + static_cast(content_settings_type)); + } + ++static void JNI_WebsitePreferenceBridge_GetAutoplayOrigins( ++ JNIEnv* env, ++ const JavaParamRef& jbrowser_context_handle, ++ const JavaParamRef& list, ++ jboolean managedOnly) { ++ GetOrigins(env, jbrowser_context_handle, ++ ContentSettingsType::AUTOPLAY, ++ &Java_WebsitePreferenceBridge_insertPermissionInfoIntoList, list, ++ managedOnly); ++} ++ + static jboolean JNI_WebsitePreferenceBridge_IsContentSettingManagedByCustodian( + JNIEnv* env, + const JavaParamRef& jbrowser_context_handle, +@@ -934,4 +957,3 @@ static base::android::ScopedJavaLocalRef JNI_WebsitePreferenceBridge_Ge + GetHostContentSettingsMap(jbrowser_context_handle)->GetTimezoneOverrideValue(timezone); + return ConvertUTF8ToJavaString(env, timezone); + } +- diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp @@ -466,7 +439,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. - Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_ALLOW, + Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_BLOCK, - WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(), + WebsiteSettingsInfo::UNSYNCABLE, AllowlistedSchemes(), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), WebsiteSettingsInfo::SINGLE_ORIGIN_ONLY_SCOPE, diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc @@ -475,10 +448,10 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc @@ -143,6 +143,8 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map, #endif map->GetSettingsForOneType(ContentSettingsType::JAVASCRIPT, - ResourceIdentifier(), &(rules->script_rules)); + &(rules->script_rules)); + map->GetSettingsForOneType(ContentSettingsType::AUTOPLAY, -+ ResourceIdentifier(), &(rules->autoplay_rules)); - map->GetSettingsForOneType(ContentSettingsType::POPUPS, ResourceIdentifier(), ++ &(rules->autoplay_rules)); + map->GetSettingsForOneType(ContentSettingsType::POPUPS, &(rules->popup_redirect_rules)); diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc @@ -495,7 +468,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h -@@ -76,6 +76,7 @@ struct RendererContentSettingRules { +@@ -77,6 +77,7 @@ struct RendererContentSettingRules { ~RendererContentSettingRules(); ContentSettingsForOneType image_rules; ContentSettingsForOneType script_rules; @@ -543,7 +516,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc --- a/components/content_settings/renderer/content_settings_agent_impl.cc +++ b/components/content_settings/renderer/content_settings_agent_impl.cc -@@ -441,6 +441,17 @@ bool ContentSettingsAgentImpl::AllowRunningInsecureContent( +@@ -430,6 +430,17 @@ bool ContentSettingsAgentImpl::AllowRunningInsecureContent( return false; } @@ -586,7 +559,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc --- a/components/page_info/page_info.cc +++ b/components/page_info/page_info.cc -@@ -100,6 +100,7 @@ ContentSettingsType kPermissionType[] = { +@@ -99,6 +99,7 @@ ContentSettingsType kPermissionType[] = { ContentSettingsType::ADS, ContentSettingsType::BACKGROUND_SYNC, ContentSettingsType::SOUND, @@ -594,7 +567,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. ContentSettingsType::AUTOMATIC_DOWNLOADS, #if defined(OS_ANDROID) || defined(OS_CHROMEOS) ContentSettingsType::PROTECTED_MEDIA_IDENTIFIER, -@@ -142,6 +143,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info, +@@ -141,6 +142,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info, return is_subresource_filter_activated; } @@ -620,7 +593,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in diff --git a/components/page_info_strings.grdp b/components/page_info_strings.grdp --- a/components/page_info_strings.grdp +++ b/components/page_info_strings.grdp -@@ -278,6 +278,9 @@ +@@ -281,6 +281,9 @@ Sound @@ -646,15 +619,15 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/third_party/blink/renderer/core/html/media/autoplay_policy.cc --- a/third_party/blink/renderer/core/html/media/autoplay_policy.cc +++ b/third_party/blink/renderer/core/html/media/autoplay_policy.cc -@@ -7,6 +7,7 @@ - #include "build/build_config.h" +@@ -8,6 +8,7 @@ #include "third_party/blink/public/mojom/autoplay/autoplay.mojom-blink.h" #include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink.h" + #include "third_party/blink/public/mojom/webpreferences/web_preferences.mojom-blink.h" +#include "third_party/blink/public/platform/web_content_settings_client.h" #include "third_party/blink/public/platform/web_media_player.h" #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_local_frame_client.h" -@@ -311,7 +312,7 @@ bool AutoplayPolicy::IsGestureNeededForPlayback() const { +@@ -313,7 +314,7 @@ bool AutoplayPolicy::IsGestureNeededForPlayback() const { // We want to allow muted video to autoplay if the element is allowed to // autoplay muted. @@ -663,7 +636,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi } String AutoplayPolicy::GetPlayErrorMessage() const { -@@ -380,6 +381,15 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() { +@@ -382,6 +383,15 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() { } } diff --git a/build/patches/Show-site-settings-for-cookies.patch b/build/patches/Show-site-settings-for-cookies.patch index a6325904..b25e6a36 100644 --- a/build/patches/Show-site-settings-for-cookies.patch +++ b/build/patches/Show-site-settings-for-cookies.patch @@ -11,7 +11,7 @@ Avoid displaying info about intrusive ads diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -415,6 +415,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -433,6 +433,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment setUpSoundPreference(preference); } else if (type == ContentSettingsType.JAVASCRIPT) { setUpJavascriptPreference(preference); @@ -20,7 +20,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (type == ContentSettingsType.GEOLOCATION) { setUpLocationPreference(preference); } else if (type == ContentSettingsType.NOTIFICATIONS) { -@@ -732,18 +734,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -754,18 +756,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment } private void setUpAdsInformationalBanner() { @@ -41,7 +41,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private SiteSettingsCategory getWarningCategory() { -@@ -906,14 +898,31 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -935,14 +927,31 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment @Nullable Integer currentValue = mSite.getContentSetting(browserContextHandle, ContentSettingsType.JAVASCRIPT); @@ -80,7 +80,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setUpListPreference(preference, currentValue, false /* isEmbargoed */); } -@@ -932,22 +941,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -961,22 +970,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment setUpListPreference(preference, null, false); return; } diff --git a/build/patches/Skip-the-first-run-and-metrics.patch b/build/patches/Skip-the-first-run-and-metrics.patch index 7d6044f4..37363303 100644 --- a/build/patches/Skip-the-first-run-and-metrics.patch +++ b/build/patches/Skip-the-first-run-and-metrics.patch @@ -3,10 +3,10 @@ Date: Sun, 26 Nov 2017 22:51:43 +0100 Subject: Skip the first run and metrics --- - .../chrome/browser/firstrun/FirstRunStatus.java | 11 +++++------ - .../chrome/browser/firstrun/FirstRunUtils.java | 3 --- - .../browser/firstrun/ToSAndUMAFirstRunFragment.java | 13 ------------- - 3 files changed, 5 insertions(+), 22 deletions(-) + .../chrome/browser/firstrun/FirstRunStatus.java | 11 +++++------ + .../chrome/browser/firstrun/FirstRunUtils.java | 3 --- + .../browser/firstrun/ToSAndUMAFirstRunFragment.java | 7 ------- + 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java @@ -51,17 +51,11 @@ 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 -@@ -80,19 +80,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm +@@ -80,13 +80,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm } }); -- int paddingStart = getResources().getDimensionPixelSize(R.dimen.fre_tos_checkbox_padding); -- ViewCompat.setPaddingRelative(mSendReportCheckBox, -- ViewCompat.getPaddingStart(mSendReportCheckBox) + paddingStart, -- mSendReportCheckBox.getPaddingTop(), ViewCompat.getPaddingEnd(mSendReportCheckBox), -- mSendReportCheckBox.getPaddingBottom()); - mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING); -- - if (!canShowUmaCheckBox()) { - mSendReportCheckBox.setVisibility(View.GONE); - } diff --git a/build/patches/Timezone-customization.patch b/build/patches/Timezone-customization.patch index 5c8ae68d..e9712440 100644 --- a/build/patches/Timezone-customization.patch +++ b/build/patches/Timezone-customization.patch @@ -23,7 +23,7 @@ See also: https://github.com/bromite/bromite/wiki/TimezoneOverride .../browser_ui/site_settings/Website.java | 10 + .../WebsitePermissionsFetcher.java | 3 + .../WebsitePreferenceBridge.java | 12 ++ - .../android/website_preference_bridge.cc | 15 ++ + .../android/website_preference_bridge.cc | 17 ++ .../strings/android/site_settings.grdp | 35 ++++ .../browser/content_settings_pref_provider.cc | 16 ++ .../browser/content_settings_pref_provider.h | 5 + @@ -42,7 +42,7 @@ See also: https://github.com/bromite/bromite/wiki/TimezoneOverride .../renderer/content_settings_agent_impl.cc | 89 ++++++++ .../renderer/content_settings_agent_impl.h | 4 + .../WebLayerSiteSettingsClient.java | 3 + - 36 files changed, 714 insertions(+), 10 deletions(-) + 36 files changed, 716 insertions(+), 10 deletions(-) create mode 100755 components/browser_ui/site_settings/android/java/res/layout/time_zone_select_dialog.xml create mode 100755 components/browser_ui/site_settings/android/java/res/layout/timezoneoverride_site_settings_preference.xml create mode 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java @@ -270,19 +270,19 @@ diff --git a/components/browser_ui/site_settings/android/java/res/xml/website_pr diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java -@@ -240,6 +240,11 @@ public class ContentSettingsResources { - R.string.vr_permission_title, ContentSettingValues.ASK, - ContentSettingValues.BLOCK, R.string.website_settings_category_vr_ask, +@@ -220,6 +220,11 @@ public class ContentSettingsResources { + ContentSettingValues.ASK, ContentSettingValues.BLOCK, + R.string.website_settings_category_vr_ask, R.string.website_settings_category_vr_blocked)); + localMap.put(ContentSettingsType.TIMEZONE_OVERRIDE, + new ResourceItem(R.drawable.web_asset, R.string.timezone_override_permission_title, -+ R.string.timezone_override_permission_title, ContentSettingValues.ALLOW, -+ ContentSettingValues.BLOCK, R.string.website_settings_category_timezone_override_custom, ++ ContentSettingValues.ALLOW, ContentSettingValues.BLOCK, ++ R.string.website_settings_category_timezone_override_custom, + R.string.website_settings_category_timezone_override_random)); sResourceInfo = localMap; } return sResourceInfo; -@@ -322,6 +327,23 @@ public class ContentSettingsResources { +@@ -295,6 +300,23 @@ public class ContentSettingsResources { } } @@ -306,7 +306,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** * Returns the string resource id for a content type to show with a permission category. * @param enabled Whether the content type is enabled. -@@ -425,6 +447,13 @@ public class ContentSettingsResources { +@@ -398,6 +420,13 @@ public class ContentSettingsResources { return descriptionIDs; } } @@ -509,7 +509,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -108,6 +108,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -109,6 +109,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment return "popup_permission_list"; case ContentSettingsType.SOUND: return "sound_permission_list"; @@ -518,8 +518,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c case ContentSettingsType.AR: return "ar_permission_list"; case ContentSettingsType.MEDIASTREAM_CAMERA: -@@ -811,6 +813,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment - setUpPreferenceCommon(preference); +@@ -836,6 +838,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment + setUpPreferenceCommon(preference, value); ListPreference listPreference = (ListPreference) preference; + if (getContentSettingsTypeFromPreferenceKey(preference.getKey()) == ContentSettingsType.TIMEZONE_OVERRIDE) { @@ -854,7 +854,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -323,6 +323,8 @@ public class WebsitePreferenceBridge { +@@ -223,6 +223,8 @@ public class WebsitePreferenceBridge { switch (contentSettingsType) { case ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER: return true; @@ -863,7 +863,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c default: return false; } -@@ -424,6 +426,14 @@ public class WebsitePreferenceBridge { +@@ -324,6 +326,14 @@ public class WebsitePreferenceBridge { contentSettingType, primaryPattern, secondaryPattern, setting); } @@ -877,8 +877,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + @NativeMethods public interface Natives { - void getArOrigins(BrowserContextHandle browserContextHandle, Object list); -@@ -533,5 +543,7 @@ public class WebsitePreferenceBridge { + boolean isNotificationEmbargoedForOrigin( +@@ -377,5 +387,7 @@ public class WebsitePreferenceBridge { boolean isContentSettingManagedByCustodian( BrowserContextHandle browserContextHandle, int contentSettingType); boolean getLocationAllowedByPolicy(BrowserContextHandle browserContextHandle); @@ -889,10 +889,11 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc -@@ -1214,3 +1214,18 @@ static jboolean JNI_WebsitePreferenceBridge_GetLocationAllowedByPolicy( +@@ -918,3 +918,20 @@ static jboolean JNI_WebsitePreferenceBridge_GetLocationAllowedByPolicy( + ->GetDefaultContentSetting(ContentSettingsType::GEOLOCATION, nullptr) == CONTENT_SETTING_ALLOW; } - ++ +static void JNI_WebsitePreferenceBridge_SetCustomTimezone( + JNIEnv* env, + const JavaParamRef& jbrowser_context_handle, @@ -908,6 +909,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid + GetHostContentSettingsMap(jbrowser_context_handle)->GetTimezoneOverrideValue(timezone); + return ConvertUTF8ToJavaString(env, timezone); +} ++ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp @@ -921,7 +923,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen -@@ -475,6 +478,38 @@ +@@ -469,6 +472,38 @@ Block sites from playing protected content @@ -963,7 +965,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc --- a/components/content_settings/core/browser/content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc -@@ -100,6 +100,8 @@ void PrefProvider::RegisterProfilePrefs( +@@ -106,6 +106,8 @@ void PrefProvider::RegisterProfilePrefs( registry->RegisterDictionaryPref(kDeprecatedNativeFileSystemReadGuardPref); registry->RegisterDictionaryPref(kDeprecatedNativeFileSystemWriteGuardPref); #endif // !defined(OS_ANDROID) @@ -972,7 +974,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov } PrefProvider::PrefProvider(PrefService* prefs, -@@ -163,6 +165,10 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -162,6 +164,10 @@ PrefProvider::PrefProvider(PrefService* prefs, num_exceptions); } @@ -983,7 +985,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov TRACE_EVENT_END1("startup", "PrefProvider::PrefProvider", "NumberOfExceptions", num_exceptions); } -@@ -328,4 +334,14 @@ void PrefProvider::SetClockForTesting(base::Clock* clock) { +@@ -317,4 +323,14 @@ void PrefProvider::SetClockForTesting(base::Clock* clock) { clock_ = clock; } @@ -1001,7 +1003,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h --- a/components/content_settings/core/browser/content_settings_pref_provider.h +++ b/components/content_settings/core/browser/content_settings_pref_provider.h -@@ -66,6 +66,9 @@ class PrefProvider : public UserModifiableProvider { +@@ -63,6 +63,9 @@ class PrefProvider : public UserModifiableProvider { ContentSettingsPref* GetPref(ContentSettingsType type) const; @@ -1011,7 +1013,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov private: friend class DeadlockCheckerObserver; // For testing. -@@ -103,6 +106,8 @@ class PrefProvider : public UserModifiableProvider { +@@ -95,6 +98,8 @@ class PrefProvider : public UserModifiableProvider { base::Clock* clock_; @@ -1030,7 +1032,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. + + Register(ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override", CONTENT_SETTING_ALLOW, + WebsiteSettingsInfo::SYNCABLE, -+ WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), ++ AllowlistedSchemes(kChromeUIScheme, kChromeDevToolsScheme), + ValidSettings(CONTENT_SETTING_ALLOW, // use system time + CONTENT_SETTING_ASK, // custom timezone, default UTC + CONTENT_SETTING_BLOCK), // random @@ -1046,13 +1048,13 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc @@ -145,6 +145,13 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map, - ResourceIdentifier(), &(rules->script_rules)); - map->GetSettingsForOneType(ContentSettingsType::POPUPS, ResourceIdentifier(), + &(rules->script_rules)); + map->GetSettingsForOneType(ContentSettingsType::POPUPS, &(rules->popup_redirect_rules)); + + // pass custom timezone rules and value to the render process + map->GetSettingsForOneType(ContentSettingsType::TIMEZONE_OVERRIDE, -+ ResourceIdentifier(), &(rules->timezone_override_rules)); ++ &(rules->timezone_override_rules)); + std::string timezone; + map->GetTimezoneOverrideValue(timezone); + rules->timezone_override_value = timezone; @@ -1062,7 +1064,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc --- a/components/content_settings/core/browser/host_content_settings_map.cc +++ b/components/content_settings/core/browser/host_content_settings_map.cc -@@ -656,6 +656,14 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) { +@@ -618,6 +618,14 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) { provider->SetClockForTesting(clock); } @@ -1080,7 +1082,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h --- a/components/content_settings/core/browser/host_content_settings_map.h +++ b/components/content_settings/core/browser/host_content_settings_map.h -@@ -345,6 +345,9 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -335,6 +335,9 @@ class HostContentSettingsMap : public content_settings::Observer, allow_invalid_secondary_pattern_for_testing_ = allow; } @@ -1094,10 +1096,10 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo --- a/components/content_settings/core/common/content_settings.cc +++ b/components/content_settings/core/common/content_settings.cc @@ -93,6 +93,7 @@ constexpr HistogramValue kHistogramValue[] = { - {ContentSettingsType::INSECURE_PRIVATE_NETWORK, 70}, {ContentSettingsType::FONT_ACCESS, 71}, {ContentSettingsType::PERMISSION_AUTOREVOCATION_DATA, 72}, -+ //{ContentSettingsType::TIMEZONE_OVERRIDE, 73}, should be here + {ContentSettingsType::FILE_SYSTEM_LAST_PICKED_DIRECTORY, 73}, ++ {ContentSettingsType::TIMEZONE_OVERRIDE, 74}, }; } // namespace @@ -1114,7 +1116,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h -@@ -78,6 +78,8 @@ struct RendererContentSettingRules { +@@ -79,6 +79,8 @@ struct RendererContentSettingRules { ContentSettingsForOneType script_rules; ContentSettingsForOneType popup_redirect_rules; ContentSettingsForOneType mixed_content_rules; @@ -1170,20 +1172,20 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h --- a/components/content_settings/core/common/content_settings_types.h +++ b/components/content_settings/core/common/content_settings_types.h -@@ -225,6 +225,9 @@ enum class ContentSettingsType : int32_t { - // locally installed font data using the Font Access API. - FONT_ACCESS, +@@ -229,6 +229,9 @@ enum class ContentSettingsType : int32_t { + // by the File System Access API. + FILE_SYSTEM_LAST_PICKED_DIRECTORY, + // Content setting for timezone customization functionality. + TIMEZONE_OVERRIDE, + - // Stores per-origin state for permission auto-revocation (for all permission - // types). - PERMISSION_AUTOREVOCATION_DATA, + NUM_TYPES, + }; + diff --git a/components/content_settings/core/common/pref_names.cc b/components/content_settings/core/common/pref_names.cc --- a/components/content_settings/core/common/pref_names.cc +++ b/components/content_settings/core/common/pref_names.cc -@@ -127,4 +127,7 @@ const char kEnableQuietNotificationPermissionUi[] = +@@ -128,4 +128,7 @@ const char kQuietNotificationPermissionUiEnablingMethod[] = const char kNotificationsVibrateEnabled[] = "notifications.vibrate_enabled"; #endif @@ -1194,7 +1196,7 @@ diff --git a/components/content_settings/core/common/pref_names.cc b/components/ diff --git a/components/content_settings/core/common/pref_names.h b/components/content_settings/core/common/pref_names.h --- a/components/content_settings/core/common/pref_names.h +++ b/components/content_settings/core/common/pref_names.h -@@ -73,6 +73,8 @@ extern const char kEnableQuietNotificationPermissionUi[]; +@@ -71,6 +71,8 @@ extern const char kQuietNotificationPermissionUiEnablingMethod[]; extern const char kNotificationsVibrateEnabled[]; #endif @@ -1237,8 +1239,8 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc namespace content_settings { namespace { -@@ -377,6 +385,10 @@ bool ContentSettingsAgentImpl::AllowScript(bool enabled_per_settings) { - allow = allow || IsWhitelistedForContentSettings(); +@@ -368,6 +376,10 @@ bool ContentSettingsAgentImpl::AllowScript(bool enabled_per_settings) { + allow = allow || IsAllowlistedForContentSettings(); cached_script_permissions_[frame] = allow; + @@ -1248,7 +1250,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc return allow; } -@@ -509,4 +521,81 @@ bool ContentSettingsAgentImpl::IsWhitelistedForContentSettings() const { +@@ -498,4 +510,81 @@ bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() const { return false; } @@ -1333,7 +1335,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc diff --git a/components/content_settings/renderer/content_settings_agent_impl.h b/components/content_settings/renderer/content_settings_agent_impl.h --- a/components/content_settings/renderer/content_settings_agent_impl.h +++ b/components/content_settings/renderer/content_settings_agent_impl.h -@@ -180,6 +180,10 @@ class ContentSettingsAgentImpl +@@ -178,6 +178,10 @@ class ContentSettingsAgentImpl mojo::AssociatedReceiverSet receivers_; diff --git a/build/patches/Update-i18n-zh_CN-support.patch b/build/patches/Update-i18n-zh_CN-support.patch index 8c309ac8..dabc9cbd 100644 --- a/build/patches/Update-i18n-zh_CN-support.patch +++ b/build/patches/Update-i18n-zh_CN-support.patch @@ -12,9 +12,9 @@ Subject: Update i18n zh_CN support diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb -@@ -7024,4 +7024,6 @@ - YouTube +@@ -7141,4 +7141,6 @@ 正在建立安全连接... + 您需要开启 Chrome 同步才能使用 Wi-Fi 同步功能。了解详情 检查(&N) - \ No newline at end of file @@ -24,7 +24,7 @@ diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/res diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb -@@ -1142,4 +1142,32 @@ +@@ -1194,4 +1194,32 @@ 关闭所有标签页 常规 动态卡片上的菜单已关闭 @@ -63,7 +63,7 @@ diff --git a/components/browser_ui/strings/android/translations/browser_ui_strin --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb @@ -306,4 +306,8 @@ - 使用您的麦克风 + Android 设置中为 开启这些权限。 屏蔽会展示侵扰性或误导性广告的网站(推荐) 已存储的数据 - @@ -76,7 +76,7 @@ diff --git a/components/browser_ui/strings/android/translations/browser_ui_strin diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb -@@ -2035,4 +2035,5 @@ +@@ -2082,4 +2082,5 @@ </ul> JIS B1 来自 Google Pay diff --git a/build/patches/Use-4-tile-rows-never-show-logo.patch b/build/patches/Use-4-tile-rows-never-show-logo.patch index dfbb335d..cb05efa3 100644 --- a/build/patches/Use-4-tile-rows-never-show-logo.patch +++ b/build/patches/Use-4-tile-rows-never-show-logo.patch @@ -13,16 +13,16 @@ Subject: Use 4 tile rows, never show logo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -106,7 +106,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer +@@ -116,7 +116,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer */ private boolean mHasShownView; - private boolean mSearchProviderHasLogo = true; + private boolean mSearchProviderHasLogo = false; private boolean mSearchProviderIsGoogle; + private boolean mShowingNonStandardLogo; - private boolean mInitialized; -@@ -529,7 +529,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer +@@ -533,7 +533,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(); -@@ -800,7 +800,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer +@@ -805,7 +805,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer Integer maxRows = mQueryTileSection == null ? null : mQueryTileSection.getMaxRowsForMostVisitedTiles(); diff --git a/build/patches/User-agent-customization.patch b/build/patches/User-agent-customization.patch index f5726ba0..e7f6a198 100644 --- a/build/patches/User-agent-customization.patch +++ b/build/patches/User-agent-customization.patch @@ -14,13 +14,12 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin .../layout/custom_useragent_preferences.xml | 108 ++++++++++ .../android/java/res/xml/main_preferences.xml | 5 + .../java/res/xml/useragent_preferences.xml | 31 +++ - .../chrome/browser/app/ChromeActivity.java | 20 +- + .../chrome/browser/app/ChromeActivity.java | 21 +- .../init/ChromeBrowserInitializer.java | 3 + .../settings/PrivacyPreferencesManager.java | 35 ++++ - .../settings/UserAgentPreferences.java | 184 ++++++++++++++++++ + .../settings/UserAgentPreferences.java | 185 ++++++++++++++++++ .../chromium/chrome/browser/tab/TabImpl.java | 83 +++++++- - .../browser/tabmodel/TabWindowManager.java | 23 +++ - .../browser/android/content/content_utils.cc | 29 +++ + .../browser/android/content/content_utils.cc | 28 +++ .../preferences/browser_prefs_android.cc | 7 + .../privacy_preferences_manager.cc | 113 +++++++++++ chrome/browser/android/tab_android.cc | 5 +- @@ -28,6 +27,8 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin .../browser/chrome_content_browser_client.cc | 8 + .../preferences/ChromePreferenceKeys.java | 7 +- .../org/chromium/chrome/browser/tab/Tab.java | 2 + + .../browser/tabmodel/TabWindowManager.java | 8 + + .../tabmodel/TabWindowManagerImpl.java | 18 ++ .../strings/android_chrome_strings.grd | 35 ++++ chrome/common/pref_names.cc | 13 ++ chrome/common/pref_names.h | 8 + @@ -37,7 +38,7 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin .../renderer_host/render_process_host_impl.cc | 1 + .../browser/web_contents/web_contents_impl.cc | 4 +- .../framehost/NavigationControllerImpl.java | 6 +- - 30 files changed, 747 insertions(+), 13 deletions(-) + 31 files changed, 751 insertions(+), 13 deletions(-) create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java @@ -67,7 +68,7 @@ diff --git a/base/base_switches.h b/base/base_switches.h diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -1068,4 +1068,6 @@ chrome_java_resources = [ +@@ -1072,4 +1072,6 @@ chrome_java_resources = [ "java/res/xml/sync_and_services_preferences.xml", "java/res/xml/theme_preferences.xml", "java/res/xml/tracing_preferences.xml", @@ -77,7 +78,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -1295,6 +1295,7 @@ chrome_java_sources = [ +@@ -1289,6 +1289,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java", "java/src/org/chromium/chrome/browser/payments/ui/LineItem.java", "java/src/org/chromium/chrome/browser/payments/ui/PaymentAppComparator.java", @@ -201,9 +202,9 @@ new file mode 100644 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -105,6 +105,11 @@ +@@ -104,6 +104,11 @@ android:key="content_settings" - android:order="20" + android:order="19" android:title="@string/prefs_site_settings"/> + +@@ -2074,11 +2082,18 @@ public abstract class ChromeActivity } else if (id == R.id.view_source_id) { currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString())); } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) { @@ -281,7 +290,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv + final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( + ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false); + if (stickyDesktopModeEnabled) { -+ TabWindowManager.getInstance().SetOverrideUserAgentForAllTabs(!usingDesktopUserAgent); ++ TabWindowManagerSingleton.getInstance().SetOverrideUserAgentForAllTabs(!usingDesktopUserAgent); + } else { + currentTab.SetOverrideUserAgent(!usingDesktopUserAgent); + } @@ -368,7 +377,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAg new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java -@@ -0,0 +1,184 @@ +@@ -0,0 +1,185 @@ +/* + This file is part of Bromite. + @@ -414,6 +423,7 @@ new file mode 100644 +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +import org.chromium.chrome.browser.preferences.SharedPreferencesManager; + ++import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton; +import org.chromium.chrome.browser.tabmodel.TabWindowManager; +import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManager; +import org.chromium.chrome.R; @@ -527,7 +537,7 @@ new file mode 100644 + private void UpdateAllTabs() { + final boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( + ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false); -+ TabWindowManager.getInstance().SetOverrideUserAgentForAllTabs(alwaysDesktopModeEnabled); ++ TabWindowManagerSingleton.getInstance().SetOverrideUserAgentForAllTabs(alwaysDesktopModeEnabled); + } + + @Override @@ -556,7 +566,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -56,6 +56,18 @@ import org.chromium.ui.base.WindowAndroid; +@@ -57,6 +57,18 @@ import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.util.ColorUtils; import org.chromium.url.GURL; import org.chromium.url.Origin; @@ -575,7 +585,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. -@@ -448,6 +460,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -454,6 +466,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { throw new RuntimeException("Tab.loadUrl called when no native side exists"); } @@ -607,7 +617,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav // We load the URL from the tab rather than directly from the ContentView so the tab has // a chance of using a prerenderer page is any. int loadType = TabImplJni.get().loadUrl(mNativeTabAndroid, TabImpl.this, -@@ -460,7 +497,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -466,7 +503,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { params.getReferrer() != null ? params.getReferrer().getPolicy() : 0, params.getIsRendererInitiated(), params.getShouldReplaceCurrentEntry(), params.getHasUserGesture(), params.getShouldClearHistoryList(), @@ -617,7 +627,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav for (TabObserver observer : mObservers) { observer.onLoadUrl(this, params, loadType); -@@ -1402,6 +1440,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1433,6 +1471,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { if (mWebContents != null) mWebContents.getNavigationController().loadIfNecessary(); mIsBeingRestored = true; for (TabObserver observer : mObservers) observer.onRestoreStarted(this); @@ -628,7 +638,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav } finally { TraceEvent.end("Tab.restoreIfNeeded"); } -@@ -1519,6 +1561,42 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1550,6 +1592,42 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { } } @@ -671,7 +681,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav @NativeMethods interface Natives { TabImpl fromWebContents(WebContents webContents); -@@ -1540,7 +1618,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1571,7 +1649,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { String referrerUrl, int referrerPolicy, boolean isRendererInitiated, boolean shoulReplaceCurrentEntry, boolean hasUserGesture, boolean shouldClearHistoryList, long inputStartTimestamp, @@ -681,50 +691,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav void setActiveNavigationEntryTitleForUrl( long nativeTabAndroid, TabImpl caller, String url, String title); void loadOriginalImage(long nativeTabAndroid, TabImpl caller); -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java -@@ -28,6 +28,9 @@ import java.util.HashMap; - import java.util.List; - import java.util.Map; - -+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; -+import org.chromium.chrome.browser.preferences.SharedPreferencesManager; -+ - /** - * Manages multiple {@link TabModelSelector} instances, each owned by different {@link Activity}s. - */ -@@ -268,4 +271,24 @@ public class TabWindowManager implements ActivityStateListener { - false); - } - } -+ -+ public static void SetOverrideUserAgentForAllTabs(boolean usingDesktopUserAgent) { -+ TabWindowManager tabWindowManagerSingleton = TabWindowManager.getInstance(); -+ -+ List mSelectors = tabWindowManagerSingleton.mSelectors; -+ for (int selectorIndex = 0; selectorIndex < mSelectors.size(); selectorIndex++) { -+ TabModelSelector selector = mSelectors.get(selectorIndex); -+ if (selector != null) { -+ List models = selector.getModels(); -+ for (int modelIndex = 0; modelIndex < models.size(); modelIndex++) { -+ TabModel model = models.get(modelIndex); -+ -+ for (int tabIdex = 0; tabIdex < model.getCount(); tabIdex++) { -+ Tab theTab = model.getTabAt(tabIdex); -+ theTab.SetOverrideUserAgent(usingDesktopUserAgent); -+ } -+ } -+ } -+ } -+ } - } diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/android/content/content_utils.cc --- a/chrome/browser/android/content/content_utils.cc +++ b/chrome/browser/android/content/content_utils.cc -@@ -9,6 +9,20 @@ - #include "content/public/browser/web_contents.h" - #include "content/public/common/user_agent.h" +@@ -8,6 +8,20 @@ + #include "components/embedder_support/android/util/user_agent_utils.h" + #include "components/version_info/version_info.h" +#include "base/android/jni_android.h" +#include "base/android/scoped_java_ref.h" @@ -743,11 +715,10 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an static base::android::ScopedJavaLocalRef JNI_ContentUtils_GetBrowserUserAgent(JNIEnv* env) { return base::android::ConvertUTF8ToJavaString(env, GetUserAgent()); -@@ -17,6 +31,21 @@ JNI_ContentUtils_GetBrowserUserAgent(JNIEnv* env) { +@@ -16,6 +30,20 @@ JNI_ContentUtils_GetBrowserUserAgent(JNIEnv* env) { static void JNI_ContentUtils_SetUserAgentOverride( JNIEnv* env, const base::android::JavaParamRef& jweb_contents) { -+ + bool enabled = + g_browser_process->local_state()->GetBoolean(prefs::kOverrideUserAgentDesktopModeEnabled); + @@ -762,9 +733,9 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an + return; + } + - const char kLinuxInfoStr[] = "X11; Linux x86_64"; - std::string product = version_info::GetProductNameAndVersionForUserAgent(); - + content::WebContents* web_contents = + content::WebContents::FromJavaWebContents(jweb_contents); + embedder_support::SetDesktopUserAgentOverride(web_contents, diff --git a/chrome/browser/android/preferences/browser_prefs_android.cc b/chrome/browser/android/preferences/browser_prefs_android.cc --- a/chrome/browser/android/preferences/browser_prefs_android.cc +++ b/chrome/browser/android/preferences/browser_prefs_android.cc @@ -917,7 +888,7 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager.cc b diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc --- a/chrome/browser/android/tab_android.cc +++ b/chrome/browser/android/tab_android.cc -@@ -366,7 +366,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl( +@@ -379,7 +379,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl( jboolean has_user_gesture, jboolean should_clear_history_list, jlong input_start_timestamp, @@ -927,7 +898,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_ if (!web_contents()) return PAGE_LOAD_FAILED; -@@ -423,6 +424,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl( +@@ -436,6 +437,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl( load_params.input_start = base::TimeTicks::FromUptimeMillis(intent_received_timestamp); } @@ -939,7 +910,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_ diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_android.h --- a/chrome/browser/android/tab_android.h +++ b/chrome/browser/android/tab_android.h -@@ -157,7 +157,8 @@ class TabAndroid : public base::SupportsUserData { +@@ -173,7 +173,8 @@ class TabAndroid : public base::SupportsUserData { jboolean has_user_gesture, jboolean should_clear_history_list, jlong omnibox_input_received_timestamp, @@ -952,7 +923,7 @@ diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_a 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 -@@ -1246,6 +1246,13 @@ std::string GetUserAgent() { +@@ -1262,6 +1262,13 @@ std::string GetUserAgent() { blink::UserAgentMetadata GetUserAgentMetadata() { blink::UserAgentMetadata metadata; @@ -966,8 +937,8 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch metadata.brand_version_list = GetBrandVersionList(); metadata.full_version = version_info::GetVersionNumber(); metadata.platform = version_info::GetOSType(); -@@ -2320,6 +2327,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( - blink::switches::kUserAgentClientHintDisable); +@@ -2345,6 +2352,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( + switches::kDisableTargetBlankImpliesNoOpener); } + @@ -977,7 +948,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -777,6 +777,9 @@ public final class ChromePreferenceKeys { +@@ -800,6 +800,9 @@ public final class ChromePreferenceKeys { public static final KeyPrefix KEY_ZERO_SUGGEST_HEADER_GROUP_COLLAPSED_BY_DEFAULT_PREFIX = new KeyPrefix("zero_suggest_header_group_collapsed_by_default*"); @@ -987,12 +958,12 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** * These values are currently used as SharedPreferences keys, along with the keys in * {@link GrandfatheredChromePreferenceKeys#getKeysInUse()}. Add new SharedPreferences keys -@@ -823,7 +826,9 @@ public final class ChromePreferenceKeys { - SETTINGS_SAFETY_CHECK_LAST_RUN_TIMESTAMP, +@@ -854,7 +857,9 @@ public final class ChromePreferenceKeys { SETTINGS_SAFETY_CHECK_RUN_COUNTER, SIGNIN_PROMO_IMPRESSIONS_COUNT_NTP, -- TWA_DISCLOSURE_SEEN_PACKAGES -+ TWA_DISCLOSURE_SEEN_PACKAGES, + TWA_DISCLOSURE_SEEN_PACKAGES, +- VIDEO_TUTORIALS_SHARE_URL_SET ++ VIDEO_TUTORIALS_SHARE_URL_SET, + USERAGENT_STICKY_DESKTOP_MODE, + USERAGENT_ALWAYS_DESKTOP_MODE ); @@ -1010,6 +981,57 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.jav /** * If set to true, any future navigations in the tab automatically get * PageTransition.FROM_API_2 applied. +diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java +--- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java ++++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java +@@ -10,6 +10,11 @@ import org.chromium.chrome.browser.tab.Tab; + import org.chromium.chrome.browser.tabmodel.NextTabPolicy.NextTabPolicySupplier; + import org.chromium.ui.base.WindowAndroid; + ++import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; ++import org.chromium.chrome.browser.preferences.SharedPreferencesManager; ++ ++import java.util.List; ++ + /** + * Manages multiple {@link TabModelSelector} instances, each owned by different {@link Activity}s. + * +@@ -76,4 +81,7 @@ public interface TabWindowManager { + * @return Specified {@link Tab} or {@code null} if the {@link Tab} is not found. + */ + Tab getTabById(int tabId); ++ ++ void SetOverrideUserAgentForAllTabs(boolean usingDesktopUserAgent); ++ + } +diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java +--- a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java ++++ b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java +@@ -119,6 +119,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan + return null; + } + ++ @Override ++ public void SetOverrideUserAgentForAllTabs(boolean usingDesktopUserAgent) { ++ for (int selectorIndex = 0; selectorIndex < mSelectors.size(); selectorIndex++) { ++ TabModelSelector selector = mSelectors.get(selectorIndex); ++ if (selector != null) { ++ List models = selector.getModels(); ++ for (int modelIndex = 0; modelIndex < models.size(); modelIndex++) { ++ TabModel model = models.get(modelIndex); ++ ++ for (int tabIdex = 0; tabIdex < model.getCount(); tabIdex++) { ++ Tab theTab = model.getTabAt(tabIdex); ++ theTab.SetOverrideUserAgent(usingDesktopUserAgent); ++ } ++ } ++ } ++ } ++ } ++ + @Override + public Tab getTabById(int tabId) { + for (int i = 0; i < mSelectors.size(); i++) { diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd @@ -1058,7 +1080,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro 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 -@@ -3084,4 +3084,17 @@ const char kIncognitoTabHistoryEnabled[] = +@@ -3124,4 +3124,17 @@ const char kIncognitoTabHistoryEnabled[] = "incognito_tab_history_enabled"; #endif @@ -1079,7 +1101,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1082,6 +1082,14 @@ extern const char kShowCaretBrowsingDialog[]; +@@ -1097,6 +1097,14 @@ extern const char kSecurityTokenSessionNotificationSeconds[]; extern const char kIncognitoTabHistoryEnabled[]; #endif @@ -1154,7 +1176,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.h b/con diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3498,6 +3498,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3456,6 +3456,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kIpcDumpDirectory, switches::kIpcFuzzerTestcase, #endif @@ -1173,9 +1195,9 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" #include "base/trace_event/optional_trace_event.h" -@@ -2487,7 +2488,8 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { - - prefs.viewport_enabled = command_line.HasSwitch(switches::kEnableViewport); +@@ -2467,7 +2468,8 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { + prefs.threaded_scrolling_enabled = + !command_line.HasSwitch(blink::switches::kDisableThreadedScrolling); - if (IsOverridingUserAgent()) + if (IsOverridingUserAgent() && diff --git a/build/patches/android-upstream-missed-manifest-changes-for-Q-R.patch b/build/patches/android-upstream-missed-manifest-changes-for-Q-R.patch deleted file mode 100644 index 0311ed34..00000000 --- a/build/patches/android-upstream-missed-manifest-changes-for-Q-R.patch +++ /dev/null @@ -1,84 +0,0 @@ -From: "Torne (Richard Coles)" -Date: Tue, 3 Nov 2020 19:02:16 +0000 -Subject: android: upstream missed manifest changes for Q/R. - -On Q+ we disabled audio capture as we have no way to selectively disable -it for incognito tabs, but this was missed when upstreaming Q. - -Chrome needs QUERY_ALL_PACKAGES permission on R+ to check for any -possible intent handler for URLs. This was added downstream but missed -while upstreaming R support; add it now. - -Bug: 948282, 1042023 -Change-Id: I4136beddcba0227ef6cfc2073f90d645151ce6bb -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2507575 -Reviewed-by: David Trainor -Reviewed-by: Theresa -Commit-Queue: Richard Coles -Cr-Commit-Position: refs/heads/master@{#823642} ---- - .../monochrome_public_bundle.AndroidManifest.expected | 2 ++ - .../trichrome_chrome_bundle.AndroidManifest.expected | 2 ++ - chrome/android/java/AndroidManifest.xml | 2 ++ - 3 files changed, 6 insertions(+) - -diff --git a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected ---- a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected -+++ b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected -@@ -37,6 +37,7 @@ - - - -+ - - - -@@ -63,6 +64,7 @@ - - - - - -+ - - - -@@ -63,6 +64,7 @@ - - - - - -+ - - - -@@ -160,6 +161,7 @@ by a child template that "extends" this file. - android:allowBackup="false" - {% endif %} - android:networkSecurityConfig="@xml/network_security_config" -+ android:allowAudioPlaybackCapture="false" - {% block extra_application_attributes %}{% endblock %}> - - {% macro application_definitions() %} --- -2.17.1 - diff --git a/build/patches/autofill-disable-autofill-download-manager.patch b/build/patches/autofill-disable-autofill-download-manager.patch index 04d4699a..30c77c48 100644 --- a/build/patches/autofill-disable-autofill-download-manager.patch +++ b/build/patches/autofill-disable-autofill-download-manager.patch @@ -129,7 +129,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a ValuePatternsMetric GetValuePattern(const base::string16& value) { if (IsUPIVirtualPaymentAddress(value)) return ValuePatternsMetric::kUpiVpa; -@@ -1644,11 +1631,6 @@ AutofillManager::AutofillManager( +@@ -1653,11 +1640,6 @@ AutofillManager::AutofillManager( : std::make_unique( driver, client_, personal_data_, credit_card_form_event_logger_.get()); diff --git a/build/patches/browser-ui-disable-warning-about-missing-API-keys.patch b/build/patches/browser-ui-disable-warning-about-missing-API-keys.patch index a4f306d5..8a7bdfc8 100644 --- a/build/patches/browser-ui-disable-warning-about-missing-API-keys.patch +++ b/build/patches/browser-ui-disable-warning-about-missing-API-keys.patch @@ -10,7 +10,7 @@ We do not want to use the services anyway ;) diff --git a/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc b/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc --- a/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc +++ b/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc -@@ -14,6 +14,7 @@ +@@ -16,6 +16,7 @@ // static void GoogleApiKeysInfoBarDelegate::Create(InfoBarService* infobar_service) { diff --git a/build/patches/build-remove-calling-untrusted-hooks.patch b/build/patches/build-remove-calling-untrusted-hooks.patch index 54da7541..b679d1c1 100644 --- a/build/patches/build-remove-calling-untrusted-hooks.patch +++ b/build/patches/build-remove-calling-untrusted-hooks.patch @@ -11,7 +11,7 @@ sysroot. diff --git a/DEPS b/DEPS --- a/DEPS +++ b/DEPS -@@ -94,7 +94,7 @@ vars = { +@@ -93,7 +93,7 @@ vars = { # Check out and download nacl by default. This can be disabled e.g. with # custom_vars. @@ -20,7 +20,7 @@ diff --git a/DEPS b/DEPS # By default, do not check out src-internal. This can be overridden e.g. with # custom_vars. -@@ -124,8 +124,8 @@ vars = { +@@ -128,8 +128,8 @@ vars = { # support for other platforms may be added in the future. 'checkout_openxr' : 'checkout_win', @@ -31,7 +31,7 @@ diff --git a/DEPS b/DEPS # By default bot checkouts the WPR archive files only when this # flag is set True. -@@ -4249,49 +4249,6 @@ hooks = [ +@@ -4192,49 +4192,6 @@ hooks = [ 'sync', '--extract', ], }, @@ -81,7 +81,7 @@ diff --git a/DEPS b/DEPS { # Case-insensitivity for the Win SDK. Must run before win_toolchain below. 'name': 'ciopfs_linux', -@@ -4415,18 +4372,6 @@ hooks = [ +@@ -4357,18 +4314,6 @@ hooks = [ '-s', 'src/buildtools/mac/clang-format.sha1', ], }, @@ -100,7 +100,7 @@ diff --git a/DEPS b/DEPS # Pull rc binaries using checked-in hashes. { 'name': 'rc_win', -@@ -4452,29 +4397,6 @@ hooks = [ +@@ -4394,29 +4339,6 @@ hooks = [ '-s', 'src/build/toolchain/win/rc/mac/rc.sha1', ], }, diff --git a/build/patches/disable-AdsBlockedInfoBar.patch b/build/patches/disable-AdsBlockedInfoBar.patch index dc5af52d..51b3e2be 100644 --- a/build/patches/disable-AdsBlockedInfoBar.patch +++ b/build/patches/disable-AdsBlockedInfoBar.patch @@ -3,20 +3,41 @@ Date: Mon, 26 Aug 2019 17:54:28 -0400 Subject: disable AdsBlockedInfoBar --- - .../subresource_filter/chrome_subresource_filter_client.cc | 5 ----- - 1 file changed, 5 deletions(-) + .../chrome_subresource_filter_client.cc | 12 ------------ + 1 file changed, 12 deletions(-) diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc --- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc +++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc -@@ -195,11 +195,6 @@ void ChromeSubresourceFilterClient::LogAction(SubresourceFilterAction action) { +@@ -11,7 +11,6 @@ + #include "base/metrics/histogram_macros.h" + #include "build/build_config.h" + #include "chrome/browser/browser_process.h" +-#include "chrome/browser/infobars/infobar_service.h" + #include "chrome/browser/profiles/profile.h" + #include "chrome/browser/safe_browsing/safe_browsing_service.h" + #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" +@@ -32,11 +31,6 @@ + #include "content/public/browser/render_frame_host.h" + #include "services/metrics/public/cpp/ukm_source_id.h" + +-#if defined(OS_ANDROID) +-#include "chrome/browser/ui/android/infobars/chrome_confirm_infobar.h" +-#include "components/subresource_filter/android/ads_blocked_infobar_delegate.h" +-#endif +- + ChromeSubresourceFilterClient::ChromeSubresourceFilterClient( + content::WebContents* web_contents) + : content::WebContentsObserver(web_contents) { +@@ -224,12 +218,6 @@ void ChromeSubresourceFilterClient::ToggleForceActivationInCurrentWebContents( } void ChromeSubresourceFilterClient::ShowUI(const GURL& url) { -#if defined(OS_ANDROID) - InfoBarService* infobar_service = - InfoBarService::FromWebContents(web_contents()); -- AdsBlockedInfobarDelegate::Create(infobar_service); +- subresource_filter::AdsBlockedInfobarDelegate::Create( +- infobar_service, ChromeConfirmInfoBar::GetResourceIdMapper()); -#endif // TODO(https://crbug.com/1103176): Plumb the actual frame reference here // (it comes from diff --git a/build/patches/disable-WebView-variations-support.patch b/build/patches/disable-WebView-variations-support.patch index a6f881ac..792e2e50 100644 --- a/build/patches/disable-WebView-variations-support.patch +++ b/build/patches/disable-WebView-variations-support.patch @@ -10,7 +10,7 @@ Subject: disable WebView variations support diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java -@@ -165,10 +165,6 @@ public class WebViewChromiumAwInit { +@@ -168,10 +168,6 @@ public class WebViewChromiumAwInit { AwBrowserProcess.configureChildProcessLauncher(); @@ -24,7 +24,7 @@ diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewC diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java -@@ -380,8 +380,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { +@@ -373,8 +373,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { AwContentsStatics.logFlagOverridesWithNative(flagOverrides); } diff --git a/build/patches/disable-autofill-server-communication-by-default.patch b/build/patches/disable-autofill-server-communication-by-default.patch index 3d87803e..6e73e1ae 100644 --- a/build/patches/disable-autofill-server-communication-by-default.patch +++ b/build/patches/disable-autofill-server-communication-by-default.patch @@ -9,7 +9,7 @@ Subject: disable autofill server communication by default diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc -@@ -240,7 +240,7 @@ const base::Feature kAutofillSectionUponRedundantNameInfo{ +@@ -229,7 +229,7 @@ const base::Feature kAutofillSectionUponRedundantNameInfo{ // "upload" resources. // i.e., https://other.autofill.server:port/tbproxy/af/ const base::Feature kAutofillServerCommunication{ diff --git a/build/patches/disable-background-sync-by-default.patch b/build/patches/disable-background-sync-by-default.patch index f4ed149c..3e2cbc86 100644 --- a/build/patches/disable-background-sync-by-default.patch +++ b/build/patches/disable-background-sync-by-default.patch @@ -15,7 +15,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. Register(ContentSettingsType::BACKGROUND_SYNC, "background-sync", - CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, + CONTENT_SETTING_BLOCK, WebsiteSettingsInfo::UNSYNCABLE, - WhitelistedSchemes(), + AllowlistedSchemes(), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), WebsiteSettingsInfo::SINGLE_ORIGIN_ONLY_SCOPE, -- diff --git a/build/patches/disable-sensors-access-site-setting-by-default.patch b/build/patches/disable-sensors-access-site-setting-by-default.patch index 7436c6a7..02ec7df4 100644 --- a/build/patches/disable-sensors-access-site-setting-by-default.patch +++ b/build/patches/disable-sensors-access-site-setting-by-default.patch @@ -15,7 +15,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. // contexts. - Register(ContentSettingsType::SENSORS, "sensors", CONTENT_SETTING_ALLOW, + Register(ContentSettingsType::SENSORS, "sensors", CONTENT_SETTING_BLOCK, - WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(), + WebsiteSettingsInfo::UNSYNCABLE, AllowlistedSchemes(), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), WebsiteSettingsInfo::SINGLE_ORIGIN_ONLY_SCOPE, -- diff --git a/build/patches/kill-Auth.patch b/build/patches/kill-Auth.patch index e70b3d06..a6eec0d6 100644 --- a/build/patches/kill-Auth.patch +++ b/build/patches/kill-Auth.patch @@ -59,7 +59,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; -@@ -119,18 +116,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -120,18 +117,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { // so don't report any accounts if Google Play Services are out of date. checkCanUseGooglePlayServices(); @@ -79,7 +79,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon } @Override -@@ -138,30 +124,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -139,30 +125,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { throws AuthException { assert !ThreadUtils.runningOnUiThread(); assert AccountUtils.GOOGLE_ACCOUNT_TYPE.equals(account.type); @@ -112,7 +112,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon } @Override -@@ -191,17 +159,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -192,17 +160,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { @SuppressLint("MissingPermission") @Override public void createAddAccountIntent(Callback callback) { @@ -130,7 +130,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon } // No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs -@@ -219,12 +176,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -220,12 +177,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { @Nullable @Override public String getAccountGaiaId(String accountEmail) { diff --git a/build/patches/kill-GCM.patch b/build/patches/kill-GCM.patch index d5929033..b920a7fa 100644 --- a/build/patches/kill-GCM.patch +++ b/build/patches/kill-GCM.patch @@ -5,18 +5,18 @@ Subject: kill GCM --- ...em_webview_bundle.AndroidManifest.expected | 6 - chrome/android/BUILD.gn | 1 - - chrome/android/chrome_java_sources.gni | 7 - + chrome/android/chrome_java_sources.gni | 5 - chrome/android/java/AndroidManifest.xml | 53 ----- .../ChromeBackgroundTaskFactory.java | 3 - - .../services/gcm/GCMBackgroundTask.java | 2 +- + .../services/gcm/GCMBackgroundTask.java | 1 - components/background_task_scheduler/BUILD.gn | 1 - .../internal/BUILD.gn | 1 - - ...kgroundTaskSchedulerGcmNetworkManager.java | 206 +----------------- + ...kgroundTaskSchedulerGcmNetworkManager.java | 199 +----------------- components/gcm_driver/android/BUILD.gn | 1 - .../gcm_driver/instance_id/android/BUILD.gn | 1 - .../instance_id/InstanceIDBridge.java | 49 +---- components/sync/android/BUILD.gn | 1 - - 13 files changed, 7 insertions(+), 325 deletions(-) + 13 files changed, 6 insertions(+), 316 deletions(-) diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected --- a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected @@ -44,7 +44,7 @@ diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest. diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -506,7 +506,6 @@ android_library("chrome_java") { +@@ -510,7 +510,6 @@ android_library("chrome_java") { "//third_party/android_deps:material_design_java", "//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/android_media:android_media_java", @@ -55,38 +55,29 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -5,7 +5,6 @@ - chrome_java_sources = [ - "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java", - "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", -- "java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java", - "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", - "java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java", - "java/src/org/chromium/chrome/browser/AppHooks.java", -@@ -17,7 +16,6 @@ chrome_java_sources = [ +@@ -16,7 +16,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java", "java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java", "java/src/org/chromium/chrome/browser/ChromeApplication.java", -- "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java", - "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java", +- "java/src/org/chromium/chrome/browser/ChromeBackgroundServiceImpl.java", + "java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java", "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java", "java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java", -@@ -1352,11 +1350,6 @@ chrome_java_sources = [ +@@ -1344,10 +1343,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/send_tab_to_self/SendTabToSelfShareActivity.java", "java/src/org/chromium/chrome/browser/services/AccountsChangedReceiver.java", "java/src/org/chromium/chrome/browser/services/AndroidChildAccountHelper.java", -- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java", -- "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundService.java", +- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerServiceImpl.java", +- "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundServiceImpl.java", - "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java", - "java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java", -- "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java", "java/src/org/chromium/chrome/browser/settings/MainSettings.java", "java/src/org/chromium/chrome/browser/settings/SettingsActivity.java", "java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java", diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -80,22 +80,17 @@ by a child template that "extends" this file. +@@ -81,23 +81,18 @@ by a child template that "extends" this file. @@ -95,8 +86,9 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro - android:protectionLevel="signature" /> + - @@ -109,7 +101,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro {% block extra_uses_permissions %} -@@ -972,36 +967,6 @@ by a child template that "extends" this file. +@@ -970,36 +965,6 @@ by a child template that "extends" this file. android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:hardwareAccelerated="false" /> @@ -198,12 +190,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/background_task diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java --- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java -@@ -42,7 +42,7 @@ public class GCMBackgroundTask implements BackgroundTask { +@@ -42,7 +42,6 @@ public class GCMBackgroundTask implements BackgroundTask { return false; } -- ChromeGcmListenerService.dispatchMessageToDriver(message); -+ //ChromeGcmListenerService.dispatchMessageToDriver(message); +- ChromeGcmListenerServiceImpl.dispatchMessageToDriver(message); return false; } @@ -232,22 +223,7 @@ diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java --- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java +++ b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java -@@ -10,14 +10,6 @@ import android.os.Bundle; - import androidx.annotation.NonNull; - import androidx.annotation.VisibleForTesting; - --import com.google.android.gms.common.ConnectionResult; --import com.google.android.gms.common.GoogleApiAvailability; --import com.google.android.gms.gcm.GcmNetworkManager; --import com.google.android.gms.gcm.OneoffTask; --import com.google.android.gms.gcm.PeriodicTask; --import com.google.android.gms.gcm.Task; --import com.google.android.gms.gcm.TaskParams; -- - import org.chromium.base.Log; - import org.chromium.base.ThreadUtils; - import org.chromium.components.background_task_scheduler.TaskInfo; -@@ -45,212 +37,16 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule +@@ -44,211 +44,14 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule sClock = clock; } @@ -413,7 +389,7 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/ @Override public boolean schedule(Context context, @NonNull TaskInfo taskInfo) { ThreadUtils.assertOnUiThread(); - +- - GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context); - if (gcmNetworkManager == null) { - Log.e(TAG, "GcmNetworkManager is not available."); @@ -436,7 +412,7 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/ @Override public void cancel(Context context, int taskId) { - ThreadUtils.assertOnUiThread(); +- ThreadUtils.assertOnUiThread(); - - GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context); - if (gcmNetworkManager == null) { @@ -453,8 +429,7 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/ - } - - private GcmNetworkManager getGcmNetworkManager(Context context) { -- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) -- == ConnectionResult.SUCCESS) { +- if (ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(context)) { - return GcmNetworkManager.getInstance(context); - } - return null; diff --git a/build/patches/kill-Location-fall-back-to-system.patch b/build/patches/kill-Location-fall-back-to-system.patch index 038bf1b5..2f7b94c1 100644 --- a/build/patches/kill-Location-fall-back-to-system.patch +++ b/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 -@@ -160,7 +160,6 @@ if (is_android) { +@@ -151,7 +151,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", diff --git a/build/patches/kill-TOS-and-metrics-opt-out.patch b/build/patches/kill-TOS-and-metrics-opt-out.patch index 868c908a..1014be87 100644 --- a/build/patches/kill-TOS-and-metrics-opt-out.patch +++ b/build/patches/kill-TOS-and-metrics-opt-out.patch @@ -3,27 +3,35 @@ Date: Fri, 22 Jun 2018 17:16:07 +0200 Subject: kill TOS and metrics opt-out --- - chrome/android/java/res/layout/fre_tosanduma.xml | 2 +- - chrome/android/java/res/values/dimens.xml | 1 - - .../chromium/chrome/browser/firstrun/FirstRunActivityBase.java | 2 +- - 3 files changed, 2 insertions(+), 3 deletions(-) + chrome/android/java/res/layout/fre_tosanduma.xml | 9 --------- + chrome/android/java/res/values/dimens.xml | 1 - + .../browser/firstrun/FirstRunActivityBase.java | 2 +- + .../firstrun/ToSAndUMAFirstRunFragment.java | 14 +------------- + 4 files changed, 2 insertions(+), 24 deletions(-) diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml --- a/chrome/android/java/res/layout/fre_tosanduma.xml +++ b/chrome/android/java/res/layout/fre_tosanduma.xml -@@ -83,7 +83,7 @@ +@@ -83,15 +83,6 @@ android:layout_height="wrap_content" android:layout_marginBottom="@dimen/fre_tos_bottom_margin" android:lineSpacingMultiplier="1.4" - android:textAppearance="@style/TextAppearance.TextMedium.Primary" /> -+ android:textAppearance="@style/TextAppearance.TextMedium.Primary" android:visibility="gone" /> - - + + 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 -@@ -153,7 +153,6 @@ +@@ -152,7 +152,6 @@ 36dp 120dp 110dp @@ -43,6 +51,58 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR private boolean mNativeInitialized; +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 +@@ -50,7 +50,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm + protected boolean mNativeInitialized; + + private Button mAcceptButton; +- private CheckBox mSendReportCheckBox; + private TextView mTosAndPrivacy; + private View mTitle; + private View mProgressSpinner; +@@ -70,7 +69,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm + mProgressSpinner = view.findViewById(R.id.progress_spinner); + mProgressSpinner.setVisibility(View.GONE); + mAcceptButton = (Button) view.findViewById(R.id.terms_accept); +- mSendReportCheckBox = (CheckBox) view.findViewById(R.id.send_report_checkbox); + mTosAndPrivacy = (TextView) view.findViewById(R.id.tos_and_privacy); + + mAcceptButton.setOnClickListener(new OnClickListener() { +@@ -145,11 +143,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm + if (!isVisibleToUser) { + // Restore original enabled & visibility states, in case the user returns to the page. + setSpinnerVisible(false); +- } else { +- // On certain versions of Android, the checkbox will appear unchecked upon revisiting +- // the page. Force it to the end state of the drawable animation as a work around. +- // crbug.com/666258 +- mSendReportCheckBox.jumpDrawablesToCurrentState(); + } + } + +@@ -169,8 +162,7 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm + } + + mTriggerAcceptAfterNativeInit = false; +- boolean allowCrashUpload = canShowUmaCheckBox() && mSendReportCheckBox.isChecked(); +- getPageDelegate().acceptTermsOfService(allowCrashUpload); ++ getPageDelegate().acceptTermsOfService(false); + } + + private void setSpinnerVisible(boolean spinnerVisible) { +@@ -190,10 +182,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm + + mAcceptButton.setVisibility(visibility); + mTosAndPrivacy.setVisibility(visibility); +- // Avoid updating visibility if the UMA check box can't be shown right now. +- if (canShowUmaCheckBox()) { +- mSendReportCheckBox.setVisibility(visibility); +- } + } + + protected View getToSAndPrivacyText() { -- 2.17.1 diff --git a/build/patches/kill-Vision.patch b/build/patches/kill-Vision.patch index bd3c309b..ad0d9305 100644 --- a/build/patches/kill-Vision.patch +++ b/build/patches/kill-Vision.patch @@ -7,14 +7,14 @@ Barcode, face and text detection APIs chrome/android/BUILD.gn | 2 -- services/shape_detection/BUILD.gn | 6 ----- .../chromium/shape_detection/BitmapUtils.java | 12 ---------- - .../FaceDetectionProviderImpl.java | 13 +---------- + .../FaceDetectionProviderImpl.java | 10 +------- .../shape_detection/InterfaceRegistrar.java | 23 ++----------------- - 5 files changed, 3 insertions(+), 53 deletions(-) + 5 files changed, 3 insertions(+), 50 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -291,8 +291,6 @@ android_library("chrome_java") { +@@ -287,8 +287,6 @@ android_library("chrome_java") { "$google_play_services_package:google_play_services_gcm_java", "$google_play_services_package:google_play_services_iid_java", "$google_play_services_package:google_play_services_tasks_java", @@ -26,7 +26,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn 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 -@@ -92,14 +92,8 @@ if (is_android) { +@@ -102,14 +102,8 @@ if (is_android) { android_library("shape_detection_java") { sources = [ @@ -71,25 +71,14 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java --- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java +++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java -@@ -4,9 +4,6 @@ - - package org.chromium.shape_detection; - --import com.google.android.gms.common.ConnectionResult; --import com.google.android.gms.common.GoogleApiAvailability; -- - import org.chromium.base.ContextUtils; - import org.chromium.mojo.bindings.InterfaceRequest; - import org.chromium.mojo.system.MojoException; -@@ -23,16 +20,8 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider { +@@ -21,15 +21,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider { @Override public void createFaceDetection( InterfaceRequest request, FaceDetectorOptions options) { - final boolean isGmsCoreSupported = -- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( -- ContextUtils.getApplicationContext()) -- == ConnectionResult.SUCCESS; - +- ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable( +- ContextUtils.getApplicationContext()); +- - if (isGmsCoreSupported) { - FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request); - } else { diff --git a/build/patches/openH264-enable-ARM-ARM64-optimizations.patch b/build/patches/openH264-enable-ARM-ARM64-optimizations.patch index 52cb6f27..4d525eb0 100644 --- a/build/patches/openH264-enable-ARM-ARM64-optimizations.patch +++ b/build/patches/openH264-enable-ARM-ARM64-optimizations.patch @@ -12,14 +12,14 @@ Limit threads auto-detect only for iOS diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc --- a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc +++ b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -@@ -153,11 +153,11 @@ void H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) { +@@ -154,11 +154,11 @@ void H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) { init_params.iRCMode = RC_OFF_MODE; } --#if defined(OS_CHROMEOS) +-#if BUILDFLAG(IS_ASH) - init_params.iMultipleThreadIdc = 0; -#else -+#if defined(OS_MACOSX) ++#if BUILDFLAG(OS_MACOSX) // Threading model: Set to 1 due to https://crbug.com/583348. init_params.iMultipleThreadIdc = 1; +#else @@ -30,12 +30,12 @@ diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn --- a/third_party/openh264/BUILD.gn +++ b/third_party/openh264/BUILD.gn -@@ -122,8 +122,12 @@ if (use_assembler) { +@@ -132,8 +132,12 @@ if (use_assembler) { source_set("common") { sources = openh264_common_sources -- if (is_chromeos && current_cpu == "arm") { -+ if (is_chromeos || is_android) { +- if (is_ash && current_cpu == "arm") { ++ if (is_ash || is_android) { + if (current_cpu == "arm") { sources += openh264_common_sources_asm_arm + } else if (current_cpu == "arm64") { @@ -44,29 +44,29 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn } include_dirs = openh264_common_include_dirs -@@ -148,8 +152,12 @@ source_set("common") { +@@ -158,8 +162,12 @@ source_set("common") { source_set("processing") { sources = openh264_processing_sources -- if (is_chromeos && current_cpu == "arm") { -+ if (is_chromeos || is_android) { +- if (is_ash && current_cpu == "arm") { ++ if (is_ash || is_android) { + if (current_cpu == "arm") { sources += openh264_processing_sources_asm_arm -+ } else if (current_cpu == "arm64") { ++ } else { + sources += openh264_processing_sources_asm_arm64 + } } include_dirs = openh264_processing_include_dirs -@@ -165,8 +173,12 @@ source_set("processing") { +@@ -175,8 +183,12 @@ source_set("processing") { source_set("encoder") { sources = openh264_encoder_sources -- if (is_chromeos && current_cpu == "arm") { -+ if (is_chromeos || is_android) { +- if (is_ash && current_cpu == "arm") { ++ if (is_ash || is_android) { + if (current_cpu == "arm") { sources += openh264_encoder_sources_asm_arm -+ } else if (current_cpu == "arm64") { ++ } else { + sources += openh264_encoder_sources_asm_arm64 + } } diff --git a/build/patches/promo-disable-Google-promotion-fetching.patch b/build/patches/promo-disable-Google-promotion-fetching.patch index 4fc20942..c2f75923 100644 --- a/build/patches/promo-disable-Google-promotion-fetching.patch +++ b/build/patches/promo-disable-Google-promotion-fetching.patch @@ -22,7 +22,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/33 diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc --- a/chrome/browser/signin/signin_promo.cc +++ b/chrome/browser/signin/signin_promo.cc -@@ -59,6 +59,7 @@ GURL GetEmbeddedPromoURL(signin_metrics::AccessPoint access_point, +@@ -58,6 +58,7 @@ GURL GetEmbeddedPromoURL(signin_metrics::AccessPoint access_point, url = net::AppendQueryParameter(url, signin::kSignInPromoQueryKeyAutoClose, "1"); } diff --git a/build/patches/ungoogled-chromium-Disable-Google-host-detection.patch b/build/patches/ungoogled-chromium-Disable-Google-host-detection.patch index d9999e72..5143a6d7 100644 --- a/build/patches/ungoogled-chromium-Disable-Google-host-detection.patch +++ b/build/patches/ungoogled-chromium-Disable-Google-host-detection.patch @@ -336,7 +336,7 @@ diff --git a/components/page_load_metrics/common/page_load_metrics_util.cc b/com 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 -@@ -510,11 +510,7 @@ base::string16 TemplateURLRef::SearchTermToString16( +@@ -513,11 +513,7 @@ base::string16 TemplateURLRef::SearchTermToString16( bool TemplateURLRef::HasGoogleBaseURLs( const SearchTermsData& search_terms_data) const { ParseIfNecessary(search_terms_data); diff --git a/build/patches/ungoogled-chromium-Disable-intranet-redirect-detector.patch b/build/patches/ungoogled-chromium-Disable-intranet-redirect-detector.patch index 02417cc4..33a147f4 100644 --- a/build/patches/ungoogled-chromium-Disable-intranet-redirect-detector.patch +++ b/build/patches/ungoogled-chromium-Disable-intranet-redirect-detector.patch @@ -12,7 +12,7 @@ See this page for more information: https://mikewest.org/2012/02/chrome-connects diff --git a/chrome/browser/intranet_redirect_detector.cc b/chrome/browser/intranet_redirect_detector.cc --- a/chrome/browser/intranet_redirect_detector.cc +++ b/chrome/browser/intranet_redirect_detector.cc -@@ -115,9 +115,7 @@ void IntranetRedirectDetector::FinishSleep() { +@@ -122,9 +122,7 @@ void IntranetRedirectDetector::FinishSleep() { simple_loaders_.clear(); resulting_origins_.clear(); diff --git a/build/patches/ungoogled-chromium-Disable-profile-avatar.patch b/build/patches/ungoogled-chromium-Disable-profile-avatar.patch index 1ce76bd7..1f7d1538 100644 --- a/build/patches/ungoogled-chromium-Disable-profile-avatar.patch +++ b/build/patches/ungoogled-chromium-Disable-profile-avatar.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 -@@ -1376,8 +1376,6 @@ static_library("browser") { +@@ -1423,8 +1423,6 @@ static_library("browser") { "profiles/profile_attributes_entry.h", "profiles/profile_attributes_storage.cc", "profiles/profile_attributes_storage.h", @@ -24,10 +24,10 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc --- a/chrome/browser/profiles/profile_attributes_entry.cc +++ b/chrome/browser/profiles/profile_attributes_entry.cc -@@ -292,12 +292,6 @@ base::string16 ProfileAttributesEntry::GetUserName() const { - +@@ -285,12 +285,6 @@ base::string16 ProfileAttributesEntry::GetUserName() const { gfx::Image ProfileAttributesEntry::GetAvatarIcon( - int size_for_placeholder_avatar) const { + int size_for_placeholder_avatar, + bool use_high_res_file) const { - if (IsUsingGAIAPicture()) { - const gfx::Image* image = GetGAIAPicture(); - if (image) @@ -36,7 +36,7 @@ diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browse - // TODO(crbug.com/1100835): After launch, remove the treatment of placeholder // avatars from GetHighResAvatar() and from any other places. - if (base::FeatureList::IsEnabled(features::kNewProfilePicker) && + if (ShouldShowGenericColoredAvatar(GetAvatarIconIndex())) { diff --git a/chrome/browser/profiles/profile_avatar_downloader.cc b/chrome/browser/profiles/profile_avatar_downloader.cc --- a/chrome/browser/profiles/profile_avatar_downloader.cc +++ b/chrome/browser/profiles/profile_avatar_downloader.cc diff --git a/build/patches/ungoogled-chromium-Disable-translate-integration.patch b/build/patches/ungoogled-chromium-Disable-translate-integration.patch index e1e0cdcd..64c1cf38 100644 --- a/build/patches/ungoogled-chromium-Disable-translate-integration.patch +++ b/build/patches/ungoogled-chromium-Disable-translate-integration.patch @@ -9,8 +9,8 @@ Remove translate offer .../language/settings/LanguageSettings.java | 43 ------------------- .../strings/android_chrome_strings.grd | 3 -- .../core/browser/translate_manager.cc | 5 ++- - .../core/browser/translate_script.cc | 16 +------ - 6 files changed, 5 insertions(+), 72 deletions(-) + .../core/browser/translate_script.cc | 19 +++----- + 6 files changed, 9 insertions(+), 71 deletions(-) diff --git a/chrome/android/java/res/xml/languages_detailed_preferences.xml b/chrome/android/java/res/xml/languages_detailed_preferences.xml --- a/chrome/android/java/res/xml/languages_detailed_preferences.xml @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/language/settin diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1143,9 +1143,6 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1172,9 +1172,6 @@ Your Google account may have other forms of browsing history like searches and a Websites will show text in your preferred language, when possible. @@ -121,8 +121,8 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro 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 -@@ -734,8 +734,9 @@ void TranslateManager::FilterIsTranslatePossible( - TranslateBrowserMetrics::INITIATION_STATUS_NO_NETWORK); +@@ -850,8 +850,9 @@ void TranslateManager::FilterIsTranslatePossible( + ->LogAutofillAssistantDeferredTriggerDecision(); } - if (!ignore_missing_key_for_testing_ && @@ -136,16 +136,7 @@ diff --git a/components/translate/core/browser/translate_manager.cc b/components diff --git a/components/translate/core/browser/translate_script.cc b/components/translate/core/browser/translate_script.cc --- a/components/translate/core/browser/translate_script.cc +++ b/components/translate/core/browser/translate_script.cc -@@ -48,8 +48,6 @@ const char TranslateScript::kCssLoaderCallbackQueryValue[] = - const char TranslateScript::kJavascriptLoaderCallbackQueryName[] = "jlc"; - const char TranslateScript::kJavascriptLoaderCallbackQueryValue[] = - "cr.googleTranslate.onLoadJavascript"; --const char kTranslateServerStudy[] = "TranslateServerStudy"; --const char kServerParams[] = "server_params"; - - TranslateScript::TranslateScript() - : expiration_delay_(base::TimeDelta::FromDays(kExpirationDelayDays)) {} -@@ -128,22 +126,12 @@ void TranslateScript::OnScriptFetchComplete(bool success, +@@ -126,19 +126,12 @@ void TranslateScript::OnScriptFetchComplete(bool success, data_ = base::StringPrintf("var translateApiKey = '%s';\n", google_apis::GetAPIKey().c_str()); @@ -153,19 +144,20 @@ diff --git a/components/translate/core/browser/translate_script.cc b/components/ - // server. - std::string server_params; - std::map params; -- if (variations::GetVariationParams(kTranslateServerStudy, ¶ms)) { -- server_params = params[kServerParams]; -- } - base::StringAppendF( - &data_, "var gtTimeInfo = {'fetchStart': %0.f, 'fetchEnd': %0.f};\n", - script_fetch_start_time_, base::Time::Now().ToJsTime()); +- base::StringAppendF( +- &data_, "var gtTimeInfo = {'fetchStart': %0.f, 'fetchEnd': %0.f};\n", +- script_fetch_start_time_, base::Time::Now().ToJsTime()); - base::StringAppendF(&data_, "var serverParams = '%s';\n", - server_params.c_str()); -+ base::StringAppendF(&data_, "var serverParams = '';\n"); - +- - GURL security_origin = translate::GetTranslateSecurityOrigin(); - base::StringAppendF(&data_, "var securityOrigin = '%s';", - security_origin.spec().c_str()); ++ base::StringAppendF(&data_, "var serverParams = '';\n"); ++ base::StringAppendF( ++ &data_, "var gtTimeInfo = {'fetchStart': %0.f, 'fetchEnd': %0.f};\n", ++ script_fetch_start_time_, base::Time::Now().ToJsTime()); ++ + base::StringAppendF(&data_, "var securityOrigin = '';"); // Load embedded translate.js. diff --git a/build/patches/ungoogled-chromium-Disable-untraceable-URLs.patch b/build/patches/ungoogled-chromium-Disable-untraceable-URLs.patch index 8f416d8c..df8023ca 100644 --- a/build/patches/ungoogled-chromium-Disable-untraceable-URLs.patch +++ b/build/patches/ungoogled-chromium-Disable-untraceable-URLs.patch @@ -91,7 +91,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_model_loader.h b/chrome/br diff --git a/rlz/lib/financial_ping.cc b/rlz/lib/financial_ping.cc --- a/rlz/lib/financial_ping.cc +++ b/rlz/lib/financial_ping.cc -@@ -340,7 +340,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request, +@@ -336,7 +336,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request, // Open network connection. InternetHandle connection_handle = InternetConnectA(inet_handle, @@ -100,7 +100,7 @@ diff --git a/rlz/lib/financial_ping.cc b/rlz/lib/financial_ping.cc INTERNET_FLAG_NO_CACHE_WRITE, 0); if (!connection_handle) return PING_FAILURE; -@@ -384,7 +384,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request, +@@ -380,7 +380,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request, return PING_SUCCESSFUL; #else std::string url = diff --git a/build/patches/webview-Hard-no-to-persistent-histograms.patch b/build/patches/webview-Hard-no-to-persistent-histograms.patch new file mode 100644 index 00000000..85fa451f --- /dev/null +++ b/build/patches/webview-Hard-no-to-persistent-histograms.patch @@ -0,0 +1,33 @@ +From: "Kevin F. Haggerty" +Date: Sun, 27 Dec 2020 09:42:54 -0700 +Subject: webview: Hard no to persistent histograms + +* It's probably some kind of bug somewhere that these are never + deleted, but they don't really add value to us in the first + place. +* Stop eating 4MB every single time any app that uses webview + ever opens. +* These were guarded by a feature check before + https://chromium.googlesource.com/chromium/src/+/b86102f2a243 +--- + android_webview/browser/aw_field_trials.cc | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/android_webview/browser/aw_field_trials.cc b/android_webview/browser/aw_field_trials.cc +--- a/android_webview/browser/aw_field_trials.cc ++++ b/android_webview/browser/aw_field_trials.cc +@@ -11,11 +11,4 @@ + #include "components/metrics/persistent_histograms.h" + + void AwFieldTrials::SetupFieldTrials() { +- // https://crbug.com/1093420: enable for persistent metrics. +- // Persistent histograms must be enabled as soon as possible. +- base::FilePath metrics_dir; +- if (base::PathService::Get(base::DIR_ANDROID_APP_DATA, &metrics_dir)) { +- InstantiatePersistentHistograms(metrics_dir, +- /*default_local_memory=*/true); +- } + } +-- +2.17.1 +