diff --git a/build/LASTCHANGE b/build/LASTCHANGE index 1698f6f4..5a60ffbc 100644 --- a/build/LASTCHANGE +++ b/build/LASTCHANGE @@ -1 +1 @@ -5d4a0f5095b85ef16b5f7d69b500c549c269e1b9- \ No newline at end of file +ff572868ba4c9d9d449700cce64ff1c2698a259f- \ No newline at end of file diff --git a/build/RELEASE b/build/RELEASE index eb57992f..c1b9a01b 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -100.0.4896.135 \ No newline at end of file +101.0.4951.39 \ No newline at end of file diff --git a/build/RELEASE_COMMIT b/build/RELEASE_COMMIT index 014590e2..d7fed460 100644 --- a/build/RELEASE_COMMIT +++ b/build/RELEASE_COMMIT @@ -1 +1 @@ -1a90e060fd3231f69f387dd2ac33b4e3eeb0e3e3 \ No newline at end of file +db80a48babb94b5db03166dcaa7c0542606d14d9 \ No newline at end of file diff --git a/build/bromite_patches_list.txt b/build/bromite_patches_list.txt index eb0a2a2b..589ddeb7 100644 --- a/build/bromite_patches_list.txt +++ b/build/bromite_patches_list.txt @@ -27,12 +27,10 @@ ungoogled-chromium-Disable-untraceable-URLs.patch ungoogled-chromium-Disable-translate-integration.patch ungoogled-chromium-Disable-profile-avatar.patch ungoogled-chromium-Disable-intranet-redirect-detector.patch -ungoogled-chromium-Disable-Google-host-detection.patch +ungoogled-chromium-no-special-hosts-domains.patch ungoogled-chromium-Disable-Gaia.patch -ungoogled-chromium-Disable-domain-reliability.patch ungoogled-chromium-Disable-Network-Time-Tracker.patch Disable-safe-browsing.patch -Skip-the-first-run-and-remove-report-sending.patch Disable-all-promo-dialogs.patch Remove-signin-integrations.patch Hide-passwords-manager-link.patch @@ -55,7 +53,7 @@ Add-support-for-writing-URIs.patch Add-bookmark-import-export-actions.patch Bookmarks-select-all-menu-entry.patch Add-an-always-incognito-mode.patch -Add-history-support-in-incognito-mode.patch +Keep-flag-to-allow-screenshots-in-Incognito-mode.patch Add-option-to-not-persist-tabs-across-sessions.patch Add-a-proxy-configuration-page.patch Move-some-account-settings-back-to-privacy-settings.patch @@ -83,9 +81,7 @@ Do-not-compile-QR-code-sharing.patch Allow-website-sign-in-without-account-sign-in.patch Offer-builtin-autocomplete-for-chrome-flags.patch Use-4-tile-rows-never-show-logo.patch -Disable-metrics-on-all-I-O-threads.patch Disable-various-metrics.patch -Disable-metrics-collection-for-NTP-tiles.patch Enable-SPPI-for-devices-with-enough-memory.patch Enable-StrictOriginIsolation-and-SitePerProcess.patch Use-64-bit-WebView-processes.patch @@ -115,7 +111,6 @@ Disable-smart-selection-by-default.patch Enable-user-agent-freeze-by-default.patch disable-browser-autologin-by-default.patch AImageReader-CFI-crash-mitigations.patch -Keep-flag-to-allow-screenshots-in-Incognito-mode.patch Add-menu-item-to-view-source.patch Block-gateway-attacks-via-websockets.patch Enable-prefetch-privacy-changes-by-default.patch diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch index 05cea31d..c3881e65 100644 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/patches/AImageReader-CFI-crash-mitigations.patch @@ -82,8 +82,8 @@ 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 -@@ -2232,9 +2232,9 @@ - "expiry_milestone": 100 +@@ -2287,9 +2287,9 @@ + "expiry_milestone": 106 }, { - "name": "enable-image-reader", @@ -98,7 +98,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 -@@ -3191,6 +3191,22 @@ +@@ -3198,6 +3198,22 @@ "dont_delete_source_texture_for_egl_image" ] }, @@ -186,7 +186,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 -@@ -544,6 +544,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, +@@ -580,6 +580,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } #endif // BUILDFLAG(IS_WIN) @@ -229,7 +229,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 -@@ -679,6 +679,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning", +@@ -687,6 +687,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning", // Note: Has no effect if kMediaDrmPreprovisioning feature is disabled. const base::Feature kMediaDrmPreprovisioningAtStartup{ "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT}; @@ -243,7 +243,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 -@@ -214,6 +214,7 @@ MEDIA_EXPORT extern const base::Feature kForceHardwareAudioDecoders; +@@ -215,6 +215,7 @@ MEDIA_EXPORT extern const base::Feature kForceHardwareAudioDecoders; MEDIA_EXPORT extern const base::Feature kAllowNonSecureOverlays; MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture; MEDIA_EXPORT extern const base::Feature kMediaDrmPersistentLicense; diff --git a/build/patches/AV1-codec-support.patch b/build/patches/AV1-codec-support.patch index fdfc4c1d..f91a6c1f 100644 --- a/build/patches/AV1-codec-support.patch +++ b/build/patches/AV1-codec-support.patch @@ -54,7 +54,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 -@@ -650,6 +650,11 @@ aom_rc_interface_sources = [ +@@ -655,6 +655,11 @@ aom_rc_interface_sources = [ "//third_party/libaom/source/libaom/test/yuv_video_source.h", ] diff --git a/build/patches/Add-AllowUserCertificates-flag.patch b/build/patches/Add-AllowUserCertificates-flag.patch index 1755c9ad..a044c723 100644 --- a/build/patches/Add-AllowUserCertificates-flag.patch +++ b/build/patches/Add-AllowUserCertificates-flag.patch @@ -26,7 +26,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.printing.PrintManagerDelegateImpl; import org.chromium.printing.PrintingController; import org.chromium.printing.PrintingControllerImpl; -@@ -994,6 +995,8 @@ public abstract class ChromeActivity +@@ -995,6 +996,8 @@ public abstract class ChromeActivity UpdateMenuItemHelper.getInstance().onStart(); ChromeActivitySessionTracker.getInstance().onStartWithNative(); ChromeCachedFlags.getInstance().cacheNativeFlags(); @@ -38,7 +38,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/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java -@@ -94,6 +94,7 @@ public class ChromeCachedFlags { +@@ -95,6 +95,7 @@ public class ChromeCachedFlags { .GIVE_JAVA_UI_THREAD_DEFAULT_TASK_TRAITS_USER_BLOCKING_PRIORITY); add(ChromeFeatureList.GRID_TAB_SWITCHER_FOR_TABLETS); add(ChromeFeatureList.IMMERSIVE_UI_MODE); @@ -49,7 +49,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/Chrom 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 -@@ -2980,7 +2980,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3079,7 +3079,11 @@ const FeatureEntry kFeatureEntries[] = { {"enable-container-queries", flag_descriptions::kCSSContainerQueriesName, flag_descriptions::kCSSContainerQueriesDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kCSSContainerQueries)}, @@ -65,7 +65,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 -@@ -12,6 +12,11 @@ +@@ -13,6 +13,11 @@ namespace flag_descriptions { @@ -93,7 +93,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 -@@ -146,6 +146,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -147,6 +147,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedLoadingPlaceholder, &feed::kInterestFeedContentSuggestions, &feed::kInterestFeedSpinnerAlwaysAnimate, @@ -101,7 +101,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &feed::kInterestFeedV1ClicksAndViewsConditionalUpload, &feed::kInterestFeedV2, &feed::kInterestFeedV2Autoplay, -@@ -402,6 +403,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{ +@@ -406,6 +407,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{ "AdaptiveButtonInTopToolbarCustomizationV2", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -147,7 +147,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/net/android/java/src/org/chromium/net/X509Util.java b/net/android/java/src/org/chromium/net/X509Util.java --- a/net/android/java/src/org/chromium/net/X509Util.java +++ b/net/android/java/src/org/chromium/net/X509Util.java -@@ -436,6 +436,8 @@ public class X509Util { +@@ -437,6 +437,8 @@ public class X509Util { return false; } @@ -156,7 +156,7 @@ diff --git a/net/android/java/src/org/chromium/net/X509Util.java b/net/android/j public static AndroidCertVerifyResult verifyServerCertificates(byte[][] certChain, String authType, String host) -@@ -516,6 +518,9 @@ public class X509Util { +@@ -517,6 +519,9 @@ public class X509Util { isIssuedByKnownRoot = isKnownRoot(root); } diff --git a/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch b/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch index f18b54ea..9cb120db 100644 --- a/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch +++ b/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch @@ -9,7 +9,7 @@ Subject: Add Alt+D hotkey to focus address bar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java -@@ -157,6 +157,8 @@ public class KeyboardShortcuts { +@@ -155,6 +155,8 @@ public class KeyboardShortcuts { KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON); addShortcut(context, chromeFeatureShortcutGroup, R.string.keyboard_shortcut_address_bar, KeyEvent.KEYCODE_L, KeyEvent.META_CTRL_ON); diff --git a/build/patches/Add-DuckDuckGo-Lite-search-engine.patch b/build/patches/Add-DuckDuckGo-Lite-search-engine.patch index a60fca20..cbc167d0 100644 --- a/build/patches/Add-DuckDuckGo-Lite-search-engine.patch +++ b/build/patches/Add-DuckDuckGo-Lite-search-engine.patch @@ -42,7 +42,7 @@ 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 -@@ -42,7 +42,7 @@ const PrepopulatedEngine* const engines_AE[] = { +@@ -41,7 +41,7 @@ const PrepopulatedEngine* const engines_AE[] = { &googleen, &google, &bing, &yahoo, @@ -51,7 +51,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -51,7 +51,7 @@ const PrepopulatedEngine* const engines_AL[] = { +@@ -50,7 +50,7 @@ const PrepopulatedEngine* const engines_AL[] = { &googleen, &google, &bing, &yahoo, @@ -60,7 +60,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -60,7 +60,7 @@ const PrepopulatedEngine* const engines_AR[] = { +@@ -59,7 +59,7 @@ const PrepopulatedEngine* const engines_AR[] = { &googleen, &google, &bing, &yahoo_ar, @@ -69,7 +69,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -68,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, @@ -78,7 +78,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_at, &ecosia, }; -@@ -78,7 +78,7 @@ const PrepopulatedEngine* const engines_AU[] = { +@@ -77,7 +77,7 @@ const PrepopulatedEngine* const engines_AU[] = { &googleen, &google, &bing, &yahoo_au, @@ -87,7 +87,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -87,7 +87,7 @@ const PrepopulatedEngine* const engines_BA[] = { +@@ -86,7 +86,7 @@ const PrepopulatedEngine* const engines_BA[] = { &googleen, &google, &bing, &yahoo, @@ -96,7 +96,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -97,7 +97,7 @@ const PrepopulatedEngine* const engines_BE[] = { +@@ -96,7 +96,7 @@ const PrepopulatedEngine* const engines_BE[] = { &bing, &yahoo, &ecosia, @@ -105,7 +105,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Bulgaria -@@ -105,7 +105,7 @@ const PrepopulatedEngine* const engines_BG[] = { +@@ -104,7 +104,7 @@ const PrepopulatedEngine* const engines_BG[] = { &googleen, &google, &bing, &yahoo, @@ -114,7 +114,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -114,7 +114,7 @@ const PrepopulatedEngine* const engines_BH[] = { +@@ -113,7 +113,7 @@ const PrepopulatedEngine* const engines_BH[] = { &googleen, &google, &bing, &yahoo, @@ -123,7 +123,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -123,7 +123,7 @@ const PrepopulatedEngine* const engines_BI[] = { +@@ -122,7 +122,7 @@ const PrepopulatedEngine* const engines_BI[] = { &googleen, &google, &bing, &yahoo, @@ -132,7 +132,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -132,7 +132,7 @@ const PrepopulatedEngine* const engines_BN[] = { +@@ -131,7 +131,7 @@ const PrepopulatedEngine* const engines_BN[] = { &googleen, &google, &bing, &yahoo, @@ -141,7 +141,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -141,7 +141,7 @@ const PrepopulatedEngine* const engines_BO[] = { +@@ -140,7 +140,7 @@ const PrepopulatedEngine* const engines_BO[] = { &googleen, &google, &bing, &yahoo, @@ -150,7 +150,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -150,7 +150,7 @@ const PrepopulatedEngine* const engines_BR[] = { +@@ -149,7 +149,7 @@ const PrepopulatedEngine* const engines_BR[] = { &googleen, &google, &bing, &yahoo_br, @@ -159,7 +159,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -160,7 +160,7 @@ const PrepopulatedEngine* const engines_BY[] = { +@@ -159,7 +159,7 @@ const PrepopulatedEngine* const engines_BY[] = { &yandex_by, &mail_ru, &bing, @@ -168,7 +168,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Belize -@@ -168,7 +168,7 @@ const PrepopulatedEngine* const engines_BZ[] = { +@@ -167,7 +167,7 @@ const PrepopulatedEngine* const engines_BZ[] = { &googleen, &google, &bing, &yahoo, @@ -177,7 +177,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -177,7 +177,7 @@ const PrepopulatedEngine* const engines_CA[] = { +@@ -176,7 +176,7 @@ const PrepopulatedEngine* const engines_CA[] = { &googleen, &google, &bing, &yahoo_ca, @@ -186,7 +186,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -185,7 +185,7 @@ const PrepopulatedEngine* const engines_CA[] = { +@@ -184,7 +184,7 @@ const PrepopulatedEngine* const engines_CA[] = { const PrepopulatedEngine* const engines_CH[] = { &googleen, &google, &bing, @@ -195,7 +195,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, &yahoo_ch, }; -@@ -195,7 +195,7 @@ const PrepopulatedEngine* const engines_CL[] = { +@@ -194,7 +194,7 @@ const PrepopulatedEngine* const engines_CL[] = { &googleen, &google, &bing, &yahoo_cl, @@ -204,7 +204,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -214,7 +214,7 @@ const PrepopulatedEngine* const engines_CO[] = { +@@ -213,7 +213,7 @@ const PrepopulatedEngine* const engines_CO[] = { &bing, &yahoo_co, &ecosia, @@ -213,7 +213,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Costa Rica -@@ -222,7 +222,7 @@ const PrepopulatedEngine* const engines_CR[] = { +@@ -221,7 +221,7 @@ const PrepopulatedEngine* const engines_CR[] = { &googleen, &google, &bing, &yahoo, @@ -222,7 +222,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -232,7 +232,7 @@ const PrepopulatedEngine* const engines_CZ[] = { +@@ -231,7 +231,7 @@ const PrepopulatedEngine* const engines_CZ[] = { &seznam_cz, &bing, &yahoo, @@ -231,7 +231,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Germany -@@ -240,7 +240,7 @@ const PrepopulatedEngine* const engines_DE[] = { +@@ -239,7 +239,7 @@ const PrepopulatedEngine* const engines_DE[] = { &googleen, &google, &bing, &ecosia, @@ -240,7 +240,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_de, }; -@@ -249,7 +249,7 @@ const PrepopulatedEngine* const engines_DK[] = { +@@ -248,7 +248,7 @@ const PrepopulatedEngine* const engines_DK[] = { &googleen, &google, &bing, &yahoo_dk, @@ -249,7 +249,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -258,7 +258,7 @@ const PrepopulatedEngine* const engines_DO[] = { +@@ -257,7 +257,7 @@ const PrepopulatedEngine* const engines_DO[] = { &googleen, &google, &bing, &yahoo, @@ -258,7 +258,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -268,7 +268,7 @@ const PrepopulatedEngine* const engines_DZ[] = { +@@ -267,7 +267,7 @@ const PrepopulatedEngine* const engines_DZ[] = { &bing, &yahoo_fr, &yandex_com, @@ -267,7 +267,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Ecuador -@@ -277,7 +277,7 @@ const PrepopulatedEngine* const engines_EC[] = { +@@ -276,7 +276,7 @@ const PrepopulatedEngine* const engines_EC[] = { &bing, &yahoo, &ecosia, @@ -276,7 +276,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Estonia -@@ -285,7 +285,7 @@ const PrepopulatedEngine* const engines_EE[] = { +@@ -284,7 +284,7 @@ const PrepopulatedEngine* const engines_EE[] = { &googleen, &google, &bing, &yandex_ru, @@ -285,7 +285,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, }; -@@ -295,7 +295,7 @@ const PrepopulatedEngine* const engines_EG[] = { +@@ -294,7 +294,7 @@ const PrepopulatedEngine* const engines_EG[] = { &bing, &yahoo, &yandex_com, @@ -294,7 +294,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Spain -@@ -303,7 +303,7 @@ const PrepopulatedEngine* const engines_ES[] = { +@@ -302,7 +302,7 @@ const PrepopulatedEngine* const engines_ES[] = { &googleen, &google, &bing, &yahoo_es, @@ -303,7 +303,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -312,7 +312,7 @@ const PrepopulatedEngine* const engines_FI[] = { +@@ -311,7 +311,7 @@ const PrepopulatedEngine* const engines_FI[] = { &googleen, &google, &bing, &yahoo_fi, @@ -312,7 +312,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -321,7 +321,7 @@ const PrepopulatedEngine* const engines_FO[] = { +@@ -320,7 +320,7 @@ const PrepopulatedEngine* const engines_FO[] = { &googleen, &google, &bing, &yahoo_dk, @@ -321,7 +321,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -339,7 +339,7 @@ const PrepopulatedEngine* const engines_GB[] = { +@@ -338,7 +338,7 @@ const PrepopulatedEngine* const engines_GB[] = { &googleen, &google, &bing, &yahoo_uk, @@ -330,7 +330,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -348,7 +348,7 @@ const PrepopulatedEngine* const engines_GR[] = { +@@ -347,7 +347,7 @@ const PrepopulatedEngine* const engines_GR[] = { &googleen, &google, &bing, &yahoo, @@ -339,7 +339,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -357,7 +357,7 @@ const PrepopulatedEngine* const engines_GT[] = { +@@ -356,7 +356,7 @@ const PrepopulatedEngine* const engines_GT[] = { &googleen, &google, &bing, &yahoo, @@ -348,7 +348,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -367,7 +367,7 @@ const PrepopulatedEngine* const engines_HK[] = { +@@ -366,7 +366,7 @@ const PrepopulatedEngine* const engines_HK[] = { &yahoo_hk, &bing, &baidu, @@ -357,7 +357,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Honduras -@@ -375,7 +375,7 @@ const PrepopulatedEngine* const engines_HN[] = { +@@ -374,7 +374,7 @@ const PrepopulatedEngine* const engines_HN[] = { &googleen, &google, &bing, &yahoo, @@ -366,7 +366,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -384,7 +384,7 @@ const PrepopulatedEngine* const engines_HR[] = { +@@ -383,7 +383,7 @@ const PrepopulatedEngine* const engines_HR[] = { &googleen, &google, &bing, &yahoo, @@ -375,7 +375,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -393,7 +393,7 @@ const PrepopulatedEngine* const engines_HU[] = { +@@ -392,7 +392,7 @@ const PrepopulatedEngine* const engines_HU[] = { &googleen, &google, &bing, &yahoo, @@ -384,7 +384,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -403,7 +403,7 @@ const PrepopulatedEngine* const engines_ID[] = { +@@ -402,7 +402,7 @@ const PrepopulatedEngine* const engines_ID[] = { &yahoo_id, &bing, &yandex_com, @@ -393,7 +393,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Ireland -@@ -411,7 +411,7 @@ const PrepopulatedEngine* const engines_IE[] = { +@@ -410,7 +410,7 @@ const PrepopulatedEngine* const engines_IE[] = { &googleen, &google, &bing, &yahoo_uk, @@ -402,7 +402,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -421,7 +421,7 @@ const PrepopulatedEngine* const engines_IL[] = { +@@ -420,7 +420,7 @@ const PrepopulatedEngine* const engines_IL[] = { &bing, &yandex_ru, &yahoo, @@ -411,7 +411,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // India -@@ -429,7 +429,7 @@ const PrepopulatedEngine* const engines_IN[] = { +@@ -428,7 +428,7 @@ const PrepopulatedEngine* const engines_IN[] = { &googleen, &google, &bing, &yahoo_in, @@ -420,7 +420,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &info_com, }; -@@ -439,7 +439,7 @@ const PrepopulatedEngine* const engines_IQ[] = { +@@ -438,7 +438,7 @@ const PrepopulatedEngine* const engines_IQ[] = { &bing, &yahoo, &yandex_tr, @@ -429,7 +429,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Iran -@@ -448,14 +448,14 @@ const PrepopulatedEngine* const engines_IR[] = { +@@ -447,14 +447,14 @@ const PrepopulatedEngine* const engines_IR[] = { &bing, &yahoo, &ask, @@ -446,7 +446,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, &ecosia, }; -@@ -465,7 +465,7 @@ const PrepopulatedEngine* const engines_IT[] = { +@@ -464,7 +464,7 @@ const PrepopulatedEngine* const engines_IT[] = { &googleen, &google, &bing, &yahoo, @@ -455,7 +455,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -474,7 +474,7 @@ const PrepopulatedEngine* const engines_JM[] = { +@@ -473,7 +473,7 @@ const PrepopulatedEngine* const engines_JM[] = { &googleen, &google, &bing, &yahoo, @@ -464,7 +464,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -483,7 +483,7 @@ const PrepopulatedEngine* const engines_JO[] = { +@@ -482,7 +482,7 @@ const PrepopulatedEngine* const engines_JO[] = { &googleen, &google, &bing, &yahoo, @@ -473,7 +473,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -492,7 +492,7 @@ const PrepopulatedEngine* const engines_JP[] = { +@@ -491,7 +491,7 @@ const PrepopulatedEngine* const engines_JP[] = { &googleen, &google, &yahoo_jp, &bing, @@ -482,7 +482,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &baidu, }; -@@ -501,7 +501,7 @@ const PrepopulatedEngine* const engines_KE[] = { +@@ -500,7 +500,7 @@ const PrepopulatedEngine* const engines_KE[] = { &googleen, &google, &bing, &yahoo, @@ -491,7 +491,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -519,7 +519,7 @@ const PrepopulatedEngine* const engines_KW[] = { +@@ -518,7 +518,7 @@ const PrepopulatedEngine* const engines_KW[] = { &googleen, &google, &bing, &yahoo, @@ -500,7 +500,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -529,7 +529,7 @@ const PrepopulatedEngine* const engines_KZ[] = { +@@ -528,7 +528,7 @@ const PrepopulatedEngine* const engines_KZ[] = { &yandex_kz, &mail_ru, &bing, @@ -509,7 +509,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Lebanon -@@ -537,7 +537,7 @@ const PrepopulatedEngine* const engines_LB[] = { +@@ -536,7 +536,7 @@ const PrepopulatedEngine* const engines_LB[] = { &googleen, &google, &bing, &yahoo, @@ -518,7 +518,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -545,7 +545,7 @@ const PrepopulatedEngine* const engines_LB[] = { +@@ -544,7 +544,7 @@ const PrepopulatedEngine* const engines_LB[] = { const PrepopulatedEngine* const engines_LI[] = { &googleen, &google, &bing, @@ -527,7 +527,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, &ecosia, }; -@@ -555,7 +555,7 @@ const PrepopulatedEngine* const engines_LT[] = { +@@ -554,7 +554,7 @@ const PrepopulatedEngine* const engines_LT[] = { &googleen, &google, &bing, &yahoo, @@ -536,7 +536,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -563,7 +563,7 @@ const PrepopulatedEngine* const engines_LT[] = { +@@ -562,7 +562,7 @@ const PrepopulatedEngine* const engines_LT[] = { const PrepopulatedEngine* const engines_LU[] = { &googleen, &google, &bing, @@ -545,7 +545,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, &ecosia, }; -@@ -574,7 +574,7 @@ const PrepopulatedEngine* const engines_LV[] = { +@@ -573,7 +573,7 @@ const PrepopulatedEngine* const engines_LV[] = { &bing, &yandex_ru, &yahoo, @@ -554,7 +554,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Libya -@@ -583,7 +583,7 @@ const PrepopulatedEngine* const engines_LY[] = { +@@ -582,7 +582,7 @@ const PrepopulatedEngine* const engines_LY[] = { &bing, &yahoo, &yandex_com, @@ -563,7 +563,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Morocco -@@ -592,14 +592,14 @@ const PrepopulatedEngine* const engines_MA[] = { +@@ -591,14 +591,14 @@ const PrepopulatedEngine* const engines_MA[] = { &bing, &yahoo_fr, &yandex_com, @@ -580,7 +580,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_fr, &ecosia, }; -@@ -619,7 +619,7 @@ const PrepopulatedEngine* const engines_ME[] = { +@@ -618,7 +618,7 @@ const PrepopulatedEngine* const engines_ME[] = { &bing, &yahoo, &yandex_ru, @@ -589,7 +589,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Macedonia -@@ -627,7 +627,7 @@ const PrepopulatedEngine* const engines_MK[] = { +@@ -626,7 +626,7 @@ const PrepopulatedEngine* const engines_MK[] = { &googleen, &google, &bing, &yahoo, @@ -598,7 +598,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -636,7 +636,7 @@ const PrepopulatedEngine* const engines_MX[] = { +@@ -635,7 +635,7 @@ const PrepopulatedEngine* const engines_MX[] = { &googleen, &google, &bing, &yahoo_mx, @@ -607,7 +607,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -645,7 +645,7 @@ const PrepopulatedEngine* const engines_MY[] = { +@@ -644,7 +644,7 @@ const PrepopulatedEngine* const engines_MY[] = { &googleen, &google, &bing, &yahoo_my, @@ -616,7 +616,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -654,7 +654,7 @@ const PrepopulatedEngine* const engines_NI[] = { +@@ -653,7 +653,7 @@ const PrepopulatedEngine* const engines_NI[] = { &googleen, &google, &bing, &yahoo, @@ -625,7 +625,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -663,7 +663,7 @@ const PrepopulatedEngine* const engines_NL[] = { +@@ -662,7 +662,7 @@ const PrepopulatedEngine* const engines_NL[] = { &googleen, &google, &bing, &yahoo_nl, @@ -634,7 +634,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -672,7 +672,7 @@ const PrepopulatedEngine* const engines_NO[] = { +@@ -671,7 +671,7 @@ const PrepopulatedEngine* const engines_NO[] = { &googleen, &google, &bing, &yahoo, @@ -643,7 +643,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -681,7 +681,7 @@ const PrepopulatedEngine* const engines_NZ[] = { +@@ -680,7 +680,7 @@ const PrepopulatedEngine* const engines_NZ[] = { &googleen, &google, &bing, &yahoo_nz, @@ -652,7 +652,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -690,7 +690,7 @@ const PrepopulatedEngine* const engines_OM[] = { +@@ -689,7 +689,7 @@ const PrepopulatedEngine* const engines_OM[] = { &googleen, &google, &bing, &yahoo, @@ -661,7 +661,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &petal_search, }; -@@ -699,7 +699,7 @@ const PrepopulatedEngine* const engines_PA[] = { +@@ -698,7 +698,7 @@ const PrepopulatedEngine* const engines_PA[] = { &googleen, &google, &bing, &yahoo_es, @@ -670,7 +670,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -709,7 +709,7 @@ const PrepopulatedEngine* const engines_PE[] = { +@@ -708,7 +708,7 @@ const PrepopulatedEngine* const engines_PE[] = { &bing, &yahoo_pe, &ecosia, @@ -679,7 +679,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Philippines -@@ -718,7 +718,7 @@ const PrepopulatedEngine* const engines_PH[] = { +@@ -717,7 +717,7 @@ const PrepopulatedEngine* const engines_PH[] = { &bing, &yahoo, &ecosia, @@ -688,7 +688,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Pakistan -@@ -726,7 +726,7 @@ const PrepopulatedEngine* const engines_PK[] = { +@@ -725,7 +725,7 @@ const PrepopulatedEngine* const engines_PK[] = { &googleen, &google, &bing, &yahoo, @@ -697,7 +697,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -735,7 +735,7 @@ const PrepopulatedEngine* const engines_PL[] = { +@@ -734,7 +734,7 @@ const PrepopulatedEngine* const engines_PL[] = { &googleen, &google, &bing, &yahoo, @@ -706,7 +706,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -744,7 +744,7 @@ const PrepopulatedEngine* const engines_PR[] = { +@@ -743,7 +743,7 @@ const PrepopulatedEngine* const engines_PR[] = { &googleen, &google, &bing, &yahoo, @@ -715,7 +715,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -753,7 +753,7 @@ const PrepopulatedEngine* const engines_PT[] = { +@@ -752,7 +752,7 @@ const PrepopulatedEngine* const engines_PT[] = { &googleen, &google, &bing, &yahoo, @@ -724,7 +724,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -762,7 +762,7 @@ const PrepopulatedEngine* const engines_PY[] = { +@@ -761,7 +761,7 @@ const PrepopulatedEngine* const engines_PY[] = { &googleen, &google, &bing, &yahoo_es, @@ -733,7 +733,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -771,7 +771,7 @@ const PrepopulatedEngine* const engines_QA[] = { +@@ -770,7 +770,7 @@ const PrepopulatedEngine* const engines_QA[] = { &googleen, &google, &bing, &yahoo, @@ -742,7 +742,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_tr, }; -@@ -780,7 +780,7 @@ const PrepopulatedEngine* const engines_RO[] = { +@@ -779,7 +779,7 @@ const PrepopulatedEngine* const engines_RO[] = { &googleen, &google, &bing, &yahoo, @@ -751,7 +751,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_tr, }; -@@ -789,7 +789,7 @@ const PrepopulatedEngine* const engines_RS[] = { +@@ -788,7 +788,7 @@ const PrepopulatedEngine* const engines_RS[] = { &googleen, &google, &bing, &yahoo, @@ -760,7 +760,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, }; -@@ -799,7 +799,7 @@ const PrepopulatedEngine* const engines_RU[] = { +@@ -798,7 +798,7 @@ const PrepopulatedEngine* const engines_RU[] = { &yandex_ru, &mail_ru, &bing, @@ -769,7 +769,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Rwanda -@@ -807,7 +807,7 @@ const PrepopulatedEngine* const engines_RW[] = { +@@ -806,7 +806,7 @@ const PrepopulatedEngine* const engines_RW[] = { &googleen, &google, &bing, &yahoo, @@ -778,7 +778,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -817,7 +817,7 @@ const PrepopulatedEngine* const engines_SA[] = { +@@ -816,7 +816,7 @@ const PrepopulatedEngine* const engines_SA[] = { &bing, &yahoo, &yandex_com, @@ -787,7 +787,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Sweden -@@ -825,7 +825,7 @@ const PrepopulatedEngine* const engines_SE[] = { +@@ -824,7 +824,7 @@ const PrepopulatedEngine* const engines_SE[] = { &googleen, &google, &bing, &yahoo_se, @@ -796,7 +796,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -834,7 +834,7 @@ const PrepopulatedEngine* const engines_SG[] = { +@@ -833,7 +833,7 @@ const PrepopulatedEngine* const engines_SG[] = { &googleen, &google, &bing, &yahoo_sg, @@ -805,7 +805,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &baidu, }; -@@ -842,7 +842,7 @@ const PrepopulatedEngine* const engines_SG[] = { +@@ -841,7 +841,7 @@ const PrepopulatedEngine* const engines_SG[] = { const PrepopulatedEngine* const engines_SI[] = { &googleen, &google, &bing, @@ -814,7 +814,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, &yandex_com, }; -@@ -851,7 +851,7 @@ const PrepopulatedEngine* const engines_SI[] = { +@@ -850,7 +850,7 @@ const PrepopulatedEngine* const engines_SI[] = { const PrepopulatedEngine* const engines_SK[] = { &googleen, &google, &bing, @@ -823,7 +823,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, &yandex_com, }; -@@ -861,7 +861,7 @@ const PrepopulatedEngine* const engines_SV[] = { +@@ -860,7 +860,7 @@ const PrepopulatedEngine* const engines_SV[] = { &googleen, &google, &bing, &yahoo_es, @@ -832,7 +832,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -871,7 +871,7 @@ const PrepopulatedEngine* const engines_SY[] = { +@@ -870,7 +870,7 @@ const PrepopulatedEngine* const engines_SY[] = { &bing, &yahoo, &yandex_com, @@ -841,7 +841,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Thailand -@@ -888,7 +888,7 @@ const PrepopulatedEngine* const engines_TN[] = { +@@ -887,7 +887,7 @@ const PrepopulatedEngine* const engines_TN[] = { &googleen, &google, &bing, &yahoo_fr, @@ -850,7 +850,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_com, }; -@@ -898,7 +898,7 @@ const PrepopulatedEngine* const engines_TR[] = { +@@ -897,7 +897,7 @@ const PrepopulatedEngine* const engines_TR[] = { &yandex_tr, &yahoo_tr, &bing, @@ -859,7 +859,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Trinidad and Tobago -@@ -906,7 +906,7 @@ const PrepopulatedEngine* const engines_TT[] = { +@@ -905,7 +905,7 @@ const PrepopulatedEngine* const engines_TT[] = { &googleen, &google, &bing, &yahoo, @@ -868,7 +868,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -916,7 +916,7 @@ const PrepopulatedEngine* const engines_TW[] = { +@@ -915,7 +915,7 @@ const PrepopulatedEngine* const engines_TW[] = { &yahoo_tw, &bing, &baidu, @@ -877,7 +877,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // Tanzania -@@ -924,7 +924,7 @@ const PrepopulatedEngine* const engines_TZ[] = { +@@ -923,7 +923,7 @@ const PrepopulatedEngine* const engines_TZ[] = { &googleen, &google, &bing, &yahoo, @@ -886,7 +886,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &baidu, }; -@@ -933,7 +933,7 @@ const PrepopulatedEngine* const engines_UA[] = { +@@ -932,7 +932,7 @@ const PrepopulatedEngine* const engines_UA[] = { &googleen, &google, &yandex_ua, &bing, @@ -895,7 +895,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo, }; -@@ -942,7 +942,7 @@ const PrepopulatedEngine* const engines_US[] = { +@@ -941,7 +941,7 @@ const PrepopulatedEngine* const engines_US[] = { &googleen, &google, &bing, &yahoo, @@ -904,7 +904,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -951,7 +951,7 @@ const PrepopulatedEngine* const engines_UY[] = { +@@ -950,7 +950,7 @@ const PrepopulatedEngine* const engines_UY[] = { &googleen, &google, &bing, &yahoo_es, @@ -913,7 +913,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -960,7 +960,7 @@ const PrepopulatedEngine* const engines_VE[] = { +@@ -959,7 +959,7 @@ const PrepopulatedEngine* const engines_VE[] = { &googleen, &google, &bing, &yahoo_es, @@ -922,7 +922,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -979,7 +979,7 @@ const PrepopulatedEngine* const engines_YE[] = { +@@ -978,7 +978,7 @@ const PrepopulatedEngine* const engines_YE[] = { &bing, &yahoo, &yandex_com, @@ -931,7 +931,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon }; // South Africa -@@ -987,7 +987,7 @@ const PrepopulatedEngine* const engines_ZA[] = { +@@ -986,7 +986,7 @@ const PrepopulatedEngine* const engines_ZA[] = { &googleen, &google, &bing, &yahoo, @@ -940,7 +940,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &ecosia, }; -@@ -996,7 +996,7 @@ const PrepopulatedEngine* const engines_ZW[] = { +@@ -995,7 +995,7 @@ const PrepopulatedEngine* const engines_ZW[] = { &googleen, &google, &bing, &yahoo, diff --git a/build/patches/Add-English-only-search-engine.patch b/build/patches/Add-English-only-search-engine.patch index ffa4a874..ddd37157 100644 --- a/build/patches/Add-English-only-search-engine.patch +++ b/build/patches/Add-English-only-search-engine.patch @@ -13,7 +13,7 @@ disable from all its searches RLZ and field experiments querystring parameters. diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json --- a/components/search_engines/prepopulated_engines.json +++ b/components/search_engines/prepopulated_engines.json -@@ -133,6 +133,27 @@ +@@ -134,6 +134,27 @@ "id": 1 }, @@ -21,8 +21,8 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se + "name": "Google in English", + "keyword": "googleen", + "favicon_url": "https://www.google.com/favicon.ico", -+ "search_url": "{google:baseURL}search?q={searchTerms}&{google:originalQueryForSuggestion}{google:iOSSearchLanguage}{google:searchClient}{google:contextualSearchVersion}ie={inputEncoding}&hl=en", -+ "suggest_url": "{google:baseSuggestURL}search?client={google:suggestClient}&gs_ri={google:suggestRid}&xssi=t&q={searchTerms}&{google:inputType}{google:pageClassification}{google:searchVersion}{google:prefetchQuery}sugkey={google:suggestAPIKeyParameter}&hl=en", ++ "search_url": "{google:baseURL}search?q={searchTerms}&ie={inputEncoding}&hl=en", ++ "suggest_url": "{google:baseSuggestURL}search?client={google:suggestClient}&q={searchTerms}&hl=en", + "image_url": "{google:baseURL}searchbyimage/upload?hl=en", + "new_tab_url": "{google:baseURL}_/chrome/newtab?hl=en&ie={inputEncoding}", + "contextual_search_url": "{google:baseURL}_/contextualsearch?{google:contextualSearchVersion}{google:contextualSearchContextData}&hl=en", @@ -55,7 +55,7 @@ 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 -@@ -29,7 +29,7 @@ namespace { +@@ -28,7 +28,7 @@ namespace { // Default (for countries with no better engine set) const PrepopulatedEngine* const engines_default[] = { @@ -64,7 +64,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, }; -@@ -39,7 +39,7 @@ const PrepopulatedEngine* const engines_default[] = { +@@ -38,7 +38,7 @@ const PrepopulatedEngine* const engines_default[] = { // clang-format off // United Arab Emirates const PrepopulatedEngine* const engines_AE[] = { @@ -73,7 +73,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -48,7 +48,7 @@ const PrepopulatedEngine* const engines_AE[] = { +@@ -47,7 +47,7 @@ const PrepopulatedEngine* const engines_AE[] = { // Albania const PrepopulatedEngine* const engines_AL[] = { @@ -82,7 +82,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -57,7 +57,7 @@ const PrepopulatedEngine* const engines_AL[] = { +@@ -56,7 +56,7 @@ const PrepopulatedEngine* const engines_AL[] = { // Argentina const PrepopulatedEngine* const engines_AR[] = { @@ -91,7 +91,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_ar, &duckduckgo, -@@ -66,7 +66,7 @@ const PrepopulatedEngine* const engines_AR[] = { +@@ -65,7 +65,7 @@ const PrepopulatedEngine* const engines_AR[] = { // Austria const PrepopulatedEngine* const engines_AT[] = { @@ -100,7 +100,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo_at, -@@ -75,7 +75,7 @@ const PrepopulatedEngine* const engines_AT[] = { +@@ -74,7 +74,7 @@ const PrepopulatedEngine* const engines_AT[] = { // Australia const PrepopulatedEngine* const engines_AU[] = { @@ -109,7 +109,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_au, &duckduckgo, -@@ -84,7 +84,7 @@ const PrepopulatedEngine* const engines_AU[] = { +@@ -83,7 +83,7 @@ const PrepopulatedEngine* const engines_AU[] = { // Bosnia and Herzegovina const PrepopulatedEngine* const engines_BA[] = { @@ -118,7 +118,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -93,7 +93,7 @@ const PrepopulatedEngine* const engines_BA[] = { +@@ -92,7 +92,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, -@@ -102,7 +102,7 @@ const PrepopulatedEngine* const engines_BE[] = { +@@ -101,7 +101,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, -@@ -111,7 +111,7 @@ const PrepopulatedEngine* const engines_BG[] = { +@@ -110,7 +110,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, -@@ -120,7 +120,7 @@ const PrepopulatedEngine* const engines_BH[] = { +@@ -119,7 +119,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, -@@ -129,7 +129,7 @@ const PrepopulatedEngine* const engines_BI[] = { +@@ -128,7 +128,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, -@@ -138,7 +138,7 @@ const PrepopulatedEngine* const engines_BN[] = { +@@ -137,7 +137,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, -@@ -147,7 +147,7 @@ const PrepopulatedEngine* const engines_BO[] = { +@@ -146,7 +146,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, -@@ -156,7 +156,7 @@ const PrepopulatedEngine* const engines_BR[] = { +@@ -155,7 +155,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, -@@ -165,7 +165,7 @@ const PrepopulatedEngine* const engines_BY[] = { +@@ -164,7 +164,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, -@@ -174,7 +174,7 @@ const PrepopulatedEngine* const engines_BZ[] = { +@@ -173,7 +173,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, -@@ -183,7 +183,7 @@ const PrepopulatedEngine* const engines_CA[] = { +@@ -182,7 +182,7 @@ const PrepopulatedEngine* const engines_CA[] = { // Switzerland const PrepopulatedEngine* const engines_CH[] = { @@ -217,7 +217,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &ecosia, -@@ -192,7 +192,7 @@ const PrepopulatedEngine* const engines_CH[] = { +@@ -191,7 +191,7 @@ const PrepopulatedEngine* const engines_CH[] = { // Chile const PrepopulatedEngine* const engines_CL[] = { @@ -226,7 +226,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_cl, &duckduckgo, -@@ -204,13 +204,13 @@ const PrepopulatedEngine* const engines_CN[] = { +@@ -203,13 +203,13 @@ const PrepopulatedEngine* const engines_CN[] = { &sogou, &baidu, &bing, @@ -242,7 +242,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_co, &ecosia, -@@ -219,7 +219,7 @@ const PrepopulatedEngine* const engines_CO[] = { +@@ -218,7 +218,7 @@ const PrepopulatedEngine* const engines_CO[] = { // Costa Rica const PrepopulatedEngine* const engines_CR[] = { @@ -251,7 +251,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -228,7 +228,7 @@ const PrepopulatedEngine* const engines_CR[] = { +@@ -227,7 +227,7 @@ const PrepopulatedEngine* const engines_CR[] = { // Czech Republic const PrepopulatedEngine* const engines_CZ[] = { @@ -260,7 +260,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &seznam_cz, &bing, &yahoo, -@@ -237,7 +237,7 @@ const PrepopulatedEngine* const engines_CZ[] = { +@@ -236,7 +236,7 @@ const PrepopulatedEngine* const engines_CZ[] = { // Germany const PrepopulatedEngine* const engines_DE[] = { @@ -269,7 +269,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &ecosia, &duckduckgo, -@@ -246,7 +246,7 @@ const PrepopulatedEngine* const engines_DE[] = { +@@ -245,7 +245,7 @@ const PrepopulatedEngine* const engines_DE[] = { // Denmark const PrepopulatedEngine* const engines_DK[] = { @@ -278,7 +278,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_dk, &duckduckgo, -@@ -255,7 +255,7 @@ const PrepopulatedEngine* const engines_DK[] = { +@@ -254,7 +254,7 @@ const PrepopulatedEngine* const engines_DK[] = { // Dominican Republic const PrepopulatedEngine* const engines_DO[] = { @@ -287,7 +287,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -264,7 +264,7 @@ const PrepopulatedEngine* const engines_DO[] = { +@@ -263,7 +263,7 @@ const PrepopulatedEngine* const engines_DO[] = { // Algeria const PrepopulatedEngine* const engines_DZ[] = { @@ -296,7 +296,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_fr, &yandex_com, -@@ -273,7 +273,7 @@ const PrepopulatedEngine* const engines_DZ[] = { +@@ -272,7 +272,7 @@ const PrepopulatedEngine* const engines_DZ[] = { // Ecuador const PrepopulatedEngine* const engines_EC[] = { @@ -305,7 +305,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &ecosia, -@@ -282,7 +282,7 @@ const PrepopulatedEngine* const engines_EC[] = { +@@ -281,7 +281,7 @@ const PrepopulatedEngine* const engines_EC[] = { // Estonia const PrepopulatedEngine* const engines_EE[] = { @@ -314,7 +314,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yandex_ru, &duckduckgo, -@@ -291,7 +291,7 @@ const PrepopulatedEngine* const engines_EE[] = { +@@ -290,7 +290,7 @@ const PrepopulatedEngine* const engines_EE[] = { // Egypt const PrepopulatedEngine* const engines_EG[] = { @@ -323,7 +323,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_com, -@@ -300,7 +300,7 @@ const PrepopulatedEngine* const engines_EG[] = { +@@ -299,7 +299,7 @@ const PrepopulatedEngine* const engines_EG[] = { // Spain const PrepopulatedEngine* const engines_ES[] = { @@ -332,7 +332,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_es, &duckduckgo, -@@ -309,7 +309,7 @@ const PrepopulatedEngine* const engines_ES[] = { +@@ -308,7 +308,7 @@ const PrepopulatedEngine* const engines_ES[] = { // Finland const PrepopulatedEngine* const engines_FI[] = { @@ -341,7 +341,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_fi, &duckduckgo, -@@ -318,7 +318,7 @@ const PrepopulatedEngine* const engines_FI[] = { +@@ -317,7 +317,7 @@ const PrepopulatedEngine* const engines_FI[] = { // Faroe Islands const PrepopulatedEngine* const engines_FO[] = { @@ -350,7 +350,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_dk, &duckduckgo, -@@ -327,7 +327,7 @@ const PrepopulatedEngine* const engines_FO[] = { +@@ -326,7 +326,7 @@ const PrepopulatedEngine* const engines_FO[] = { // France const PrepopulatedEngine* const engines_FR[] = { @@ -359,7 +359,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_fr, &qwant, -@@ -336,7 +336,7 @@ const PrepopulatedEngine* const engines_FR[] = { +@@ -335,7 +335,7 @@ const PrepopulatedEngine* const engines_FR[] = { // United Kingdom const PrepopulatedEngine* const engines_GB[] = { @@ -368,7 +368,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_uk, &duckduckgo, -@@ -345,7 +345,7 @@ const PrepopulatedEngine* const engines_GB[] = { +@@ -344,7 +344,7 @@ const PrepopulatedEngine* const engines_GB[] = { // Greece const PrepopulatedEngine* const engines_GR[] = { @@ -377,7 +377,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -354,7 +354,7 @@ const PrepopulatedEngine* const engines_GR[] = { +@@ -353,7 +353,7 @@ const PrepopulatedEngine* const engines_GR[] = { // Guatemala const PrepopulatedEngine* const engines_GT[] = { @@ -386,7 +386,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -363,7 +363,7 @@ const PrepopulatedEngine* const engines_GT[] = { +@@ -362,7 +362,7 @@ const PrepopulatedEngine* const engines_GT[] = { // Hong Kong const PrepopulatedEngine* const engines_HK[] = { @@ -395,7 +395,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_hk, &bing, &baidu, -@@ -372,7 +372,7 @@ const PrepopulatedEngine* const engines_HK[] = { +@@ -371,7 +371,7 @@ const PrepopulatedEngine* const engines_HK[] = { // Honduras const PrepopulatedEngine* const engines_HN[] = { @@ -404,7 +404,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -381,7 +381,7 @@ const PrepopulatedEngine* const engines_HN[] = { +@@ -380,7 +380,7 @@ const PrepopulatedEngine* const engines_HN[] = { // Croatia const PrepopulatedEngine* const engines_HR[] = { @@ -413,7 +413,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -390,7 +390,7 @@ const PrepopulatedEngine* const engines_HR[] = { +@@ -389,7 +389,7 @@ const PrepopulatedEngine* const engines_HR[] = { // Hungary const PrepopulatedEngine* const engines_HU[] = { @@ -422,7 +422,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -399,7 +399,7 @@ const PrepopulatedEngine* const engines_HU[] = { +@@ -398,7 +398,7 @@ const PrepopulatedEngine* const engines_HU[] = { // Indonesia const PrepopulatedEngine* const engines_ID[] = { @@ -431,7 +431,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_id, &bing, &yandex_com, -@@ -408,7 +408,7 @@ const PrepopulatedEngine* const engines_ID[] = { +@@ -407,7 +407,7 @@ const PrepopulatedEngine* const engines_ID[] = { // Ireland const PrepopulatedEngine* const engines_IE[] = { @@ -440,7 +440,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_uk, &duckduckgo, -@@ -417,7 +417,7 @@ const PrepopulatedEngine* const engines_IE[] = { +@@ -416,7 +416,7 @@ const PrepopulatedEngine* const engines_IE[] = { // Israel const PrepopulatedEngine* const engines_IL[] = { @@ -449,7 +449,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yandex_ru, &yahoo, -@@ -426,7 +426,7 @@ const PrepopulatedEngine* const engines_IL[] = { +@@ -425,7 +425,7 @@ const PrepopulatedEngine* const engines_IL[] = { // India const PrepopulatedEngine* const engines_IN[] = { @@ -458,7 +458,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_in, &duckduckgo, -@@ -435,7 +435,7 @@ const PrepopulatedEngine* const engines_IN[] = { +@@ -434,7 +434,7 @@ const PrepopulatedEngine* const engines_IN[] = { // Iraq const PrepopulatedEngine* const engines_IQ[] = { @@ -467,7 +467,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_tr, -@@ -444,7 +444,7 @@ const PrepopulatedEngine* const engines_IQ[] = { +@@ -443,7 +443,7 @@ const PrepopulatedEngine* const engines_IQ[] = { // Iran const PrepopulatedEngine* const engines_IR[] = { @@ -476,7 +476,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &ask, -@@ -453,7 +453,7 @@ const PrepopulatedEngine* const engines_IR[] = { +@@ -452,7 +452,7 @@ const PrepopulatedEngine* const engines_IR[] = { // Iceland const PrepopulatedEngine* const engines_IS[] = { @@ -485,7 +485,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo, -@@ -462,7 +462,7 @@ const PrepopulatedEngine* const engines_IS[] = { +@@ -461,7 +461,7 @@ const PrepopulatedEngine* const engines_IS[] = { // Italy const PrepopulatedEngine* const engines_IT[] = { @@ -494,7 +494,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -471,7 +471,7 @@ const PrepopulatedEngine* const engines_IT[] = { +@@ -470,7 +470,7 @@ const PrepopulatedEngine* const engines_IT[] = { // Jamaica const PrepopulatedEngine* const engines_JM[] = { @@ -503,7 +503,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -480,7 +480,7 @@ const PrepopulatedEngine* const engines_JM[] = { +@@ -479,7 +479,7 @@ const PrepopulatedEngine* const engines_JM[] = { // Jordan const PrepopulatedEngine* const engines_JO[] = { @@ -512,7 +512,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -489,7 +489,7 @@ const PrepopulatedEngine* const engines_JO[] = { +@@ -488,7 +488,7 @@ const PrepopulatedEngine* const engines_JO[] = { // Japan const PrepopulatedEngine* const engines_JP[] = { @@ -521,7 +521,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_jp, &bing, &duckduckgo, -@@ -498,7 +498,7 @@ const PrepopulatedEngine* const engines_JP[] = { +@@ -497,7 +497,7 @@ const PrepopulatedEngine* const engines_JP[] = { // Kenya const PrepopulatedEngine* const engines_KE[] = { @@ -530,7 +530,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -507,7 +507,7 @@ const PrepopulatedEngine* const engines_KE[] = { +@@ -506,7 +506,7 @@ const PrepopulatedEngine* const engines_KE[] = { // South Korea const PrepopulatedEngine* const engines_KR[] = { @@ -539,7 +539,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &naver, &daum, &bing, -@@ -516,7 +516,7 @@ const PrepopulatedEngine* const engines_KR[] = { +@@ -515,7 +515,7 @@ const PrepopulatedEngine* const engines_KR[] = { // Kuwait const PrepopulatedEngine* const engines_KW[] = { @@ -548,7 +548,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -525,7 +525,7 @@ const PrepopulatedEngine* const engines_KW[] = { +@@ -524,7 +524,7 @@ const PrepopulatedEngine* const engines_KW[] = { // Kazakhstan const PrepopulatedEngine* const engines_KZ[] = { @@ -557,7 +557,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_kz, &mail_ru, &bing, -@@ -534,7 +534,7 @@ const PrepopulatedEngine* const engines_KZ[] = { +@@ -533,7 +533,7 @@ const PrepopulatedEngine* const engines_KZ[] = { // Lebanon const PrepopulatedEngine* const engines_LB[] = { @@ -566,7 +566,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -543,7 +543,7 @@ const PrepopulatedEngine* const engines_LB[] = { +@@ -542,7 +542,7 @@ const PrepopulatedEngine* const engines_LB[] = { // Liechtenstein const PrepopulatedEngine* const engines_LI[] = { @@ -575,7 +575,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo, -@@ -552,7 +552,7 @@ const PrepopulatedEngine* const engines_LI[] = { +@@ -551,7 +551,7 @@ const PrepopulatedEngine* const engines_LI[] = { // Lithuania const PrepopulatedEngine* const engines_LT[] = { @@ -584,7 +584,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -561,7 +561,7 @@ const PrepopulatedEngine* const engines_LT[] = { +@@ -560,7 +560,7 @@ const PrepopulatedEngine* const engines_LT[] = { // Luxembourg const PrepopulatedEngine* const engines_LU[] = { @@ -593,7 +593,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo, -@@ -570,7 +570,7 @@ const PrepopulatedEngine* const engines_LU[] = { +@@ -569,7 +569,7 @@ const PrepopulatedEngine* const engines_LU[] = { // Latvia const PrepopulatedEngine* const engines_LV[] = { @@ -602,7 +602,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yandex_ru, &yahoo, -@@ -579,7 +579,7 @@ const PrepopulatedEngine* const engines_LV[] = { +@@ -578,7 +578,7 @@ const PrepopulatedEngine* const engines_LV[] = { // Libya const PrepopulatedEngine* const engines_LY[] = { @@ -611,7 +611,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_com, -@@ -588,7 +588,7 @@ const PrepopulatedEngine* const engines_LY[] = { +@@ -587,7 +587,7 @@ const PrepopulatedEngine* const engines_LY[] = { // Morocco const PrepopulatedEngine* const engines_MA[] = { @@ -620,7 +620,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_fr, &yandex_com, -@@ -597,7 +597,7 @@ const PrepopulatedEngine* const engines_MA[] = { +@@ -596,7 +596,7 @@ const PrepopulatedEngine* const engines_MA[] = { // Monaco const PrepopulatedEngine* const engines_MC[] = { @@ -629,7 +629,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo_fr, -@@ -606,7 +606,7 @@ const PrepopulatedEngine* const engines_MC[] = { +@@ -605,7 +605,7 @@ const PrepopulatedEngine* const engines_MC[] = { // Moldova const PrepopulatedEngine* const engines_MD[] = { @@ -638,7 +638,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, &bing, &mail_ru, -@@ -615,7 +615,7 @@ const PrepopulatedEngine* const engines_MD[] = { +@@ -614,7 +614,7 @@ const PrepopulatedEngine* const engines_MD[] = { // Montenegro const PrepopulatedEngine* const engines_ME[] = { @@ -647,7 +647,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_ru, -@@ -624,7 +624,7 @@ const PrepopulatedEngine* const engines_ME[] = { +@@ -623,7 +623,7 @@ const PrepopulatedEngine* const engines_ME[] = { // Macedonia const PrepopulatedEngine* const engines_MK[] = { @@ -656,7 +656,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -633,7 +633,7 @@ const PrepopulatedEngine* const engines_MK[] = { +@@ -632,7 +632,7 @@ const PrepopulatedEngine* const engines_MK[] = { // Mexico const PrepopulatedEngine* const engines_MX[] = { @@ -665,7 +665,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_mx, &duckduckgo, -@@ -642,7 +642,7 @@ const PrepopulatedEngine* const engines_MX[] = { +@@ -641,7 +641,7 @@ const PrepopulatedEngine* const engines_MX[] = { // Malaysia const PrepopulatedEngine* const engines_MY[] = { @@ -674,7 +674,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_my, &duckduckgo, -@@ -651,7 +651,7 @@ const PrepopulatedEngine* const engines_MY[] = { +@@ -650,7 +650,7 @@ const PrepopulatedEngine* const engines_MY[] = { // Nicaragua const PrepopulatedEngine* const engines_NI[] = { @@ -683,7 +683,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -660,7 +660,7 @@ const PrepopulatedEngine* const engines_NI[] = { +@@ -659,7 +659,7 @@ const PrepopulatedEngine* const engines_NI[] = { // Netherlands const PrepopulatedEngine* const engines_NL[] = { @@ -692,7 +692,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_nl, &duckduckgo, -@@ -669,7 +669,7 @@ const PrepopulatedEngine* const engines_NL[] = { +@@ -668,7 +668,7 @@ const PrepopulatedEngine* const engines_NL[] = { // Norway const PrepopulatedEngine* const engines_NO[] = { @@ -701,7 +701,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -678,7 +678,7 @@ const PrepopulatedEngine* const engines_NO[] = { +@@ -677,7 +677,7 @@ const PrepopulatedEngine* const engines_NO[] = { // New Zealand const PrepopulatedEngine* const engines_NZ[] = { @@ -710,7 +710,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_nz, &duckduckgo, -@@ -687,7 +687,7 @@ const PrepopulatedEngine* const engines_NZ[] = { +@@ -686,7 +686,7 @@ const PrepopulatedEngine* const engines_NZ[] = { // Oman const PrepopulatedEngine* const engines_OM[] = { @@ -719,7 +719,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -696,7 +696,7 @@ const PrepopulatedEngine* const engines_OM[] = { +@@ -695,7 +695,7 @@ const PrepopulatedEngine* const engines_OM[] = { // Panama const PrepopulatedEngine* const engines_PA[] = { @@ -728,7 +728,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_es, &duckduckgo, -@@ -705,7 +705,7 @@ const PrepopulatedEngine* const engines_PA[] = { +@@ -704,7 +704,7 @@ const PrepopulatedEngine* const engines_PA[] = { // Peru const PrepopulatedEngine* const engines_PE[] = { @@ -737,7 +737,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_pe, &ecosia, -@@ -714,7 +714,7 @@ const PrepopulatedEngine* const engines_PE[] = { +@@ -713,7 +713,7 @@ const PrepopulatedEngine* const engines_PE[] = { // Philippines const PrepopulatedEngine* const engines_PH[] = { @@ -746,7 +746,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &ecosia, -@@ -723,7 +723,7 @@ const PrepopulatedEngine* const engines_PH[] = { +@@ -722,7 +722,7 @@ const PrepopulatedEngine* const engines_PH[] = { // Pakistan const PrepopulatedEngine* const engines_PK[] = { @@ -755,7 +755,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -732,7 +732,7 @@ const PrepopulatedEngine* const engines_PK[] = { +@@ -731,7 +731,7 @@ const PrepopulatedEngine* const engines_PK[] = { // Poland const PrepopulatedEngine* const engines_PL[] = { @@ -764,7 +764,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -741,7 +741,7 @@ const PrepopulatedEngine* const engines_PL[] = { +@@ -740,7 +740,7 @@ const PrepopulatedEngine* const engines_PL[] = { // Puerto Rico const PrepopulatedEngine* const engines_PR[] = { @@ -773,7 +773,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -750,7 +750,7 @@ const PrepopulatedEngine* const engines_PR[] = { +@@ -749,7 +749,7 @@ const PrepopulatedEngine* const engines_PR[] = { // Portugal const PrepopulatedEngine* const engines_PT[] = { @@ -782,7 +782,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -759,7 +759,7 @@ const PrepopulatedEngine* const engines_PT[] = { +@@ -758,7 +758,7 @@ const PrepopulatedEngine* const engines_PT[] = { // Paraguay const PrepopulatedEngine* const engines_PY[] = { @@ -791,7 +791,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_es, &duckduckgo, -@@ -768,7 +768,7 @@ const PrepopulatedEngine* const engines_PY[] = { +@@ -767,7 +767,7 @@ const PrepopulatedEngine* const engines_PY[] = { // Qatar const PrepopulatedEngine* const engines_QA[] = { @@ -800,7 +800,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -777,7 +777,7 @@ const PrepopulatedEngine* const engines_QA[] = { +@@ -776,7 +776,7 @@ const PrepopulatedEngine* const engines_QA[] = { // Romania const PrepopulatedEngine* const engines_RO[] = { @@ -809,7 +809,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -786,7 +786,7 @@ const PrepopulatedEngine* const engines_RO[] = { +@@ -785,7 +785,7 @@ const PrepopulatedEngine* const engines_RO[] = { // Serbia const PrepopulatedEngine* const engines_RS[] = { @@ -818,7 +818,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -795,7 +795,7 @@ const PrepopulatedEngine* const engines_RS[] = { +@@ -794,7 +794,7 @@ const PrepopulatedEngine* const engines_RS[] = { // Russia const PrepopulatedEngine* const engines_RU[] = { @@ -827,7 +827,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ru, &mail_ru, &bing, -@@ -804,7 +804,7 @@ const PrepopulatedEngine* const engines_RU[] = { +@@ -803,7 +803,7 @@ const PrepopulatedEngine* const engines_RU[] = { // Rwanda const PrepopulatedEngine* const engines_RW[] = { @@ -836,7 +836,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -813,7 +813,7 @@ const PrepopulatedEngine* const engines_RW[] = { +@@ -812,7 +812,7 @@ const PrepopulatedEngine* const engines_RW[] = { // Saudi Arabia const PrepopulatedEngine* const engines_SA[] = { @@ -845,7 +845,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_com, -@@ -822,7 +822,7 @@ const PrepopulatedEngine* const engines_SA[] = { +@@ -821,7 +821,7 @@ const PrepopulatedEngine* const engines_SA[] = { // Sweden const PrepopulatedEngine* const engines_SE[] = { @@ -854,7 +854,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_se, &duckduckgo, -@@ -831,7 +831,7 @@ const PrepopulatedEngine* const engines_SE[] = { +@@ -830,7 +830,7 @@ const PrepopulatedEngine* const engines_SE[] = { // Singapore const PrepopulatedEngine* const engines_SG[] = { @@ -863,7 +863,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_sg, &duckduckgo, -@@ -840,7 +840,7 @@ const PrepopulatedEngine* const engines_SG[] = { +@@ -839,7 +839,7 @@ const PrepopulatedEngine* const engines_SG[] = { // Slovenia const PrepopulatedEngine* const engines_SI[] = { @@ -872,7 +872,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo, -@@ -849,7 +849,7 @@ const PrepopulatedEngine* const engines_SI[] = { +@@ -848,7 +848,7 @@ const PrepopulatedEngine* const engines_SI[] = { // Slovakia const PrepopulatedEngine* const engines_SK[] = { @@ -881,7 +881,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &duckduckgo, &yahoo, -@@ -858,7 +858,7 @@ const PrepopulatedEngine* const engines_SK[] = { +@@ -857,7 +857,7 @@ const PrepopulatedEngine* const engines_SK[] = { // El Salvador const PrepopulatedEngine* const engines_SV[] = { @@ -890,7 +890,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_es, &duckduckgo, -@@ -867,7 +867,7 @@ const PrepopulatedEngine* const engines_SV[] = { +@@ -866,7 +866,7 @@ const PrepopulatedEngine* const engines_SV[] = { // Syria const PrepopulatedEngine* const engines_SY[] = { @@ -899,7 +899,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_com, -@@ -876,7 +876,7 @@ const PrepopulatedEngine* const engines_SY[] = { +@@ -875,7 +875,7 @@ const PrepopulatedEngine* const engines_SY[] = { // Thailand const PrepopulatedEngine* const engines_TH[] = { @@ -908,7 +908,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_th, &yandex_ru, -@@ -885,7 +885,7 @@ const PrepopulatedEngine* const engines_TH[] = { +@@ -884,7 +884,7 @@ const PrepopulatedEngine* const engines_TH[] = { // Tunisia const PrepopulatedEngine* const engines_TN[] = { @@ -917,7 +917,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_fr, &duckduckgo, -@@ -894,7 +894,7 @@ const PrepopulatedEngine* const engines_TN[] = { +@@ -893,7 +893,7 @@ const PrepopulatedEngine* const engines_TN[] = { // Turkey const PrepopulatedEngine* const engines_TR[] = { @@ -926,7 +926,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_tr, &yahoo_tr, &bing, -@@ -903,7 +903,7 @@ const PrepopulatedEngine* const engines_TR[] = { +@@ -902,7 +902,7 @@ const PrepopulatedEngine* const engines_TR[] = { // Trinidad and Tobago const PrepopulatedEngine* const engines_TT[] = { @@ -935,7 +935,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -912,7 +912,7 @@ const PrepopulatedEngine* const engines_TT[] = { +@@ -911,7 +911,7 @@ const PrepopulatedEngine* const engines_TT[] = { // Taiwan const PrepopulatedEngine* const engines_TW[] = { @@ -944,7 +944,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yahoo_tw, &bing, &baidu, -@@ -921,7 +921,7 @@ const PrepopulatedEngine* const engines_TW[] = { +@@ -920,7 +920,7 @@ const PrepopulatedEngine* const engines_TW[] = { // Tanzania const PrepopulatedEngine* const engines_TZ[] = { @@ -953,7 +953,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -930,7 +930,7 @@ const PrepopulatedEngine* const engines_TZ[] = { +@@ -929,7 +929,7 @@ const PrepopulatedEngine* const engines_TZ[] = { // Ukraine const PrepopulatedEngine* const engines_UA[] = { @@ -962,7 +962,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &yandex_ua, &bing, &duckduckgo, -@@ -939,7 +939,7 @@ const PrepopulatedEngine* const engines_UA[] = { +@@ -938,7 +938,7 @@ const PrepopulatedEngine* const engines_UA[] = { // United States const PrepopulatedEngine* const engines_US[] = { @@ -971,7 +971,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -948,7 +948,7 @@ const PrepopulatedEngine* const engines_US[] = { +@@ -947,7 +947,7 @@ const PrepopulatedEngine* const engines_US[] = { // Uruguay const PrepopulatedEngine* const engines_UY[] = { @@ -980,7 +980,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_es, &duckduckgo, -@@ -957,7 +957,7 @@ const PrepopulatedEngine* const engines_UY[] = { +@@ -956,7 +956,7 @@ const PrepopulatedEngine* const engines_UY[] = { // Venezuela const PrepopulatedEngine* const engines_VE[] = { @@ -989,7 +989,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo_es, &duckduckgo, -@@ -966,7 +966,7 @@ const PrepopulatedEngine* const engines_VE[] = { +@@ -965,7 +965,7 @@ const PrepopulatedEngine* const engines_VE[] = { // Vietnam const PrepopulatedEngine* const engines_VN[] = { @@ -998,7 +998,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &coccoc, &yahoo, &bing, -@@ -975,7 +975,7 @@ const PrepopulatedEngine* const engines_VN[] = { +@@ -974,7 +974,7 @@ const PrepopulatedEngine* const engines_VN[] = { // Yemen const PrepopulatedEngine* const engines_YE[] = { @@ -1007,7 +1007,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &yandex_com, -@@ -984,7 +984,7 @@ const PrepopulatedEngine* const engines_YE[] = { +@@ -983,7 +983,7 @@ const PrepopulatedEngine* const engines_YE[] = { // South Africa const PrepopulatedEngine* const engines_ZA[] = { @@ -1016,7 +1016,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon &bing, &yahoo, &duckduckgo, -@@ -993,7 +993,7 @@ const PrepopulatedEngine* const engines_ZA[] = { +@@ -992,7 +992,7 @@ const PrepopulatedEngine* const engines_ZA[] = { // Zimbabwe const PrepopulatedEngine* const engines_ZW[] = { diff --git a/build/patches/Add-IsCleartextPermitted-flag.patch b/build/patches/Add-IsCleartextPermitted-flag.patch index 92e542f0..093895ad 100644 --- a/build/patches/Add-IsCleartextPermitted-flag.patch +++ b/build/patches/Add-IsCleartextPermitted-flag.patch @@ -14,7 +14,7 @@ Subject: Add IsCleartextPermitted flag 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 -@@ -7949,6 +7949,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -8170,6 +8170,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kRequestDesktopSiteExceptionsName, flag_descriptions::kRequestDesktopSiteExceptionsDescription, kOsAndroid, FEATURE_VALUE_TYPE(features::kRequestDesktopSiteExceptions)}, @@ -28,7 +28,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 -@@ -1530,6 +1530,10 @@ const char kHttpsOnlyModeDescription[] = +@@ -1542,6 +1542,10 @@ const char kHttpsOnlyModeDescription[] = "Adds a setting under chrome://settings/security to opt-in to HTTPS-First " "Mode."; @@ -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 -@@ -874,6 +874,9 @@ extern const char kHideShelfControlsInTabletModeDescription[]; +@@ -876,6 +876,9 @@ extern const char kHideShelfControlsInTabletModeDescription[]; extern const char kHttpsOnlyModeName[]; extern const char kHttpsOnlyModeDescription[]; @@ -80,7 +80,7 @@ diff --git a/net/base/features.h b/net/base/features.h 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 -@@ -209,6 +209,10 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { +@@ -210,6 +210,10 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { } #if BUILDFLAG(IS_ANDROID) diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index 289318e8..278058ad 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -70,7 +70,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 -@@ -57,6 +57,7 @@ import org.chromium.ui.text.SpanApplier; +@@ -58,6 +58,7 @@ import org.chromium.ui.text.SpanApplier; public class PrivacySettings extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener, INeedSnackbarManager { @@ -81,7 +81,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 -@@ -276,6 +276,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { +@@ -275,6 +275,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back( base::ASCIIToUTF16(chrome::kChromeUISettingsURL)); #endif @@ -93,7 +93,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 -@@ -88,6 +88,12 @@ +@@ -74,6 +74,12 @@ @@ -190,7 +190,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/background_mode_manager.h" #endif -@@ -970,6 +972,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -967,6 +969,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { chrome::enterprise_util::RegisterLocalStatePrefs(registry); component_updater::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -202,7 +202,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse 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 -@@ -159,7 +159,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() { +@@ -157,7 +157,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() { SetValue( proxy_config::prefs::kProxy, std::make_unique(ProxyConfigDictionary::CreateFixedServers( @@ -635,7 +635,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -276,6 +276,8 @@ static_library("ui") { +@@ -274,6 +274,8 @@ static_library("ui") { "webui/metrics_handler.h", "webui/net_export_ui.cc", "webui/net_export_ui.h", @@ -647,7 +647,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 -@@ -54,6 +54,7 @@ +@@ -55,6 +55,7 @@ #include "chrome/browser/ui/webui/ntp_tiles_internals_ui.h" #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h" #include "chrome/browser/ui/webui/policy/policy_ui.h" @@ -655,7 +655,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom #include "chrome/browser/ui/webui/predictors/predictors_ui.h" #include "chrome/browser/ui/webui/segmentation_internals/segmentation_internals_ui.h" #include "chrome/browser/ui/webui/signin_internals_ui.h" -@@ -741,6 +742,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -763,6 +764,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, return &NewWebUI; if (url.host_piece() == chrome::kChromeUINetExportHost) return &NewWebUI; @@ -756,9 +756,9 @@ new file mode 100644 + void RegisterMessages() override; + + // Messages -+ void OnEnableNotifyUIWithState(base::Value::ConstListView list); -+ void OnApply(base::Value::ConstListView config); -+ void OnClear(base::Value::ConstListView config); ++ void OnEnableNotifyUIWithState(const base::Value::List& args); ++ void OnApply(const base::Value::List& args); ++ void OnClear(const base::Value::List& args); + + // net::ProxyConfigService::Observer implementation: + // Calls ProxyConfigView.onProxyConfigChanged JavaScript function in the @@ -917,7 +917,7 @@ new file mode 100644 +// The proxy configuration UI is not notified of state changes until this function runs. +// After this function, OnProxyConfigChanged() will be called on all proxy state changes. +void ProxyConfigMessageHandler::OnEnableNotifyUIWithState( -+ base::Value::ConstListView list) { ++ const base::Value::List& list) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + if (!is_observing_) { @@ -939,7 +939,7 @@ new file mode 100644 + OnProxyConfigChanged(config, availability); +} + -+void ProxyConfigMessageHandler::OnClear(base::Value::ConstListView list) { ++void ProxyConfigMessageHandler::OnClear(const base::Value::List& list) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + const base::Value cfg = ProxyConfigDictionary::CreateSystem(); @@ -948,7 +948,7 @@ new file mode 100644 + OnEnableNotifyUIWithState(list); +} + -+void ProxyConfigMessageHandler::OnApply(base::Value::ConstListView list) { ++void ProxyConfigMessageHandler::OnApply(const base::Value::List& list) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + if ((list.size() != 1) || !list[0].is_dict()) { @@ -1026,7 +1026,7 @@ new file mode 100644 + } else if (t == "direct") { + proxyConfig.proxy_rules().type = net::ProxyConfig::ProxyRules::Type::EMPTY; + } else if (t == "none") { -+ base::Value::ConstListView empty; ++ base::Value::List empty; + OnClear(empty); + return; + } else { @@ -1073,7 +1073,7 @@ new file mode 100644 + } + pref_service_->CommitPendingWrite(); + -+ base::Value::ConstListView empty; ++ base::Value::List empty; + OnEnableNotifyUIWithState(empty); +} + @@ -1126,7 +1126,7 @@ new file mode 100644 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc --- a/chrome/common/webui_url_constants.cc +++ b/chrome/common/webui_url_constants.cc -@@ -38,6 +38,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert"; +@@ -39,6 +39,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert"; const char kChromeUICertificateViewerURL[] = "chrome://view-cert/"; const char kChromeUIChromeSigninHost[] = "chrome-signin"; const char kChromeUIChromeSigninURL[] = "chrome://chrome-signin/"; @@ -1135,7 +1135,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"; -@@ -403,6 +405,7 @@ bool IsSystemWebUIHost(base::StringPiece host) { +@@ -409,6 +411,7 @@ bool IsSystemWebUIHost(base::StringPiece host) { kChromeUIMobileSetupHost, kChromeUIMultiDeviceSetupHost, kChromeUINetworkHost, @@ -1143,7 +1143,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons kChromeUIOobeHost, kChromeUIOSCreditsHost, kChromeUIOSSettingsHost, -@@ -644,6 +647,7 @@ const char* const kChromeHostURLs[] = { +@@ -651,6 +654,7 @@ const char* const kChromeHostURLs[] = { #if !BUILDFLAG(IS_ANDROID) #if !BUILDFLAG(IS_CHROMEOS_ASH) kChromeUIAppLauncherPageHost, @@ -1154,7 +1154,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -128,6 +128,8 @@ extern const char kChromeUIMemoryInternalsHost[]; +@@ -129,6 +129,8 @@ extern const char kChromeUIMemoryInternalsHost[]; extern const char kChromeUINTPTilesInternalsHost[]; extern const char kChromeUINaClHost[]; extern const char kChromeUINetExportHost[]; @@ -1166,7 +1166,7 @@ diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_const diff --git a/components/proxy_config/pref_proxy_config_tracker_impl.cc b/components/proxy_config/pref_proxy_config_tracker_impl.cc --- a/components/proxy_config/pref_proxy_config_tracker_impl.cc +++ b/components/proxy_config/pref_proxy_config_tracker_impl.cc -@@ -380,6 +380,7 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig( +@@ -381,6 +381,7 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig( if (proxy_dict.GetBypassList(&proxy_bypass)) { proxy_config.proxy_rules().bypass_rules.ParseFromString(proxy_bypass); } @@ -1302,7 +1302,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_config/proxy_policy_handler.cc --- a/components/proxy_config/proxy_policy_handler.cc +++ b/components/proxy_config/proxy_policy_handler.cc -@@ -259,7 +259,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, +@@ -258,7 +258,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, ProxyConfigDictionary::CreateFixedServers( server->GetString(), bypass_list && bypass_list->is_string() ? bypass_list->GetString() diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 24157606..802e26bb 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -1,51 +1,91 @@ -From: Ryan Archer -Date: Wed, 2 Aug 2017 01:41:28 -0400 +From: uazo +Date: Sat, 2 Oct 2021 13:20:36 +0200 Subject: Add an always-incognito mode -More specifically, add a preference that causes all new tabs and all -clicked links to launch as incognito. +Add a preference that causes all new tabs and all clicked links to launch in incognito. Make sure initial incognito status is correctly recognized. -Enable incognito custom tabs and fix crashes for incognito/custom tab intents (credits to @uazo) -Use a native flag (credits to @uazo) +Enable incognito custom tabs and fix crashes for incognito/custom tab intents +Use a native flag to correctly start new tabs on app startup + +Add history, recents, offlinepages and send to home screen support for always incognito. +History, recent tabs and offline pages require the INCOGNITO_TAB_HISTORY_ENABLED +flag turned on. +IncognitoPlaceholder is also deactivated, both in the phone and tablet version. +The relative tests are also present. + +See also: https://github.com/bromite/bromite/pull/1427 --- - chrome/android/chrome_java_sources.gni | 1 + - .../java/res/xml/privacy_preferences.xml | 5 ++ - .../AlwaysIncognitoLinkInterceptor.java | 53 +++++++++++++++++++ - .../chrome/browser/ChromeTabbedActivity.java | 6 ++- - .../chrome/browser/app/ChromeActivity.java | 4 ++ - .../AppMenuPropertiesDelegateImpl.java | 8 +++ - .../ChromeContextMenuPopulator.java | 7 ++- - .../CustomTabActivityLifecycleUmaTracker.java | 25 --------- - .../CustomTabIntentDataProvider.java | 5 +- - .../browser/init/StartupTabPreloader.java | 14 +++-- - .../privacy/settings/PrivacySettings.java | 40 +++++++++++++- - .../browser/settings/SettingsActivity.java | 4 ++ - .../tabbed_mode/TabbedRootUiCoordinator.java | 5 +- - .../browser/tabmodel/ChromeTabCreator.java | 5 +- - .../tabmodel/TabModelSelectorImpl.java | 3 ++ - .../browser/tabmodel/TabPersistentStore.java | 10 ++++ - .../webapps/WebappIntentDataProvider.java | 14 +++++ - .../chrome_autocomplete_provider_client.cc | 7 +++ - .../chrome_autocomplete_provider_client.h | 1 + - .../host_content_settings_map_factory.cc | 15 +++++- - .../flags/android/chrome_feature_list.cc | 2 +- - chrome/browser/prefs/browser_prefs.cc | 3 ++ - .../strings/android_chrome_strings.grd | 13 +++++ - chrome/browser/ui/messages/android/BUILD.gn | 1 + - .../snackbar/INeedSnackbarManager.java | 27 ++++++++++ - chrome/common/pref_names.cc | 4 ++ - chrome/common/pref_names.h | 1 + - .../browser/content_settings_pref_provider.cc | 6 ++- - .../browser/content_settings_pref_provider.h | 2 + - .../core/browser/host_content_settings_map.cc | 4 +- - .../core/browser/host_content_settings_map.h | 4 ++ - .../browser/autocomplete_provider_client.cc | 4 ++ - .../browser/autocomplete_provider_client.h | 1 + - .../omnibox/browser/base_search_provider.cc | 2 +- - components/omnibox/browser/search_provider.cc | 4 +- - .../host_content_settings_map_factory.cc | 1 + - 36 files changed, 270 insertions(+), 41 deletions(-) + chrome/android/chrome_java_sources.gni | 1 + + .../chrome_junit_test_java_sources.gni | 4 + + chrome/android/chrome_test_java_sources.gni | 6 + + .../java/res/xml/privacy_preferences.xml | 10 + + .../AlwaysIncognitoLinkInterceptor.java | 53 +++ + .../chrome/browser/ChromeTabbedActivity.java | 6 +- + .../chrome/browser/app/ChromeActivity.java | 4 + + .../AppMenuPropertiesDelegateImpl.java | 33 +- + .../ChromeContextMenuPopulator.java | 7 +- + .../CustomTabActivityLifecycleUmaTracker.java | 25 -- + .../CustomTabAppMenuPropertiesDelegate.java | 4 + + .../CustomTabIntentDataProvider.java | 5 +- + .../browser/download/DownloadUtils.java | 16 +- + .../browser/history/HistoryManager.java | 18 +- + .../chrome/browser/history/HistoryPage.java | 16 + + .../browser/init/StartupTabPreloader.java | 14 +- + .../native_page/NativePageFactory.java | 4 +- + .../chrome/browser/ntp/RecentTabsManager.java | 8 +- + .../privacy/settings/PrivacySettings.java | 58 +++- + .../browser/settings/SettingsActivity.java | 4 + + .../browser/tab/HistoricalTabSaver.java | 6 +- + .../tabbed_mode/TabbedRootUiCoordinator.java | 5 +- + .../browser/tabmodel/ChromeTabCreator.java | 5 +- + .../tabmodel/TabModelSelectorImpl.java | 3 + + .../browser/tabmodel/TabPersistentStore.java | 15 +- + .../webapps/WebappIntentDataProvider.java | 14 + + .../history/Bromite_HistoryManagerTest.java | 112 ++++++ + ...FragmentTest_HistoryInAlwaysIncognito.java | 120 +++++++ + .../browser/tab/HistoricalTabSaverTest.java | 2 +- + ...ite_AppMenuPropertiesDelegateUnitTest.java | 323 ++++++++++++++++++ + .../browser/android/historical_tab_saver.cc | 25 +- + chrome/browser/android/historical_tab_saver.h | 26 +- + .../android/historical_tab_saver_unittest.cc | 148 ++++++++ + .../chrome_autocomplete_provider_client.cc | 7 + + .../chrome_autocomplete_provider_client.h | 1 + + .../host_content_settings_map_factory.cc | 15 +- + .../flags/android/chrome_feature_list.cc | 2 +- + chrome/browser/history/history_tab_helper.cc | 16 + + chrome/browser/history/history_tab_helper.h | 10 +- + .../history/history_tab_helper_unittest.cc | 22 ++ + .../android/offline_page_bridge.cc | 13 +- + .../android/offline_page_model_factory.cc | 21 +- + .../android/request_coordinator_factory.cc | 17 + + .../offline_page_model_factory.h | 1 + + .../offline_pages/recent_tab_helper.cc | 12 + + .../request_coordinator_factory.h | 2 + + chrome/browser/prefs/browser_prefs.cc | 5 + + .../browser/ui/android/native_page/BUILD.gn | 2 + + .../browser/ui/native_page/NativePage.java | 12 +- + .../ui/native_page/NativePageTest.java | 26 ++ + .../strings/android_chrome_strings.grd | 21 ++ + chrome/browser/ui/messages/android/BUILD.gn | 1 + + .../snackbar/INeedSnackbarManager.java | 27 ++ + chrome/common/pref_names.cc | 6 + + chrome/common/pref_names.h | 5 + + chrome/test/BUILD.gn | 5 + + .../browser/content_settings_pref_provider.cc | 6 +- + .../browser/content_settings_pref_provider.h | 2 + + .../core/browser/host_content_settings_map.cc | 4 +- + .../core/browser/host_content_settings_map.h | 4 + + .../browser/autocomplete_provider_client.cc | 4 + + .../browser/autocomplete_provider_client.h | 1 + + .../omnibox/browser/base_search_provider.cc | 2 +- + components/omnibox/browser/search_provider.cc | 4 +- + .../host_content_settings_map_factory.cc | 1 + + 65 files changed, 1300 insertions(+), 77 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java + create mode 100644 chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java + create mode 100644 chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java + create mode 100644 chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java + create mode 100644 chrome/browser/android/historical_tab_saver_unittest.cc create mode 100644 chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/INeedSnackbarManager.java diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni @@ -59,10 +99,35 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", "java/src/org/chromium/chrome/browser/ActivityUtils.java", +diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni +--- a/chrome/android/chrome_junit_test_java_sources.gni ++++ b/chrome/android/chrome_junit_test_java_sources.gni +@@ -237,3 +237,7 @@ chrome_junit_test_java_sources = [ + "junit/src/org/chromium/chrome/browser/webapps/WebappLauncherActivityTest.java", + "junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java", + ] ++ ++chrome_junit_test_java_sources += [ ++ "junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java", ++] +\ No newline at end of file +diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni +--- a/chrome/android/chrome_test_java_sources.gni ++++ b/chrome/android/chrome_test_java_sources.gni +@@ -668,3 +668,9 @@ if (enable_feed_v2) { + if (is_java_debug) { + chrome_test_java_sources += [ "javatests/src/org/chromium/chrome/browser/payments/PaymentErrorStringsTest.java" ] + } ++ ++# Bromite tests ++chrome_test_java_sources += [ ++ "javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java", ++ "javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.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 -@@ -37,6 +37,11 @@ +@@ -37,6 +37,16 @@ android:key="secure_dns" android:title="@string/settings_secure_dns_title" android:fragment="org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings"/> @@ -70,6 +135,11 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi + android:key="always_incognito" + android:title="@string/always_incognito_title" + android:summary="@string/always_incognito_summary" ++ android:defaultValue="false" /> ++ +@@ -1963,6 +1964,9 @@ public abstract class ChromeActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -187,7 +257,32 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App import org.chromium.chrome.browser.banners.AppMenuVerbiage; import org.chromium.chrome.browser.bookmarks.BookmarkBridge; import org.chromium.chrome.browser.bookmarks.BookmarkFeatures; -@@ -524,6 +525,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -96,6 +97,10 @@ import java.util.ArrayList; + import java.util.List; + import java.util.Map; + ++import org.chromium.components.prefs.PrefService; ++import org.chromium.components.user_prefs.UserPrefs; ++import org.chromium.chrome.browser.preferences.Pref; ++ + /** + * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu + * items based on activity state. +@@ -156,6 +161,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + private @StartSurfaceState int mStartSurfaceState; + protected Runnable mAppMenuInvalidator; + ++ private PrefService sPrefServiceForTest; ++ ++ @VisibleForTesting ++ public void setPrefForTest(PrefService prefService) { ++ sPrefServiceForTest = prefService; ++ } ++ + /** + * Construct a new {@link AppMenuPropertiesDelegateImpl}. + * @param context The activity context. +@@ -524,6 +536,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { @@ -201,6 +296,34 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App // We have to iterate all menu items since same menu item ID may be associated with more // than one menu items. boolean isOverviewModeMenu = menuGroup == MenuGroup.OVERVIEW_MODE_MENU; +@@ -580,7 +599,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + } + + if (item.getItemId() == R.id.recent_tabs_menu_id) { +- item.setVisible(!isIncognito); ++ if (always_incognito) { ++ PrefService prefService = sPrefServiceForTest != null ? sPrefServiceForTest : ++ UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ boolean historyEnabledInIncognito = ++ prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); ++ item.setVisible(historyEnabledInIncognito); ++ } ++ else ++ item.setVisible(!isIncognito); + } + if (item.getItemId() == R.id.menu_group_tabs) { + item.setVisible(isMenuGroupTabsVisible); +@@ -817,7 +844,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + // is not persisted when adding to the homescreen. + // * If creating shortcuts it not supported by the current home screen. + return WebappsUtils.isAddToHomeIntentSupported() && !isChromeScheme && !isFileScheme +- && !isContentScheme && !isIncognito && !url.isEmpty(); ++ && !isContentScheme && !url.isEmpty() ++ && (!isIncognito || ++ AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); + } + + /** 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 @@ -212,7 +335,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item; import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ListItemType; -@@ -397,6 +398,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -409,6 +410,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { boolean hasSaveImage = false; mShowEphemeralTabNewLabel = null; @@ -222,7 +345,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr List> groupedItems = new ArrayList<>(); if (mParams.isAnchor()) { -@@ -415,6 +419,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -427,6 +431,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP)); } } @@ -230,7 +353,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr if (!mItemDelegate.isIncognito() && mItemDelegate.isIncognitoSupported()) { linkGroup.add(createListItem(Item.OPEN_IN_INCOGNITO_TAB)); } -@@ -439,7 +444,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -451,7 +456,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } } if (FirstRunStatus.getFirstRunFlowComplete()) { @@ -274,6 +397,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust } private void recordUserAction() { +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 +@@ -20,6 +20,7 @@ import org.chromium.base.ContextUtils; + import org.chromium.base.supplier.ObservableSupplier; + import org.chromium.chrome.R; + import org.chromium.chrome.browser.ActivityTabProvider; ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + import org.chromium.chrome.browser.DefaultBrowserInfo; + import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; + import org.chromium.chrome.browser.bookmarks.BookmarkBridge; +@@ -168,6 +169,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat + downloadItemVisible = false; + openInChromeItemVisible = false; + } ++ if (AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) { ++ downloadItemVisible = true; ++ } + + boolean isChromeScheme = url.getScheme().equals(UrlConstants.CHROME_SCHEME) + || url.getScheme().equals(UrlConstants.CHROME_NATIVE_SCHEME); 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 @@ -296,6 +440,129 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust } @Nullable +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +@@ -34,6 +34,7 @@ import org.chromium.base.annotations.NativeMethods; + import org.chromium.base.metrics.RecordHistogram; + import org.chromium.base.metrics.RecordUserAction; + import org.chromium.chrome.R; ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + import org.chromium.chrome.browser.ChromeTabbedActivity; + import org.chromium.chrome.browser.IntentHandler; + import org.chromium.chrome.browser.app.download.home.DownloadActivity; +@@ -72,6 +73,10 @@ import org.chromium.ui.widget.Toast; + + import java.io.File; + ++import org.chromium.components.prefs.PrefService; ++import org.chromium.components.user_prefs.UserPrefs; ++import org.chromium.chrome.browser.preferences.Pref; ++ + /** + * A class containing some utility static methods. + */ +@@ -312,7 +317,16 @@ public class DownloadUtils { + // Offline pages isn't supported in Incognito. This should be checked before calling + // OfflinePageBridge.getForProfile because OfflinePageBridge instance will not be found + // for incognito profile. +- if (tab.isIncognito()) return false; ++ boolean always_incognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); ++ if (always_incognito) { ++ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ boolean historyEnabledInIncognito = ++ prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); ++ if (historyEnabledInIncognito == false) ++ return false; ++ } else { ++ if (tab.isIncognito()) return false; ++ } + + // Check if the page url is supported for saving. Only HTTP and HTTPS pages are allowed. + if (!OfflinePageBridge.canSavePage(tab.getUrl())) return false; +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +@@ -22,6 +22,7 @@ import org.chromium.base.metrics.RecordHistogram; + import org.chromium.base.metrics.RecordUserAction; + import org.chromium.base.supplier.Supplier; + import org.chromium.chrome.R; ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + import org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment; + import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +@@ -43,6 +44,12 @@ import org.chromium.ui.base.Clipboard; + + import java.util.List; + ++import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.base.ContextUtils; ++import org.chromium.components.prefs.PrefService; ++import org.chromium.components.user_prefs.UserPrefs; ++import org.chromium.chrome.browser.preferences.Pref; ++ + /** + * Combines and manages the different UI components of browsing history. + */ +@@ -229,7 +236,16 @@ public class HistoryManager implements OnMenuItemClickListener, SelectionObserve + : mSelectableListLayout; + } + +- private boolean shouldShowIncognitoPlaceholder() { ++ public boolean isIncognito() { return mIsIncognito; } ++ ++ public boolean shouldShowIncognitoPlaceholder() { ++ if (mIsIncognito && ++ AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) { ++ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ boolean historyEnabledInIncognito = ++ prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); ++ if (historyEnabledInIncognito) return false; ++ } + return mIsIncognito + && ChromeFeatureList.isEnabled( + ChromeFeatureList.UPDATE_HISTORY_ENTRY_POINTS_IN_INCOGNITO); +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java +@@ -10,12 +10,19 @@ import androidx.annotation.VisibleForTesting; + + import org.chromium.base.supplier.Supplier; + import org.chromium.chrome.R; ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + import org.chromium.chrome.browser.tab.Tab; + import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; + 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; + ++import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.base.ContextUtils; ++import org.chromium.components.prefs.PrefService; ++import org.chromium.components.user_prefs.UserPrefs; ++import org.chromium.chrome.browser.preferences.Pref; ++ + /** + * Native page for managing browsing history. + */ +@@ -37,8 +44,17 @@ public class HistoryPage extends BasicNativePage { + boolean isIncognito, Supplier tabSupplier) { + super(host); + ++ if (isIncognito && ++ AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) { ++ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ boolean historyEnabledInIncognito = ++ prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); ++ if (historyEnabledInIncognito == true) isIncognito = false; ++ } ++ + mHistoryManager = + new HistoryManager(activity, false, snackbarManager, isIncognito, tabSupplier); ++ + mTitle = host.getContext().getResources().getString(R.string.menu_history); + + initWithView(mHistoryManager.getView()); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java b/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java @@ -335,10 +602,63 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab .setLaunchType(TabLaunchType.FROM_EXTERNAL_APP) .setWindow(mWindowAndroid) .setWebContents(webContents) +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 +@@ -15,6 +15,7 @@ import org.chromium.base.jank_tracker.JankTracker; + import org.chromium.base.supplier.BooleanSupplier; + import org.chromium.base.supplier.DestroyableObservableSupplier; + import org.chromium.base.supplier.Supplier; ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + import org.chromium.chrome.browser.app.ChromeActivity; + import org.chromium.chrome.browser.app.download.home.DownloadPage; + import org.chromium.chrome.browser.bookmarks.BookmarkPage; +@@ -243,7 +244,8 @@ public class NativePageFactory { + String url, NativePage candidatePage, Tab tab, boolean isIncognito) { + NativePage page; + +- switch (NativePage.nativePageType(url, candidatePage, isIncognito)) { ++ boolean isAlwaysIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); ++ switch (NativePage.nativePageType(url, candidatePage, isIncognito, isAlwaysIncognito)) { + case NativePageType.NONE: + return null; + case NativePageType.CANDIDATE: +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java +@@ -73,16 +73,16 @@ public class RecentTabsManager implements AccountsChangeObserver { + */ + public RecentTabsManager(Tab tab, TabModelSelector tabModelSelector, Profile profile, + Context context, Runnable showHistoryManager) { +- mProfile = profile; ++ mProfile = profile.getOriginalProfile(); + mActiveTab = tab; + mTabModelSelector = tabModelSelector; + mShowHistoryManager = showHistoryManager; +- mForeignSessionHelper = new ForeignSessionHelper(profile); +- mPrefs = new RecentTabsPagePrefs(profile); ++ mForeignSessionHelper = new ForeignSessionHelper(mProfile); ++ mPrefs = new RecentTabsPagePrefs(mProfile); + mFaviconHelper = new FaviconHelper(); + mRecentlyClosedTabManager = sRecentlyClosedTabManagerForTests != null + ? sRecentlyClosedTabManagerForTests +- : new RecentlyClosedBridge(profile); ++ : new RecentlyClosedBridge(mProfile); + + mRecentlyClosedTabManager.setTabsUpdatedRunnable(this::updateRecentlyClosedTabs); + updateRecentlyClosedTabs(); 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 -@@ -30,6 +30,11 @@ import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsFragmen +@@ -16,6 +16,7 @@ import androidx.preference.Preference; + import androidx.preference.PreferenceFragmentCompat; + import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; + ++import org.chromium.base.Log; + import org.chromium.chrome.R; + import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; + import org.chromium.chrome.browser.flags.ChromeFeatureList; +@@ -31,6 +32,11 @@ import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsFragmen import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; @@ -350,7 +670,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; -@@ -46,7 +51,12 @@ import org.chromium.ui.text.SpanApplier; +@@ -47,7 +53,12 @@ import org.chromium.ui.text.SpanApplier; * Fragment to keep track of the all the privacy related preferences. */ public class PrivacySettings @@ -364,7 +684,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; private static final String PREF_PRELOAD_PAGES = "preload_pages"; private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode"; -@@ -130,6 +140,11 @@ public class PrivacySettings +@@ -128,6 +139,11 @@ public class PrivacySettings + phoneAsASecurityKey.setVisible( + ChromeFeatureList.isEnabled(ChromeFeatureList.WEB_AUTH_PHONE_SUPPORT)); + ++ ChromeSwitchPreference historyInIncognitoPref = ++ (ChromeSwitchPreference) findPreference(PREF_INCOGNITO_TAB_HISTORY_ENABLED); ++ historyInIncognitoPref.setOnPreferenceChangeListener(this); ++ historyInIncognitoPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate); ++ + updatePreferences(); + } + +@@ -137,13 +153,23 @@ public class PrivacySettings if (PREF_CAN_MAKE_PAYMENT.equals(key)) { UserPrefs.get(Profile.getLastUsedRegularProfile()) .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); @@ -376,7 +708,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } else if (PREF_HTTPS_FIRST_MODE.equals(key)) { UserPrefs.get(Profile.getLastUsedRegularProfile()) .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue); -@@ -162,6 +177,25 @@ public class PrivacySettings ++ } else if (PREF_INCOGNITO_TAB_HISTORY_ENABLED.equals(key)) { ++ UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ .setBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED, (boolean) newValue); + } + return true; + } + ++ public static final String PREF_INCOGNITO_TAB_HISTORY_ENABLED = "incognito_history_enabled"; ++ + @Override + public void onResume() { + super.onResume(); +@@ -169,12 +195,38 @@ public class PrivacySettings : R.string.text_off); } @@ -402,7 +746,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference preloadPagesPreference = findPreference(PREF_PRELOAD_PAGES); if (preloadPagesPreference != null) { preloadPagesPreference.setSummary( -@@ -220,4 +254,8 @@ public class PrivacySettings + PreloadPagesSettingsFragment.getPreloadPagesSummaryString(getContext())); + } + ++ ChromeSwitchPreference historyInIncognitoPref = ++ (ChromeSwitchPreference) findPreference(PREF_INCOGNITO_TAB_HISTORY_ENABLED); ++ if (historyInIncognitoPref != null) { ++ historyInIncognitoPref.setChecked( ++ prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED)); ++ } ++ + Preference secureDnsPref = findPreference(PREF_SECURE_DNS); + if (secureDnsPref != null && secureDnsPref.isVisible()) { + secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext())); +@@ -227,4 +279,8 @@ public class PrivacySettings public void setBottomSheetController(BottomSheetController controller) { mBottomSheetController = controller; } @@ -414,7 +771,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/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -57,6 +57,7 @@ import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; +@@ -61,6 +61,7 @@ import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; import org.chromium.chrome.browser.safety_check.SafetyCheckUpdatesDelegateImpl; import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings; import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate; @@ -422,7 +779,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; -@@ -250,6 +251,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -254,6 +255,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity if (fragment instanceof AdPersonalizationRemovedFragment) { ((AdPersonalizationRemovedFragment) fragment).setSnackbarManager(getSnackbarManager()); } @@ -432,10 +789,34 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin } @Override +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java +@@ -29,10 +29,10 @@ public class HistoricalTabSaver { + /** + * Creates a historical tab from a tab being closed. + */ +- public static void createHistoricalTab(Tab tab) { ++ public static void createHistoricalTab(Tab tab, boolean is_always_incognito) { + if (!shouldSave(tab)) return; + +- HistoricalTabSaverJni.get().createHistoricalTab(tab); ++ HistoricalTabSaverJni.get().createHistoricalTab(tab, is_always_incognito); + } + + /** +@@ -72,6 +72,6 @@ public class HistoricalTabSaver { + + @NativeMethods + interface Natives { +- void createHistoricalTab(Tab tab); ++ void createHistoricalTab(Tab tab, boolean is_always_incognito); + } + } 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 -@@ -123,6 +123,8 @@ import org.chromium.ui.base.DeviceFormFactor; +@@ -122,6 +122,8 @@ import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.IntentRequestTracker; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.util.TokenHolder; @@ -444,7 +825,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab /** * A {@link RootUiCoordinator} variant that controls tabbed-mode specific UI. -@@ -496,11 +498,12 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -495,11 +497,12 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { // TODO(twellington): Supply TabModelSelector as well and move initialization earlier. if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) { @@ -520,7 +901,19 @@ 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; -@@ -741,6 +744,13 @@ public class TabPersistentStore { +@@ -190,7 +193,10 @@ public class TabPersistentStore { + @Override + public void didCloseTab(Tab tab) { + PersistedTabData.onTabClose(tab); +- if (!tab.isIncognito()) HistoricalTabSaver.createHistoricalTab(tab); ++ boolean is_always_incognito = ++ AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); ++ if (!tab.isIncognito() || is_always_incognito) ++ HistoricalTabSaver.createHistoricalTab(tab, is_always_incognito); + removeTabFromQueues(tab); + } + +@@ -741,6 +747,13 @@ public class TabPersistentStore { } } } @@ -579,10 +972,848 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI @Override public @ScreenOrientationLockType.EnumType int getDefaultOrientation() { return mWebappExtras.orientation; +diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java +new file mode 100644 +--- /dev/null ++++ b/chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java +@@ -0,0 +1,112 @@ ++/* ++ 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 . ++*/ ++ ++package org.chromium.chrome.browser.history; ++ ++import android.app.Activity; ++import android.content.Context; ++import android.content.Intent; ++ ++import androidx.test.espresso.intent.rule.IntentsTestRule; ++import androidx.test.filters.SmallTest; ++ ++import org.hamcrest.Matcher; ++import org.junit.Assert; ++import org.junit.After; ++import org.junit.Before; ++import org.junit.Rule; ++import org.junit.Test; ++import org.junit.runner.RunWith; ++import org.chromium.base.test.util.Restriction; ++ ++import org.chromium.chrome.browser.IntentHandler; ++import org.chromium.chrome.browser.incognito.IncognitoUtils; ++import org.chromium.chrome.browser.flags.ChromeSwitches; ++import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.base.ContextUtils; ++import org.chromium.components.prefs.PrefService; ++import org.chromium.components.user_prefs.UserPrefs; ++import org.chromium.chrome.browser.preferences.Pref; ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; ++import android.content.SharedPreferences; ++ ++import org.chromium.chrome.test.ChromeJUnit4ClassRunner; ++import org.chromium.base.test.BaseActivityTestRule; ++import org.chromium.base.test.util.CommandLineFlags; ++import org.chromium.ui.test.util.UiRestriction; ++import org.chromium.content_public.browser.test.util.TestThreadUtils; ++ ++/** ++ * Tests the {@link HistoryManager}. ++ */ ++@RunWith(ChromeJUnit4ClassRunner.class) ++@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) ++@Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) ++public class Bromite_HistoryManagerTest { ++ @Rule ++ public BaseActivityTestRule mIncognitoActivityTestRule = ++ new BaseActivityTestRule<>(HistoryActivity.class); ++ ++ @Before ++ public void setUp() { ++ } ++ ++ @After ++ public void tearDown() { ++ TestThreadUtils.runOnUiThreadBlocking(() -> { ++ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ prefService.clearPref(Pref.INCOGNITO_TAB_HISTORY_ENABLED); ++ ++ SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); ++ SharedPreferences.Editor editor = prefs.edit(); ++ editor.putBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false); ++ editor.apply(); ++ }); ++ } ++ ++ boolean mShouldShowIncognitoPlaceholder = true; ++ ++ @Test ++ @SmallTest ++ public void testShouldShowIncognitoPlaceholder_AlwaysIncognito() throws Exception { ++ // launch HistoryActivity in incognito mode ++ Intent intent = new Intent(ContextUtils.getApplicationContext(), HistoryActivity.class); ++ intent.putExtra(IntentHandler.EXTRA_INCOGNITO_MODE, true); ++ ++ mIncognitoActivityTestRule.launchActivity(intent); ++ HistoryActivity activity = mIncognitoActivityTestRule.getActivity(); ++ HistoryManager historyManager = activity.getHistoryManagerForTests(); ++ Assert.assertTrue(historyManager.isIncognito()); ++ ++ TestThreadUtils.runOnUiThreadBlocking(() -> { ++ // set always incognito on ++ SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); ++ SharedPreferences.Editor editor = prefs.edit(); ++ editor.putBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, true); ++ editor.apply(); ++ ++ // set INCOGNITO_TAB_HISTORY_ENABLED on ++ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ prefService.setBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED, true); ++ ++ mShouldShowIncognitoPlaceholder = historyManager.shouldShowIncognitoPlaceholder(); ++ }); ++ ++ // shouldShowIncognitoPlaceholder must be false ++ Assert.assertFalse(mShouldShowIncognitoPlaceholder); ++ } ++} +diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java b/chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java +new file mode 100644 +--- /dev/null ++++ b/chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java +@@ -0,0 +1,120 @@ ++/* ++ 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 . ++*/ ++ ++package org.chromium.chrome.browser.privacy.settings; ++ ++import android.view.View; ++ ++import androidx.recyclerview.widget.RecyclerView; ++import androidx.test.filters.LargeTest; ++ ++import org.junit.Assert; ++import org.junit.After; ++import org.junit.Before; ++import org.junit.Rule; ++import org.junit.Test; ++import org.junit.rules.RuleChain; ++import org.junit.runner.RunWith; ++ ++import org.chromium.base.test.util.CommandLineFlags; ++import org.chromium.base.test.util.CriteriaHelper; ++import org.chromium.base.test.util.Feature; ++import org.chromium.chrome.R; ++import org.chromium.chrome.browser.flags.ChromeSwitches; ++import org.chromium.chrome.browser.settings.SettingsActivityTestRule; ++import org.chromium.chrome.test.ChromeJUnit4ClassRunner; ++import org.chromium.chrome.test.ChromeTabbedActivityTestRule; ++import org.chromium.chrome.test.util.ChromeRenderTestRule; ++import org.chromium.content_public.browser.test.util.TestThreadUtils; ++ ++import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.preferences.Pref; ++import org.chromium.components.prefs.PrefService; ++import org.chromium.components.user_prefs.UserPrefs; ++import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; ++ ++/** ++ * Tests for {@link PrivacySettings}. ++ */ ++@RunWith(ChromeJUnit4ClassRunner.class) ++@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) ++public class Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito { ++ public final ChromeTabbedActivityTestRule mActivityTestRule = ++ new ChromeTabbedActivityTestRule(); ++ public final SettingsActivityTestRule mSettingsActivityTestRule = ++ new SettingsActivityTestRule<>(PrivacySettings.class); ++ ++ // SettingsActivity has to be finished before the outer CTA can be finished or trying to finish ++ // CTA won't work. ++ @Rule ++ public final RuleChain mRuleChain = ++ RuleChain.outerRule(mActivityTestRule).around(mSettingsActivityTestRule); ++ ++ @Before ++ public void setUp() { ++ mActivityTestRule.startMainActivityOnBlankPage(); ++ } ++ ++ @After ++ public void tearDown() { ++ TestThreadUtils.runOnUiThreadBlocking(() -> { ++ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ prefService.clearPref(Pref.INCOGNITO_TAB_HISTORY_ENABLED); ++ }); ++ } ++ ++ private void waitForOptionsMenu() { ++ CriteriaHelper.pollUiThread(() -> { ++ return mSettingsActivityTestRule.getActivity().findViewById(R.id.menu_id_targeted_help) ++ != null; ++ }); ++ } ++ ++ @Test ++ @LargeTest ++ public void testIncognitoHistoryPreference() { ++ mSettingsActivityTestRule.startSettingsActivity(); ++ waitForOptionsMenu(); ++ PrivacySettings fragment = mSettingsActivityTestRule.getFragment(); ++ TestThreadUtils.runOnUiThreadBlocking(() -> { ++ RecyclerView recyclerView = fragment.getView().findViewById(R.id.recycler_view); ++ recyclerView.scrollToPosition(recyclerView.getAdapter().getItemCount() - 1); ++ }); ++ ++ ChromeSwitchPreference historyInIncognitoPref = ++ (ChromeSwitchPreference) fragment.findPreference(PrivacySettings.PREF_INCOGNITO_TAB_HISTORY_ENABLED); ++ Assert.assertNotNull(historyInIncognitoPref); ++ ++ // Test when ON ++ TestThreadUtils.runOnUiThreadBlocking(() -> { ++ fragment.onPreferenceChange(historyInIncognitoPref, true); ++ ++ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ boolean incognito_tab_history_enabled = prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); ++ Assert.assertTrue(incognito_tab_history_enabled); ++ }); ++ ++ // Test when OFF ++ TestThreadUtils.runOnUiThreadBlocking(() -> { ++ fragment.onPreferenceChange(historyInIncognitoPref, false); ++ ++ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ boolean incognito_tab_history_enabled = prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); ++ Assert.assertFalse(incognito_tab_history_enabled); ++ }); ++ } ++} +diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/HistoricalTabSaverTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/HistoricalTabSaverTest.java +--- a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/HistoricalTabSaverTest.java ++++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/HistoricalTabSaverTest.java +@@ -115,7 +115,7 @@ public class HistoricalTabSaverTest { + + private static void createHistoricTab(Tab tab) { + TestThreadUtils.runOnUiThreadBlocking( +- () -> { HistoricalTabSaver.createHistoricalTab(tab); }); ++ () -> { HistoricalTabSaver.createHistoricalTab(tab, false); }); + } + + private void assertEntriesAre(List expectedEntries) { +diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java +new file mode 100644 +--- /dev/null ++++ b/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java +@@ -0,0 +1,323 @@ ++/* ++ 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 . ++*/ ++ ++package org.chromium.chrome.browser.app.appmenu; ++ ++import static org.mockito.ArgumentMatchers.any; ++import static org.mockito.ArgumentMatchers.anyBoolean; ++import static org.mockito.Mockito.doReturn; ++import static org.mockito.Mockito.when; ++ ++import android.content.Context; ++import android.view.Menu; ++import android.view.MenuItem; ++import android.view.SubMenu; ++import android.view.View; ++import android.widget.PopupMenu; ++ ++import org.hamcrest.Matchers; ++import org.junit.After; ++import org.junit.Assert; ++import org.junit.Before; ++import org.junit.Rule; ++import org.junit.Test; ++import org.junit.rules.TestRule; ++import org.junit.runner.RunWith; ++import org.mockito.Mock; ++import org.mockito.Mockito; ++import org.mockito.MockitoAnnotations; ++import org.robolectric.annotation.Config; ++ ++import org.chromium.base.ContextUtils; ++import org.chromium.base.FeatureList; ++import org.chromium.base.ThreadUtils; ++import org.chromium.base.supplier.ObservableSupplierImpl; ++import org.chromium.base.supplier.OneshotSupplierImpl; ++import org.chromium.base.test.BaseRobolectricTestRunner; ++import org.chromium.base.test.util.JniMocker; ++import org.chromium.chrome.R; ++import org.chromium.chrome.browser.ActivityTabProvider; ++import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl.MenuGroup; ++import org.chromium.chrome.browser.bookmarks.BookmarkBridge; ++import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; ++import org.chromium.chrome.browser.device.DeviceConditions; ++import org.chromium.chrome.browser.device.ShadowDeviceConditions; ++import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher; ++import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; ++import org.chromium.chrome.browser.preferences.Pref; ++import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.tab.Tab; ++import org.chromium.chrome.browser.tabmodel.TabModel; ++import org.chromium.chrome.browser.tabmodel.TabModelFilter; ++import org.chromium.chrome.browser.tabmodel.TabModelFilterProvider; ++import org.chromium.chrome.browser.tabmodel.TabModelSelector; ++import org.chromium.chrome.browser.toolbar.ToolbarManager; ++import org.chromium.chrome.browser.toolbar.menu_button.MenuUiState; ++import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; ++import org.chromium.chrome.test.util.browser.Features; ++import org.chromium.components.prefs.PrefService; ++import org.chromium.components.user_prefs.UserPrefs; ++import org.chromium.components.user_prefs.UserPrefsJni; ++import org.chromium.components.webapps.AppBannerManager; ++import org.chromium.content.browser.ContentFeatureListImpl; ++import org.chromium.content.browser.ContentFeatureListImplJni; ++import org.chromium.content_public.browser.ContentFeatureList; ++import org.chromium.content_public.browser.NavigationController; ++import org.chromium.content_public.browser.WebContents; ++import org.chromium.net.ConnectionType; ++import org.chromium.url.JUnitTestGURLs; ++ ++import java.util.ArrayList; ++import java.util.List; ++ ++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; ++import android.content.SharedPreferences; ++ ++/** ++ * Unit tests for {@link AppMenuPropertiesDelegateImpl}. ++ */ ++@RunWith(BaseRobolectricTestRunner.class) ++public class Bromite_AppMenuPropertiesDelegateUnitTest { ++ @Rule ++ public TestRule mProcessor = new Features.JUnitProcessor(); ++ ++ @Rule ++ public JniMocker mJniMocker = new JniMocker(); ++ ++ @Mock ++ private ActivityTabProvider mActivityTabProvider; ++ @Mock ++ private Tab mTab; ++ @Mock ++ private WebContents mWebContents; ++ @Mock ++ private NavigationController mNavigationController; ++ @Mock ++ private MultiWindowModeStateDispatcher mMultiWindowModeStateDispatcher; ++ @Mock ++ private TabModelSelector mTabModelSelector; ++ @Mock ++ private TabModel mTabModel; ++ @Mock ++ private TabModel mIncognitoTabModel; ++ @Mock ++ private ToolbarManager mToolbarManager; ++ @Mock ++ private View mDecorView; ++ @Mock ++ private OverviewModeBehavior mOverviewModeBehavior; ++ @Mock ++ private UpdateMenuItemHelper mUpdateMenuItemHelper; ++ @Mock ++ private ContentFeatureListImpl.Natives mContentFeatureListJniMock; ++ @Mock ++ private UserPrefs.Natives mUserPrefsJniMock; ++ @Mock ++ private Profile mProfile; ++ @Mock ++ private PrefService mPrefService; ++ @Mock ++ private TabModelFilterProvider mTabModelFilterProvider; ++ @Mock ++ private TabModelFilter mTabModelFilter; ++ ++ private OneshotSupplierImpl mOverviewModeSupplier = ++ new OneshotSupplierImpl<>(); ++ private ObservableSupplierImpl mBookmarkBridgeSupplier = ++ new ObservableSupplierImpl<>(); ++ ++ private AppMenuPropertiesDelegateImpl mAppMenuPropertiesDelegate; ++ ++ private MenuUiState mMenuUiState; ++ ++ @Before ++ public void setUp() { ++ MockitoAnnotations.initMocks(this); ++ ++ mOverviewModeSupplier.set(mOverviewModeBehavior); ++ when(mTab.getWebContents()).thenReturn(mWebContents); ++ when(mWebContents.getNavigationController()).thenReturn(mNavigationController); ++ when(mNavigationController.getUseDesktopUserAgent()).thenReturn(false); ++ when(mTabModelSelector.getCurrentModel()).thenReturn(mTabModel); ++ when(mTabModelSelector.getModel(false)).thenReturn((mTabModel)); ++ when(mTabModelSelector.getModel(true)).thenReturn((mIncognitoTabModel)); ++ when(mTabModelSelector.getTabModelFilterProvider()).thenReturn(mTabModelFilterProvider); ++ when(mTabModelFilterProvider.getCurrentTabModelFilter()).thenReturn(mTabModelFilter); ++ when(mTabModelFilter.getTabModel()).thenReturn(mTabModel); ++ ++ UpdateMenuItemHelper.setInstanceForTesting(mUpdateMenuItemHelper); ++ mMenuUiState = new MenuUiState(); ++ doReturn(mMenuUiState).when(mUpdateMenuItemHelper).getUiState(); ++ ++ mJniMocker.mock(ContentFeatureListImplJni.TEST_HOOKS, mContentFeatureListJniMock); ++ mJniMocker.mock(UserPrefsJni.TEST_HOOKS, mUserPrefsJniMock); ++ Profile.setLastUsedProfileForTesting(mProfile); ++ Mockito.when(mUserPrefsJniMock.get(mProfile)).thenReturn(mPrefService); ++ FeatureList.setTestCanUseDefaultsForTesting(); ++ ++ AppMenuPropertiesDelegateImpl obj = new AppMenuPropertiesDelegateImpl( ++ ContextUtils.getApplicationContext(), mActivityTabProvider, ++ mMultiWindowModeStateDispatcher, mTabModelSelector, mToolbarManager, mDecorView, ++ mOverviewModeSupplier, mBookmarkBridgeSupplier); ++ obj.setPrefForTest(mPrefService); ++ mAppMenuPropertiesDelegate = Mockito.spy(obj); ++ } ++ ++ @After ++ public void tearDown() { ++ ThreadUtils.setThreadAssertsDisabledForTesting(false); ++ ChromeAccessibilityUtil.get().setAccessibilityEnabledForTesting(false); ++ ChromeAccessibilityUtil.get().setTouchExplorationEnabledForTesting(false); ++ } ++ ++ private void setUpTestPrefs(SharedPreferences prefs, boolean always_incognito) { ++ SharedPreferences.Editor editor = prefs.edit(); ++ editor.putBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, always_incognito); ++ editor.apply(); ++ } ++ ++ @Test ++ public void testOverviewMenuItems_HideNewTabInAlwaysIncognito() { ++ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); ++ setUpTestPrefs(mPrefs, /*always_incognito*/true); ++ ++ setUpMocksForPageMenu(); ++ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); ++ ++ Menu menu = createTestMenu(); ++ mAppMenuPropertiesDelegate.prepareMenu(menu, null); ++ ++ // in always incognito, open new tab is NOT visible ++ final MenuItem newTabOption = menu.findItem(R.id.new_tab_menu_id); ++ Assert.assertFalse(newTabOption.isVisible()); ++ } ++ ++ @Test ++ public void testOverviewMenuItems_ShowHomeScreenMenuItemInAlwaysIncognito() { ++ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); ++ setUpTestPrefs(mPrefs, /*always_incognito*/true); ++ ++ setUpMocksForPageMenu(); ++ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); ++ ++ Menu menu = createTestMenu(); ++ mAppMenuPropertiesDelegate.prepareMenu(menu, null); ++ ++ // in always incognito, home screen menu is visible ++ final MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id); ++ Assert.assertTrue(homescreenItem.isVisible()); ++ } ++ ++ @Test ++ public void testOverviewMenuItems_HideRecentTabsInAlwaysIncognito() { ++ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); ++ setUpTestPrefs(mPrefs, /*always_incognito*/true); ++ ++ setUpMocksForPageMenu(); ++ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); ++ ++ when(mPrefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED)) ++ .thenReturn(false); ++ ++ Menu menu = createTestMenu(); ++ mAppMenuPropertiesDelegate.prepareMenu(menu, null); ++ ++ // in always incognito, without INCOGNITO_TAB_HISTORY_ENABLED, ++ // recent tabs menu tab is NOT visible ++ final MenuItem recent_tabs_menu = menu.findItem(R.id.recent_tabs_menu_id); ++ Assert.assertFalse(recent_tabs_menu.isVisible()); ++ } ++ ++ @Test ++ public void testOverviewMenuItems_ShowRecentTabsInAlwaysIncognito() { ++ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); ++ setUpTestPrefs(mPrefs, /*always_incognito*/true); ++ ++ setUpMocksForPageMenu(); ++ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); ++ ++ when(mPrefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED)) ++ .thenReturn(true); ++ ++ Menu menu = createTestMenu(); ++ mAppMenuPropertiesDelegate.prepareMenu(menu, null); ++ ++ // in always incognito, with INCOGNITO_TAB_HISTORY_ENABLED ++ // recent tabs menu item is visible ++ final MenuItem recent_tabs_menu = menu.findItem(R.id.recent_tabs_menu_id); ++ Assert.assertTrue(recent_tabs_menu.isVisible()); ++ } ++ ++ @Test ++ public void testOverviewMenuItems_ShowDownloadItemInAlwaysIncognito() { ++ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); ++ setUpTestPrefs(mPrefs, /*always_incognito*/true); ++ ++ setUpMocksForPageMenu(); ++ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); ++ ++ when(mPrefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED)) ++ .thenReturn(true); ++ ++ Menu menu = createTestMenu(); ++ mAppMenuPropertiesDelegate.prepareMenu(menu, null); ++ ++ // in always incognito, with INCOGNITO_TAB_HISTORY_ENABLED ++ // download page menu item is visible ++ final MenuItem offline_page = menu.findItem(R.id.offline_page_id); ++ Assert.assertTrue(offline_page.isVisible()); ++ } ++ ++ private void setUpMocksForPageMenu() { ++ when(mTabModel.isIncognito()).thenReturn(true); ++ when(mIncognitoTabModel.isIncognito()).thenReturn(true); ++ ++ when(mActivityTabProvider.get()).thenReturn(mTab); ++ when(mOverviewModeBehavior.overviewVisible()).thenReturn(false); ++ doReturn(false).when(mAppMenuPropertiesDelegate).shouldCheckBookmarkStar(any(Tab.class)); ++ doReturn(false).when(mAppMenuPropertiesDelegate).shouldEnableDownloadPage(any(Tab.class)); ++ doReturn(false).when(mAppMenuPropertiesDelegate).shouldShowReaderModePrefs(any(Tab.class)); ++ doReturn(false) ++ .when(mAppMenuPropertiesDelegate) ++ .shouldShowManagedByMenuItem(any(Tab.class)); ++ doReturn(false) ++ .when(mAppMenuPropertiesDelegate) ++ .shouldShowTranslateMenuItem(any(Tab.class)); ++ doReturn(new AppBannerManager.InstallStringPair( ++ R.string.menu_add_to_homescreen, R.string.add)) ++ .when(mAppMenuPropertiesDelegate) ++ .getAddToHomeScreenTitle(mTab); ++ setUpIncognitoMocks(); ++ } ++ ++ private void setUpMocksForOverviewMenu() { ++ when(mOverviewModeBehavior.overviewVisible()).thenReturn(true); ++ when(mTabModelSelector.getTotalTabCount()).thenReturn(1); ++ setUpIncognitoMocks(); ++ } ++ ++ private void setUpIncognitoMocks() { ++ doReturn(true).when(mAppMenuPropertiesDelegate).isIncognitoEnabled(); ++ } ++ ++ private Menu createTestMenu() { ++ PopupMenu tempMenu = new PopupMenu(ContextUtils.getApplicationContext(), mDecorView); ++ tempMenu.inflate(mAppMenuPropertiesDelegate.getAppMenuLayoutId()); ++ Menu menu = tempMenu.getMenu(); ++ return menu; ++ } ++} +diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/android/historical_tab_saver.cc +--- a/chrome/browser/android/historical_tab_saver.cc ++++ b/chrome/browser/android/historical_tab_saver.cc +@@ -14,13 +14,18 @@ + #include "components/sessions/core/tab_restore_service.h" + #include "content/public/browser/web_contents.h" + ++#include "chrome/common/pref_names.h" ++#include "components/prefs/pref_registry_simple.h" ++#include "components/prefs/pref_service.h" ++#include "historical_tab_saver.h" ++ + using base::android::JavaParamRef; + + namespace historical_tab_saver { + + namespace { + +-void CreateHistoricalTab(TabAndroid* tab_android) { ++void CreateHistoricalTab(TabAndroid* tab_android, bool is_always_incognito) { + if (!tab_android) { + return; + } +@@ -30,16 +35,21 @@ void CreateHistoricalTab(TabAndroid* tab_android) { + return; + } + ++ auto* profile = Profile::FromBrowserContext(scoped_web_contents->web_contents()->GetBrowserContext()); ++ if (is_always_incognito) { ++ if (profile->GetOriginalProfile()->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) ++ profile = profile->GetOriginalProfile(); ++ } ++ + sessions::TabRestoreService* service = +- TabRestoreServiceFactory::GetForProfile(Profile::FromBrowserContext( +- scoped_web_contents->web_contents()->GetBrowserContext())); ++ TabRestoreServiceFactory::GetForProfile(profile); + if (!service) { + return; + } + +- // Index is unimportant on Android. ++ // index is not important on Android + service->CreateHistoricalTab(sessions::ContentLiveTab::GetForWebContents( +- scoped_web_contents->web_contents()), ++ scoped_web_contents->web_contents()), + /*index=*/-1); + } + +@@ -77,8 +87,9 @@ std::unique_ptr ScopedWebContents::CreateForTab( + // static + static void JNI_HistoricalTabSaver_CreateHistoricalTab( + JNIEnv* env, +- const JavaParamRef& jtab_android) { +- CreateHistoricalTab(TabAndroid::GetNativeTab(env, jtab_android)); ++ const JavaParamRef& jtab_android, ++ jboolean is_always_incognito) { ++ CreateHistoricalTab(TabAndroid::GetNativeTab(env, jtab_android), is_always_incognito); + } + + } // namespace historical_tab_saver +diff --git a/chrome/browser/android/historical_tab_saver.h b/chrome/browser/android/historical_tab_saver.h +--- a/chrome/browser/android/historical_tab_saver.h ++++ b/chrome/browser/android/historical_tab_saver.h +@@ -1,10 +1,25 @@ +-// Copyright 2022 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. ++/* ++ 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 CHROME_BROWSER_ANDROID_HISTORICAL_TAB_SAVER_H_ + #define CHROME_BROWSER_ANDROID_HISTORICAL_TAB_SAVER_H_ + ++#include "content/public/browser/web_contents.h" ++ + #include + + class TabAndroid; +@@ -40,4 +55,9 @@ class ScopedWebContents { + + } // namespace historical_tab_saver + ++ ++// static ++void CreateHistoricalTabForTest(content::WebContents* web_contents, ++ bool is_always_incognito); ++ + #endif // CHROME_BROWSER_ANDROID_HISTORICAL_TAB_SAVER_H_ +diff --git a/chrome/browser/android/historical_tab_saver_unittest.cc b/chrome/browser/android/historical_tab_saver_unittest.cc +new file mode 100644 +--- /dev/null ++++ b/chrome/browser/android/historical_tab_saver_unittest.cc +@@ -0,0 +1,148 @@ ++/* ++ 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 "base/run_loop.h" ++#include "base/strings/stringprintf.h" ++#include "base/strings/utf_string_conversions.h" ++#include "base/task/cancelable_task_tracker.h" ++#include "base/test/bind.h" ++#include "build/build_config.h" ++#include "chrome/browser/history/history_service_factory.h" ++#include "chrome/test/base/chrome_render_view_host_test_harness.h" ++#include "chrome/test/base/testing_profile.h" ++#include "components/history/core/browser/history_constants.h" ++#include "components/history/core/browser/history_service.h" ++#include "components/history/core/browser/history_types.h" ++#include "components/history/core/browser/url_row.h" ++#include "content/public/browser/browser_context.h" ++#include "content/public/browser/navigation_controller.h" ++#include "content/public/browser/web_contents.h" ++#include "content/public/test/mock_navigation_handle.h" ++#include "content/public/test/web_contents_tester.h" ++#include "testing/gmock/include/gmock/gmock.h" ++#include "testing/gtest/include/gtest/gtest.h" ++#include "ui/base/page_transition_types.h" ++ ++#include "chrome/test/base/testing_browser_process.h" ++#include "chrome/test/base/testing_profile_manager.h" ++#include "content/public/test/test_browser_context.h" ++#include "content/test/test_web_contents.h" ++#include "components/sessions/core/tab_restore_service.h" ++#include "components/sessions/core/tab_restore_service_impl.h" ++#include "components/sessions/content/content_live_tab.h" ++#include "chrome/browser/android/historical_tab_saver.h" ++#include "chrome/browser/sessions/tab_restore_service_factory.h" ++#include "chrome/browser/sessions/chrome_tab_restore_service_client.h" ++#include "chrome/common/pref_names.h" ++ ++namespace { ++ ++static std::unique_ptr GetTabRestoreService( ++ content::BrowserContext* browser_context) { ++ return std::make_unique( ++ std::make_unique( ++ Profile::FromBrowserContext(browser_context)), ++ nullptr, nullptr); ++} ++ ++// --gtest_filter=*.Bromite* ++class HistoryTabSaverTest : public ChromeRenderViewHostTestHarness { ++ protected: ++ HistoryTabSaverTest() {} ++ ++ // ChromeRenderViewHostTestHarness: ++ void SetUp() override { ++ ChromeRenderViewHostTestHarness::SetUp(); ++ TabRestoreServiceFactory::GetInstance()->SetTestingFactory( ++ profile(), ++ base::BindRepeating(&GetTabRestoreService)); ++ ASSERT_TRUE(profile()->CreateHistoryService()); ++ } ++ ++ const GURL page_url_ = GURL("http://foo.com"); ++ ++ protected: ++// history::HistoryService* history_service_; ++ ++ DISALLOW_COPY_AND_ASSIGN(HistoryTabSaverTest); ++}; ++ ++TEST_F(HistoryTabSaverTest, Bromite_HistoricalTabForNormalNavigation) { ++ sessions::TabRestoreService* service = ++ TabRestoreServiceFactory::GetForProfile(profile()); ++ ASSERT_NE(nullptr, service); ++ ++ auto* profile_ = profile(); ++ auto web_other_contents = content::TestWebContents::Create(profile_, nullptr); ++ web_other_contents->NavigateAndCommit(page_url_); ++ ++ // Make sure was no entry. ++ ASSERT_EQ(0U, service->entries().size()); ++ ++ CreateHistoricalTabForTest(web_other_contents.get(), /*is_always_incognito*/false); ++ ++ // Make sure entry was created. ++ ASSERT_EQ(1U, service->entries().size()); ++} ++ ++TEST_F(HistoryTabSaverTest, Bromite_HistoricalTabForNavigationInIncognito) { ++ sessions::TabRestoreService* service = ++ TabRestoreServiceFactory::GetForProfile(profile()); ++ ASSERT_NE(nullptr, service); ++ ++ auto* profile_ = profile()->GetOffTheRecordProfile( ++ Profile::OTRProfileID::PrimaryID(), /*create_if_needed=*/true); ++ auto web_other_contents = content::TestWebContents::Create(profile_, nullptr); ++ web_other_contents->NavigateAndCommit(page_url_); ++ ++ // Make sure was no entry. ++ ASSERT_EQ(0U, service->entries().size()); ++ ++ CreateHistoricalTabForTest(web_other_contents.get(), /*is_always_incognito*/false); ++ ++ // Make sure was no entry. ++ ASSERT_EQ(0U, service->entries().size()); ++} ++ ++TEST_F(HistoryTabSaverTest, Bromite_HistoricalTabForNavigationInIncognito_AlwaysIncognito) { ++ sessions::TabRestoreService* service = ++ TabRestoreServiceFactory::GetForProfile(profile()); ++ ASSERT_NE(nullptr, service); ++ ++ auto* profile_ = profile()->GetOffTheRecordProfile( ++ Profile::OTRProfileID::PrimaryID(), /*create_if_needed=*/true); ++ auto web_other_contents = content::TestWebContents::Create(profile_, nullptr); ++ web_other_contents->NavigateAndCommit(page_url_); ++ ++ // test kIncognitoTabHistoryEnabled with false ++ profile()->GetPrefs()->SetBoolean(prefs::kIncognitoTabHistoryEnabled, false); ++ ++ CreateHistoricalTabForTest(web_other_contents.get(), /*is_always_incognito*/true); ++ ++ // Make sure was no entry. ++ ASSERT_EQ(0U, service->entries().size()); ++ ++ // test kIncognitoTabHistoryEnabled with true ++ profile()->GetPrefs()->SetBoolean(prefs::kIncognitoTabHistoryEnabled, true); ++ ++ CreateHistoricalTabForTest(web_other_contents.get(), /*is_always_incognito*/true); ++ ++ // Make sure was the entry. ++ ASSERT_EQ(1U, service->entries().size()); ++} ++ ++} // namespace 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 -@@ -302,6 +302,13 @@ signin::IdentityManager* ChromeAutocompleteProviderClient::GetIdentityManager() +@@ -301,6 +301,13 @@ signin::IdentityManager* ChromeAutocompleteProviderClient::GetIdentityManager() return IdentityManagerFactory::GetForProfile(profile_); } @@ -651,7 +1882,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c 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 -@@ -479,7 +479,7 @@ const base::Feature kCCTIncognito{"CCTIncognito", +@@ -483,7 +483,7 @@ const base::Feature kCCTIncognito{"CCTIncognito", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kCCTIncognitoAvailableToThirdParty{ @@ -660,26 +1891,442 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse const base::Feature kCCTPostMessageAPI{"CCTPostMessageAPI", base::FEATURE_ENABLED_BY_DEFAULT}; +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 +@@ -28,6 +28,9 @@ + #include "chrome/browser/feed/feed_service_factory.h" + #include "components/feed/core/v2/public/feed_api.h" + #include "components/feed/core/v2/public/feed_service.h" ++#include "chrome/common/pref_names.h" ++#include "components/prefs/pref_registry_simple.h" ++#include "components/prefs/pref_service.h" + #else + #include "chrome/browser/ui/browser.h" + #include "chrome/browser/ui/browser_finder.h" +@@ -331,6 +334,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { + history::HistoryService* HistoryTabHelper::GetHistoryService() { + Profile* profile = + Profile::FromBrowserContext(web_contents()->GetBrowserContext()); ++ ++#if BUILDFLAG(IS_ANDROID) ++ if(profile->GetOriginalProfile()->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) { ++ return HistoryServiceFactory::GetForProfile(profile, ServiceAccessType::IMPLICIT_ACCESS); ++ } ++#endif ++ + if (profile->IsOffTheRecord()) + return NULL; + +@@ -338,6 +348,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { + profile, ServiceAccessType::IMPLICIT_ACCESS); + } + ++// static ++void HistoryTabHelper::RegisterProfilePrefs(PrefRegistrySimple* registry) { ++ registry->RegisterBooleanPref(prefs::kIncognitoTabHistoryEnabled, ++ /*default_value=*/false); ++} ++ + void HistoryTabHelper::WebContentsDestroyed() { + // We update the history for this URL. + WebContents* tab = web_contents(); +diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/history/history_tab_helper.h +--- a/chrome/browser/history/history_tab_helper.h ++++ b/chrome/browser/history/history_tab_helper.h +@@ -9,6 +9,8 @@ + #include "build/build_config.h" + #include "content/public/browser/web_contents_observer.h" + #include "content/public/browser/web_contents_user_data.h" ++#include "components/prefs/pref_registry_simple.h" ++#include "components/prefs/pref_service.h" + + namespace history { + struct HistoryAddPageArgs; +@@ -41,6 +43,11 @@ class HistoryTabHelper : public content::WebContentsObserver, + force_eligible_tab_for_testing_ = force; + } + ++ static void RegisterProfilePrefs(PrefRegistrySimple* registry); ++ ++ // Helper function to return the history service. May return null. ++ history::HistoryService* GetHistoryService(); ++ + private: + explicit HistoryTabHelper(content::WebContents* web_contents); + friend class content::WebContentsUserData; +@@ -69,9 +76,6 @@ class HistoryTabHelper : public content::WebContentsObserver, + bool started_from_context_menu, + bool renderer_initiated) override; + +- // Helper function to return the history service. May return null. +- history::HistoryService* GetHistoryService(); +- + // Returns true if our observed web contents is an eligible tab. + bool IsEligibleTab(const history::HistoryAddPageArgs& add_page_args) const; + +diff --git a/chrome/browser/history/history_tab_helper_unittest.cc b/chrome/browser/history/history_tab_helper_unittest.cc +--- a/chrome/browser/history/history_tab_helper_unittest.cc ++++ b/chrome/browser/history/history_tab_helper_unittest.cc +@@ -43,6 +43,9 @@ + + using testing::NiceMock; + ++#include "chrome/common/pref_names.h" ++#include "content/test/test_web_contents.h" ++ + namespace { + + #if BUILDFLAG(IS_ANDROID) +@@ -52,6 +55,25 @@ class TestFeedApi : public feed::StubFeedApi { + }; + #endif + ++TEST_F(HistoryTabHelperTest, Bromite_CheckHistoryService_IncognitoTabHistoryEnabled) { ++ auto* profile_ = profile()->GetOffTheRecordProfile( ++ Profile::OTRProfileID::PrimaryID(), /*create_if_needed=*/true); ++ auto web_other_contents = content::TestWebContents::Create(profile_, nullptr); ++ web_other_contents->NavigateAndCommit(page_url_); ++ ++ HistoryTabHelper::CreateForWebContents(web_other_contents.get()); ++ HistoryTabHelper* history_tab_helper = HistoryTabHelper::FromWebContents(web_other_contents.get()); ++ ASSERT_NE(nullptr, history_tab_helper); ++ ++ // test kIncognitoTabHistoryEnabled with false ++ profile()->GetPrefs()->SetBoolean(prefs::kIncognitoTabHistoryEnabled, false); ++ ASSERT_EQ(nullptr, history_tab_helper->GetHistoryService()); ++ ++ // test kIncognitoTabHistoryEnabled with true ++ profile()->GetPrefs()->SetBoolean(prefs::kIncognitoTabHistoryEnabled, true); ++ ASSERT_NE(nullptr, history_tab_helper->GetHistoryService()); ++} ++ + } // namespace + + class HistoryTabHelperTest : public ChromeRenderViewHostTestHarness { +diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrome/browser/offline_pages/android/offline_page_bridge.cc +--- a/chrome/browser/offline_pages/android/offline_page_bridge.cc ++++ b/chrome/browser/offline_pages/android/offline_page_bridge.cc +@@ -48,6 +48,9 @@ + #include "content/public/browser/web_contents.h" + #include "net/base/filename_util.h" + #include "url/android/gurl_android.h" ++#include "components/prefs/pref_registry_simple.h" ++#include "components/prefs/pref_service.h" ++#include "chrome/common/pref_names.h" + + using base::android::ConvertJavaStringToUTF8; + using base::android::ConvertUTF16ToJavaString; +@@ -157,7 +160,13 @@ void ValidateFileCallback( + int64_t offline_id, + const GURL& url, + const base::FilePath& file_path, ++ SimpleFactoryKey* key, + bool is_trusted) { ++ // in always incognito, never trust input file (show file name in url) ++ ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key); ++ if(profile_key->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) ++ is_trusted = false; ++ + // If trusted, the launch url will be the http/https url of the offline + // page. If the file path is content URI, directly open it. Otherwise, the + // launch url will be the file URL pointing to the archive file of the offline +@@ -788,7 +797,7 @@ void OfflinePageBridge::GetPageByOfflineIdDone( + if (offline_page_model_->IsArchiveInInternalDir(offline_page->file_path)) { + ValidateFileCallback(launch_location, j_callback_obj, + offline_page->offline_id, offline_page->url, +- offline_page->file_path, true /* is_trusted*/); ++ offline_page->file_path, key_, true /* is_trusted*/); + return; + } + +@@ -798,7 +807,7 @@ void OfflinePageBridge::GetPageByOfflineIdDone( + offline_page->file_size, offline_page->digest), + base::BindOnce(&ValidateFileCallback, launch_location, j_callback_obj, + offline_page->offline_id, offline_page->url, +- offline_page->file_path)); ++ offline_page->file_path, key_)); + } + + void OfflinePageBridge::GetSizeAndComputeDigestDone( +diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc b/chrome/browser/offline_pages/android/offline_page_model_factory.cc +--- a/chrome/browser/offline_pages/android/offline_page_model_factory.cc ++++ b/chrome/browser/offline_pages/android/offline_page_model_factory.cc +@@ -26,6 +26,9 @@ + #include "components/keyed_service/core/simple_dependency_manager.h" + #include "components/offline_pages/core/model/offline_page_model_taskified.h" + #include "components/offline_pages/core/offline_page_metadata_store.h" ++#include "components/prefs/pref_registry_simple.h" ++#include "components/prefs/pref_service.h" ++#include "chrome/common/pref_names.h" + + namespace offline_pages { + +@@ -48,6 +51,7 @@ OfflinePageModel* OfflinePageModelFactory::GetForKey(SimpleFactoryKey* key) { + OfflinePageModel* OfflinePageModelFactory::GetForBrowserContext( + content::BrowserContext* browser_context) { + Profile* profile = Profile::FromBrowserContext(browser_context); ++ profile = profile->GetOriginalProfile(); + return GetForKey(profile->GetProfileKey()); + } + +@@ -56,13 +60,15 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( + scoped_refptr background_task_runner = + base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}); + ++ ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key)->GetOriginalKey(); ++ + base::FilePath store_path = +- key->GetPath().Append(chrome::kOfflinePageMetadataDirname); ++ profile_key->GetPath().Append(chrome::kOfflinePageMetadataDirname); + std::unique_ptr metadata_store( + new OfflinePageMetadataStore(background_task_runner, store_path)); + + base::FilePath persistent_archives_dir = +- key->GetPath().Append(chrome::kOfflinePageArchivesDirname); ++ profile_key->GetPath().Append(chrome::kOfflinePageArchivesDirname); + // If base::PathService::Get returns false, the temporary_archives_dir will be + // empty, and no temporary pages will be saved during this chrome lifecycle. + base::FilePath temporary_archives_dir; +@@ -71,7 +77,6 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( + temporary_archives_dir.Append(chrome::kOfflinePageArchivesDirname); + } + +- ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key); + auto archive_manager = std::make_unique( + temporary_archives_dir, persistent_archives_dir, + DownloadPrefs::GetDefaultDownloadDirectory(), background_task_runner, +@@ -91,4 +96,14 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( + return model; + } + ++SimpleFactoryKey* OfflinePageModelFactory::GetKeyToUse( ++ SimpleFactoryKey* key) const { ++ ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key); ++ if(profile_key->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == false) { ++ return SimpleKeyedServiceFactory::GetKeyToUse(key); ++ } else { ++ return profile_key->GetOriginalKey(); ++ } ++} ++ + } // namespace offline_pages +diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc b/chrome/browser/offline_pages/android/request_coordinator_factory.cc +--- a/chrome/browser/offline_pages/android/request_coordinator_factory.cc ++++ b/chrome/browser/offline_pages/android/request_coordinator_factory.cc +@@ -30,6 +30,11 @@ + #include "components/offline_pages/core/offline_page_feature.h" + #include "content/public/browser/web_contents.h" + ++#include "chrome/browser/profiles/incognito_helpers.h" ++#include "components/prefs/pref_registry_simple.h" ++#include "components/prefs/pref_service.h" ++#include "chrome/common/pref_names.h" ++ + namespace network { + class NetworkQualityTracker; + } +@@ -115,4 +120,16 @@ KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor( + return request_coordinator; + } + ++content::BrowserContext* ++RequestCoordinatorFactory::GetBrowserContextToUse( ++ content::BrowserContext* context) const { ++ if(Profile::FromBrowserContext(context)->GetOriginalProfile() ++ ->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == false) { ++ return BrowserContextKeyedServiceFactory::GetBrowserContextToUse(context); ++ } else { ++ return chrome::GetBrowserContextRedirectedInIncognito(context); ++ } ++} ++ ++ + } // namespace offline_pages +diff --git a/chrome/browser/offline_pages/offline_page_model_factory.h b/chrome/browser/offline_pages/offline_page_model_factory.h +--- a/chrome/browser/offline_pages/offline_page_model_factory.h ++++ b/chrome/browser/offline_pages/offline_page_model_factory.h +@@ -48,6 +48,7 @@ class OfflinePageModelFactory : public SimpleKeyedServiceFactory { + + std::unique_ptr BuildServiceInstanceFor( + SimpleFactoryKey* key) const override; ++ SimpleFactoryKey* GetKeyToUse(SimpleFactoryKey* key) const override; + }; + + } // namespace offline_pages +diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/offline_pages/recent_tab_helper.cc +--- a/chrome/browser/offline_pages/recent_tab_helper.cc ++++ b/chrome/browser/offline_pages/recent_tab_helper.cc +@@ -29,6 +29,11 @@ + #include "content/public/browser/navigation_entry.h" + #include "content/public/browser/navigation_handle.h" + ++#include "chrome/browser/profiles/profile.h" ++#include "components/prefs/pref_registry_simple.h" ++#include "components/prefs/pref_service.h" ++#include "chrome/common/pref_names.h" ++ + namespace { + class DefaultRecentTabHelperDelegate + : public offline_pages::RecentTabHelper::Delegate { +@@ -181,6 +186,13 @@ bool RecentTabHelper::EnsureInitialized() { + // WebContents with its origin as well. + snapshots_enabled_ = !tab_id_.empty() && + !web_contents()->GetBrowserContext()->IsOffTheRecord(); ++ if(!tab_id_.empty() && web_contents()->GetBrowserContext()->IsOffTheRecord()) { ++ if(Profile::FromBrowserContext(web_contents()->GetBrowserContext()) ++ ->GetOriginalProfile() ++ ->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == true) { ++ snapshots_enabled_ = true; ++ } ++ } + + if (snapshots_enabled_) { + page_model_ = OfflinePageModelFactory::GetForBrowserContext( +diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome/browser/offline_pages/request_coordinator_factory.h +--- a/chrome/browser/offline_pages/request_coordinator_factory.h ++++ b/chrome/browser/offline_pages/request_coordinator_factory.h +@@ -36,6 +36,8 @@ class RequestCoordinatorFactory : public BrowserContextKeyedServiceFactory { + + KeyedService* BuildServiceInstanceFor( + content::BrowserContext* context) const override; ++ content::BrowserContext* GetBrowserContextToUse( ++ content::BrowserContext* context) const override; + }; + + } // namespace offline_pages 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 -@@ -1335,6 +1335,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, - variations::VariationsService::RegisterProfilePrefs(registry); - video_tutorials::RegisterPrefs(registry); +@@ -218,6 +218,7 @@ + #include "components/feed/core/shared_prefs/pref_names.h" + + #if BUILDFLAG(IS_ANDROID) ++#include "chrome/browser/history/history_tab_helper.h" + #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" +@@ -1313,6 +1314,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, + + #if BUILDFLAG(ENABLE_FEED_V2) feed::prefs::RegisterFeedSharedProfilePrefs(registry); + // register incognito pref + registry->RegisterBooleanPref(prefs::kAlwaysIncognitoEnabled, + /*default_value=*/false); ++ HistoryTabHelper::RegisterProfilePrefs(registry); feed::RegisterProfilePrefs(registry); - #else // BUILDFLAG(IS_ANDROID) - AppShortcutManager::RegisterProfilePrefs(registry); + #endif + +diff --git a/chrome/browser/ui/android/native_page/BUILD.gn b/chrome/browser/ui/android/native_page/BUILD.gn +--- a/chrome/browser/ui/android/native_page/BUILD.gn ++++ b/chrome/browser/ui/android/native_page/BUILD.gn +@@ -32,8 +32,10 @@ java_library("junit") { + + deps = [ + ":java", ++ "//base:base_java", + "//base:base_junit_test_support", + "//third_party/android_deps:robolectric_all_java", + "//third_party/junit", ++ "//components/embedder_support/android:util_java", + ] + } +diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java +--- a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java ++++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java +@@ -16,6 +16,8 @@ import org.chromium.url.GURL; + import java.lang.annotation.Retention; + import java.lang.annotation.RetentionPolicy; + ++import org.chromium.base.ContextUtils; ++ + /** + * An interface for pages that will be using Android views instead of html/rendered Web content. + */ +@@ -120,12 +122,12 @@ public interface NativePage { + */ + @Deprecated // Use GURL-variant instead. + public static boolean isNativePageUrl(String url, boolean isIncognito) { +- return nativePageType(url, null, isIncognito) != NativePageType.NONE; ++ return nativePageType(url, null, isIncognito, false) != NativePageType.NONE; + } + + public static boolean isNativePageUrl(GURL url, boolean isIncognito) { + return url != null +- && nativePageType(url.getSpec(), null, isIncognito) != NativePageType.NONE; ++ && nativePageType(url.getSpec(), null, isIncognito, false) != NativePageType.NONE; + } + + /** +@@ -136,7 +138,8 @@ public interface NativePage { + */ + // TODO(crbug/783819) - Convert to using GURL. + public static @NativePageType int nativePageType( +- String url, NativePage candidatePage, boolean isIncognito) { ++ String url, NativePage candidatePage, boolean isIncognito, ++ boolean isAlwaysIncognito) { + if (url == null) return NativePageType.NONE; + + Uri uri = Uri.parse(url); +@@ -158,7 +161,8 @@ public interface NativePage { + return NativePageType.DOWNLOADS; + } else if (UrlConstants.HISTORY_HOST.equals(host)) { + return NativePageType.HISTORY; +- } else if (UrlConstants.RECENT_TABS_HOST.equals(host) && !isIncognito) { ++ } else if (UrlConstants.RECENT_TABS_HOST.equals(host) && ++ (!isIncognito || isAlwaysIncognito)) { + return NativePageType.RECENT_TABS; + } else if (UrlConstants.EXPLORE_HOST.equals(host)) { + return NativePageType.EXPLORE; +diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageTest.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageTest.java +--- a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageTest.java ++++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageTest.java +@@ -12,6 +12,10 @@ import org.robolectric.annotation.Config; + import org.chromium.base.test.BaseRobolectricTestRunner; + import org.chromium.chrome.browser.ui.native_page.NativePage.NativePageType; + ++import org.chromium.base.ContextUtils; ++import org.chromium.components.embedder_support.util.UrlConstants; ++import android.content.SharedPreferences; ++ + /** + * Tests public methods in NativePage. + */ +@@ -91,4 +95,26 @@ public class NativePageTest { + Assert.assertFalse(invalidUrl, NativePage.isNativePageUrl(invalidUrl, true)); + } + } ++ ++ @Test ++ public void Bromite_testNativePage_RecentTabsInAlwaysIncognito() { ++ SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); ++ SharedPreferences.Editor editor = prefs.edit(); ++ ++ String url = "chrome-native://recent-tabs"; ++ ++ editor.putBoolean(/*AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO*/ ++ "always_incognito", false); ++ editor.apply(); ++ ++ Assert.assertEquals(NativePageType.NONE, ++ NativePage.nativePageType(url, null, /*isIncognito*/true)); ++ ++ editor.putBoolean(/*AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO*/ ++ "always_incognito", true); ++ editor.apply(); ++ ++ Assert.assertEquals(NativePageType.RECENT_TABS, ++ NativePage.nativePageType(url, null, /*isIncognito*/true)); ++ } + } 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 -@@ -1110,6 +1110,19 @@ Your Google account may have other forms of browsing history like searches and a - - Clears history from all synced devices. +@@ -1106,6 +1106,27 @@ Your Google account may have other forms of browsing history like searches and a + + Clears history, including in the search box. ++ + + + Open links in incognito tabs always @@ -687,14 +2334,21 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro + + Opens links in incognito tabs when you click on new tab or on a link + -+ ++ + Relaunch + -+ ++ + Your changes will take effect the next time you relaunch Bromite. + - - Clears history and autocompletions in the address bar. Your Google Account may have other forms of browsing history at <link>myactivity.google.com</link>. ++ ++ Enable history in incognito tabs ++ ++ ++ Record history even in incognito mode ++ ++ + + Clears history from all synced devices. diff --git a/chrome/browser/ui/messages/android/BUILD.gn b/chrome/browser/ui/messages/android/BUILD.gn --- a/chrome/browser/ui/messages/android/BUILD.gn @@ -742,12 +2396,14 @@ new file mode 100644 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 -@@ -3284,6 +3284,10 @@ const char kShowCaretBrowsingDialog[] = +@@ -3281,6 +3281,12 @@ const char kShowCaretBrowsingDialog[] = const char kLacrosLaunchSwitch[] = "lacros_launch_switch"; #endif +#if BUILDFLAG(IS_ANDROID) +const char kAlwaysIncognitoEnabled[] = "always_incognito_enabled"; ++const char kIncognitoTabHistoryEnabled[] = ++ "incognito_tab_history_enabled"; +#endif + #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -756,7 +2412,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 -@@ -1166,6 +1166,7 @@ extern const char kDiscountConsentShowInterestIn[]; +@@ -1167,6 +1167,7 @@ extern const char kDiscountConsentShowInterestIn[]; #if BUILDFLAG(IS_ANDROID) extern const char kWebXRImmersiveArEnabled[]; @@ -764,6 +2420,32 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h #endif #if !BUILDFLAG(IS_ANDROID) +@@ -1203,6 +1204,10 @@ extern const char kPrivacyGuideViewed[]; + + extern const char kCorsNonWildcardRequestHeadersSupport[]; + ++#if BUILDFLAG(IS_ANDROID) ++extern const char kIncognitoTabHistoryEnabled[]; ++#endif ++ + extern const char kOriginAgentClusterDefaultEnabled[]; + + extern const char kForceMajorVersionToMinorPositionInUserAgent[]; +diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn +--- a/chrome/test/BUILD.gn ++++ b/chrome/test/BUILD.gn +@@ -5198,6 +5198,11 @@ test("unit_tests") { + sources += [ "../browser/page_load_metrics/observers/side_search_page_load_metrics_observer_unittest.cc" ] + } + ++ # Bromite tests ++ sources += [ ++ "../browser/android/historical_tab_saver_unittest.cc", ++ ] ++ + if (is_android) { + sources += [ + "../browser/android/bookmarks/partner_bookmarks_shim_unittest.cc", 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 diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index 137b5b78..a9f8b1e2 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -701,7 +701,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -1815,6 +1815,13 @@ static_library("browser") { +@@ -1835,6 +1835,13 @@ static_library("browser") { "webid/federated_identity_sharing_permission_context_factory.h", ] @@ -715,7 +715,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", -@@ -2986,6 +2993,8 @@ static_library("browser") { +@@ -2984,6 +2991,8 @@ static_library("browser") { "autofill/manual_filling_view_interface.h", "banners/android/chrome_app_banner_manager_android.cc", "banners/android/chrome_app_banner_manager_android.h", @@ -724,7 +724,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "browser_process_platform_part_android.cc", "browser_process_platform_part_android.h", "chrome_browser_field_trials_mobile.cc", -@@ -3599,8 +3608,6 @@ static_library("browser") { +@@ -3595,8 +3604,6 @@ static_library("browser") { "badging/badge_manager_factory.h", "banners/app_banner_manager_desktop.cc", "banners/app_banner_manager_desktop.h", @@ -736,7 +736,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 -@@ -7994,6 +7994,12 @@ const FeatureEntry kFeatureEntries[] = { +@@ -8213,6 +8213,12 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kRequestDesktopSiteExceptions)}, #endif @@ -793,7 +793,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse + + // Filter out the URLs with unsupported schemes. + const char* const kInvalidSchemes[] = {"wyciwyg", "place"}; -+ for (size_t i = 0; i < base::size(kInvalidSchemes); ++i) { ++ for (size_t i = 0; i < std::size(kInvalidSchemes); ++i) { + if (url.SchemeIs(kInvalidSchemes[i])) + return false; + } @@ -1248,7 +1248,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse 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 -@@ -5717,6 +5717,11 @@ const char kWebKioskEnableLacrosDescription[] = +@@ -5897,6 +5897,11 @@ const char kWebKioskEnableLacrosDescription[] = "Chrome OS. When disabled, the Ash-chrome will be used"; #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -1263,7 +1263,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 -@@ -3325,6 +3325,9 @@ extern const char kWebKioskEnableLacrosName[]; +@@ -3423,6 +3423,9 @@ extern const char kWebKioskEnableLacrosName[]; extern const char kWebKioskEnableLacrosDescription[]; #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -1276,7 +1276,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 -@@ -171,6 +171,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -174,6 +174,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kAppToWebAttribution, &kBackgroundThreadPool, &kBookmarkBottomSheet, @@ -1387,7 +1387,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** * Whether Chrome is set as the default browser. -@@ -1015,6 +1017,7 @@ public final class ChromePreferenceKeys { +@@ -1020,6 +1022,7 @@ public final class ChromePreferenceKeys { ATTRIBUTION_PROVIDER_LAST_BROWSER_START, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1426,7 +1426,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 -@@ -383,6 +383,9 @@ static_library("common") { +@@ -382,6 +382,9 @@ static_library("common") { sources += [ "media/chrome_media_drm_bridge_client.cc", "media/chrome_media_drm_bridge_client.h", @@ -1463,7 +1463,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/importer/bookmark_html_reader.cc --- a/chrome/utility/importer/bookmark_html_reader.cc +++ b/chrome/utility/importer/bookmark_html_reader.cc -@@ -17,7 +17,9 @@ +@@ -16,7 +16,9 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "chrome/common/importer/imported_bookmark_entry.h" @@ -1473,7 +1473,7 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im #include "components/search_engines/search_terms_data.h" #include "components/search_engines/template_url.h" #include "net/base/data_url.h" -@@ -56,6 +58,7 @@ bool GetAttribute(const std::string& attribute_list, +@@ -55,6 +57,7 @@ bool GetAttribute(const std::string& attribute_list, return true; } @@ -1481,7 +1481,7 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im // Given the URL of a page and a favicon data URL, adds an appropriate record // to the given favicon usage vector. void DataURLToFaviconUsage(const GURL& link_url, -@@ -86,6 +89,7 @@ void DataURLToFaviconUsage(const GURL& link_url, +@@ -85,6 +88,7 @@ void DataURLToFaviconUsage(const GURL& link_url, favicons->push_back(usage); } @@ -1489,7 +1489,7 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im } // namespace -@@ -106,14 +110,28 @@ static std::string stripDt(const std::string& lineDt) { +@@ -105,14 +109,28 @@ static std::string stripDt(const std::string& lineDt) { } void ImportBookmarksFile( @@ -1521,7 +1521,7 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im std::vector lines = base::SplitString( content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); -@@ -126,6 +144,7 @@ void ImportBookmarksFile( +@@ -125,6 +143,7 @@ void ImportBookmarksFile( std::vector path; size_t toolbar_folder_index = 0; std::string charset = "UTF-8"; // If no charset is specified, assume utf-8. @@ -1529,7 +1529,7 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im for (size_t i = 0; i < lines.size() && (cancellation_callback.is_null() || !cancellation_callback.Run()); -@@ -218,10 +237,12 @@ void ImportBookmarksFile( +@@ -217,10 +236,12 @@ void ImportBookmarksFile( } bookmarks->push_back(entry); @@ -1563,15 +1563,15 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/imp diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java -@@ -38,6 +38,7 @@ import org.chromium.base.task.AsyncTask; +@@ -39,6 +39,7 @@ import org.chromium.base.task.AsyncTask; import org.chromium.base.task.PostTask; import org.chromium.base.task.TaskTraits; import org.chromium.ui.R; +import org.chromium.ui.widget.Toast; import org.chromium.ui.UiUtils; + import org.chromium.ui.permissions.PermissionConstants; - import java.io.File; -@@ -56,6 +57,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -58,6 +59,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick private static final String TAG = "SelectFileDialog"; private static final String IMAGE_TYPE = "image"; private static final String VIDEO_TYPE = "video"; @@ -1579,7 +1579,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui private static final String AUDIO_TYPE = "audio"; private static final String ALL_TYPES = "*/*"; -@@ -239,6 +241,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -241,6 +243,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick mFileTypes = fileTypes; } @@ -1591,16 +1591,16 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui /** * Creates and starts an intent based on the passed fileTypes and capture value. * @param fileTypes MIME types requested (i.e. "image/*") -@@ -265,7 +272,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -267,7 +274,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick List missingPermissions = new ArrayList<>(); String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE; boolean shouldUsePhotoPicker = shouldUsePhotoPicker(); - if (shouldUsePhotoPicker) { + if (shouldUsePhotoPicker || shouldShowHtmlTypes()) { - if (!window.hasPermission(storagePermission)) missingPermissions.add(storagePermission); - } else { - if (((mSupportsImageCapture && shouldShowImageTypes()) -@@ -293,7 +300,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick + if (BuildInfo.targetsAtLeastT()) { + if (!window.hasPermission(PermissionConstants.READ_MEDIA_IMAGES) + && shouldShowImageTypes()) { +@@ -308,7 +315,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick } // TODO(finnur): Remove once we figure out the cause of crbug.com/950024. @@ -1609,16 +1609,16 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui if (permissions.length != requestPermissions.length) { throw new RuntimeException( String.format("Permissions arrays misaligned: %d != %d", -@@ -307,7 +314,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -322,7 +329,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick } } -- if (shouldUsePhotoPicker && permissions[i].equals(storagePermission)) { -+ if ((shouldUsePhotoPicker || shouldShowHtmlTypes()) && permissions[i].equals(storagePermission)) { - onFileNotSelected(); - return; - } -@@ -503,6 +510,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +- if (shouldUsePhotoPicker) { ++ if (shouldUsePhotoPicker || shouldShowHtmlTypes()) { + if (permissions[i].equals(storagePermission) + || permissions[i].equals(PermissionConstants.READ_MEDIA_IMAGES) + || permissions[i].equals( +@@ -523,6 +530,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick } if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType); } @@ -1626,7 +1626,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui return mimeTypes; } -@@ -808,6 +816,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -828,6 +836,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick return countAcceptTypesFor(superType) == mFileTypes.size(); } @@ -1640,7 +1640,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui diff --git a/ui/android/java/strings/android_ui_strings.grd b/ui/android/java/strings/android_ui_strings.grd --- a/ui/android/java/strings/android_ui_strings.grd +++ b/ui/android/java/strings/android_ui_strings.grd -@@ -174,6 +174,9 @@ +@@ -177,6 +177,9 @@ Failed to open selected file diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index 5e34735e..5139f435 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -123,7 +123,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco 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 -@@ -93,6 +93,9 @@ public class PrivacySettings +@@ -94,6 +94,9 @@ public class PrivacySettings private ViewGroup mDialogContainer; private BottomSheetController mBottomSheetController; @@ -133,7 +133,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { PrivacyPreferencesManagerImpl privacyPrefManager = -@@ -163,6 +166,9 @@ public class PrivacySettings +@@ -170,6 +173,9 @@ public class PrivacySettings updatePreferences(); } @@ -143,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); -@@ -181,6 +187,14 @@ public class PrivacySettings +@@ -188,6 +194,14 @@ public class PrivacySettings if (!mSnackbarManager.isShowing()) { mSnackbarManager.showSnackbar(mSnackbar); } @@ -158,7 +158,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } else if (PREF_HTTPS_FIRST_MODE.equals(key)) { UserPrefs.get(Profile.getLastUsedRegularProfile()) .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue); -@@ -211,6 +225,16 @@ public class PrivacySettings +@@ -218,6 +232,16 @@ public class PrivacySettings canMakePaymentPref.setChecked(prefService.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED)); } @@ -194,7 +194,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAsso 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 -@@ -4617,6 +4617,21 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

Show original diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index 09425b53..34ac4a0e 100644 --- a/build/patches/Add-exit-menu-item.patch +++ b/build/patches/Add-exit-menu-item.patch @@ -66,15 +66,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct /** * This is the main activity for ChromeMobile when not running in document mode. All the tabs * are accessible via a chrome specific tab switching UI. -@@ -2094,6 +2096,8 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -2397,6 +2398,11 @@ public abstract class ChromeActivity return true; } @@ -117,7 +117,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 -@@ -3344,6 +3344,9 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

Dark theme diff --git a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch index b59708ac..4c7cc466 100644 --- a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -15,7 +15,7 @@ and internal chrome:// pages will be used for the autocomplete results. 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 -@@ -464,6 +464,22 @@ const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = { +@@ -466,6 +466,22 @@ const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = { #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -38,7 +38,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNone[] = { {"mode", "always-none"}}; const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNewTab[] = { -@@ -3617,7 +3633,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3717,7 +3733,11 @@ const FeatureEntry kFeatureEntries[] = { kOsMac | kOsLinux | kOsWin, FEATURE_VALUE_TYPE(features::kSystemNotifications)}, #endif // BUILDFLAG(ENABLE_SYSTEM_NOTIFICATIONS) && !BUILDFLAG(IS_CHROMEOS_ASH) @@ -63,7 +63,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "base/feature_list.h" #include "base/format_macros.h" #include "base/metrics/histogram.h" -@@ -272,6 +274,15 @@ AutocompleteController::AutocompleteController( +@@ -292,6 +294,15 @@ AutocompleteController::AutocompleteController( search_service_worker_signal_sent_(false), template_url_service_(provider_client_->GetTemplateURLService()) { provider_types &= ~OmniboxFieldTrial::GetDisabledProviderTypes(); diff --git a/build/patches/Add-flag-for-save-data-header.patch b/build/patches/Add-flag-for-save-data-header.patch index 8092569d..1d174474 100644 --- a/build/patches/Add-flag-for-save-data-header.patch +++ b/build/patches/Add-flag-for-save-data-header.patch @@ -14,7 +14,7 @@ Subject: Add flag for save-data-header 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 -@@ -4204,7 +4204,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4312,7 +4312,10 @@ const FeatureEntry kFeatureEntries[] = { {"force-text-direction", flag_descriptions::kForceTextDirectionName, flag_descriptions::kForceTextDirectionDescription, kOsAll, MULTI_VALUE_TYPE(kForceTextDirectionChoices)}, @@ -29,7 +29,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -1148,6 +1148,10 @@ const char kDisableKeepaliveFetchDescription[] = +@@ -1144,6 +1144,10 @@ const char kDisableKeepaliveFetchDescription[] = "Disable fetch with keepalive set " "(https://fetch.spec.whatwg.org/#request-keepalive-flag)."; @@ -43,7 +43,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 -@@ -616,6 +616,9 @@ extern const char kDiagnosticsAppNavigationDescription[]; +@@ -612,6 +612,9 @@ extern const char kDiagnosticsAppNavigationDescription[]; extern const char kDisableKeepaliveFetchName[]; extern const char kDisableKeepaliveFetchDescription[]; @@ -87,7 +87,7 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h -@@ -50,6 +50,8 @@ extern const base::Feature kDisableKeepaliveFetch; +@@ -47,6 +47,8 @@ extern const base::Feature kDisableKeepaliveFetch; COMPONENT_EXPORT(NETWORK_CPP) extern const base::Feature kOpaqueResponseBlockingV01; 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 66f77ce5..3676f106 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 -@@ -857,6 +857,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = { +@@ -884,6 +884,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 == -@@ -4184,6 +4189,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4290,6 +4295,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAndroidPictureInPictureAPIName, flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid, FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)}, @@ -44,9 +44,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 -@@ -1635,6 +1635,10 @@ const char kLogJsConsoleMessagesDescription[] = - "Enable logging JS console messages in system logs, please note that they " - "may contain PII."; +@@ -1661,6 +1661,10 @@ const char kUnthrottledNestedTimeoutDescription[] = + "websites abusing the API will still eventually have their setTimeouts " + "clamped."; +const char kMaxConnectionsPerHostName[] = "Maximum connections per host"; +const char kMaxConnectionsPerHostDescription[] = @@ -58,9 +58,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -934,6 +934,9 @@ extern const char kLensCameraAssistedSearchDescription[]; - extern const char kLogJsConsoleMessagesName[]; - extern const char kLogJsConsoleMessagesDescription[]; +@@ -942,6 +942,9 @@ extern const char kLogJsConsoleMessagesDescription[]; + extern const char kUnthrottledNestedTimeoutName[]; + extern const char kUnthrottledNestedTimeoutDescription[]; +extern const char kMaxConnectionsPerHostName[]; +extern const char kMaxConnectionsPerHostDescription[]; @@ -121,7 +121,7 @@ diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/compon diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc --- a/net/socket/client_socket_pool_manager.cc +++ b/net/socket/client_socket_pool_manager.cc -@@ -20,6 +20,10 @@ +@@ -19,6 +19,10 @@ #include "net/socket/client_socket_handle.h" #include "net/socket/client_socket_pool.h" #include "net/socket/connect_job.h" @@ -132,7 +132,7 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket #include "net/ssl/ssl_config.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "url/gurl.h" -@@ -173,6 +177,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool( +@@ -172,6 +176,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool( int ClientSocketPoolManager::max_sockets_per_group( HttpNetworkSession::SocketPoolType pool_type) { DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES); 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 00df6f1f..514747b8 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,7 +13,7 @@ Disable it by default on Android as it is everywhere else diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -2922,6 +2922,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3024,6 +3024,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWebRtcRemoteEventLogName, flag_descriptions::kWebRtcRemoteEventLogDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kWebRtcRemoteEventLog)}, @@ -27,7 +27,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -1238,6 +1238,11 @@ const char kEnablePenetratingImageSelectionDescription[] = +@@ -1228,6 +1228,11 @@ const char kEnablePenetratingImageSelectionDescription[] = "Enables image options to be surfaced in the context menu for nodes " "covered by transparent overlays."; @@ -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 -@@ -688,6 +688,9 @@ extern const char kEnablePortalsDescription[]; +@@ -675,6 +675,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 -@@ -283,11 +283,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad", +@@ -284,11 +284,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 32449918..3db5425e 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 -@@ -5102,6 +5102,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -5247,6 +5247,10 @@ const FeatureEntry kFeatureEntries[] = { {"enable-reader-mode-in-cct", flag_descriptions::kReaderModeInCCTName, flag_descriptions::kReaderModeInCCTDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)}, @@ -30,7 +30,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 -@@ -3029,6 +3029,10 @@ const char kCCTResizableForThirdPartiesName[] = +@@ -3086,6 +3086,10 @@ const char kCCTResizableForThirdPartiesName[] = const char kCCTResizableForThirdPartiesDescription[] = "Enable bottom sheet Custom Tabs for third party apps."; @@ -44,7 +44,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -748,6 +748,9 @@ extern const char kEnableWasmLazyCompilationName[]; +@@ -744,6 +744,9 @@ extern const char kEnableWasmLazyCompilationName[]; extern const char kEnableWasmLazyCompilationDescription[]; extern const char kEnableWasmTieringName[]; @@ -100,7 +100,7 @@ diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/compon diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc -@@ -102,6 +102,7 @@ +@@ -103,6 +103,7 @@ #include "net/log/net_log_event_type.h" #include "net/log/net_log_source.h" #include "net/log/net_log_source_type.h" @@ -108,7 +108,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" -@@ -3906,8 +3907,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) { +@@ -3937,8 +3938,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) { if (last_ipv6_probe_time_.is_null() || (tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() > kIPv6ProbePeriodMs) { diff --git a/build/patches/Add-flag-to-disable-WebGL.patch b/build/patches/Add-flag-to-disable-WebGL.patch index 2fe937cb..bd8825bd 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 -@@ -2856,6 +2856,9 @@ constexpr FeatureEntry::FeatureVariation kLensStandaloneVariations[] = { +@@ -2958,6 +2958,9 @@ constexpr FeatureEntry::FeatureVariation kLensStandaloneVariations[] = { // When adding a new choice, add it to the end of the list. const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and @@ -24,7 +24,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -718,6 +718,10 @@ const char kDocumentTransitionSlowdownFactorName[] = +@@ -725,6 +725,10 @@ const char kDocumentTransitionSlowdownFactorName[] = const char kDocumentTransitionSlowdownFactorDescription[] = "Slows down animations triggered by documentTransition JavaScript API for " "debugging."; @@ -38,7 +38,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -398,6 +398,9 @@ extern const char kForceColorProfileSRGB[]; +@@ -397,6 +397,9 @@ extern const char kForceColorProfileSRGB[]; extern const char kForceColorProfileP3[]; extern const char kForceColorProfileColorSpin[]; extern const char kForceColorProfileSCRGBLinear[]; diff --git a/build/patches/Add-flag-to-disable-external-intent-requests.patch b/build/patches/Add-flag-to-disable-external-intent-requests.patch index d405fd87..35d45961 100644 --- a/build/patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/patches/Add-flag-to-disable-external-intent-requests.patch @@ -11,7 +11,7 @@ Subject: Add flag to disable external intent requests 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 -@@ -2910,6 +2910,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3012,6 +3012,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWebrtcCaptureMultiChannelApmName, flag_descriptions::kWebrtcCaptureMultiChannelApmDescription, kOsAll, FEATURE_VALUE_TYPE(features::kWebRtcEnableCaptureMultiChannelApm)}, @@ -24,7 +24,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -3424,6 +3424,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support"; +@@ -3479,6 +3479,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support"; const char kPhotoPickerVideoSupportDescription[] = "Enables video files to be shown in the Photo Picker dialog"; @@ -40,7 +40,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 -@@ -1979,6 +1979,9 @@ extern const char kQueryTilesNTPDescription[]; +@@ -2003,6 +2003,9 @@ extern const char kQueryTilesNTPDescription[]; extern const char kQueryTilesOmniboxName[]; extern const char kQueryTilesOmniboxDescription[]; extern const char kQueryTilesSingleTierName[]; diff --git a/build/patches/Add-flag-to-disable-vibration.patch b/build/patches/Add-flag-to-disable-vibration.patch index 2bfcd084..c81058cc 100644 --- a/build/patches/Add-flag-to-disable-vibration.patch +++ b/build/patches/Add-flag-to-disable-vibration.patch @@ -18,7 +18,7 @@ Subject: Add flag to disable vibration 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 -@@ -6455,6 +6455,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -6635,6 +6635,10 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kNewMacNotificationAPI)}, #endif @@ -32,7 +32,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 -@@ -5506,6 +5506,9 @@ const char kDefaultCalculatorWebAppDescription[] = +@@ -5668,6 +5668,9 @@ const char kDefaultCalculatorWebAppDescription[] = "chrome app."; #endif // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) @@ -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 -@@ -3330,6 +3330,8 @@ extern const char kWebUITabStripTabDragIntegrationName[]; +@@ -3428,6 +3428,8 @@ extern const char kWebUITabStripTabDragIntegrationName[]; extern const char kWebUITabStripTabDragIntegrationDescription[]; #endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) && BUILDFLAG(IS_CHROMEOS_ASH) @@ -68,7 +68,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -113,6 +113,10 @@ const base::Feature kBackForwardCacheMemoryControls { +@@ -121,6 +121,10 @@ const base::Feature kBackForwardCacheMemoryControls { #endif }; @@ -94,7 +94,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 -@@ -88,6 +88,7 @@ class WebRuntimeFeatures { +@@ -87,6 +87,7 @@ class WebRuntimeFeatures { BLINK_PLATFORM_EXPORT static void EnableBlockingFocusWithoutUserActivation( bool); BLINK_PLATFORM_EXPORT static void EnableCacheInlineScriptCode(bool); @@ -125,7 +125,7 @@ diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.c 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 -@@ -168,6 +168,10 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) { +@@ -164,6 +164,10 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) { RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable); } @@ -139,7 +139,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 -@@ -1640,6 +1640,10 @@ +@@ -1673,6 +1673,10 @@ name: "OrientationEvent", status: {"Android": "stable"}, }, diff --git a/build/patches/Add-history-support-in-incognito-mode.patch b/build/patches/Add-history-support-in-incognito-mode.patch deleted file mode 100644 index 4b31ce3f..00000000 --- a/build/patches/Add-history-support-in-incognito-mode.patch +++ /dev/null @@ -1,1790 +0,0 @@ -From: uazo -Date: Fri, 7 Aug 2020 16:33:47 +0000 -Subject: Add history support in incognito mode - -Add history, recents, offlinepages and send to home screen for always incognito. -History, recent tabs and offline pages require the INCOGNITO_TAB_HISTORY_ENABLED -flag turned on. -IncognitoPlaceholder is also deactivated, both in the phone and tablet version. -The relative tests are also present. - -See also: https://github.com/bromite/bromite/pull/1427 ---- - .../chrome_junit_test_java_sources.gni | 4 + - chrome/android/chrome_test_java_sources.gni | 6 + - .../java/res/xml/privacy_preferences.xml | 5 + - .../AppMenuPropertiesDelegateImpl.java | 25 +- - .../CustomTabAppMenuPropertiesDelegate.java | 4 + - .../browser/download/DownloadUtils.java | 16 +- - .../browser/history/HistoryManager.java | 18 +- - .../chrome/browser/history/HistoryPage.java | 16 + - .../native_page/NativePageFactory.java | 4 +- - .../chrome/browser/ntp/RecentTabsManager.java | 8 +- - .../privacy/settings/PrivacySettings.java | 18 + - .../browser/tab/HistoricalTabSaver.java | 12 +- - .../browser/tabmodel/TabPersistentStore.java | 5 +- - .../history/Bromite_HistoryManagerTest.java | 112 ++++++ - ...FragmentTest_HistoryInAlwaysIncognito.java | 120 +++++++ - ...ite_AppMenuPropertiesDelegateUnitTest.java | 323 ++++++++++++++++++ - .../tab/HistoricalTabSaverUnitTest.java | 16 +- - .../browser/android/historical_tab_saver.cc | 28 +- - chrome/browser/android/historical_tab_saver.h | 27 ++ - .../android/historical_tab_saver_unittest.cc | 148 ++++++++ - chrome/browser/history/history_tab_helper.cc | 16 + - chrome/browser/history/history_tab_helper.h | 10 +- - .../history/history_tab_helper_unittest.cc | 22 ++ - .../android/offline_page_bridge.cc | 13 +- - .../android/offline_page_model_factory.cc | 21 +- - .../android/request_coordinator_factory.cc | 17 + - .../offline_page_model_factory.h | 1 + - .../offline_pages/recent_tab_helper.cc | 12 + - .../request_coordinator_factory.h | 2 + - chrome/browser/prefs/browser_prefs.cc | 2 + - .../browser/ui/android/native_page/BUILD.gn | 2 + - .../browser/ui/native_page/NativePage.java | 12 +- - .../ui/native_page/NativePageTest.java | 26 ++ - .../strings/android_chrome_strings.grd | 6 + - chrome/common/pref_names.cc | 2 + - chrome/common/pref_names.h | 4 + - chrome/test/BUILD.gn | 5 + - 37 files changed, 1047 insertions(+), 41 deletions(-) - create mode 100644 chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java - create mode 100644 chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java - create mode 100644 chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java - create mode 100644 chrome/browser/android/historical_tab_saver.h - create mode 100644 chrome/browser/android/historical_tab_saver_unittest.cc - -diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni ---- a/chrome/android/chrome_junit_test_java_sources.gni -+++ b/chrome/android/chrome_junit_test_java_sources.gni -@@ -235,3 +235,7 @@ chrome_junit_test_java_sources = [ - "junit/src/org/chromium/chrome/browser/webapps/WebappLauncherActivityTest.java", - "junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java", - ] -+ -+chrome_junit_test_java_sources += [ -+ "junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java", -+] -\ No newline at end of file -diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni ---- a/chrome/android/chrome_test_java_sources.gni -+++ b/chrome/android/chrome_test_java_sources.gni -@@ -667,3 +667,9 @@ if (enable_feed_v2) { - if (is_java_debug) { - chrome_test_java_sources += [ "javatests/src/org/chromium/chrome/browser/payments/PaymentErrorStringsTest.java" ] - } -+ -+# Bromite tests -+chrome_test_java_sources += [ -+ "javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java", -+ "javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.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 -@@ -42,6 +42,11 @@ - android:title="@string/always_incognito_title" - android:summary="@string/always_incognito_summary" - android:defaultValue="false" /> -+ - tabSupplier) { - super(host); - -+ if (isIncognito && -+ AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) { -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); -+ boolean historyEnabledInIncognito = -+ prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); -+ if (historyEnabledInIncognito == true) isIncognito = false; -+ } -+ - mHistoryManager = - new HistoryManager(activity, false, snackbarManager, isIncognito, tabSupplier); -+ - mTitle = host.getContext().getResources().getString(R.string.menu_history); - - initWithView(mHistoryManager.getView()); -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 -@@ -15,6 +15,7 @@ import org.chromium.base.jank_tracker.JankTracker; - import org.chromium.base.supplier.BooleanSupplier; - import org.chromium.base.supplier.DestroyableObservableSupplier; - import org.chromium.base.supplier.Supplier; -+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; - import org.chromium.chrome.browser.app.ChromeActivity; - import org.chromium.chrome.browser.app.download.home.DownloadPage; - import org.chromium.chrome.browser.bookmarks.BookmarkPage; -@@ -243,7 +244,8 @@ public class NativePageFactory { - String url, NativePage candidatePage, Tab tab, boolean isIncognito) { - NativePage page; - -- switch (NativePage.nativePageType(url, candidatePage, isIncognito)) { -+ boolean isAlwaysIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); -+ switch (NativePage.nativePageType(url, candidatePage, isIncognito, isAlwaysIncognito)) { - case NativePageType.NONE: - return null; - case NativePageType.CANDIDATE: -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java -@@ -76,15 +76,15 @@ public class RecentTabsManager implements SignInStateObserver, - */ - public RecentTabsManager( - Tab tab, Profile profile, Context context, Runnable showHistoryManager) { -- mProfile = profile; -+ mProfile = profile.getOriginalProfile(); - mTab = tab; - mShowHistoryManager = showHistoryManager; -- mForeignSessionHelper = new ForeignSessionHelper(profile); -- mPrefs = new RecentTabsPagePrefs(profile); -+ mForeignSessionHelper = new ForeignSessionHelper(mProfile); -+ mPrefs = new RecentTabsPagePrefs(mProfile); - mFaviconHelper = new FaviconHelper(); - mRecentlyClosedTabManager = sRecentlyClosedTabManagerForTests != null - ? sRecentlyClosedTabManagerForTests -- : new RecentlyClosedBridge(profile); -+ : new RecentlyClosedBridge(mProfile); - - mRecentlyClosedTabManager.setTabsUpdatedRunnable(() -> { - updateRecentlyClosedTabs(); -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 -@@ -16,6 +16,7 @@ import androidx.preference.Preference; - import androidx.preference.PreferenceFragmentCompat; - import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; - -+import org.chromium.base.Log; - import org.chromium.chrome.R; - import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; - import org.chromium.chrome.browser.flags.ChromeFeatureList; -@@ -131,6 +132,11 @@ public class PrivacySettings - phoneAsASecurityKey.setVisible( - ChromeFeatureList.isEnabled(ChromeFeatureList.WEB_AUTH_PHONE_SUPPORT)); - -+ ChromeSwitchPreference historyInIncognitoPref = -+ (ChromeSwitchPreference) findPreference(PREF_INCOGNITO_TAB_HISTORY_ENABLED); -+ historyInIncognitoPref.setOnPreferenceChangeListener(this); -+ historyInIncognitoPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate); -+ - updatePreferences(); - } - -@@ -148,10 +154,15 @@ public class PrivacySettings - } else if (PREF_HTTPS_FIRST_MODE.equals(key)) { - UserPrefs.get(Profile.getLastUsedRegularProfile()) - .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue); -+ } else if (PREF_INCOGNITO_TAB_HISTORY_ENABLED.equals(key)) { -+ UserPrefs.get(Profile.getLastUsedRegularProfile()) -+ .setBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED, (boolean) newValue); - } - return true; - } - -+ public static final String PREF_INCOGNITO_TAB_HISTORY_ENABLED = "incognito_history_enabled"; -+ - @Override - public void onResume() { - super.onResume(); -@@ -202,6 +213,13 @@ public class PrivacySettings - PreloadPagesSettingsFragment.getPreloadPagesSummaryString(getContext())); - } - -+ ChromeSwitchPreference historyInIncognitoPref = -+ (ChromeSwitchPreference) findPreference(PREF_INCOGNITO_TAB_HISTORY_ENABLED); -+ if (historyInIncognitoPref != null) { -+ historyInIncognitoPref.setChecked( -+ prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED)); -+ } -+ - Preference secureDnsPref = findPreference(PREF_SECURE_DNS); - if (secureDnsPref != null && secureDnsPref.isVisible()) { - secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext())); -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java -@@ -15,28 +15,28 @@ public class HistoricalTabSaver { - /** - * Creates a historical tab from a tab being closed. - */ -- public static void createHistoricalTab(Tab tab) { -+ public static void createHistoricalTab(Tab tab, boolean is_always_incognito) { - if (tab.isFrozen()) { - WebContentsState state = CriticalPersistedTabData.from(tab).getWebContentsState(); - if (state != null) { - WebContents webContents = - WebContentsStateBridge.restoreContentsFromByteBuffer(state, true); - if (webContents != null) { -- createHistoricalTabFromContents(webContents); -+ createHistoricalTabFromContents(webContents, is_always_incognito); - webContents.destroy(); - } - } - } else { -- createHistoricalTabFromContents(tab.getWebContents()); -+ createHistoricalTabFromContents(tab.getWebContents(), is_always_incognito); - } - } - -- private static void createHistoricalTabFromContents(WebContents webContents) { -- HistoricalTabSaverJni.get().createHistoricalTabFromContents(webContents); -+ private static void createHistoricalTabFromContents(WebContents webContents, boolean is_always_incognito) { -+ HistoricalTabSaverJni.get().createHistoricalTabFromContents(webContents, is_always_incognito); - } - - @NativeMethods - interface Natives { -- void createHistoricalTabFromContents(WebContents webContents); -+ void createHistoricalTabFromContents(WebContents webContents, boolean is_always_incognito); - } - } -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -193,7 +193,10 @@ public class TabPersistentStore { - @Override - public void didCloseTab(Tab tab) { - PersistedTabData.onTabClose(tab); -- if (!tab.isIncognito()) HistoricalTabSaver.createHistoricalTab(tab); -+ boolean is_always_incognito = -+ AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); -+ if (!tab.isIncognito() || is_always_incognito) -+ HistoricalTabSaver.createHistoricalTab(tab, is_always_incognito); - removeTabFromQueues(tab); - } - -diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java -new file mode 100644 ---- /dev/null -+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java -@@ -0,0 +1,112 @@ -+/* -+ 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 . -+*/ -+ -+package org.chromium.chrome.browser.history; -+ -+import android.app.Activity; -+import android.content.Context; -+import android.content.Intent; -+ -+import androidx.test.espresso.intent.rule.IntentsTestRule; -+import androidx.test.filters.SmallTest; -+ -+import org.hamcrest.Matcher; -+import org.junit.Assert; -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.Test; -+import org.junit.runner.RunWith; -+import org.chromium.base.test.util.Restriction; -+ -+import org.chromium.chrome.browser.IntentHandler; -+import org.chromium.chrome.browser.incognito.IncognitoUtils; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.browser.profiles.Profile; -+import org.chromium.base.ContextUtils; -+import org.chromium.components.prefs.PrefService; -+import org.chromium.components.user_prefs.UserPrefs; -+import org.chromium.chrome.browser.preferences.Pref; -+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; -+import android.content.SharedPreferences; -+ -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.base.test.BaseActivityTestRule; -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.ui.test.util.UiRestriction; -+import org.chromium.content_public.browser.test.util.TestThreadUtils; -+ -+/** -+ * Tests the {@link HistoryManager}. -+ */ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+@Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) -+public class Bromite_HistoryManagerTest { -+ @Rule -+ public BaseActivityTestRule mIncognitoActivityTestRule = -+ new BaseActivityTestRule<>(HistoryActivity.class); -+ -+ @Before -+ public void setUp() { -+ } -+ -+ @After -+ public void tearDown() { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); -+ prefService.clearPref(Pref.INCOGNITO_TAB_HISTORY_ENABLED); -+ -+ SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); -+ SharedPreferences.Editor editor = prefs.edit(); -+ editor.putBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false); -+ editor.apply(); -+ }); -+ } -+ -+ boolean mShouldShowIncognitoPlaceholder = true; -+ -+ @Test -+ @SmallTest -+ public void testShouldShowIncognitoPlaceholder_AlwaysIncognito() throws Exception { -+ // launch HistoryActivity in incognito mode -+ Intent intent = new Intent(ContextUtils.getApplicationContext(), HistoryActivity.class); -+ intent.putExtra(IntentHandler.EXTRA_INCOGNITO_MODE, true); -+ -+ mIncognitoActivityTestRule.launchActivity(intent); -+ HistoryActivity activity = mIncognitoActivityTestRule.getActivity(); -+ HistoryManager historyManager = activity.getHistoryManagerForTests(); -+ Assert.assertTrue(historyManager.isIncognito()); -+ -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ // set always incognito on -+ SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); -+ SharedPreferences.Editor editor = prefs.edit(); -+ editor.putBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, true); -+ editor.apply(); -+ -+ // set INCOGNITO_TAB_HISTORY_ENABLED on -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); -+ prefService.setBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED, true); -+ -+ mShouldShowIncognitoPlaceholder = historyManager.shouldShowIncognitoPlaceholder(); -+ }); -+ -+ // shouldShowIncognitoPlaceholder must be false -+ Assert.assertFalse(mShouldShowIncognitoPlaceholder); -+ } -+} -diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java b/chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java -new file mode 100644 ---- /dev/null -+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java -@@ -0,0 +1,120 @@ -+/* -+ 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 . -+*/ -+ -+package org.chromium.chrome.browser.privacy.settings; -+ -+import android.view.View; -+ -+import androidx.recyclerview.widget.RecyclerView; -+import androidx.test.filters.LargeTest; -+ -+import org.junit.Assert; -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.Test; -+import org.junit.rules.RuleChain; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.base.test.util.CriteriaHelper; -+import org.chromium.base.test.util.Feature; -+import org.chromium.chrome.R; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.browser.settings.SettingsActivityTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.chrome.test.util.ChromeRenderTestRule; -+import org.chromium.content_public.browser.test.util.TestThreadUtils; -+ -+import org.chromium.chrome.browser.profiles.Profile; -+import org.chromium.chrome.browser.preferences.Pref; -+import org.chromium.components.prefs.PrefService; -+import org.chromium.components.user_prefs.UserPrefs; -+import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; -+ -+/** -+ * Tests for {@link PrivacySettings}. -+ */ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito { -+ public final ChromeTabbedActivityTestRule mActivityTestRule = -+ new ChromeTabbedActivityTestRule(); -+ public final SettingsActivityTestRule mSettingsActivityTestRule = -+ new SettingsActivityTestRule<>(PrivacySettings.class); -+ -+ // SettingsActivity has to be finished before the outer CTA can be finished or trying to finish -+ // CTA won't work. -+ @Rule -+ public final RuleChain mRuleChain = -+ RuleChain.outerRule(mActivityTestRule).around(mSettingsActivityTestRule); -+ -+ @Before -+ public void setUp() { -+ mActivityTestRule.startMainActivityOnBlankPage(); -+ } -+ -+ @After -+ public void tearDown() { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); -+ prefService.clearPref(Pref.INCOGNITO_TAB_HISTORY_ENABLED); -+ }); -+ } -+ -+ private void waitForOptionsMenu() { -+ CriteriaHelper.pollUiThread(() -> { -+ return mSettingsActivityTestRule.getActivity().findViewById(R.id.menu_id_targeted_help) -+ != null; -+ }); -+ } -+ -+ @Test -+ @LargeTest -+ public void testIncognitoHistoryPreference() { -+ mSettingsActivityTestRule.startSettingsActivity(); -+ waitForOptionsMenu(); -+ PrivacySettings fragment = mSettingsActivityTestRule.getFragment(); -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ RecyclerView recyclerView = fragment.getView().findViewById(R.id.recycler_view); -+ recyclerView.scrollToPosition(recyclerView.getAdapter().getItemCount() - 1); -+ }); -+ -+ ChromeSwitchPreference historyInIncognitoPref = -+ (ChromeSwitchPreference) fragment.findPreference(PrivacySettings.PREF_INCOGNITO_TAB_HISTORY_ENABLED); -+ Assert.assertNotNull(historyInIncognitoPref); -+ -+ // Test when ON -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ fragment.onPreferenceChange(historyInIncognitoPref, true); -+ -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); -+ boolean incognito_tab_history_enabled = prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); -+ Assert.assertTrue(incognito_tab_history_enabled); -+ }); -+ -+ // Test when OFF -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ fragment.onPreferenceChange(historyInIncognitoPref, false); -+ -+ PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); -+ boolean incognito_tab_history_enabled = prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); -+ Assert.assertFalse(incognito_tab_history_enabled); -+ }); -+ } -+} -diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java -new file mode 100644 ---- /dev/null -+++ b/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java -@@ -0,0 +1,323 @@ -+/* -+ 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 . -+*/ -+ -+package org.chromium.chrome.browser.app.appmenu; -+ -+import static org.mockito.ArgumentMatchers.any; -+import static org.mockito.ArgumentMatchers.anyBoolean; -+import static org.mockito.Mockito.doReturn; -+import static org.mockito.Mockito.when; -+ -+import android.content.Context; -+import android.view.Menu; -+import android.view.MenuItem; -+import android.view.SubMenu; -+import android.view.View; -+import android.widget.PopupMenu; -+ -+import org.hamcrest.Matchers; -+import org.junit.After; -+import org.junit.Assert; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.Test; -+import org.junit.rules.TestRule; -+import org.junit.runner.RunWith; -+import org.mockito.Mock; -+import org.mockito.Mockito; -+import org.mockito.MockitoAnnotations; -+import org.robolectric.annotation.Config; -+ -+import org.chromium.base.ContextUtils; -+import org.chromium.base.FeatureList; -+import org.chromium.base.ThreadUtils; -+import org.chromium.base.supplier.ObservableSupplierImpl; -+import org.chromium.base.supplier.OneshotSupplierImpl; -+import org.chromium.base.test.BaseRobolectricTestRunner; -+import org.chromium.base.test.util.JniMocker; -+import org.chromium.chrome.R; -+import org.chromium.chrome.browser.ActivityTabProvider; -+import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl.MenuGroup; -+import org.chromium.chrome.browser.bookmarks.BookmarkBridge; -+import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; -+import org.chromium.chrome.browser.device.DeviceConditions; -+import org.chromium.chrome.browser.device.ShadowDeviceConditions; -+import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher; -+import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; -+import org.chromium.chrome.browser.preferences.Pref; -+import org.chromium.chrome.browser.profiles.Profile; -+import org.chromium.chrome.browser.tab.Tab; -+import org.chromium.chrome.browser.tabmodel.TabModel; -+import org.chromium.chrome.browser.tabmodel.TabModelFilter; -+import org.chromium.chrome.browser.tabmodel.TabModelFilterProvider; -+import org.chromium.chrome.browser.tabmodel.TabModelSelector; -+import org.chromium.chrome.browser.toolbar.ToolbarManager; -+import org.chromium.chrome.browser.toolbar.menu_button.MenuUiState; -+import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; -+import org.chromium.chrome.test.util.browser.Features; -+import org.chromium.components.prefs.PrefService; -+import org.chromium.components.user_prefs.UserPrefs; -+import org.chromium.components.user_prefs.UserPrefsJni; -+import org.chromium.components.webapps.AppBannerManager; -+import org.chromium.content.browser.ContentFeatureListImpl; -+import org.chromium.content.browser.ContentFeatureListImplJni; -+import org.chromium.content_public.browser.ContentFeatureList; -+import org.chromium.content_public.browser.NavigationController; -+import org.chromium.content_public.browser.WebContents; -+import org.chromium.net.ConnectionType; -+import org.chromium.url.JUnitTestGURLs; -+ -+import java.util.ArrayList; -+import java.util.List; -+ -+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; -+import android.content.SharedPreferences; -+ -+/** -+ * Unit tests for {@link AppMenuPropertiesDelegateImpl}. -+ */ -+@RunWith(BaseRobolectricTestRunner.class) -+public class Bromite_AppMenuPropertiesDelegateUnitTest { -+ @Rule -+ public TestRule mProcessor = new Features.JUnitProcessor(); -+ -+ @Rule -+ public JniMocker mJniMocker = new JniMocker(); -+ -+ @Mock -+ private ActivityTabProvider mActivityTabProvider; -+ @Mock -+ private Tab mTab; -+ @Mock -+ private WebContents mWebContents; -+ @Mock -+ private NavigationController mNavigationController; -+ @Mock -+ private MultiWindowModeStateDispatcher mMultiWindowModeStateDispatcher; -+ @Mock -+ private TabModelSelector mTabModelSelector; -+ @Mock -+ private TabModel mTabModel; -+ @Mock -+ private TabModel mIncognitoTabModel; -+ @Mock -+ private ToolbarManager mToolbarManager; -+ @Mock -+ private View mDecorView; -+ @Mock -+ private OverviewModeBehavior mOverviewModeBehavior; -+ @Mock -+ private UpdateMenuItemHelper mUpdateMenuItemHelper; -+ @Mock -+ private ContentFeatureListImpl.Natives mContentFeatureListJniMock; -+ @Mock -+ private UserPrefs.Natives mUserPrefsJniMock; -+ @Mock -+ private Profile mProfile; -+ @Mock -+ private PrefService mPrefService; -+ @Mock -+ private TabModelFilterProvider mTabModelFilterProvider; -+ @Mock -+ private TabModelFilter mTabModelFilter; -+ -+ private OneshotSupplierImpl mOverviewModeSupplier = -+ new OneshotSupplierImpl<>(); -+ private ObservableSupplierImpl mBookmarkBridgeSupplier = -+ new ObservableSupplierImpl<>(); -+ -+ private AppMenuPropertiesDelegateImpl mAppMenuPropertiesDelegate; -+ -+ private MenuUiState mMenuUiState; -+ -+ @Before -+ public void setUp() { -+ MockitoAnnotations.initMocks(this); -+ -+ mOverviewModeSupplier.set(mOverviewModeBehavior); -+ when(mTab.getWebContents()).thenReturn(mWebContents); -+ when(mWebContents.getNavigationController()).thenReturn(mNavigationController); -+ when(mNavigationController.getUseDesktopUserAgent()).thenReturn(false); -+ when(mTabModelSelector.getCurrentModel()).thenReturn(mTabModel); -+ when(mTabModelSelector.getModel(false)).thenReturn((mTabModel)); -+ when(mTabModelSelector.getModel(true)).thenReturn((mIncognitoTabModel)); -+ when(mTabModelSelector.getTabModelFilterProvider()).thenReturn(mTabModelFilterProvider); -+ when(mTabModelFilterProvider.getCurrentTabModelFilter()).thenReturn(mTabModelFilter); -+ when(mTabModelFilter.getTabModel()).thenReturn(mTabModel); -+ -+ UpdateMenuItemHelper.setInstanceForTesting(mUpdateMenuItemHelper); -+ mMenuUiState = new MenuUiState(); -+ doReturn(mMenuUiState).when(mUpdateMenuItemHelper).getUiState(); -+ -+ mJniMocker.mock(ContentFeatureListImplJni.TEST_HOOKS, mContentFeatureListJniMock); -+ mJniMocker.mock(UserPrefsJni.TEST_HOOKS, mUserPrefsJniMock); -+ Profile.setLastUsedProfileForTesting(mProfile); -+ Mockito.when(mUserPrefsJniMock.get(mProfile)).thenReturn(mPrefService); -+ FeatureList.setTestCanUseDefaultsForTesting(); -+ -+ AppMenuPropertiesDelegateImpl obj = new AppMenuPropertiesDelegateImpl( -+ ContextUtils.getApplicationContext(), mActivityTabProvider, -+ mMultiWindowModeStateDispatcher, mTabModelSelector, mToolbarManager, mDecorView, -+ mOverviewModeSupplier, mBookmarkBridgeSupplier); -+ obj.setPrefForTest(mPrefService); -+ mAppMenuPropertiesDelegate = Mockito.spy(obj); -+ } -+ -+ @After -+ public void tearDown() { -+ ThreadUtils.setThreadAssertsDisabledForTesting(false); -+ ChromeAccessibilityUtil.get().setAccessibilityEnabledForTesting(false); -+ ChromeAccessibilityUtil.get().setTouchExplorationEnabledForTesting(false); -+ } -+ -+ private void setUpTestPrefs(SharedPreferences prefs, boolean always_incognito) { -+ SharedPreferences.Editor editor = prefs.edit(); -+ editor.putBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, always_incognito); -+ editor.apply(); -+ } -+ -+ @Test -+ public void testOverviewMenuItems_HideNewTabInAlwaysIncognito() { -+ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); -+ setUpTestPrefs(mPrefs, /*always_incognito*/true); -+ -+ setUpMocksForPageMenu(); -+ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); -+ -+ Menu menu = createTestMenu(); -+ mAppMenuPropertiesDelegate.prepareMenu(menu, null); -+ -+ // in always incognito, open new tab is NOT visible -+ final MenuItem newTabOption = menu.findItem(R.id.new_tab_menu_id); -+ Assert.assertFalse(newTabOption.isVisible()); -+ } -+ -+ @Test -+ public void testOverviewMenuItems_ShowHomeScreenMenuItemInAlwaysIncognito() { -+ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); -+ setUpTestPrefs(mPrefs, /*always_incognito*/true); -+ -+ setUpMocksForPageMenu(); -+ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); -+ -+ Menu menu = createTestMenu(); -+ mAppMenuPropertiesDelegate.prepareMenu(menu, null); -+ -+ // in always incognito, home screen menu is visible -+ final MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id); -+ Assert.assertTrue(homescreenItem.isVisible()); -+ } -+ -+ @Test -+ public void testOverviewMenuItems_HideRecentTabsInAlwaysIncognito() { -+ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); -+ setUpTestPrefs(mPrefs, /*always_incognito*/true); -+ -+ setUpMocksForPageMenu(); -+ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); -+ -+ when(mPrefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED)) -+ .thenReturn(false); -+ -+ Menu menu = createTestMenu(); -+ mAppMenuPropertiesDelegate.prepareMenu(menu, null); -+ -+ // in always incognito, without INCOGNITO_TAB_HISTORY_ENABLED, -+ // recent tabs menu tab is NOT visible -+ final MenuItem recent_tabs_menu = menu.findItem(R.id.recent_tabs_menu_id); -+ Assert.assertFalse(recent_tabs_menu.isVisible()); -+ } -+ -+ @Test -+ public void testOverviewMenuItems_ShowRecentTabsInAlwaysIncognito() { -+ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); -+ setUpTestPrefs(mPrefs, /*always_incognito*/true); -+ -+ setUpMocksForPageMenu(); -+ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); -+ -+ when(mPrefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED)) -+ .thenReturn(true); -+ -+ Menu menu = createTestMenu(); -+ mAppMenuPropertiesDelegate.prepareMenu(menu, null); -+ -+ // in always incognito, with INCOGNITO_TAB_HISTORY_ENABLED -+ // recent tabs menu item is visible -+ final MenuItem recent_tabs_menu = menu.findItem(R.id.recent_tabs_menu_id); -+ Assert.assertTrue(recent_tabs_menu.isVisible()); -+ } -+ -+ @Test -+ public void testOverviewMenuItems_ShowDownloadItemInAlwaysIncognito() { -+ SharedPreferences mPrefs = ContextUtils.getAppSharedPreferences(); -+ setUpTestPrefs(mPrefs, /*always_incognito*/true); -+ -+ setUpMocksForPageMenu(); -+ when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); -+ -+ when(mPrefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED)) -+ .thenReturn(true); -+ -+ Menu menu = createTestMenu(); -+ mAppMenuPropertiesDelegate.prepareMenu(menu, null); -+ -+ // in always incognito, with INCOGNITO_TAB_HISTORY_ENABLED -+ // download page menu item is visible -+ final MenuItem offline_page = menu.findItem(R.id.offline_page_id); -+ Assert.assertTrue(offline_page.isVisible()); -+ } -+ -+ private void setUpMocksForPageMenu() { -+ when(mTabModel.isIncognito()).thenReturn(true); -+ when(mIncognitoTabModel.isIncognito()).thenReturn(true); -+ -+ when(mActivityTabProvider.get()).thenReturn(mTab); -+ when(mOverviewModeBehavior.overviewVisible()).thenReturn(false); -+ doReturn(false).when(mAppMenuPropertiesDelegate).shouldCheckBookmarkStar(any(Tab.class)); -+ doReturn(false).when(mAppMenuPropertiesDelegate).shouldEnableDownloadPage(any(Tab.class)); -+ doReturn(false).when(mAppMenuPropertiesDelegate).shouldShowReaderModePrefs(any(Tab.class)); -+ doReturn(false) -+ .when(mAppMenuPropertiesDelegate) -+ .shouldShowManagedByMenuItem(any(Tab.class)); -+ doReturn(false) -+ .when(mAppMenuPropertiesDelegate) -+ .shouldShowTranslateMenuItem(any(Tab.class)); -+ doReturn(new AppBannerManager.InstallStringPair( -+ R.string.menu_add_to_homescreen, R.string.add)) -+ .when(mAppMenuPropertiesDelegate) -+ .getAddToHomeScreenTitle(mTab); -+ setUpIncognitoMocks(); -+ } -+ -+ private void setUpMocksForOverviewMenu() { -+ when(mOverviewModeBehavior.overviewVisible()).thenReturn(true); -+ when(mTabModelSelector.getTotalTabCount()).thenReturn(1); -+ setUpIncognitoMocks(); -+ } -+ -+ private void setUpIncognitoMocks() { -+ doReturn(true).when(mAppMenuPropertiesDelegate).isIncognitoEnabled(); -+ } -+ -+ private Menu createTestMenu() { -+ PopupMenu tempMenu = new PopupMenu(ContextUtils.getApplicationContext(), mDecorView); -+ tempMenu.inflate(mAppMenuPropertiesDelegate.getAppMenuLayoutId()); -+ Menu menu = tempMenu.getMenu(); -+ return menu; -+ } -+} -diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/tab/HistoricalTabSaverUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/tab/HistoricalTabSaverUnitTest.java ---- a/chrome/android/junit/src/org/chromium/chrome/browser/tab/HistoricalTabSaverUnitTest.java -+++ b/chrome/android/junit/src/org/chromium/chrome/browser/tab/HistoricalTabSaverUnitTest.java -@@ -61,9 +61,9 @@ public class HistoricalTabSaverUnitTest { - doReturn(false).when(mTabImplMock).isFrozen(); - doReturn(mWebContentsMock).when(mTabImplMock).getWebContents(); - -- HistoricalTabSaver.createHistoricalTab(mTabImplMock); -+ HistoricalTabSaver.createHistoricalTab(mTabImplMock, false); - -- verify(mHistoricalTabSaverJni).createHistoricalTabFromContents(eq(mWebContentsMock)); -+ verify(mHistoricalTabSaverJni).createHistoricalTabFromContents(eq(mWebContentsMock), eq(false)); - } - - @Test -@@ -71,9 +71,9 @@ public class HistoricalTabSaverUnitTest { - doReturn(true).when(mTabImplMock).isFrozen(); - doReturn(null).when(mCriticalPersistedTabData).getWebContentsState(); - -- HistoricalTabSaver.createHistoricalTab(mTabImplMock); -+ HistoricalTabSaver.createHistoricalTab(mTabImplMock, false); - -- verify(mHistoricalTabSaverJni, never()).createHistoricalTabFromContents(any()); -+ verify(mHistoricalTabSaverJni, never()).createHistoricalTabFromContents(any(), eq(false)); - } - - @Test -@@ -88,9 +88,9 @@ public class HistoricalTabSaverUnitTest { - .when(mWebContentsStateBridgeJni) - .restoreContentsFromByteBuffer(eq(buffer), eq(123), eq(true)); - -- HistoricalTabSaver.createHistoricalTab(mTabImplMock); -+ HistoricalTabSaver.createHistoricalTab(mTabImplMock, false); - -- verify(mHistoricalTabSaverJni, never()).createHistoricalTabFromContents(any()); -+ verify(mHistoricalTabSaverJni, never()).createHistoricalTabFromContents(any(), eq(false)); - } - - @Test -@@ -105,8 +105,8 @@ public class HistoricalTabSaverUnitTest { - .when(mWebContentsStateBridgeJni) - .restoreContentsFromByteBuffer(eq(buffer), eq(123), eq(true)); - -- HistoricalTabSaver.createHistoricalTab(mTabImplMock); -+ HistoricalTabSaver.createHistoricalTab(mTabImplMock, false); - -- verify(mHistoricalTabSaverJni).createHistoricalTabFromContents(eq(mWebContentsMock)); -+ verify(mHistoricalTabSaverJni).createHistoricalTabFromContents(eq(mWebContentsMock), eq(false)); - } - } -diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/android/historical_tab_saver.cc ---- a/chrome/browser/android/historical_tab_saver.cc -+++ b/chrome/browser/android/historical_tab_saver.cc -@@ -12,16 +12,27 @@ - #include "components/sessions/core/tab_restore_service.h" - #include "content/public/browser/web_contents.h" - -+#include "chrome/common/pref_names.h" -+#include "components/prefs/pref_registry_simple.h" -+#include "components/prefs/pref_service.h" -+#include "historical_tab_saver.h" -+ - using base::android::JavaParamRef; - - namespace { - --void CreateHistoricalTab(content::WebContents* web_contents) { -+void CreateHistoricalTab(content::WebContents* web_contents, -+ bool is_always_incognito) { - DCHECK(web_contents); - -+ auto* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext()); -+ if (is_always_incognito) { -+ if(profile->GetOriginalProfile()->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) -+ profile = profile->GetOriginalProfile(); -+ } -+ - sessions::TabRestoreService* service = -- TabRestoreServiceFactory::GetForProfile( -- Profile::FromBrowserContext(web_contents->GetBrowserContext())); -+ TabRestoreServiceFactory::GetForProfile(profile); - if (!service) - return; - -@@ -41,11 +52,18 @@ void CreateHistoricalTab(content::WebContents* web_contents) { - - // Static JNI methods. - -+// static -+void CreateHistoricalTabForTest(content::WebContents* web_contents, -+ bool is_always_incognito) { -+ CreateHistoricalTab(web_contents, is_always_incognito); -+} -+ - // static - static void JNI_HistoricalTabSaver_CreateHistoricalTabFromContents( - JNIEnv* env, -- const JavaParamRef& jweb_contents) { -+ const JavaParamRef& jweb_contents, -+ jboolean is_always_incognito) { - auto* web_contents = content::WebContents::FromJavaWebContents(jweb_contents); - if (web_contents) -- CreateHistoricalTab(web_contents); -+ CreateHistoricalTab(web_contents, is_always_incognito); - } -diff --git a/chrome/browser/android/historical_tab_saver.h b/chrome/browser/android/historical_tab_saver.h -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/android/historical_tab_saver.h -@@ -0,0 +1,27 @@ -+/* -+ 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 CHROME_BROWSER_ANDROID_HISTORICAL_TAB_SAVER_H_ -+#define CHROME_BROWSER_ANDROID_HISTORICAL_TAB_SAVER_H_ -+ -+#include "content/public/browser/web_contents.h" -+ -+// static -+void CreateHistoricalTabForTest(content::WebContents* web_contents, -+ bool is_always_incognito); -+ -+#endif // CHROME_BROWSER_ANDROID_HISTORICAL_TAB_SAVER_H_ -diff --git a/chrome/browser/android/historical_tab_saver_unittest.cc b/chrome/browser/android/historical_tab_saver_unittest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/android/historical_tab_saver_unittest.cc -@@ -0,0 +1,148 @@ -+/* -+ 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 "base/run_loop.h" -+#include "base/strings/stringprintf.h" -+#include "base/strings/utf_string_conversions.h" -+#include "base/task/cancelable_task_tracker.h" -+#include "base/test/bind.h" -+#include "build/build_config.h" -+#include "chrome/browser/history/history_service_factory.h" -+#include "chrome/test/base/chrome_render_view_host_test_harness.h" -+#include "chrome/test/base/testing_profile.h" -+#include "components/history/core/browser/history_constants.h" -+#include "components/history/core/browser/history_service.h" -+#include "components/history/core/browser/history_types.h" -+#include "components/history/core/browser/url_row.h" -+#include "content/public/browser/browser_context.h" -+#include "content/public/browser/navigation_controller.h" -+#include "content/public/browser/web_contents.h" -+#include "content/public/test/mock_navigation_handle.h" -+#include "content/public/test/web_contents_tester.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "ui/base/page_transition_types.h" -+ -+#include "chrome/test/base/testing_browser_process.h" -+#include "chrome/test/base/testing_profile_manager.h" -+#include "content/public/test/test_browser_context.h" -+#include "content/test/test_web_contents.h" -+#include "components/sessions/core/tab_restore_service.h" -+#include "components/sessions/core/tab_restore_service_impl.h" -+#include "components/sessions/content/content_live_tab.h" -+#include "chrome/browser/android/historical_tab_saver.h" -+#include "chrome/browser/sessions/tab_restore_service_factory.h" -+#include "chrome/browser/sessions/chrome_tab_restore_service_client.h" -+#include "chrome/common/pref_names.h" -+ -+namespace { -+ -+static std::unique_ptr GetTabRestoreService( -+ content::BrowserContext* browser_context) { -+ return std::make_unique( -+ std::make_unique( -+ Profile::FromBrowserContext(browser_context)), -+ nullptr, nullptr); -+} -+ -+// --gtest_filter=*.Bromite* -+class HistoryTabSaverTest : public ChromeRenderViewHostTestHarness { -+ protected: -+ HistoryTabSaverTest() {} -+ -+ // ChromeRenderViewHostTestHarness: -+ void SetUp() override { -+ ChromeRenderViewHostTestHarness::SetUp(); -+ TabRestoreServiceFactory::GetInstance()->SetTestingFactory( -+ profile(), -+ base::BindRepeating(&GetTabRestoreService)); -+ ASSERT_TRUE(profile()->CreateHistoryService()); -+ } -+ -+ const GURL page_url_ = GURL("http://foo.com"); -+ -+ protected: -+// history::HistoryService* history_service_; -+ -+ DISALLOW_COPY_AND_ASSIGN(HistoryTabSaverTest); -+}; -+ -+TEST_F(HistoryTabSaverTest, Bromite_HistoricalTabForNormalNavigation) { -+ sessions::TabRestoreService* service = -+ TabRestoreServiceFactory::GetForProfile(profile()); -+ ASSERT_NE(nullptr, service); -+ -+ auto* profile_ = profile(); -+ auto web_other_contents = content::TestWebContents::Create(profile_, nullptr); -+ web_other_contents->NavigateAndCommit(page_url_); -+ -+ // Make sure was no entry. -+ ASSERT_EQ(0U, service->entries().size()); -+ -+ CreateHistoricalTabForTest(web_other_contents.get(), /*is_always_incognito*/false); -+ -+ // Make sure entry was created. -+ ASSERT_EQ(1U, service->entries().size()); -+} -+ -+TEST_F(HistoryTabSaverTest, Bromite_HistoricalTabForNavigationInIncognito) { -+ sessions::TabRestoreService* service = -+ TabRestoreServiceFactory::GetForProfile(profile()); -+ ASSERT_NE(nullptr, service); -+ -+ auto* profile_ = profile()->GetOffTheRecordProfile( -+ Profile::OTRProfileID::PrimaryID(), /*create_if_needed=*/true); -+ auto web_other_contents = content::TestWebContents::Create(profile_, nullptr); -+ web_other_contents->NavigateAndCommit(page_url_); -+ -+ // Make sure was no entry. -+ ASSERT_EQ(0U, service->entries().size()); -+ -+ CreateHistoricalTabForTest(web_other_contents.get(), /*is_always_incognito*/false); -+ -+ // Make sure was no entry. -+ ASSERT_EQ(0U, service->entries().size()); -+} -+ -+TEST_F(HistoryTabSaverTest, Bromite_HistoricalTabForNavigationInIncognito_AlwaysIncognito) { -+ sessions::TabRestoreService* service = -+ TabRestoreServiceFactory::GetForProfile(profile()); -+ ASSERT_NE(nullptr, service); -+ -+ auto* profile_ = profile()->GetOffTheRecordProfile( -+ Profile::OTRProfileID::PrimaryID(), /*create_if_needed=*/true); -+ auto web_other_contents = content::TestWebContents::Create(profile_, nullptr); -+ web_other_contents->NavigateAndCommit(page_url_); -+ -+ // test kIncognitoTabHistoryEnabled with false -+ profile()->GetPrefs()->SetBoolean(prefs::kIncognitoTabHistoryEnabled, false); -+ -+ CreateHistoricalTabForTest(web_other_contents.get(), /*is_always_incognito*/true); -+ -+ // Make sure was no entry. -+ ASSERT_EQ(0U, service->entries().size()); -+ -+ // test kIncognitoTabHistoryEnabled with true -+ profile()->GetPrefs()->SetBoolean(prefs::kIncognitoTabHistoryEnabled, true); -+ -+ CreateHistoricalTabForTest(web_other_contents.get(), /*is_always_incognito*/true); -+ -+ // Make sure was the entry. -+ ASSERT_EQ(1U, service->entries().size()); -+} -+ -+} // namespace -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 -@@ -27,6 +27,9 @@ - #include "chrome/browser/feed/android/feed_service_factory.h" - #include "components/feed/core/v2/public/feed_api.h" - #include "components/feed/core/v2/public/feed_service.h" -+#include "chrome/common/pref_names.h" -+#include "components/prefs/pref_registry_simple.h" -+#include "components/prefs/pref_service.h" - #else - #include "chrome/browser/ui/browser.h" - #include "chrome/browser/ui/browser_finder.h" -@@ -330,6 +333,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { - history::HistoryService* HistoryTabHelper::GetHistoryService() { - Profile* profile = - Profile::FromBrowserContext(web_contents()->GetBrowserContext()); -+ -+#if BUILDFLAG(IS_ANDROID) -+ if(profile->GetOriginalProfile()->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) { -+ return HistoryServiceFactory::GetForProfile(profile, ServiceAccessType::IMPLICIT_ACCESS); -+ } -+#endif -+ - if (profile->IsOffTheRecord()) - return NULL; - -@@ -337,6 +347,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { - profile, ServiceAccessType::IMPLICIT_ACCESS); - } - -+// static -+void HistoryTabHelper::RegisterProfilePrefs(PrefRegistrySimple* registry) { -+ registry->RegisterBooleanPref(prefs::kIncognitoTabHistoryEnabled, -+ /*default_value=*/false); -+} -+ - void HistoryTabHelper::WebContentsDestroyed() { - // We update the history for this URL. - WebContents* tab = web_contents(); -diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/history/history_tab_helper.h ---- a/chrome/browser/history/history_tab_helper.h -+++ b/chrome/browser/history/history_tab_helper.h -@@ -9,6 +9,8 @@ - #include "build/build_config.h" - #include "content/public/browser/web_contents_observer.h" - #include "content/public/browser/web_contents_user_data.h" -+#include "components/prefs/pref_registry_simple.h" -+#include "components/prefs/pref_service.h" - - namespace history { - struct HistoryAddPageArgs; -@@ -41,6 +43,11 @@ class HistoryTabHelper : public content::WebContentsObserver, - force_eligible_tab_for_testing_ = force; - } - -+ static void RegisterProfilePrefs(PrefRegistrySimple* registry); -+ -+ // Helper function to return the history service. May return null. -+ history::HistoryService* GetHistoryService(); -+ - private: - explicit HistoryTabHelper(content::WebContents* web_contents); - friend class content::WebContentsUserData; -@@ -69,9 +76,6 @@ class HistoryTabHelper : public content::WebContentsObserver, - bool started_from_context_menu, - bool renderer_initiated) override; - -- // Helper function to return the history service. May return null. -- history::HistoryService* GetHistoryService(); -- - // Returns true if our observed web contents is an eligible tab. - bool IsEligibleTab(const history::HistoryAddPageArgs& add_page_args) const; - -diff --git a/chrome/browser/history/history_tab_helper_unittest.cc b/chrome/browser/history/history_tab_helper_unittest.cc ---- a/chrome/browser/history/history_tab_helper_unittest.cc -+++ b/chrome/browser/history/history_tab_helper_unittest.cc -@@ -42,6 +42,9 @@ - - using testing::NiceMock; - -+#include "chrome/common/pref_names.h" -+#include "content/test/test_web_contents.h" -+ - namespace { - - #if BUILDFLAG(IS_ANDROID) -@@ -51,6 +54,25 @@ class TestFeedApi : public feed::StubFeedApi { - }; - #endif - -+TEST_F(HistoryTabHelperTest, Bromite_CheckHistoryService_IncognitoTabHistoryEnabled) { -+ auto* profile_ = profile()->GetOffTheRecordProfile( -+ Profile::OTRProfileID::PrimaryID(), /*create_if_needed=*/true); -+ auto web_other_contents = content::TestWebContents::Create(profile_, nullptr); -+ web_other_contents->NavigateAndCommit(page_url_); -+ -+ HistoryTabHelper::CreateForWebContents(web_other_contents.get()); -+ HistoryTabHelper* history_tab_helper = HistoryTabHelper::FromWebContents(web_other_contents.get()); -+ ASSERT_NE(nullptr, history_tab_helper); -+ -+ // test kIncognitoTabHistoryEnabled with false -+ profile()->GetPrefs()->SetBoolean(prefs::kIncognitoTabHistoryEnabled, false); -+ ASSERT_EQ(nullptr, history_tab_helper->GetHistoryService()); -+ -+ // test kIncognitoTabHistoryEnabled with true -+ profile()->GetPrefs()->SetBoolean(prefs::kIncognitoTabHistoryEnabled, true); -+ ASSERT_NE(nullptr, history_tab_helper->GetHistoryService()); -+} -+ - } // namespace - - class HistoryTabHelperTest : public ChromeRenderViewHostTestHarness { -diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrome/browser/offline_pages/android/offline_page_bridge.cc ---- a/chrome/browser/offline_pages/android/offline_page_bridge.cc -+++ b/chrome/browser/offline_pages/android/offline_page_bridge.cc -@@ -48,6 +48,9 @@ - #include "content/public/browser/web_contents.h" - #include "net/base/filename_util.h" - #include "url/android/gurl_android.h" -+#include "components/prefs/pref_registry_simple.h" -+#include "components/prefs/pref_service.h" -+#include "chrome/common/pref_names.h" - - using base::android::ConvertJavaStringToUTF8; - using base::android::ConvertUTF16ToJavaString; -@@ -157,7 +160,13 @@ void ValidateFileCallback( - int64_t offline_id, - const GURL& url, - const base::FilePath& file_path, -+ SimpleFactoryKey* key, - bool is_trusted) { -+ // in always incognito, never trust input file (show file name in url) -+ ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key); -+ if(profile_key->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) -+ is_trusted = false; -+ - // If trusted, the launch url will be the http/https url of the offline - // page. If the file path is content URI, directly open it. Otherwise, the - // launch url will be the file URL pointing to the archive file of the offline -@@ -784,7 +793,7 @@ void OfflinePageBridge::GetPageByOfflineIdDone( - if (offline_page_model_->IsArchiveInInternalDir(offline_page->file_path)) { - ValidateFileCallback(launch_location, j_callback_obj, - offline_page->offline_id, offline_page->url, -- offline_page->file_path, true /* is_trusted*/); -+ offline_page->file_path, key_, true /* is_trusted*/); - return; - } - -@@ -794,7 +803,7 @@ void OfflinePageBridge::GetPageByOfflineIdDone( - offline_page->file_size, offline_page->digest), - base::BindOnce(&ValidateFileCallback, launch_location, j_callback_obj, - offline_page->offline_id, offline_page->url, -- offline_page->file_path)); -+ offline_page->file_path, key_)); - } - - void OfflinePageBridge::GetSizeAndComputeDigestDone( -diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc b/chrome/browser/offline_pages/android/offline_page_model_factory.cc ---- a/chrome/browser/offline_pages/android/offline_page_model_factory.cc -+++ b/chrome/browser/offline_pages/android/offline_page_model_factory.cc -@@ -26,6 +26,9 @@ - #include "components/keyed_service/core/simple_dependency_manager.h" - #include "components/offline_pages/core/model/offline_page_model_taskified.h" - #include "components/offline_pages/core/offline_page_metadata_store.h" -+#include "components/prefs/pref_registry_simple.h" -+#include "components/prefs/pref_service.h" -+#include "chrome/common/pref_names.h" - - namespace offline_pages { - -@@ -48,6 +51,7 @@ OfflinePageModel* OfflinePageModelFactory::GetForKey(SimpleFactoryKey* key) { - OfflinePageModel* OfflinePageModelFactory::GetForBrowserContext( - content::BrowserContext* browser_context) { - Profile* profile = Profile::FromBrowserContext(browser_context); -+ profile = profile->GetOriginalProfile(); - return GetForKey(profile->GetProfileKey()); - } - -@@ -56,13 +60,15 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( - scoped_refptr background_task_runner = - base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}); - -+ ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key)->GetOriginalKey(); -+ - base::FilePath store_path = -- key->GetPath().Append(chrome::kOfflinePageMetadataDirname); -+ profile_key->GetPath().Append(chrome::kOfflinePageMetadataDirname); - std::unique_ptr metadata_store( - new OfflinePageMetadataStore(background_task_runner, store_path)); - - base::FilePath persistent_archives_dir = -- key->GetPath().Append(chrome::kOfflinePageArchivesDirname); -+ profile_key->GetPath().Append(chrome::kOfflinePageArchivesDirname); - // If base::PathService::Get returns false, the temporary_archives_dir will be - // empty, and no temporary pages will be saved during this chrome lifecycle. - base::FilePath temporary_archives_dir; -@@ -71,7 +77,6 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( - temporary_archives_dir.Append(chrome::kOfflinePageArchivesDirname); - } - -- ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key); - auto archive_manager = std::make_unique( - temporary_archives_dir, persistent_archives_dir, - DownloadPrefs::GetDefaultDownloadDirectory(), background_task_runner, -@@ -91,4 +96,14 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( - return model; - } - -+SimpleFactoryKey* OfflinePageModelFactory::GetKeyToUse( -+ SimpleFactoryKey* key) const { -+ ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key); -+ if(profile_key->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == false) { -+ return SimpleKeyedServiceFactory::GetKeyToUse(key); -+ } else { -+ return profile_key->GetOriginalKey(); -+ } -+} -+ - } // namespace offline_pages -diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc b/chrome/browser/offline_pages/android/request_coordinator_factory.cc ---- a/chrome/browser/offline_pages/android/request_coordinator_factory.cc -+++ b/chrome/browser/offline_pages/android/request_coordinator_factory.cc -@@ -30,6 +30,11 @@ - #include "components/offline_pages/core/offline_page_feature.h" - #include "content/public/browser/web_contents.h" - -+#include "chrome/browser/profiles/incognito_helpers.h" -+#include "components/prefs/pref_registry_simple.h" -+#include "components/prefs/pref_service.h" -+#include "chrome/common/pref_names.h" -+ - namespace network { - class NetworkQualityTracker; - } -@@ -115,4 +120,16 @@ KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor( - return request_coordinator; - } - -+content::BrowserContext* -+RequestCoordinatorFactory::GetBrowserContextToUse( -+ content::BrowserContext* context) const { -+ if(Profile::FromBrowserContext(context)->GetOriginalProfile() -+ ->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == false) { -+ return BrowserContextKeyedServiceFactory::GetBrowserContextToUse(context); -+ } else { -+ return chrome::GetBrowserContextRedirectedInIncognito(context); -+ } -+} -+ -+ - } // namespace offline_pages -diff --git a/chrome/browser/offline_pages/offline_page_model_factory.h b/chrome/browser/offline_pages/offline_page_model_factory.h ---- a/chrome/browser/offline_pages/offline_page_model_factory.h -+++ b/chrome/browser/offline_pages/offline_page_model_factory.h -@@ -48,6 +48,7 @@ class OfflinePageModelFactory : public SimpleKeyedServiceFactory { - - std::unique_ptr BuildServiceInstanceFor( - SimpleFactoryKey* key) const override; -+ SimpleFactoryKey* GetKeyToUse(SimpleFactoryKey* key) const override; - }; - - } // namespace offline_pages -diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/offline_pages/recent_tab_helper.cc ---- a/chrome/browser/offline_pages/recent_tab_helper.cc -+++ b/chrome/browser/offline_pages/recent_tab_helper.cc -@@ -29,6 +29,11 @@ - #include "content/public/browser/navigation_entry.h" - #include "content/public/browser/navigation_handle.h" - -+#include "chrome/browser/profiles/profile.h" -+#include "components/prefs/pref_registry_simple.h" -+#include "components/prefs/pref_service.h" -+#include "chrome/common/pref_names.h" -+ - namespace { - class DefaultRecentTabHelperDelegate - : public offline_pages::RecentTabHelper::Delegate { -@@ -181,6 +186,13 @@ bool RecentTabHelper::EnsureInitialized() { - // WebContents with its origin as well. - snapshots_enabled_ = !tab_id_.empty() && - !web_contents()->GetBrowserContext()->IsOffTheRecord(); -+ if(!tab_id_.empty() && web_contents()->GetBrowserContext()->IsOffTheRecord()) { -+ if(Profile::FromBrowserContext(web_contents()->GetBrowserContext()) -+ ->GetOriginalProfile() -+ ->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == true) { -+ snapshots_enabled_ = true; -+ } -+ } - - if (snapshots_enabled_) { - page_model_ = OfflinePageModelFactory::GetForBrowserContext( -diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome/browser/offline_pages/request_coordinator_factory.h ---- a/chrome/browser/offline_pages/request_coordinator_factory.h -+++ b/chrome/browser/offline_pages/request_coordinator_factory.h -@@ -36,6 +36,8 @@ class RequestCoordinatorFactory : public BrowserContextKeyedServiceFactory { - - KeyedService* BuildServiceInstanceFor( - content::BrowserContext* context) const override; -+ content::BrowserContext* GetBrowserContextToUse( -+ content::BrowserContext* context) const override; - }; - - } // namespace offline_pages -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 -@@ -214,6 +214,7 @@ - #endif - - #if BUILDFLAG(IS_ANDROID) -+#include "chrome/browser/history/history_tab_helper.h" - #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" -@@ -1338,6 +1339,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, - // register incognito pref - registry->RegisterBooleanPref(prefs::kAlwaysIncognitoEnabled, - /*default_value=*/false); -+ HistoryTabHelper::RegisterProfilePrefs(registry); - feed::RegisterProfilePrefs(registry); - #else // BUILDFLAG(IS_ANDROID) - AppShortcutManager::RegisterProfilePrefs(registry); -diff --git a/chrome/browser/ui/android/native_page/BUILD.gn b/chrome/browser/ui/android/native_page/BUILD.gn ---- a/chrome/browser/ui/android/native_page/BUILD.gn -+++ b/chrome/browser/ui/android/native_page/BUILD.gn -@@ -32,8 +32,10 @@ java_library("junit") { - - deps = [ - ":java", -+ "//base:base_java", - "//base:base_junit_test_support", - "//third_party/android_deps:robolectric_all_java", - "//third_party/junit", -+ "//components/embedder_support/android:util_java", - ] - } -diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java ---- a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java -+++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java -@@ -16,6 +16,8 @@ import org.chromium.url.GURL; - import java.lang.annotation.Retention; - import java.lang.annotation.RetentionPolicy; - -+import org.chromium.base.ContextUtils; -+ - /** - * An interface for pages that will be using Android views instead of html/rendered Web content. - */ -@@ -120,12 +122,12 @@ public interface NativePage { - */ - @Deprecated // Use GURL-variant instead. - public static boolean isNativePageUrl(String url, boolean isIncognito) { -- return nativePageType(url, null, isIncognito) != NativePageType.NONE; -+ return nativePageType(url, null, isIncognito, false) != NativePageType.NONE; - } - - public static boolean isNativePageUrl(GURL url, boolean isIncognito) { - return url != null -- && nativePageType(url.getSpec(), null, isIncognito) != NativePageType.NONE; -+ && nativePageType(url.getSpec(), null, isIncognito, false) != NativePageType.NONE; - } - - /** -@@ -136,7 +138,8 @@ public interface NativePage { - */ - // TODO(crbug/783819) - Convert to using GURL. - public static @NativePageType int nativePageType( -- String url, NativePage candidatePage, boolean isIncognito) { -+ String url, NativePage candidatePage, boolean isIncognito, -+ boolean isAlwaysIncognito) { - if (url == null) return NativePageType.NONE; - - Uri uri = Uri.parse(url); -@@ -158,7 +161,8 @@ public interface NativePage { - return NativePageType.DOWNLOADS; - } else if (UrlConstants.HISTORY_HOST.equals(host)) { - return NativePageType.HISTORY; -- } else if (UrlConstants.RECENT_TABS_HOST.equals(host) && !isIncognito) { -+ } else if (UrlConstants.RECENT_TABS_HOST.equals(host) && -+ (!isIncognito || isAlwaysIncognito)) { - return NativePageType.RECENT_TABS; - } else if (UrlConstants.EXPLORE_HOST.equals(host)) { - return NativePageType.EXPLORE; -diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageTest.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageTest.java ---- a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageTest.java -+++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePageTest.java -@@ -12,6 +12,10 @@ import org.robolectric.annotation.Config; - import org.chromium.base.test.BaseRobolectricTestRunner; - import org.chromium.chrome.browser.ui.native_page.NativePage.NativePageType; - -+import org.chromium.base.ContextUtils; -+import org.chromium.components.embedder_support.util.UrlConstants; -+import android.content.SharedPreferences; -+ - /** - * Tests public methods in NativePage. - */ -@@ -91,4 +95,26 @@ public class NativePageTest { - Assert.assertFalse(invalidUrl, NativePage.isNativePageUrl(invalidUrl, true)); - } - } -+ -+ @Test -+ public void Bromite_testNativePage_RecentTabsInAlwaysIncognito() { -+ SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); -+ SharedPreferences.Editor editor = prefs.edit(); -+ -+ String url = "chrome-native://recent-tabs"; -+ -+ editor.putBoolean(/*AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO*/ -+ "always_incognito", false); -+ editor.apply(); -+ -+ Assert.assertEquals(NativePageType.NONE, -+ NativePage.nativePageType(url, null, /*isIncognito*/true)); -+ -+ editor.putBoolean(/*AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO*/ -+ "always_incognito", true); -+ editor.apply(); -+ -+ Assert.assertEquals(NativePageType.RECENT_TABS, -+ NativePage.nativePageType(url, null, /*isIncognito*/true)); -+ } - } -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 -@@ -1126,6 +1126,12 @@ Your Google account may have other forms of browsing history like searches and a - - Your changes will take effect the next time you relaunch Bromite. - -+ -+ Enable history in incognito tabs -+ -+ -+ Record history even in incognito mode -+ - - Clears history and autocompletions in the address bar. Your Google Account may have other forms of browsing history at <link>myactivity.google.com</link>. - -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 -@@ -3286,6 +3286,8 @@ const char kLacrosLaunchSwitch[] = "lacros_launch_switch"; - - #if BUILDFLAG(IS_ANDROID) - const char kAlwaysIncognitoEnabled[] = "always_incognito_enabled"; -+const char kIncognitoTabHistoryEnabled[] = -+ "incognito_tab_history_enabled"; - #endif - - #if BUILDFLAG(IS_CHROMEOS_ASH) -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 -@@ -1203,6 +1203,10 @@ extern const char kPrivacyGuideViewed[]; - - extern const char kCorsNonWildcardRequestHeadersSupport[]; - -+#if BUILDFLAG(IS_ANDROID) -+extern const char kIncognitoTabHistoryEnabled[]; -+#endif -+ - extern const char kOriginAgentClusterDefaultEnabled[]; - - extern const char kForceMajorVersionToMinorPositionInUserAgent[]; -diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn ---- a/chrome/test/BUILD.gn -+++ b/chrome/test/BUILD.gn -@@ -5063,6 +5063,11 @@ test("unit_tests") { - ] - } - -+ # Bromite tests -+ sources += [ -+ "../browser/android/historical_tab_saver_unittest.cc", -+ ] -+ - if (is_android) { - sources += [ - "../browser/android/bookmarks/partner_bookmarks_shim_unittest.cc", --- -2.25.1 diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index 0cea3bfe..e708d5c0 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -183,7 +183,7 @@ diff --git a/chrome/browser/permissions/last_tab_standing_tracker_factory.cc b/c diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -365,10 +365,7 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -367,10 +367,7 @@ void ChromeBrowserMainExtraPartsProfiles:: InstantServiceFactory::GetInstance(); #endif LanguageModelManagerFactory::GetInstance(); @@ -198,7 +198,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc 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 -@@ -454,6 +454,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -459,6 +459,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents); } video_tutorials::VideoTutorialTabHelper::CreateForWebContents(web_contents); @@ -347,7 +347,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -580,6 +580,11 @@ +@@ -589,6 +589,11 @@ URL truncated @@ -357,7 +357,7 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp + + - Ad personalization + Ad personalization diff --git a/components/content_settings/android/BUILD.gn b/components/content_settings/android/BUILD.gn --- a/components/content_settings/android/BUILD.gn @@ -373,7 +373,7 @@ diff --git a/components/content_settings/android/BUILD.gn b/components/content_s diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/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 -@@ -185,4 +185,33 @@ base::Time GetConstraintExpiration(const base::TimeDelta duration) { +@@ -184,4 +184,33 @@ base::Time GetConstraintExpiration(const base::TimeDelta duration) { return base::Time::Now() + duration; } @@ -426,7 +426,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.h b 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 -@@ -821,7 +821,7 @@ void HostContentSettingsMap::AddSettingsForOneType( +@@ -823,7 +823,7 @@ void HostContentSettingsMap::AddSettingsForOneType( settings->emplace_back(rule.primary_pattern, rule.secondary_pattern, std::move(value), kProviderNamesSourceMap[provider_type].provider_name, @@ -516,7 +516,7 @@ diff --git a/components/content_settings/core/common/content_settings_constraint diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java -@@ -378,9 +378,9 @@ public class PageInfoController implements PageInfoMainController, ModalDialogPr +@@ -383,9 +383,9 @@ public class PageInfoController implements PageInfoMainController, ModalDialogPr */ @CalledByNative private void addPermissionSection(String name, String nameMidSentence, int type, @@ -574,7 +574,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc --- a/components/page_info/android/page_info_controller_android.cc +++ b/components/page_info/android/page_info_controller_android.cc -@@ -157,6 +157,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -158,6 +158,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( std::map user_specified_settings_to_display; @@ -583,7 +583,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp for (const auto& permission : permission_info_list) { if (base::Contains(permissions_to_display, permission.type)) { -@@ -165,6 +167,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -166,6 +168,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( if (setting_to_display) { user_specified_settings_to_display[permission.type] = *setting_to_display; @@ -592,7 +592,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } } -@@ -181,7 +185,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -182,7 +186,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( ConvertUTF16ToJavaString(env, setting_title), ConvertUTF16ToJavaString(env, setting_title_mid_sentence), static_cast(permission), @@ -602,7 +602,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } -@@ -194,7 +199,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -195,7 +200,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( env, controller_jobject_, ConvertUTF16ToJavaString(env, object_title), ConvertUTF16ToJavaString(env, object_title), static_cast(chosen_object->ui_info.content_settings_type), @@ -615,7 +615,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 -@@ -979,6 +979,8 @@ void PageInfo::PresentSitePermissions() { +@@ -980,6 +980,8 @@ void PageInfo::PresentSitePermissions() { permission_info.source = info.source; permission_info.is_one_time = (info.session_model == content_settings::SessionModel::OneTime); @@ -864,7 +864,7 @@ diff --git a/components/permissions/android/permission_prompt_android.h b/compon diff --git a/components/permissions/android/permissions_android_strings.grd b/components/permissions/android/permissions_android_strings.grd --- a/components/permissions/android/permissions_android_strings.grd +++ b/components/permissions/android/permissions_android_strings.grd -@@ -260,6 +260,23 @@ +@@ -263,6 +263,23 @@ Unknown or unsupported device (%1$sA1:B2:C3:D4:E5:F6) @@ -1020,7 +1020,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc --- a/components/permissions/permission_context_base.cc +++ b/components/permissions/permission_context_base.cc -@@ -242,6 +242,20 @@ PermissionContextBase::CreatePermissionRequest( +@@ -243,6 +243,20 @@ PermissionContextBase::CreatePermissionRequest( std::move(delete_callback)); } @@ -1041,7 +1041,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm PermissionResult PermissionContextBase::GetPermissionStatus( content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, -@@ -434,7 +448,8 @@ void PermissionContextBase::PermissionDecided( +@@ -435,7 +449,8 @@ void PermissionContextBase::PermissionDecided( const GURL& embedding_origin, BrowserPermissionCallback callback, ContentSetting content_setting, @@ -1051,7 +1051,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK(content_setting == CONTENT_SETTING_ALLOW || content_setting == CONTENT_SETTING_BLOCK || content_setting == CONTENT_SETTING_DEFAULT); -@@ -442,9 +457,9 @@ void PermissionContextBase::PermissionDecided( +@@ -443,9 +458,9 @@ void PermissionContextBase::PermissionDecided( content_setting); bool persist = content_setting != CONTENT_SETTING_DEFAULT; @@ -1063,7 +1063,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } content::BrowserContext* PermissionContextBase::browser_context() const { -@@ -494,11 +509,26 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -495,11 +510,26 @@ void PermissionContextBase::NotifyPermissionSet( bool persist, ContentSetting content_setting, bool is_one_time) { @@ -1091,7 +1091,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } UpdateTabContext(id, requesting_origin, -@@ -519,6 +549,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, +@@ -520,6 +550,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, const GURL& embedding_origin, ContentSetting content_setting, bool is_one_time) { @@ -1107,7 +1107,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_EQ(requesting_origin, requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(embedding_origin, embedding_origin.DeprecatedGetOriginAsURL()); DCHECK(content_setting == CONTENT_SETTING_ALLOW || -@@ -530,8 +569,7 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, +@@ -531,8 +570,7 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, ->SetContentSettingDefaultScope( requesting_origin, embedding_origin, content_settings_type_, content_setting, @@ -1299,7 +1299,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc --- a/components/permissions/permission_request_manager.cc +++ b/components/permissions/permission_request_manager.cc -@@ -156,7 +156,7 @@ void PermissionRequestManager::AddRequest( +@@ -162,7 +162,7 @@ void PermissionRequestManager::AddRequest( if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { @@ -1308,7 +1308,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p request->RequestFinished(); return; } -@@ -210,7 +210,7 @@ void PermissionRequestManager::AddRequest( +@@ -234,7 +234,7 @@ void PermissionRequestManager::AddRequest( if (auto_approval_origin) { if (url::Origin::Create(request->requesting_origin()) == auto_approval_origin.value()) { @@ -1317,7 +1317,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } request->RequestFinished(); return; -@@ -469,12 +469,13 @@ void PermissionRequestManager::Accept() { +@@ -493,12 +493,13 @@ void PermissionRequestManager::Accept() { for (requests_iter = requests_.begin(); requests_iter != requests_.end(); requests_iter++) { PermissionGrantedIncludingDuplicates(*requests_iter, @@ -1333,7 +1333,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) return; DCHECK(view_); -@@ -482,12 +483,22 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -506,12 +507,22 @@ void PermissionRequestManager::AcceptThisTime() { for (requests_iter = requests_.begin(); requests_iter != requests_.end(); requests_iter++) { PermissionGrantedIncludingDuplicates(*requests_iter, @@ -1357,7 +1357,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) return; DCHECK(view_); -@@ -509,7 +520,7 @@ void PermissionRequestManager::Deny() { +@@ -533,7 +544,7 @@ void PermissionRequestManager::Deny() { std::vector::iterator requests_iter; for (requests_iter = requests_.begin(); requests_iter != requests_.end(); requests_iter++) { @@ -1366,7 +1366,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } FinalizeCurrentRequests(PermissionAction::DENIED); } -@@ -858,25 +869,26 @@ PermissionRequest* PermissionRequestManager::GetExistingRequest( +@@ -886,25 +897,26 @@ PermissionRequest* PermissionRequestManager::GetExistingRequest( void PermissionRequestManager::PermissionGrantedIncludingDuplicates( PermissionRequest* request, @@ -1399,7 +1399,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } void PermissionRequestManager::CancelledIncludingDuplicates( -@@ -1044,7 +1056,7 @@ void PermissionRequestManager::LogWarningToConsole(const char* message) { +@@ -1075,7 +1087,7 @@ void PermissionRequestManager::LogWarningToConsole(const char* message) { void PermissionRequestManager::DoAutoResponseForTesting() { switch (auto_response_for_test_) { case ACCEPT_ONCE: diff --git a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch index 8d76c2d7..c46d4a47 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -62,16 +62,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.compositor.CompositorViewHolder; -@@ -2111,6 +2113,8 @@ public class ChromeTabbedActivity extends ChromeActivity getTabModelSelector().closeAllTabs(), /*isIncognito=*/false); RecordUserAction.record("MobileMenuCloseAllTabs"); + } else if (id == R.id.bookmark_all_tabs_menu_id) { + bookmarkAllTabs(); } else if (id == R.id.close_all_incognito_tabs_menu_id) { - if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLOSE_ALL_TABS_MODAL_DIALOG)) { - CloseAllTabsDialog.show(this, getModalDialogManagerSupplier(), -@@ -2167,6 +2171,28 @@ public class ChromeTabbedActivity extends ChromeActivity<resetlink>reset sync

<resetlink>reset sync

Track prices @@ -569,7 +569,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/b diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc --- a/components/bookmarks/browser/bookmark_model.cc +++ b/components/bookmarks/browser/bookmark_model.cc -@@ -564,7 +564,7 @@ bool BookmarkModel::HasBookmarks() { +@@ -565,7 +565,7 @@ bool BookmarkModel::HasBookmarks() { bool BookmarkModel::HasNoUserCreatedBookmarksOrFolders() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return bookmark_bar_node_->children().empty() && @@ -578,7 +578,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar } bool BookmarkModel::IsBookmarked(const GURL& url) { -@@ -806,6 +806,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { +@@ -807,6 +807,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { bookmark_bar_node_ = details->bb_node(); other_node_ = details->other_folder_node(); mobile_node_ = details->mobile_folder_node(); @@ -589,7 +589,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmarks/browser/bookmark_model.h --- a/components/bookmarks/browser/bookmark_model.h +++ b/components/bookmarks/browser/bookmark_model.h -@@ -120,6 +120,12 @@ class BookmarkModel : public BookmarkUndoProvider, +@@ -121,6 +121,12 @@ class BookmarkModel : public BookmarkUndoProvider, return mobile_node_; } @@ -602,7 +602,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark bool is_root_node(const BookmarkNode* node) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return node == root_; -@@ -395,6 +401,7 @@ class BookmarkModel : public BookmarkUndoProvider, +@@ -396,6 +402,7 @@ class BookmarkModel : public BookmarkUndoProvider, raw_ptr bookmark_bar_node_ = nullptr; raw_ptr other_node_ = nullptr; raw_ptr mobile_node_ = nullptr; @@ -674,7 +674,7 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks/browser/model_loader.cc --- a/components/bookmarks/browser/model_loader.cc +++ b/components/bookmarks/browser/model_loader.cc -@@ -54,7 +54,8 @@ void LoadBookmarks(const base::FilePath& path, +@@ -55,7 +55,8 @@ void LoadBookmarks(const base::FilePath& path, std::string sync_metadata_str; BookmarkCodec codec; codec.Decode(*root, details->bb_node(), details->other_folder_node(), @@ -687,7 +687,7 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc --- a/components/sync_bookmarks/bookmark_specifics_conversions.cc +++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc -@@ -407,6 +407,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode( +@@ -406,6 +406,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode( case bookmarks::BookmarkNode::BOOKMARK_BAR: case bookmarks::BookmarkNode::OTHER_NODE: case bookmarks::BookmarkNode::MOBILE: diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index 1863947e..fe6cd39e 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/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 -@@ -2141,6 +2141,8 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -2522,6 +2522,11 @@ public abstract class ChromeActivity return true; } @@ -76,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App updateAutoDarkMenuItem(menu, currentTab, isChromeScheme); -@@ -1161,6 +1162,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -1160,6 +1161,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate stopPriceTrackingMenuItem.setVisible(priceTrackingEnabled); } diff --git a/build/patches/Add-option-to-force-tablet-UI.patch b/build/patches/Add-option-to-force-tablet-UI.patch index ed3df924..26413841 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -52,7 +52,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow 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 -@@ -1353,6 +1353,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1345,6 +1345,12 @@ Your Google account may have other forms of browsing history like searches and a Temporarily links this data to your Google Account when you’re signed in, to protect you across Google apps @@ -103,7 +103,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn disallowed_extension_deps_ = [ # Components should largely not depend on //extensions. Since // extensions # is not a component target and is linked with //chrome, depending on most -@@ -604,7 +604,7 @@ test("components_unittests") { +@@ -618,7 +618,7 @@ test("components_unittests") { # On other platforms, no components should depend on Chrome. # Since //chrome depends on //extensions, we also only assert_no_deps on # extensions targets for non-lacros builds. @@ -112,7 +112,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn assert_no_deps = [ "//chrome/*" ] assert_no_deps += disallowed_extension_deps_ } -@@ -877,7 +877,7 @@ if (!is_ios) { +@@ -893,7 +893,7 @@ if (!is_ios) { # dependency. On other platforms, no components should depend on Chrome. # Since //chrome depends on //extensions, we also only assert_no_deps on # extensions targets for non-lacros builds. 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 99a48915..e96cc919 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 @@ -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 -@@ -1221,8 +1221,10 @@ public class ChromeTabbedActivity extends ChromeActivity<resetlink>reset sync

<resetlink>reset sync

IMAGE diff --git a/build/patches/Add-option-to-use-home-page-as-NTP.patch b/build/patches/Add-option-to-use-home-page-as-NTP.patch index 3e984421..e2bc51d3 100644 --- a/build/patches/Add-option-to-use-home-page-as-NTP.patch +++ b/build/patches/Add-option-to-use-home-page-as-NTP.patch @@ -154,7 +154,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro 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 -@@ -1168,6 +1168,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1160,6 +1160,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour @@ -179,7 +179,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc -@@ -55,6 +55,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode"; +@@ -56,6 +56,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode"; // A boolean specifying whether the New Tab page is the home page or not. const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage"; diff --git a/build/patches/Add-support-for-ISupportHelpAndFeedback.patch b/build/patches/Add-support-for-ISupportHelpAndFeedback.patch index 7e4800b9..22fb223f 100644 --- a/build/patches/Add-support-for-ISupportHelpAndFeedback.patch +++ b/build/patches/Add-support-for-ISupportHelpAndFeedback.patch @@ -10,7 +10,7 @@ Subject: Add support for ISupportHelpAndFeedback diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -65,6 +65,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; +@@ -69,6 +69,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory; import org.chromium.components.browser_ui.settings.FragmentSettingsLauncher; import org.chromium.components.browser_ui.settings.SettingsLauncher; @@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment; import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; import org.chromium.components.browser_ui.widget.displaystyle.ViewResizer; -@@ -331,9 +332,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -335,9 +336,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity finish(); return true; } else if (item.getItemId() == R.id.menu_id_general_help) { diff --git a/build/patches/Allow-building-without-enable_reporting.patch b/build/patches/Allow-building-without-enable_reporting.patch index e34c5c02..5992fe75 100644 --- a/build/patches/Allow-building-without-enable_reporting.patch +++ b/build/patches/Allow-building-without-enable_reporting.patch @@ -174,7 +174,7 @@ diff --git a/content/browser/net/reporting_service_proxy.cc b/content/browser/ne diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -11018,6 +11018,7 @@ void RenderFrameHostImpl::OnSameDocumentCommitProcessed( +@@ -11294,6 +11294,7 @@ void RenderFrameHostImpl::OnSameDocumentCommitProcessed( void RenderFrameHostImpl::MaybeGenerateCrashReport( base::TerminationStatus status, int exit_code) { @@ -182,7 +182,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b if (!last_committed_url_.SchemeIsHTTPOrHTTPS()) return; -@@ -11067,6 +11068,7 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( +@@ -11343,6 +11344,7 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( /*type=*/"crash", /*group=*/"default", last_committed_url_, GetReportingSource(), isolation_info_.network_isolation_key(), absl::nullopt /* user_agent */, std::move(body)); @@ -239,7 +239,7 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic diff --git a/services/network/network_context.h b/services/network/network_context.h --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -439,10 +439,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -440,10 +440,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext const absl::optional& reporting_source, const net::NetworkIsolationKey& network_isolation_key, const absl::optional& user_agent, @@ -255,7 +255,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn --- a/services/network/public/mojom/BUILD.gn +++ b/services/network/public/mojom/BUILD.gn -@@ -963,7 +963,6 @@ mojom("mojom") { +@@ -961,7 +961,6 @@ mojom("mojom") { export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" export_header_blink = "third_party/blink/public/platform/web_common.h" if (enable_reporting) { @@ -266,7 +266,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1037,6 +1037,7 @@ interface NetworkContext { +@@ -1043,6 +1043,7 @@ interface NetworkContext { // provided |network_isolation_key|. // // Spec: https://w3c.github.io/reporting/#concept-reports @@ -274,7 +274,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw QueueReport(string type, string group, url.mojom.Url url, -@@ -1050,6 +1051,7 @@ interface NetworkContext { +@@ -1056,6 +1057,7 @@ interface NetworkContext { // Note that this queued report will never be delivered if no reporting // endpoint matching is registered for with the provided // |network_isolation_key|. @@ -293,7 +293,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ #include "services/data_decoder/public/mojom/resource_snapshot_for_web_bundle.mojom-blink.h" #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/content_security_policy.mojom-blink.h" -@@ -2274,9 +2275,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const { +@@ -2297,9 +2298,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const { return base::UnguessableToken::Null(); } @@ -319,7 +319,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b #include "services/device/public/mojom/device_posture_provider.mojom-blink-forward.h" #include "services/network/public/mojom/fetch_api.mojom-blink-forward.h" #include "third_party/blink/public/common/frame/frame_ad_evidence.h" -@@ -547,9 +547,9 @@ class CORE_EXPORT LocalFrame final +@@ -550,9 +550,9 @@ class CORE_EXPORT LocalFrame final } SmoothScrollSequencer& GetSmoothScrollSequencer(); @@ -405,7 +405,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p #include "third_party/blink/public/mojom/frame/reporting_observer.mojom-blink.h" #include "third_party/blink/public/mojom/reporting/reporting.mojom-blink.h" #include "third_party/blink/renderer/core/core_export.h" -@@ -54,10 +55,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected, +@@ -55,10 +56,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected, private: // Counts the use of a report type via UseCounter. void CountReport(Report*); @@ -418,7 +418,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p void NotifyInternal(Report* report); // Send |report| via the Reporting API to |endpoint|. void SendToReportingAPI(Report* report, const String& endpoint) const; -@@ -68,8 +69,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected, +@@ -69,8 +70,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected, // This is declared mutable so that the service endpoint can be cached by // const methods. diff --git a/build/patches/Allow-playing-audio-in-background.patch b/build/patches/Allow-playing-audio-in-background.patch index 32552f93..edfba706 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/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc --- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc -@@ -1211,6 +1211,12 @@ bool WebMediaPlayerImpl::HasAudio() const { +@@ -1214,6 +1214,12 @@ bool WebMediaPlayerImpl::HasAudio() const { return pipeline_metadata_.has_audio; } @@ -23,7 +23,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc void WebMediaPlayerImpl::EnabledAudioTracksChanged( const WebVector& enabledTrackIds) { DCHECK(main_task_runner_->BelongsToCurrentThread()); -@@ -3581,7 +3587,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { +@@ -3586,7 +3592,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/third_party/blink/renderer/platform/media/web_media_player_impl.cc diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.h b/third_party/blink/renderer/platform/media/web_media_player_impl.h --- a/third_party/blink/renderer/platform/media/web_media_player_impl.h +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.h -@@ -190,6 +190,9 @@ class BLINK_PLATFORM_EXPORT WebMediaPlayerImpl +@@ -191,6 +191,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl bool HasVideo() const override; bool HasAudio() const override; diff --git a/build/patches/Ask-user-before-closing-all-tabs.patch b/build/patches/Ask-user-before-closing-all-tabs.patch index 1848eab6..f0cb9559 100644 --- a/build/patches/Ask-user-before-closing-all-tabs.patch +++ b/build/patches/Ask-user-before-closing-all-tabs.patch @@ -9,7 +9,7 @@ Subject: Ask user before closing all tabs 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 -@@ -457,8 +457,8 @@ const base::Feature kConditionalTabStripAndroid{ +@@ -461,8 +461,8 @@ const base::Feature kConditionalTabStripAndroid{ const base::Feature kCastDeviceFilter{"CastDeviceFilter", base::FEATURE_DISABLED_BY_DEFAULT}; diff --git a/build/patches/Automated-domain-substitution.patch b/build/patches/Automated-domain-substitution.patch index 338b621c..b0a5477a 100644 --- a/build/patches/Automated-domain-substitution.patch +++ b/build/patches/Automated-domain-substitution.patch @@ -4,109 +4,1104 @@ Subject: Automated domain substitution --- PRESUBMIT.py | 70 +- + .../cts_config/webview_cts_gcs_path.json | 20 +- + android_webview/tools/generate_flag_labels.py | 2 +- + android_webview/tools/record_netlog.py | 6 +- + .../tools/remove_preinstalled_webview.py | 2 +- + android_webview/tools/update_cts.py | 4 +- + ash/accelerators/accelerator_notifications.cc | 2 +- + ash/app_list/PRESUBMIT.py | 2 +- + ash/ash_strings.grd | 26 +- + ash/assistant/PRESUBMIT.py | 2 +- + ash/assistant/assistant_setup_controller.cc | 2 +- + ash/assistant/util/deep_link_util.cc | 16 +- + .../device_activity_controller.cc | 2 +- + ash/components/drivefs/drivefs_auth.cc | 2 +- + .../simple_geolocation_provider.cc | 2 +- + ash/components/phonehub/url_constants.cc | 2 +- + ash/components/timezone/timezone_request.cc | 2 +- + .../trial_group/trial_group_checker.cc | 2 +- + ash/constants/url_constants.cc | 6 +- + .../fake_device_metadata_http_fetcher.cc | 2 +- + .../fast_pair/device_metadata_fetcher.cc | 2 +- + .../fast_pair/footprints_fetcher_impl.cc | 4 +- + .../ui/fast_pair/fast_pair_presenter_impl.cc | 4 +- + ash/resources/PRESUBMIT.py | 4 +- + .../device_sync/cryptauth_client_impl.cc | 8 +- + ash/services/ime/constants.cc | 2 +- + ...pcie_peripheral_notification_controller.cc | 2 +- + .../usb_peripheral_notification_controller.cc | 4 +- + .../test_wallpaper_controller_client.cc | 2 +- + .../camera_app_ui/camera_app_untrusted_ui.cc | 2 +- + .../resources/js/lib/analytics.js | 14 +- + .../resources/strings/camera_strings.grd | 2 +- + ash/webui/common/resources/PRESUBMIT.py | 2 +- + .../diagnostics_ui/resources/PRESUBMIT.py | 2 +- + .../resources/keyboard_tester.html | 2 +- + .../diagnostics_ui/resources/network_card.js | 2 +- + .../resources/routine_section.js | 2 +- + .../firmware_update_ui/resources/PRESUBMIT.py | 2 +- + .../help_app_kids_magazine_untrusted_ui.cc | 2 +- + ash/webui/media_app_ui/media_app_guest_ui.cc | 2 +- + .../os_feedback_ui/resources/fake_data.js | 10 +- + .../personalization_app_ui.cc | 2 +- + .../print_management/resources/PRESUBMIT.py | 2 +- + .../projector_app/projector_xhr_sender.cc | 8 +- + .../projector_app/untrusted_projector_ui.cc | 12 +- + ash/webui/scanning/resources/PRESUBMIT.py | 2 +- + .../scanning/resources/scanning_app.html | 2 +- + ash/webui/scanning/resources/scanning_app.js | 2 +- + ...boarding_enter_rsu_wp_disable_code_page.js | 2 +- + .../resources/PRESUBMIT.py | 2 +- + base/PRESUBMIT.py | 4 +- + base/android/jni_generator/PRESUBMIT.py | 2 +- + base/android/resource_exclusions.gni | 2 +- base/debug/debugger_posix.cc | 4 +- base/debug/stack_trace_posix.cc | 2 +- + base/ios/device_util.mm | 2 +- + base/third_party/libevent/evdns.c | 2 +- + build/android/PRESUBMIT.py | 2 +- + build/android/gradle/generate_gradle.py | 2 +- + .../android/gyp/assert_static_initializers.py | 2 +- + build/android/gyp/lint.py | 2 +- + build/android/gyp/proguard.py | 4 +- + build/android/gyp/util/diff_utils.py | 4 +- build/android/gyp/util/protoresources.py | 2 +- + .../android/incremental_install/installer.py | 2 +- + build/android/pylib/constants/__init__.py | 2 +- + build/android/pylib/device_settings.py | 8 +- build/android/pylib/dex/dex_parser.py | 6 +- + .../device/local_device_monkey_test_run.py | 2 +- build/android/pylib/local/emulator/avd.py | 2 +- + .../json_results_generator.py | 2 +- + .../presentation/test_results_presentation.py | 8 +- + .../pylib/utils/google_storage_helper.py | 4 +- + build/android/pylib/utils/maven_downloader.py | 2 +- build/android/pylib/utils/simpleperf.py | 2 +- build/android/resource_sizes.py | 2 +- + build/android/test_runner.py | 2 +- + build/android/test_wrapper/logdog_wrapper.py | 2 +- + build/apple/tweak_info_plist.py | 6 +- + build/chromeos/PRESUBMIT.py | 2 +- build/chromeos/test_runner.py | 2 +- + build/config/android/rules.gni | 2 +- + build/config/chromeos/args.gni | 4 +- + build/config/chromeos/rules.gni | 6 +- + build/config/compiler/compiler.gni | 4 +- + build/config/nacl/rules.gni | 2 +- + build/config/ozone.gni | 2 +- + build/config/sanitizers/sanitizers.gni | 2 +- + build/config/win/control_flow_guard.gni | 2 +- + build/fuchsia/PRESUBMIT.py | 2 +- + build/fuchsia/binary_sizes.py | 2 +- + build/linux/install-chromeos-fonts.py | 2 +- + .../linux/sysroot_scripts/install-sysroot.py | 2 +- + build/mac_toolchain.py | 2 +- + build/nocompile.gni | 2 +- + build/skia_gold_common/PRESUBMIT.py | 2 +- build/toolchain/cros_toolchain.gni | 2 +- + build/toolchain/gcc_toolchain.gni | 2 +- + .../lib/common/perf_tests_results_helper.py | 2 +- build/util/lib/results/result_sink.py | 2 +- build/whitespace_file.txt | 2 +- + buildtools/README.txt | 4 +- + buildtools/clang_format/README.txt | 6 +- + cc/PRESUBMIT.py | 2 +- + chrome/PRESUBMIT.py | 2 +- + chrome/android/java/src/PRESUBMIT.py | 2 +- + chrome/android/webapk/PRESUBMIT.py | 2 +- + .../javatest_manifest_config_delta.json | 12 +- + .../manifest/maps_go_manifest_config.json | 10 +- chrome/app/PRESUBMIT.py | 8 +- + chrome/app/chromium_strings.grd | 22 +- + chrome/app/generated_resources.grd | 250 +- + chrome/app/google_chrome_strings.grd | 22 +- + chrome/app/resources/locale_settings.grd | 10 +- + chrome/app/theme/PRESUBMIT.py | 4 +- chrome/browser/about_flags.cc | 4 +- + .../browser/android/explore_sites/url_util.cc | 2 +- + .../explore_sites/url_util_experimental.cc | 2 +- + chrome/browser/android/vr/PRESUBMIT.py | 2 +- + .../android/webapk/webapk_installer.cc | 4 +- + .../app_service/webapk/webapk_install_task.cc | 2 +- + .../digital_goods_factory_impl.cc | 2 +- + .../apps/platform_apps/install_chrome_app.cc | 2 +- .../ash/android_sms/android_sms_urls.cc | 16 +- + chrome/browser/ash/app_mode/fake_cws.cc | 2 +- + .../auth/arc_background_auth_code_fetcher.cc | 2 +- + .../arc/auth/arc_robot_auth_code_fetcher.cc | 2 +- + .../browser/ash/assistant/assistant_util.cc | 4 +- + .../ash/attestation/attestation_ca_client.cc | 8 +- + chrome/browser/ash/borealis/borealis_util.cc | 2 +- + .../ash/child_accounts/child_user_service.cc | 2 +- + .../resources/web_time_limit_error_page.html | 2 +- + chrome/browser/ash/crostini/crostini_util.cc | 2 +- + .../customization/customization_document.cc | 2 +- + .../eche_app_notification_controller.cc | 4 +- + .../enhanced_network_tts_constants.cc | 2 +- + .../file_manager/file_manager_string_util.cc | 12 +- + chrome/browser/ash/file_manager/file_tasks.cc | 4 +- + chrome/browser/ash/hats/hats_dialog.cc | 2 +- .../assistive_suggester_client_filter.cc | 16 +- + .../ash/input_method/ime_rules_config.h | 6 +- + .../easy_unlock/easy_unlock_key_names.cc | 2 +- + .../ash/login/gaia_reauth_token_fetcher.cc | 2 +- + .../ash/login/marketing_backend_connector.cc | 4 +- + .../login/saml/password_sync_token_fetcher.cc | 2 +- + .../recommend_apps_fetcher_impl.cc | 4 +- + .../arc_dns_resolution_routine.cc | 6 +- + .../dns_latency_routine.cc | 2 +- + .../dns_resolution_routine.cc | 2 +- + .../network_diagnostics_util.cc | 14 +- + .../video_conferencing_routine.cc | 4 +- .../ash/plugin_vm/plugin_vm_diagnostics.cc | 4 +- + .../plugin_vm/plugin_vm_license_checker.cc | 4 +- .../browser/ash/plugin_vm/plugin_vm_util.cc | 6 +- + .../account_status_check_fetcher.cc | 6 +- + .../powerwash_requirements_checker.cc | 2 +- + .../device_command_start_crd_session_job.cc | 6 +- .../policy/uploading/heartbeat_scheduler.cc | 4 +- chrome/browser/ash/u2f_notification.cc | 2 +- + .../wallpaper_handlers/wallpaper_handlers.cc | 18 +- + .../ash/web_applications/terminal_source.cc | 4 +- + .../autofill/autofill_gstatic_reader.cc | 4 +- + .../browser_switcher_service.cc | 2 +- + chrome/browser/cart/cart_discount_fetcher.cc | 2 +- + .../cart/cart_discount_link_fetcher.cc | 2 +- + chrome/browser/cart/cart_service.cc | 24 +- + chrome/browser/cart/fetch_discount_worker.cc | 2 +- + .../cart_domain_cart_url_mapping.json | 2 +- + .../resources/cart_domain_name_mapping.json | 2 +- + .../browser/chrome_browser_application_mac.mm | 2 +- + .../browser/chrome_content_browser_client.cc | 4 +- + .../file_manager/private_api_misc.cc | 2 +- + .../dlp/dlp_clipboard_bubble_constants.h | 2 +- + chrome/browser/devtools/url_constants.cc | 4 +- + .../mixed_content_download_blocking.cc | 2 +- + .../connectors/connectors_service.cc | 4 +- + .../management_service/rotate_util.cc | 2 +- + .../file_system/browsertest_helper.cc | 6 +- .../file_system/signin_dialog_delegate.cc | 2 +- + .../extension_request_notification.cc | 4 +- + .../enterprise/signals/signals_utils.cc | 4 +- + ...e_js_error_report_processor_nonchromeos.cc | 4 +- .../cryptotoken_private_api.cc | 8 +- + .../enterprise_platform_keys_api.cc | 2 +- + .../identity_launch_web_auth_flow_function.cc | 2 +- + .../chrome_management_api_delegate.cc | 2 +- + .../api/platform_keys/platform_keys_api.cc | 2 +- + .../chrome_extension_browser_constants.cc | 2 +- + .../extensions/external_pref_loader.cc | 2 +- + chrome/browser/extensions/install_signer.cc | 2 +- + .../chrome_extension_downloader_factory.cc | 2 +- .../updater/chrome_update_client_config.cc | 2 +- + chrome/browser/flag_descriptions.cc | 14 +- + .../importer/edge_importer_browsertest_win.cc | 8 +- .../importer/ie_importer_browsertest_win.cc | 30 +- + .../lacros/lacros_startup_infobar_delegate.cc | 4 +- + .../service_discovery_client_mac.mm | 4 +- .../long_screenshots_tab_service.cc | 2 +- + .../access_code_cast_discovery_interface.cc | 4 +- + .../cast/cast_media_route_provider.cc | 6 +- + .../dial/dial_media_route_provider.cc | 18 +- + .../media/webrtc/webrtc_browsertest_common.cc | 2 +- + .../media/webrtc/webrtc_event_log_uploader.cc | 2 +- + .../media/webrtc/webrtc_log_uploader.cc | 2 +- + .../nacl_host/nacl_infobar_delegate.cc | 2 +- + .../client/nearby_share_client_impl.cc | 4 +- + .../instantmessaging/constants.h | 4 +- + .../network_traversal_ice_config_fetcher.cc | 12 +- + .../tachyon_ice_config_fetcher.cc | 12 +- + .../modules/drive/drive_service.cc | 8 +- + .../modules/photos/photos_service.cc | 6 +- + ...rvice_worker_page_load_metrics_observer.cc | 2 +- + .../performance_hints_features.cc | 2 +- + .../quiet_permission_prompt_model_android.cc | 2 +- + .../extension_key_permissions_service.cc | 2 +- + .../extension_platform_keys_service.cc | 2 +- + .../policy/extension_force_install_mixin.cc | 2 +- + .../browser/policy/safe_search_policy_test.h | 2 +- + .../prefetch_proxy/prefetch_proxy_params.cc | 6 +- + .../profiles/profile_avatar_downloader.cc | 2 +- + ...rofile_shortcut_manager_browsertest_win.cc | 2 +- + .../push_messaging_constants.cc | 2 +- .../push_messaging_service_impl.cc | 2 +- + chrome/browser/resources/PRESUBMIT.py | 2 +- + .../browser/resources/about_sys/about_sys.js | 2 +- + .../resources/chromeos/about_os_credits.html | 6 +- + .../dictation/macros/list_commands_macro.js | 2 +- + .../magnifier/magnifier.js | 2 +- + .../chromevox/background/command_handler.js | 6 +- + .../chromevox/options/options.css | 2 +- + .../tools/webstore_extension_util.py | 10 +- + .../chromevox_manifest.json.jinja2 | 8 +- + .../common/testing/e2e_test_base.js | 2 +- + .../common/tutorial/chromevox_tutorial.js | 6 +- + .../accessibility/select_to_speak/options.css | 2 +- + .../select_to_speak/options.html | 2 +- + .../select_to_speak/select_to_speak.js | 8 +- + .../select_to_speak_manifest.json.jinja2 | 8 +- + .../switch_access/switch_access.js | 4 +- + .../switch_access_manifest.json.jinja2 | 4 +- + .../add_supervision/add_supervision_ui.js | 16 +- .../chromeos/arc_support/background.js | 12 +- + .../chromeos/arc_support/playstore.js | 6 +- + .../assistant_optin/assistant_related_info.js | 4 +- + .../assistant_optin/assistant_value_prop.js | 2 +- + .../connectivity_diagnostics/manifest.json | 4 +- + .../resources/chromeos/echo/manifest.json | 122 +- + .../edu_coexistence/edu_coexistence_ui.js | 2 +- .../chromeos/emoji_picker/icons.html | 2 +- .../resources/chromeos/emulator/icons.html | 2 +- + .../input_method/google_xkb_manifest.json | 8 +- .../resources/chromeos/login/debug/debug.js | 2 +- .../screens/common/arc_terms_of_service.js | 4 +- .../screens/common/consolidated_consent.js | 2 +- + .../screens/common/marketing_opt_in.html | 2 +- + .../login/screens/login/offline_login.html | 2 +- + .../login/screens/login/offline_login.js | 2 +- + .../browser_tabs_metadata_form.js | 2 +- + .../flows/local_web_approvals_after.html | 2 +- + .../parent_access/parent_access_ui.js | 8 +- + .../chromeos/wallpaper_manager/manifest.json | 2 +- .../browser/resources/cryptotoken/enroller.js | 2 +- + .../default_apps/external_extensions.json | 14 +- + .../discards/graph_doc_template.html | 2 +- chrome/browser/resources/downloads/icons.html | 2 +- + .../resources/feedback/js/feedback_util.js | 10 +- + .../resources/gaia_auth_host/PRESUBMIT.py | 2 +- .../resources/gaia_auth_host/authenticator.js | 2 +- + .../saml_password_attributes.js | 2 +- + .../resources/hangout_services/manifest.json | 2 +- + .../manifest.json | 2 +- + .../scope_approval_dialog.js | 6 +- + chrome/browser/resources/inspect/inspect.html | 4 +- + .../query_tiles/query_tiles_internals.html | 2 +- + .../query_tiles/query_tiles_internals.js | 4 +- + .../resources/media/mei_preload/manifest.json | 2 +- + chrome/browser/resources/media/webrtc_logs.js | 2 +- .../shared/nearby_shared_icons.html | 4 +- .../nearby_shared_share_type_icons.html | 2 +- + .../resources/net_internals/index.html | 6 +- + .../network_speech_synthesis/manifest.json | 2 +- + .../network_speech_synthesis/tts_extension.js | 2 +- + .../new_tab_page/modules/photos/module.html | 2 +- + chrome/browser/resources/omnibox/omnibox.html | 2 +- .../resources/omnibox/omnibox_output.js | 4 +- .../browser/resources/pdf/elements/icons.html | 2 +- + .../plugin_metadata/plugins_chromeos.json | 2 +- + .../plugin_metadata/plugins_linux.json | 4 +- + .../plugin_metadata/plugins_mac.json | 4 +- + .../plugin_metadata/plugins_win.json | 4 +- .../resources/print_preview/ui/icons.html | 2 +- + .../settings/about_page/about_page.html | 4 +- + .../crostini_disk_resize_dialog.html | 2 +- + .../settings/chromeos/device_page/stylus.js | 2 +- + .../os_a11y_page/manage_a11y_page.html | 2 +- + .../chromeos/os_a11y_page/manage_a11y_page.js | 2 +- + .../channel_switcher_dialog.html | 2 +- + .../chromeos/os_about_page/os_about_page.html | 2 +- + .../borealis_page/borealis_detail_view.html | 2 +- .../resources/settings/chromeos/os_icons.html | 2 +- .../os_people_page/users_add_user_dialog.js | 2 +- chrome/browser/resources/settings/icons.html | 2 +- + .../settings/settings_shared_css.html | 2 +- + .../resources/webstore_app/manifest.json | 4 +- + .../certificate_reporting_service.cc | 2 +- .../chrome_cleaner/srt_field_trial_win.cc | 6 +- + .../chrome_enterprise_url_lookup_service.cc | 2 +- .../chrome_password_protection_service.cc | 4 +- + .../binary_upload_service.cc | 4 +- + .../check_client_download_request_base.cc | 4 +- + .../download_protection/download_feedback.cc | 2 +- + .../ppapi_download_request.cc | 6 +- + .../extension_telemetry_uploader.cc | 2 +- + .../incident_report_uploader_impl.cc | 4 +- + .../default_settings_fetcher.cc | 2 +- + ...ings_reset_prompt_model_browsertest_win.cc | 2 +- + .../tailored_security_url_observer.cc | 2 +- + .../background/ntp_background_service.cc | 2 +- + .../search/background/ntp_backgrounds.cc | 10 +- + .../browser/share/default_ranking_android.cc | 8 +- + .../remote_copy_message_handler.cc | 2 +- + .../sharing/web_push/web_push_sender.cc | 4 +- + chrome/browser/signin/signin_ui_util.cc | 2 +- + .../browser/ssl/connection_help_tab_helper.cc | 2 +- + chrome/browser/ssl/sct_reporting_service.cc | 4 +- + .../child_accounts/kids_management_api.cc | 2 +- + .../kids_chrome_management_client.cc | 2 +- + .../supervised_user_block_interstitial.html | 2 +- + .../supervised_user_service.cc | 2 +- .../supervised_user_url_filter.cc | 10 +- + .../strings/android_chrome_strings.grd | 40 +- + .../search/arc/recommend_apps_fetcher_impl.cc | 2 +- + .../search/files/item_suggest_cache.h | 2 +- + .../ui/app_list/search/omnibox_provider.cc | 2 +- + .../ui/app_list/search/open_tab_result.cc | 2 +- + .../ui/ash/ambient/ambient_client_impl.cc | 8 +- + .../ui/ash/calendar/calendar_keyed_service.cc | 2 +- + .../browser/ui/ash/chrome_shell_delegate.cc | 2 +- + .../ui/ash/in_session_auth_dialog_client.cc | 2 +- + .../browser/ui/ash/system_tray_client_impl.cc | 4 +- + .../tab_under_navigation_throttle.h | 2 +- + ...r_content_setting_bubble_model_delegate.cc | 4 +- + .../browser_navigator_browsertest_chromeos.cc | 2 +- + chrome/browser/ui/chrome_pages.cc | 2 +- + .../browser/ui/cocoa/share_menu_controller.mm | 2 +- + .../ui/commander/open_url_command_source.cc | 2 +- + .../ui/dialogs/outdated_upgrade_bubble.cc | 2 +- + .../installation_error_infobar_delegate.cc | 2 +- + chrome/browser/ui/managed_ui.cc | 2 +- + .../quick_answers_access_token_fetcher.cc | 2 +- + .../quick_answers_ui_controller.cc | 2 +- + chrome/browser/ui/signin_view_controller.cc | 2 +- + .../toolbar/media_router_contextual_menu.cc | 6 +- + .../app_dialog/app_uninstall_dialog_view.cc | 2 +- + .../ui/views/hats/hats_next_web_dialog.cc | 2 +- ...picker_bubble_view_browsertest_chromeos.cc | 2 +- + .../ui/views/lens/lens_side_panel_view.cc | 2 +- + .../ui/views/network_profile_bubble_view.cc | 2 +- + .../plugin_vm/plugin_vm_installer_view.cc | 2 +- + .../ui/views/session_crashed_bubble_view.cc | 2 +- + chrome/browser/ui/webui/PRESUBMIT.py | 2 +- + .../app_management_page_handler.cc | 2 +- + .../internals_ui_handler.cc | 2 +- + .../add_supervision/add_supervision_ui.cc | 4 +- .../edu_coexistence_login_handler_chromeos.cc | 2 +- + .../consolidated_consent_screen_handler.h | 4 +- + .../parent_access/parent_access_ui.cc | 4 +- + chrome/browser/ui/webui/feed/feed_ui.cc | 2 +- + .../ui/webui/interstitials/interstitial_ui.cc | 2 +- + .../ui/webui/media_router/cast_feedback_ui.cc | 4 +- + .../quick_pair/quick_pair_handler.cc | 2 +- + .../ui/webui/new_tab_page/foo/foo_handler.cc | 8 +- chrome/browser/ui/webui/ntp/new_tab_ui.cc | 2 +- + .../ui/webui/ntp/ntp_resource_cache.cc | 8 +- + .../chromeos/parental_controls_handler.cc | 2 +- + .../webui/settings/reset_settings_handler.cc | 2 +- + .../settings_localized_strings_provider.cc | 2 +- + ...nin_restriction_policy_fetcher_chromeos.cc | 2 +- + .../ui/webui/welcome/google_apps_handler.cc | 12 +- + .../webui/welcome/ntp_background_handler.cc | 2 +- + .../ui/webui/whats_new/whats_new_util.cc | 4 +- + chrome/browser/vr/PRESUBMIT.py | 2 +- + .../preinstalled_web_apps/gmail.cc | 6 +- + .../preinstalled_web_apps/google_calendar.cc | 6 +- + .../preinstalled_web_apps/google_chat.cc | 2 +- + .../preinstalled_web_apps/google_docs.cc | 6 +- + .../preinstalled_web_apps/google_drive.cc | 6 +- + .../preinstalled_web_apps/google_meet.cc | 2 +- + .../preinstalled_web_apps/google_sheets.cc | 6 +- + .../preinstalled_web_apps/google_slides.cc | 6 +- .../preinstalled_web_apps.cc | 8 +- + .../preinstalled_web_apps/youtube.cc | 6 +- + .../web_applications/web_app_install_task.cc | 2 +- + .../chrome_authenticator_request_delegate.cc | 8 +- + chrome/chrome_cleaner/PRESUBMIT.py | 2 +- + .../components/recovery_component.cc | 4 +- .../crash/crashpad_crash_reporter.cc | 2 +- + .../executables/chrome_cleaner_main.cc | 2 +- + .../logging/cleaner_logging_service.cc | 6 +- + .../chrome_cleaner/logging/dummy_api_keys.cc | 4 +- + .../logging/reporter_logging_service.cc | 6 +- + .../apps/platform_apps/api/PRESUBMIT.py | 2 +- .../chromeos_system_extension_info.cc | 2 +- + chrome/common/extensions/PRESUBMIT.py | 2 +- + chrome/common/extensions/api/PRESUBMIT.py | 2 +- + .../common/extensions/api/_api_features.json | 4 +- + chrome/common/extensions/api/cookies.json | 2 +- + chrome/common/extensions/api/debugger.json | 8 +- + .../extensions/api/declarative_content.json | 4 +- + chrome/common/extensions/api/dom.json | 2 +- + chrome/common/extensions/api/gcm.json | 4 +- + chrome/common/extensions/api/instance_id.json | 2 +- + chrome/common/extensions/api/privacy.json | 2 +- + chrome/common/extensions/api/tabs.json | 4 +- + chrome/common/extensions/api/tts.json | 2 +- + chrome/common/extensions/api/webview_tag.json | 4 +- + chrome/common/extensions/api/windows.json | 2 +- .../extensions/chrome_extensions_client.cc | 4 +- + chrome/common/google_url_loader_throttle.cc | 4 +- + chrome/common/url_constants.cc | 252 +- + .../gaiacp/associated_user_validator.cc | 2 +- .../gaiacp/gaia_credential_base.cc | 8 +- .../credential_provider/gaiacp/gcp_utils.cc | 4 +- + .../gaiacp/gcpw_strings.cc | 2 +- + .../credential_provider/gaiacp/mdm_utils.cc | 2 +- + chrome/docs/devtools-pillar.html | 2 +- + chrome/docs/index.html | 18 +- + chrome/docs/platform-pillar.html | 12 +- + .../google_chrome_install_modes.cc | 2 +- + chrome/installer/setup/eula/oem_ar.html | 2 +- + chrome/installer/setup/eula/oem_bg.html | 2 +- + chrome/installer/setup/eula/oem_ca.html | 2 +- + chrome/installer/setup/eula/oem_cs.html | 2 +- + chrome/installer/setup/eula/oem_da.html | 2 +- + chrome/installer/setup/eula/oem_de.html | 2 +- + chrome/installer/setup/eula/oem_el.html | 2 +- + chrome/installer/setup/eula/oem_en-GB.html | 2 +- + chrome/installer/setup/eula/oem_en.html | 2 +- + chrome/installer/setup/eula/oem_es-419.html | 2 +- + chrome/installer/setup/eula/oem_es.html | 2 +- + chrome/installer/setup/eula/oem_et.html | 2 +- + chrome/installer/setup/eula/oem_fi.html | 2 +- + chrome/installer/setup/eula/oem_fil.html | 2 +- + chrome/installer/setup/eula/oem_fr.html | 2 +- + chrome/installer/setup/eula/oem_hi.html | 2 +- + chrome/installer/setup/eula/oem_hr.html | 2 +- + chrome/installer/setup/eula/oem_hu.html | 2 +- + chrome/installer/setup/eula/oem_id.html | 2 +- + chrome/installer/setup/eula/oem_it.html | 2 +- + chrome/installer/setup/eula/oem_iw.html | 2 +- + chrome/installer/setup/eula/oem_ja.html | 2 +- + chrome/installer/setup/eula/oem_ko.html | 2 +- + chrome/installer/setup/eula/oem_lt.html | 2 +- + chrome/installer/setup/eula/oem_lv.html | 2 +- + chrome/installer/setup/eula/oem_nl.html | 2 +- + chrome/installer/setup/eula/oem_no.html | 2 +- + chrome/installer/setup/eula/oem_pl.html | 2 +- + chrome/installer/setup/eula/oem_pt-BR.html | 2 +- + chrome/installer/setup/eula/oem_pt-PT.html | 2 +- + chrome/installer/setup/eula/oem_ro.html | 2 +- + chrome/installer/setup/eula/oem_ru.html | 2 +- + chrome/installer/setup/eula/oem_sk.html | 2 +- + chrome/installer/setup/eula/oem_sl.html | 2 +- + chrome/installer/setup/eula/oem_sr.html | 2 +- + chrome/installer/setup/eula/oem_sv.html | 2 +- + chrome/installer/setup/eula/oem_th.html | 2 +- + chrome/installer/setup/eula/oem_tr.html | 2 +- + chrome/installer/setup/eula/oem_uk.html | 2 +- + chrome/installer/setup/eula/oem_vi.html | 2 +- + chrome/installer/setup/eula/oem_zh-CN.html | 2 +- + chrome/installer/setup/eula/oem_zh-TW.html | 2 +- + .../setup/google_chrome_behaviors.cc | 2 +- chrome/renderer/cart/commerce_hint_agent.cc | 2 +- chrome/renderer/media/flash_embed_rewrite.cc | 2 +- + .../cart/cart_domain_cart_url_regex.json | 2 +- + ...ip_add_to_cart_request_domain_mapping.json | 2 +- + .../extensions/identity_custom_bindings.js | 2 +- + .../mac_notification_service_ns.mm | 2 +- + chrome/tools/build/PRESUBMIT.py | 2 +- + chrome/tools/webforms_aggregator_tests.py | 4 +- + chrome/tools/weburl_links.txt | 6 +- + chrome/updater/branding.gni | 8 +- + chrome/updater/mac/setup/ks_tickets.mm | 2 +- + chrome/updater/tools/PRESUBMIT.py | 2 +- + chrome/updater/win/app_install_controller.cc | 2 +- + chrome/updater/win/signing/PRESUBMIT.py | 2 +- chrome/utility/importer/ie_importer_win.cc | 2 +- + .../shell_devtools_discovery_page.html | 2 +- + chromecast/browser/webui/cast_webui.cc | 4 +- + .../runtime/browser/grpc_webui_controller.cc | 2 +- + chromecast/chromecast.gni | 2 +- + chromecast/common/extensions_api/tabs.json | 4 +- + chromecast/common/extensions_api/windows.json | 2 +- + chromecast/crash/linux/minidump_uploader.cc | 2 +- + chromecast/net/connectivity_checker_impl.h | 4 +- + chromeos/chromeos_strings.grd | 6 +- + .../multidevice/stub_multidevice_util.cc | 2 +- + .../translation_result_loader.cc | 2 +- + chromeos/dbus/rmad/fake_rmad_client.cc | 2 +- + chromeos/printing/ppd_provider.h | 2 +- + chromeos/printing/printer_config_cache.cc | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri1.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri10.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri11.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri12.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri13.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri14.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri15.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri18.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri19.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri2.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri24.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri3.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri4.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri49.txt | 2 +- + .../printing/uri_fuzzer_seed_corpus/uri5.txt | 2 +- + .../assistant_manager_service_impl.cc | 2 +- + chromeos/services/assistant/service.cc | 2 +- + .../virtual_driver/win/install/setup.cc | 2 +- + .../virtual_driver_setup_resources.grd | 2 +- .../win/port_monitor/port_monitor.cc | 2 +- + .../error_page_populator.cc | 2 +- + .../predictor_config_definitions.cc | 2 +- + components/autofill/PRESUBMIT.py | 2 +- + .../autofill/content/renderer/PRESUBMIT.py | 2 +- .../autofill/content/renderer/form_cache.cc | 2 +- .../renderer/page_passwords_analyser.cc | 2 +- + .../password_form_conversion_utils.cc | 2 +- .../core/browser/autofill_download_manager.cc | 2 +- + .../core/browser/autofill_experiments.cc | 4 +- + .../browser/data_model/test_data_creator.cc | 6 +- + .../credit_card_fido_authenticator.cc | 2 +- + .../core/browser/payments/payments_client.cc | 2 +- + .../browser/payments/payments_service_url.cc | 10 +- + ...roid_chrome_autofill_assistant_strings.grd | 2 +- + .../autofill_assistant_onboarding_fetcher.cc | 2 +- + .../browser/service/server_url_fetcher.cc | 2 +- + .../safe_browsing_triggered_popup_blocker.h | 4 +- .../core/breadcrumb_manager_tab_helper.cc | 2 +- + components/browser_sync/PRESUBMIT.py | 2 +- + .../strings/android/browser_ui_strings.grd | 6 +- + .../core/counters/history_counter.cc | 2 +- + .../core/history_notice_utils.cc | 4 +- + .../core/captive_portal_detector.cc | 2 +- + .../data/log_list.json | 20 +- + .../common/cloud_devices_urls.cc | 4 +- + .../components_google_chrome_strings.grd | 2 +- + .../notes/core/server/notes_repository.cc | 2 +- + .../notes/core/server/notes_server_base.cc | 4 +- + .../notes/core/templates/template_fetcher.h | 2 +- + .../reactions/core/reaction_list_factory.cc | 4 +- + .../crash/core/app/crash_reporter_client.cc | 2 +- .../crash/core/browser/resources/crashes.js | 4 +- + components/cronet/PRESUBMIT.py | 2 +- + components/cronet/tools/generate_javadoc.py | 2 +- + .../protocol_handler_registry.cc | 4 +- + .../core/html/dom_distiller_viewer.html | 2 +- + .../core/javascript/dom_distiller_viewer.js | 2 +- + components/dom_distiller/core/viewer.cc | 6 +- .../domain_reliability/bake_in_configs.py | 286 +-- components/drive/service/drive_api_service.cc | 6 +- + .../error_page/common/localized_error.cc | 2 +- + .../favicon/core/large_icon_service_impl.cc | 2 +- + components/feed/core/v2/feed_network_impl.cc | 10 +- + components/feed/feed_feature_list.cc | 2 +- + components/feedback/feedback_uploader.cc | 2 +- + components/flags_ui/resources/flags.html | 4 +- + components/gcm_driver/gcm_account_mapper.cc | 2 +- + components/gcm_driver/gcm_client_impl.cc | 2 +- + components/google/core/common/google_util.cc | 26 +- + .../core/browser/browsing_history_service.cc | 4 +- + .../history/core/browser/history_service.cc | 4 +- .../core/browser/web_history_service.cc | 12 +- + .../per_user_topic_subscription_manager.cc | 2 +- + .../tab_modal_dialog_manager.cc | 2 +- + .../core/keyed_service_base_factory.cc | 2 +- + components/lens/lens_features.cc | 2 +- + components/media_router/common/media_source.h | 2 +- + .../metrics/net/net_metrics_log_uploader.cc | 2 +- + components/metrics/url_constants.cc | 6 +- + components/nacl/docs/dev/index.html | 4 +- + components/net_log/resources/net_export.html | 6 +- + .../network_time/network_time_tracker.cc | 2 +- + components/ntp_snippets/features.cc | 2 +- + .../ntp_snippets/ntp_snippets_constants.cc | 16 +- + components/ntp_snippets/remote/fetch.py | 8 +- + components/ntp_tiles/popular_sites_impl.cc | 2 +- + .../core/prefetch/prefetch_proto_utils.cc | 2 +- + .../core/prefetch/prefetch_server_urls.cc | 2 +- + components/omnibox/PRESUBMIT.py | 2 +- .../omnibox/browser/document_provider.cc | 10 +- + .../browser/document_suggestions_service.cc | 4 +- + .../omnibox/browser/zero_suggest_provider.cc | 2 +- + .../resources/omnibox_pedal_concepts.json | 28 +- + .../omnibox_pedal_concepts_desktop_am.json | 4 +- + .../omnibox_pedal_concepts_desktop_ar.json | 24 +- + .../omnibox_pedal_concepts_desktop_bg.json | 4 +- + .../omnibox_pedal_concepts_desktop_bn.json | 4 +- + .../omnibox_pedal_concepts_desktop_ca.json | 4 +- + .../omnibox_pedal_concepts_desktop_cs.json | 4 +- + .../omnibox_pedal_concepts_desktop_da.json | 4 +- + .../omnibox_pedal_concepts_desktop_de.json | 24 +- + .../omnibox_pedal_concepts_desktop_el.json | 4 +- + .../omnibox_pedal_concepts_desktop_en-GB.json | 24 +- + .../omnibox_pedal_concepts_desktop_en.json | 24 +- + ...omnibox_pedal_concepts_desktop_es-419.json | 24 +- + .../omnibox_pedal_concepts_desktop_es.json | 4 +- + .../omnibox_pedal_concepts_desktop_et.json | 4 +- + .../omnibox_pedal_concepts_desktop_fa.json | 4 +- + .../omnibox_pedal_concepts_desktop_fi.json | 4 +- + .../omnibox_pedal_concepts_desktop_fil.json | 4 +- + .../omnibox_pedal_concepts_desktop_fr.json | 24 +- + .../omnibox_pedal_concepts_desktop_gu.json | 4 +- + .../omnibox_pedal_concepts_desktop_he.json | 4 +- + .../omnibox_pedal_concepts_desktop_hi.json | 4 +- + .../omnibox_pedal_concepts_desktop_hr.json | 4 +- + .../omnibox_pedal_concepts_desktop_hu.json | 4 +- + .../omnibox_pedal_concepts_desktop_id.json | 4 +- + .../omnibox_pedal_concepts_desktop_it.json | 4 +- + .../omnibox_pedal_concepts_desktop_ja.json | 24 +- + .../omnibox_pedal_concepts_desktop_kn.json | 4 +- + .../omnibox_pedal_concepts_desktop_ko.json | 4 +- + .../omnibox_pedal_concepts_desktop_lt.json | 4 +- + .../omnibox_pedal_concepts_desktop_lv.json | 4 +- + .../omnibox_pedal_concepts_desktop_ml.json | 4 +- + .../omnibox_pedal_concepts_desktop_mr.json | 4 +- + .../omnibox_pedal_concepts_desktop_ms.json | 4 +- + .../omnibox_pedal_concepts_desktop_nl.json | 4 +- + .../omnibox_pedal_concepts_desktop_pl.json | 4 +- + .../omnibox_pedal_concepts_desktop_pt-BR.json | 4 +- + .../omnibox_pedal_concepts_desktop_pt-PT.json | 4 +- + .../omnibox_pedal_concepts_desktop_ro.json | 4 +- + .../omnibox_pedal_concepts_desktop_ru.json | 4 +- + .../omnibox_pedal_concepts_desktop_sk.json | 4 +- + .../omnibox_pedal_concepts_desktop_sl.json | 4 +- + .../omnibox_pedal_concepts_desktop_sr.json | 4 +- + .../omnibox_pedal_concepts_desktop_sv.json | 4 +- + .../omnibox_pedal_concepts_desktop_sw.json | 4 +- + .../omnibox_pedal_concepts_desktop_ta.json | 4 +- + .../omnibox_pedal_concepts_desktop_te.json | 4 +- + .../omnibox_pedal_concepts_desktop_th.json | 4 +- + .../omnibox_pedal_concepts_desktop_tr.json | 4 +- + .../omnibox_pedal_concepts_desktop_uk.json | 4 +- + .../omnibox_pedal_concepts_desktop_vi.json | 4 +- + .../omnibox_pedal_concepts_desktop_zh-CN.json | 24 +- + .../omnibox_pedal_concepts_desktop_zh-TW.json | 24 +- + .../resources/omnibox_pedal_synonyms.grd | 86 +- + .../page_content_annotations_model_manager.cc | 2 +- + .../core/optimization_guide_constants.cc | 4 +- + .../core/page_entities_model_executor_impl.cc | 2 +- + .../core/prediction_manager.cc | 8 +- + .../ads_page_load_metrics_observer.cc | 2 +- .../core/uma_page_load_metrics_observer.cc | 2 +- + .../use_counter_page_load_metrics_observer.cc | 4 +- ...password_requirements_spec_fetcher_impl.cc | 2 +- + .../core/browser/hash_password_manager.cc | 2 +- + .../leak_detection/leak_detection_request.h | 2 +- + .../browser/leak_detection_dialog_utils.cc | 2 +- + .../browser/old_google_credentials_cleaner.cc | 8 +- + .../core/browser/password_hash_data.cc | 2 +- + .../browser/password_manager_constants.cc | 6 +- + .../core/browser/password_reuse_detector.cc | 2 +- + .../browser/password_scripts_fetcher_impl.cc | 2 +- + .../core/browser/password_sync_util.cc | 4 +- + .../core/browser/password_ui_utils.cc | 2 +- + .../core/browser/psl_matching_helper.cc | 6 +- + .../hash_affiliation_fetcher.cc | 2 +- + .../password_manager/ios/test_helpers.cc | 4 +- + .../payment_method_manifest_parser_fuzzer.cc | 2 +- + components/payments/core/error_strings.cc | 2 +- + components/payments/core/method_strings.cc | 6 +- + .../android/permissions_android_strings.grd | 4 +- + components/permissions/constants.cc | 2 +- .../permissions/permission_context_base.cc | 10 +- - .../policy/resources/policy_templates.json | 2268 ++++++++--------- + .../permissions/permission_request_manager.cc | 8 +- + .../prediction_service/prediction_common.h | 2 +- + .../core/browser/browser_policy_connector.cc | 10 +- + ...cloud_signin_restriction_policy_fetcher.cc | 2 +- + .../core/common/policy_loader_common.cc | 4 +- + .../policy/resources/policy_templates.json | 2276 ++++++++--------- + .../request_handler_for_policy.cc | 2 +- + .../policy/test_support/signature_provider.h | 4 +- + .../syntax_check_policy_template_json.py | 2 +- + .../tools/template_writers/PRESUBMIT.py | 2 +- + .../template_writers/writers/adm_writer.py | 4 +- + .../writers/doc_atomic_groups_writer.py | 2 +- + .../template_writers/writers/doc_writer.py | 10 +- + .../writers/ios_app_config_writer.py | 2 +- + .../writers/template_writer.py | 2 +- + components/quirks/quirks_client.cc | 2 +- + components/resources/terms/terms_am.html | 4 +- + components/resources/terms/terms_ar.html | 4 +- + components/resources/terms/terms_bg.html | 4 +- + components/resources/terms/terms_bn.html | 4 +- + components/resources/terms/terms_ca.html | 4 +- + components/resources/terms/terms_cs.html | 4 +- + components/resources/terms/terms_da.html | 4 +- + components/resources/terms/terms_de.html | 4 +- + components/resources/terms/terms_el.html | 4 +- + components/resources/terms/terms_en-GB.html | 4 +- + components/resources/terms/terms_en.html | 4 +- + components/resources/terms/terms_es-419.html | 4 +- + components/resources/terms/terms_es.html | 4 +- + components/resources/terms/terms_et.html | 4 +- + components/resources/terms/terms_fa.html | 4 +- + components/resources/terms/terms_fi.html | 4 +- + components/resources/terms/terms_fil.html | 4 +- + components/resources/terms/terms_fr.html | 4 +- + components/resources/terms/terms_gu.html | 4 +- + components/resources/terms/terms_he.html | 4 +- + components/resources/terms/terms_hi.html | 4 +- + components/resources/terms/terms_hr.html | 4 +- + components/resources/terms/terms_hu.html | 4 +- + components/resources/terms/terms_id.html | 4 +- + components/resources/terms/terms_it.html | 4 +- + components/resources/terms/terms_ja.html | 4 +- + components/resources/terms/terms_kn.html | 4 +- + components/resources/terms/terms_ko.html | 4 +- + components/resources/terms/terms_lt.html | 4 +- + components/resources/terms/terms_lv.html | 4 +- + components/resources/terms/terms_ml.html | 4 +- + components/resources/terms/terms_mr.html | 4 +- + components/resources/terms/terms_nb.html | 4 +- + components/resources/terms/terms_nl.html | 4 +- + components/resources/terms/terms_pl.html | 4 +- + components/resources/terms/terms_pt-BR.html | 4 +- + components/resources/terms/terms_pt-PT.html | 4 +- + components/resources/terms/terms_ro.html | 4 +- + components/resources/terms/terms_ru.html | 4 +- + components/resources/terms/terms_sk.html | 4 +- + components/resources/terms/terms_sl.html | 4 +- + components/resources/terms/terms_sr.html | 4 +- + components/resources/terms/terms_sv.html | 4 +- + components/resources/terms/terms_sw.html | 4 +- + components/resources/terms/terms_ta.html | 4 +- + components/resources/terms/terms_te.html | 4 +- + components/resources/terms/terms_th.html | 4 +- + components/resources/terms/terms_tr.html | 4 +- + components/resources/terms/terms_uk.html | 4 +- + components/resources/terms/terms_vi.html | 4 +- + components/resources/terms/terms_zh-CN.html | 4 +- + components/resources/terms/terms_zh-TW.html | 4 +- + .../browser/client_side_detection_service.cc | 2 +- + .../content/browser/triggers/trigger_util.cc | 2 +- + .../content/resources/PRESUBMIT.py | 2 +- + .../browser/db/v4_protocol_manager_util.cc | 4 +- + .../password_protection_service_base.cc | 2 +- + .../browser/realtime/url_lookup_service.cc | 2 +- + .../tailored_security_service.cc | 6 +- + .../safe_search_url_checker_client.cc | 2 +- + .../safe_search_api/stub_url_checker.cc | 2 +- + components/safety_check/url_constants.cc | 2 +- + .../content/https_only_mode_blocking_page.cc | 2 +- + .../content/ssl_blocking_page.h | 2 +- + .../core/controller_client.cc | 2 +- + .../core/safe_browsing_loud_error_ui.cc | 4 +- + .../security_interstitials/core/urls.cc | 4 +- + ...ation_guide_segmentation_model_provider.cc | 2 +- + .../internal/proto/PRESUBMIT.py | 2 +- + .../services/quarantine/quarantine_mac.mm | 2 +- + .../core/common/disabled_sites.cc | 12 +- + .../ios/shared_highlighting_constants.mm | 2 +- + .../browser/chrome_connected_header_helper.cc | 4 +- + .../browser/account_consistency_service.mm | 12 +- + .../signin/public/base/test_signin_client.cc | 2 +- + .../identity_manager/access_token_fetcher.cc | 2 +- + .../browser/spelling_service_client.cc | 2 +- + .../browser/subresource_filter_constants.h | 8 +- + .../core/common/PRESUBMIT.py | 2 +- + components/sync/PRESUBMIT.py | 2 +- + components/sync/base/sync_util.h | 4 +- + .../standalone_trusted_vault_client.cc | 2 +- + ...ted_vault_access_token_fetcher_frontend.cc | 2 +- + .../trusted_vault_server_constants.h | 2 +- + components/sync_bookmarks/PRESUBMIT.py | 2 +- + components/sync_sessions/PRESUBMIT.py | 2 +- + .../core/browser/translate_ranker_impl.cc | 6 +- + .../core/browser/translate_script.cc | 2 +- + .../translate/core/common/translate_util.cc | 2 +- + components/ui_devtools/agent_util.cc | 4 +- + components/ukm/ukm_reporting_service.cc | 2 +- + .../top_domains/make_alexa_top_list.py | 2 +- components/url_matcher/url_util.cc | 4 +- + components/url_pattern_index/PRESUBMIT.py | 2 +- + components/variations/proto/PRESUBMIT.py | 2 +- + .../variations/variations_url_constants.cc | 4 +- .../installable/installable_logging.cc | 2 +- + components/wifi/wifi_service_win.cc | 2 +- + content/app/resources/README.txt | 4 +- + .../render_widget_host_view_cocoa.mm | 2 +- + .../attribution_reporting/PRESUBMIT.py | 2 +- + .../indexed_db/indexed_db_backing_store.cc | 2 +- + .../indexed_db/indexed_db_reporting.cc | 2 +- + .../portal/portal_navigation_throttle.cc | 2 +- .../renderer_host/navigation_request.cc | 4 +- .../renderer_host/render_frame_host_impl.cc | 2 +- + content/browser/resources/PRESUBMIT.py | 2 +- + content/browser/resources/gpu/info_view.js | 2 +- + .../speech/speech_recognition_engine.cc | 2 +- + content/browser/speech/tts_mac.mm | 2 +- .../browser/web_contents/web_contents_impl.cc | 2 +- .../browser/webauth/authenticator_common.cc | 10 +- content/browser/webauth/client_data_json.cc | 2 +- + .../webrtc/resources/webrtc_internals.js | 2 +- + .../zygote_host/zygote_host_impl_linux.cc | 2 +- + content/renderer/PRESUBMIT.py | 2 +- .../pepper/pepper_media_device_manager.cc | 2 +- + content/renderer/render_thread_impl.cc | 14 +- + .../shell/browser/shell_browser_main_parts.cc | 2 +- + content/zygote/zygote_main_linux.cc | 2 +- device/bluetooth/bluetooth_adapter_mac.mm | 2 +- .../bluetooth/bluetooth_classic_device_mac.mm | 4 +- + device/fido/fido_strings.grd | 2 +- device/fido/fido_test_data.h | 2 +- + device/gamepad/xbox_controller_mac.mm | 2 +- + docs/enterprise/extension_query.py | 4 +- + docs/enterprise/extension_query_py2.py | 4 +- + extensions/browser/PRESUBMIT.py | 2 +- .../web_request/web_request_permissions.cc | 4 +- + extensions/browser/suggest_permission_util.cc | 4 +- .../browser/updater/extension_downloader.cc | 4 +- + .../browser/updater/safe_manifest_parser.cc | 2 +- + extensions/common/api/PRESUBMIT.py | 2 +- + .../common/api/extensions_manifest_types.json | 6 +- + extensions/common/api/i18n.json | 2 +- extensions/common/csp_validator.cc | 2 +- + extensions/common/extension_urls.cc | 10 +- + extensions/common/manifest_constants.cc | 6 +- + extensions/common/permissions/PRESUBMIT.py | 2 +- + .../resources/automation/PRESUBMIT.py | 2 +- + extensions/strings/extensions_strings.grd | 4 +- + google_apis/drive/drive_api_url_generator.cc | 2 +- + google_apis/gaia/gaia_auth_fetcher.cc | 4 +- + google_apis/gaia/gaia_auth_util.cc | 6 +- + google_apis/gaia/gaia_constants.cc | 80 +- + google_apis/gaia/gaia_oauth_client.cc | 6 +- google_apis/gaia/gaia_urls.cc | 10 +- + google_apis/gcm/base/mcs_util.cc | 2 +- + google_apis/gcm/engine/gservices_settings.cc | 6 +- + google_apis/gcm/engine/mcs_client.cc | 2 +- + google_apis/gcm/tools/mcs_probe.cc | 2 +- + google_apis/google_api_keys.cc | 2 +- + .../ANGLE/EGL_ANGLE_sync_control_rate.txt | 2 +- + .../CHROMIUM_color_space_metadata.txt | 2 +- + .../CHROMIUM_texture_storage_image.txt | 2 +- + .../CHROMIUM/EGL_CHROMIUM_sync_control.txt | 2 +- + gpu/PRESUBMIT.py | 2 +- + gpu/command_buffer/PRESUBMIT.py | 2 +- + .../shared_image_backing_factory_iosurface.mm | 2 +- + gpu/config/PRESUBMIT.py | 2 +- + gpu/config/gpu_control_list_format.txt | 2 +- + gpu/ipc/common/PRESUBMIT.py | 2 +- + gpu/vulkan/PRESUBMIT.py | 2 +- .../lib/browser/protocol/headless_handler.cc | 2 +- + infra/config/PRESUBMIT.py | 4 +- + .../android-cronet-arm-dbg/properties.json | 2 +- + .../properties.json | 2 +- + .../properties.json | 2 +- + .../properties.json | 2 +- + .../try/android-official/properties.json | 2 +- + .../android-oreo-arm64-dbg/properties.json | 2 +- + .../try/android-pie-arm64-dbg/properties.json | 2 +- + .../properties.json | 2 +- + .../try/android_compile_dbg/properties.json | 2 +- + .../android_compile_x64_dbg/properties.json | 2 +- + .../android_compile_x86_dbg/properties.json | 2 +- + .../try/android_cronet/properties.json | 2 +- + .../properties.json | 2 +- + .../try/cast_shell_android/properties.json | 2 +- + .../try/cast_shell_linux/properties.json | 2 +- + .../try/cast_shell_linux_dbg/properties.json | 2 +- + .../properties.json | 2 +- + .../properties.json | 2 +- + .../chromeos-arm-generic-rel/properties.json | 2 +- + .../properties.json | 2 +- + .../try/chromeos-kevin-rel/properties.json | 2 +- + .../dawn-linux-x64-deps-rel/properties.json | 2 +- + .../try/dawn-mac-x64-deps-rel/properties.json | 2 +- + .../dawn-win10-x64-deps-rel/properties.json | 2 +- + .../dawn-win10-x86-deps-rel/properties.json | 2 +- + .../try/fuchsia-arm64-cast/properties.json | 2 +- + .../try/fuchsia-official/properties.json | 2 +- + .../try/fuchsia-x64-cast/properties.json | 2 +- + .../try/fuchsia_arm64/properties.json | 2 +- + .../builders/try/fuchsia_x64/properties.json | 2 +- + .../try/ios-simulator-cronet/properties.json | 2 +- + .../properties.json | 2 +- + .../try/ios-simulator/properties.json | 2 +- + .../lacros-amd64-generic-rel/properties.json | 2 +- + .../lacros-arm-generic-rel/properties.json | 2 +- + .../try/linux-blink-rel/properties.json | 2 +- + .../properties.json | 2 +- + .../try/linux-chromeos-dbg/properties.json | 2 +- + .../properties.json | 2 +- + .../try/linux-lacros-rel/properties.json | 2 +- + .../try/linux-official/properties.json | 2 +- + .../try/linux-rel-compilator/properties.json | 2 +- + .../try/linux-wayland-rel/properties.json | 2 +- + .../properties.json | 2 +- + .../properties.json | 2 +- + .../try/linux_chromium_dbg_ng/properties.json | 2 +- + .../properties.json | 2 +- + .../properties.json | 2 +- + .../properties.json | 2 +- + .../builders/try/linux_vr/properties.json | 2 +- + .../builders/try/mac-official/properties.json | 2 +- + .../try/mac-rel-compilator/properties.json | 2 +- + .../properties.json | 2 +- + .../properties.json | 2 +- + .../try-nougat-phone-tester/properties.json | 2 +- + .../builders/try/win-official/properties.json | 2 +- + .../properties.json | 2 +- + .../try/win32-official/properties.json | 2 +- + .../builders/try/win7-rel/properties.json | 2 +- + .../properties.json | 2 +- + .../properties.json | 2 +- + infra/config/scripts/PRESUBMIT.py | 2 +- + ios/PRESUBMIT.py | 2 +- + ios/README.txt | 2 +- + ios/build/bots/scripts/PRESUBMIT.py | 2 +- ios/build/bots/scripts/result_sink_util.py | 4 +- + ios/build/bots/scripts/test_result_util.py | 6 +- + ios/build/bots/scripts/xcode_util.py | 4 +- ios/build/chrome_build.gni | 2 +- + .../app/strings/ios_chromium_strings.grd | 16 +- + .../app/strings/ios_google_chrome_strings.grd | 16 +- + ios/chrome/app/strings/ios_strings.grd | 28 +- + ios/chrome/browser/autofill/BUILD.gn | 4 +- + .../autofill/automation/automation_action.mm | 2 +- + ...chrome_browser_state_removal_controller.mm | 2 +- + ios/chrome/browser/chrome_url_constants.cc | 36 +- + ios/chrome/browser/flags/about_flags.mm | 4 +- + ios/chrome/browser/omaha/omaha_service.mm | 2 +- + .../search_engine_tab_helper.mm | 8 +- + ios/chrome/browser/u2f/u2f_controller.mm | 4 +- + .../activity_services/activity_type_util.mm | 2 +- + .../ui/bookmarks/bookmark_earl_grey.mm | 2 +- + .../new_tab_page_app_interface.mm | 4 +- + .../content_suggestions/ntp_home_mediator.mm | 6 +- + .../browser/ui/main/scene_controller.mm | 2 +- + .../browser/ui/ntp/discover_feed_constants.mm | 2 +- + ios/chrome/browser/ui/ntp/incognito_view.mm | 2 +- + .../ui/ntp/notification_promo_whats_new.mm | 2 +- + .../browser/ui/ntp/revamped_incognito_view.mm | 2 +- + .../ui/qr_scanner/qr_scanner_app_interface.mm | 2 +- + .../ui/settings/settings_app_interface.mm | 2 +- + .../table_cell_catalog_view_controller.mm | 8 +- + .../translate_table_view_controller.mm | 2 +- + .../interstitials/interstitial_ui_util.mm | 2 +- + ..._credential_provider_extension_strings.grd | 8 +- + .../password_spec_fetcher.mm | 2 +- + ios/net/cookies/cookie_store_ios_test_util.mm | 2 +- + ios/net/crn_http_protocol_handler.mm | 2 +- + .../browser/signin/chrome_identity_service.mm | 4 +- + .../browser/signin/fake_chrome_identity.mm | 6 +- + .../signin/fake_chrome_identity_service.mm | 2 +- + .../fake_chrome_identity_service_constants.mm | 2 +- + ios/showcase/alert/sc_alert_coordinator.mm | 8 +- + .../sc_infobar_modal_save_card_coordinator.mm | 2 +- + .../fake_autocomplete_suggestion.mm | 4 +- + .../http_server_files/simple_login_form.html | 2 +- + .../http_server_files/simple_signup_form.html | 2 +- + .../data/http_server_files/window_open.html | 2 +- + ios/web/navigation/navigation_manager_impl.mm | 6 +- + .../web_state/ui/wk_content_rule_list_util.mm | 2 +- + ios/web_view/PRESUBMIT.py | 2 +- + ios/web_view/internal/cwv_flags.mm | 2 +- + ios/web_view/internal/cwv_web_view.mm | 2 +- + media/PRESUBMIT.py | 4 +- + media/base/win/mf_initializer.cc | 2 +- .../native_pixmap_handle_mojom_traits.cc | 4 +- ...stable_video_decoder_types_mojom_traits.cc | 150 +- + mojo/PRESUBMIT.py | 2 +- + native_client_sdk/PRESUBMIT.py | 2 +- + .../src/build_tools/build_paths.py | 2 +- + .../src/build_tools/buildbot_common.py | 2 +- + .../build_tools/json/naclsdk_manifest.json | 32 +- + .../build_tools/json/naclsdk_manifest0.json | 2 +- + .../build_tools/json/naclsdk_manifest2.json | 4 +- + .../src/build_tools/nacl-mono-buildbot.py | 2 +- + .../src/build_tools/nacl-mono-builder.py | 2 +- + .../src/build_tools/sdk_tools/cacerts.txt | 2 +- + .../src/build_tools/sdk_tools/config.py | 2 +- + .../build_tools/sdk_tools/sdk_update_main.py | 2 +- + .../third_party/fancy_urllib/__init__.py | 4 +- + .../src/build_tools/update_nacl_manifest.py | 6 +- + .../src/build_tools/update_sdktools.py | 2 +- + native_client_sdk/src/doc/Makefile | 2 +- + .../security-contest/contest-warning.txt | 4 +- + native_client_sdk/src/doc/conf.py | 2 +- + .../src/doc/doxygen/generate_docs.py | 2 +- + native_client_sdk/src/doc/migration/apps.html | 8 +- + .../src/doc/migration/public.html | 2 +- + .../src/examples/api/socket/index.html | 2 +- .../src/examples/demo/drive/drive.cc | 4 +- + .../src/examples/demo/drive/index.html | 2 +- + .../src/examples/demo/nacl_io_demo/index.html | 6 +- + .../src/gonacl_appengine/gonacl.py | 8 +- + .../static/bullet/fullscreen.html | 4 +- + .../gonacl_appengine/static/bullet/index.html | 4 +- + .../gonacl_appengine/static/bullet/main.js | 2 +- .../gonacl_appengine/static/cube/example.js | 2 +- + .../gonacl_appengine/static/cube/index.html | 2 +- .../gonacl_appengine/static/earth/example.js | 2 +- + .../gonacl_appengine/static/earth/index.html | 2 +- + .../gonacl_appengine/static/home/index.html | 2 +- + .../src/gonacl_appengine/static/index.html | 6 +- + .../gonacl_appengine/static/life/example.js | 2 +- + .../gonacl_appengine/static/life/index.html | 2 +- + .../gonacl_appengine/static/lua/index.html | 6 +- + .../src/gonacl_appengine/static/lua/lua.js | 2 +- + .../gonacl_appengine/static/lua/naclterm.js | 2 +- + .../static/smoothlife/example.js | 2 +- + .../static/smoothlife/index.html | 4 +- + .../static/voronoi/example.js | 2 +- + .../static/voronoi/index.html | 2 +- + native_client_sdk/src/tools/fix_manifest.py | 2 +- + native_client_sdk/src/web/manifest.html | 6 +- + net/base/network_change_notifier_mac.mm | 2 +- + .../http_security_header_047.txt | Bin 166 -> 169 bytes net/dns/dns_test_util.h | 12 +- + net/dns/dns_transaction.cc | 2 +- + net/dns/public/doh_provider_entry.cc | 4 +- + net/http/http_server_properties.cc | 4 +- + net/http/webfonts_histogram.cc | 6 +- + net/log/file_net_log_observer.cc | 2 +- + net/quic/crypto/proof_verifier_chromium.cc | 2 +- + net/quic/quic_stream_factory.cc | 8 +- + net/spdy/spdy_session.cc | 2 +- + net/tools/print_certificates.py | 2 +- + net/tools/testserver/testserver.py.vpython3 | 4 +- + .../transport_security_state_generator.cc | 2 +- + .../breakpad_crash_test/crash_in_syscall.html | 4 +- + .../trusted_crash_in_startup.html | 4 +- + .../breakpad_crash_test/untrusted_crash.html | 4 +- + ppapi/tests/test_network_proxy.cc | 2 +- + .../test_tcp_socket_private_disallowed.cc | 2 +- + ppapi/tests/test_url_loader.cc | 2 +- + ppapi/tests/test_url_request.cc | 4 +- + ppapi/tests/test_url_util.cc | 18 +- + ppapi/tests/test_websocket.cc | 6 +- + ppapi/tests/test_x509_certificate_private.cc | 2 +- + printing/backend/PRESUBMIT.py | 2 +- + printing/backend/win_helper.cc | 4 +- + printing/print_settings_initializer_win.cc | 2 +- + remoting/base/breakpad_mac.mm | 2 +- + remoting/base/chromium_url_request.cc | 2 +- + remoting/base/service_urls.cc | 8 +- + .../notification/gstatic_json_fetcher.cc | 2 +- + ...rome.remote_assistance-firefox.json.jinja2 | 2 +- + remoting/host/it2me/it2me_constants.cc | 2 +- + remoting/host/linux/linux_me2me_host.py | 4 +- + remoting/host/linux/remoting_user_session.cc | 2 +- remoting/host/remoting_me2me_host.cc | 2 +- + ....chrome.remote_desktop-firefox.json.jinja2 | 2 +- + remoting/host/setup/start_host_main.cc | 2 +- + remoting/ios/app/help_view_controller.mm | 2 +- + .../ios/app/host_setup_view_controller.mm | 2 +- + .../ios/app/remoting_menu_view_controller.mm | 10 +- + .../facade/remoting_oauth_authentication.mm | 2 +- + remoting/protocol/fake_session.cc | 2 +- + remoting/resources/remoting_strings.grd | 8 +- + remoting/signaling/signaling_id_util.cc | 4 +- + remoting/tools/build/remoting_localize.py | 6 +- + remoting/tools/zip2msi.py | 2 +- + rlz/lib/financial_ping.cc | 2 +- + sandbox/features.gni | 2 +- sandbox/linux/services/libc_interceptor.cc | 2 +- .../linux/suid/client/setuid_sandbox_host.cc | 2 +- sandbox/linux/suid/sandbox.c | 2 +- sandbox/policy/win/sandbox_win.cc | 2 +- + .../geolocation/network_location_request.cc | 2 +- + .../image_annotation_service.h | 4 +- + testing/PRESUBMIT.py | 2 +- + .../java/AndroidManifest.xml.jinja2 | 4 +- + .../browser_test_commands_linux.txt | 2 +- + .../chromoting_test_driver_commands_linux.txt | 4 +- testing/generate_location_tags.py | 2 +- + testing/merge_scripts/PRESUBMIT.py | 2 +- + .../merge_scripts/code_coverage/PRESUBMIT.py | 2 +- + .../code_coverage/merge_results.py | 2 +- testing/merge_scripts/results_merger.py | 2 +- + testing/scripts/PRESUBMIT.py | 2 +- + testing/scripts/common.py | 2 +- + testing/test.gni | 2 +- testing/test_env.py | 8 +- + testing/trigger_scripts/PRESUBMIT.py | 2 +- + .../trigger_scripts/base_test_triggerer.py | 8 +- + .../unexpected_passes_common/data_types.py | 2 +- + testing/unexpected_passes_common/queries.py | 2 +- + testing/variations/PRESUBMIT.py | 2 +- + .../variations/fieldtrial_testing_config.json | 18 +- + .../markdown/extensions/smarty.py | 2 +- + .../Python-Markdown/markdown/pep562.py | 2 +- + .../abseil-cpp/absl/abseil.podspec.gen.py | 2 +- + third_party/abseil-cpp/conanfile.py | 2 +- + third_party/abseil-cpp/generate_def_files.py | 2 +- + third_party/abseil-cpp/roll_abseil.py | 4 +- + third_party/afl/src/Makefile | 4 +- third_party/afl/src/afl-analyze.c | 2 +- third_party/afl/src/afl-as.c | 2 +- third_party/afl/src/afl-fuzz.c | 2 +- @@ -114,48 +1109,322 @@ Subject: Automated domain substitution third_party/afl/src/afl-gotcpu.c | 4 +- third_party/afl/src/afl-showmap.c | 2 +- third_party/afl/src/afl-tmin.c | 2 +- + third_party/afl/src/docs/QuickStartGuide.txt | 2 +- + third_party/afl/src/docs/historical_notes.txt | 2 +- + third_party/afl/src/docs/notes_for_asan.txt | 2 +- third_party/afl/src/docs/sister_projects.txt | 4 +- + .../canvas_harness/canvas_harness.html | 2 +- + third_party/afl/src/libdislocator/Makefile | 2 +- + third_party/afl/src/libtokencap/Makefile | 2 +- + third_party/afl/src/llvm_mode/Makefile | 6 +- .../afl/src/llvm_mode/afl-clang-fast.c | 4 +- + .../android_build_tools/aapt2/3pp/fetch.py | 4 +- + .../android_arch_core_common/3pp/fetch.py | 2 +- + .../android_arch_core_runtime/3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../com_android_support_design/3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../com_android_support_loader/3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../com_android_support_multidex/3pp/fetch.py | 2 +- + .../com_android_support_print/3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../com_android_tools_common/3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../com_android_tools_sdk_common/3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../com_google_android_play_core/3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../3pp/fetch.py | 2 +- + .../Android_SDK_License-December_9_2016.txt | 4 +- + .../development/scripts/PRESUBMIT.py | 2 +- + .../runner/src/main/Android.mk | 2 +- + third_party/blink/PRESUBMIT.py | 4 +- + .../common/loader/record_load_histograms.cc | 2 +- + .../public/common/scheduler/PRESUBMIT.py | 2 +- + .../mojom/permissions_policy/PRESUBMIT.py | 2 +- + .../public/mojom/use_counter/PRESUBMIT.py | 2 +- + .../public/mojom/web_feature/PRESUBMIT.py | 2 +- + .../blink/public/strings/blink_strings.grd | 8 +- + .../blink/renderer/bindings/PRESUBMIT.py | 2 +- + .../bindings/scripts/blink_idl_lexer.py | 2 +- .../bindings/scripts/blink_idl_parser.py | 2 +- + .../renderer/bindings/scripts/utilities.py | 2 +- + .../build/scripts/update_css_ranking.py | 4 +- + .../core/css/remote_font_face_source.cc | 2 +- + third_party/blink/renderer/core/css/svg.css | 2 +- + .../renderer/core/dom/events/event_target.cc | 4 +- + .../blink/renderer/core/events/touch_event.cc | 2 +- .../blink/renderer/core/events/wheel_event.cc | 2 +- - .../blink/renderer/core/frame/deprecation.cc | 22 +- + .../core/frame/deprecation/deprecation.cc | 22 +- + .../blink/renderer/core/frame/local_frame.cc | 4 +- .../renderer/core/html/html_iframe_element.cc | 2 +- .../core/html/media/autoplay_policy.cc | 4 +- .../core/html/media/html_media_element.cc | 4 +- + .../core/html/portal/html_portal_element.cc | 4 +- .../renderer/core/loader/frame_loader.cc | 4 +- + .../core/loader/mixed_content_checker.cc | 2 +- + .../core/loader/subresource_filter.cc | 2 +- + .../script/document_write_intervention.cc | 6 +- + .../core/xmlhttprequest/xml_http_request.cc | 2 +- .../modules/bluetooth/bluetooth_error.cc | 16 +- .../modules/clipboard/clipboard_promise.cc | 2 +- + .../credentials_container.cc | 8 +- .../encryptedmedia/encrypted_media_utils.h | 2 +- .../modules/geolocation/geolocation.cc | 2 +- + .../play_app_url_manifest.json | 2 +- + .../modules/payments/payment_request.cc | 6 +- + .../peerconnection/rtc_peer_connection.cc | 2 +- + .../modules/vibration/vibration_controller.cc | 4 +- .../modules/webaudio/audio_context.cc | 4 +- .../modules/webmidi/navigator_web_midi.cc | 2 +- + .../blink/renderer/platform/PRESUBMIT.py | 2 +- + .../platform/fonts/mac/font_cache_mac.mm | 4 +- + .../platform/loader/fetch/resource_error.cc | 2 +- + .../loader/fetch/resource_load_scheduler.cc | 2 +- .../platform/weborigin/security_origin.cc | 2 +- + third_party/blink/tools/blinkpy/PRESUBMIT.py | 2 +- + .../tools/blinkpy/common/config/PRESUBMIT.py | 2 +- + .../blink/tools/blinkpy/common/net/git_cl.py | 6 +- .../blinkpy/common/net/results_fetcher.py | 8 +- + .../blink/tools/blinkpy/common/pretty_diff.py | 2 +- .../tools/blinkpy/common/system/filesystem.py | 2 +- + .../tools/blinkpy/common/system/profiler.py | 2 +- + .../blink/tools/blinkpy/style/filter.py | 2 +- + .../blinkpy/tool/commands/flaky_tests.py | 6 +- + .../tools/blinkpy/w3c/chromium_commit.py | 2 +- + .../tools/blinkpy/w3c/chromium_commit_mock.py | 2 +- + third_party/blink/tools/blinkpy/w3c/common.py | 4 +- + .../blinkpy/w3c/directory_owners_extractor.py | 2 +- + .../tools/blinkpy/w3c/export_notifier.py | 4 +- third_party/blink/tools/blinkpy/w3c/gerrit.py | 6 +- + .../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 +- .../blink/tools/blinkpy/w3c/test_importer.py | 10 +- + .../blink/tools/blinkpy/w3c/wpt_uploader.py | 8 +- + .../blink/tools/commit_stats/org-list.txt | 10 +- + .../print_stale_test_expectations_entries.py | 2 +- + third_party/boringssl/roll_boringssl.py | 2 +- + .../closure/bin/build/depstree.py | 2 +- + .../closure/bin/build/source.py | 2 +- + .../closure/bin/build/treescan.py | 2 +- .../externs/chrome_extensions.js | 6 +- .../externs/command_line_private.js | 4 +- .../crashpad/build/install_linux_sysroot.py | 2 +- + third_party/crashpad/crashpad/package.h | 4 +- + third_party/crashpad/update.py | 2 +- + third_party/dav1d/generate_source.py | 2 +- + .../protoc_plugins/util/plugin_protos.py | 4 +- + .../closure/bin/build/closurebuilder.py | 2 +- + .../closure/bin/build/depstree.py | 2 +- + .../closure/bin/build/depswriter.py | 2 +- + .../closure/bin/build/source.py | 2 +- + .../closure/bin/build/treescan.py | 2 +- + .../closure/css/inlay/g-base.css | 4 +- + .../closure/css/inlay/g-fixed.css | 4 +- + .../closure/css/inlay/g-ratio.css | 4 +- + .../closure/goog/css/bubble.css | 18 +- + .../closure/goog/css/checkbox.css | 4 +- + .../closure/goog/css/colorpalette.css | 2 +- + .../goog/css/colorpicker-simplegrid.css | 2 +- + .../closure/goog/css/combobox.css | 2 +- + .../closure/goog/css/css3menubutton.css | 2 +- + .../closure/goog/css/custombutton.css | 2 +- + .../closure/goog/css/dialog.css | 2 +- + .../closure/goog/css/dragdropdetector.css | 4 +- + .../closure/goog/css/editor/bubble.css | 2 +- + .../goog/css/editor/equationeditor.css | 2 +- + .../closure/goog/css/editortoolbar.css | 2 +- + .../closure/goog/css/flatmenubutton.css | 2 +- + .../closure/goog/css/hsvapalette.css | 8 +- + .../closure/goog/css/hsvpalette.css | 8 +- + .../closure/goog/css/imagelessmenubutton.css | 2 +- + .../closure/goog/css/menubutton.css | 4 +- + .../closure/goog/css/menuitem.css | 2 +- + .../closure/goog/css/toolbar.css | 4 +- + .../closure/goog/css/tree.css | 4 +- + .../closure/goog/css/tristatemenuitem.css | 4 +- + .../goog/demos/autocompleterichremotedata.js | 16 +- + .../demos/autocompleterichremotedata.json | 16 +- + .../closure/goog/demos/css/demo.css | 2 +- + .../closure/goog/demos/css/emojipicker.css | 2 +- + .../closure/goog/demos/dialog.html | 4 +- + .../demos/graphics/advancedcoordinates.html | 2 +- + .../demos/graphics/advancedcoordinates2.html | 2 +- + .../goog/demos/graphics/basicelements.html | 4 +- + .../closure/goog/demos/history1.html | 2 +- + .../closure/goog/demos/history2.html | 2 +- + .../closure/goog/demos/history3.html | 2 +- + .../closure/goog/demos/hovercard.html | 18 +- + .../closure/goog/demos/splitpane.html | 2 +- + .../closure/goog/html/safeurl_test_vectors.js | 8 +- + .../goog/html/sanitizer/html_test_vectors.js | 2 +- .../goog/labs/net/webchannel/environment.js | 2 +- .../goog/labs/net/webchannel/netutils.js | 2 +- .../labs/net/webchannel/webchannelbase.js | 4 +- .../closure/goog/net/browserchannel.js | 4 +- .../closure/goog/net/networktester.js | 2 +- .../closure/goog/net/tmpnetwork.js | 2 +- + .../closure/goog/soy/soy_testhelper.js | 4 +- + .../closure/goog/testing/performancetable.css | 4 +- .../closure/goog/testing/testcase.js | 2 +- .../closure/goog/transpile.js | 46 +- + .../closure/goog/ui/editor/linkdialog.js | 2 +- + .../closure/goog/ui/editor/messages.js | 2 +- .../closure/goog/ui/media/googlevideo.js | 6 +- + .../closure/goog/ui/media/mp3.js | 2 +- .../closure/goog/ui/media/picasa.js | 8 +- .../closure/goog/ui/media/youtube.js | 6 +- .../closure/goog/ui/serverchart.js | 6 +- + .../doc/_layouts/article.html | 2 +- + .../google-closure-library/doc/js/article.js | 2 +- + .../src/chrome/os/inputview/adapter.js | 4 +- + .../closure/bin/build/closurebuilder.py | 2 +- + .../closure/bin/build/depstree.py | 2 +- + .../closure/bin/build/depswriter.py | 2 +- + .../closure/bin/build/source.py | 2 +- + .../closure/bin/build/treescan.py | 2 +- + .../closure_library/closure/bin/scopify.py | 2 +- + .../hunspell/src/hunspell/affentry.cxx | 2 +- + .../hunspell/src/hunspell/affentry.hxx | 2 +- + .../hunspell/src/hunspell/affixmgr.cxx | 2 +- + .../hunspell/src/hunspell/affixmgr.hxx | 2 +- + third_party/hunspell/src/hunspell/atypes.hxx | 2 +- + .../hunspell/src/hunspell/baseaffix.hxx | 2 +- + third_party/hunspell/src/hunspell/csutil.cxx | 2 +- + third_party/hunspell/src/hunspell/csutil.hxx | 2 +- + third_party/hunspell/src/hunspell/filemgr.cxx | 2 +- + third_party/hunspell/src/hunspell/filemgr.hxx | 2 +- + third_party/hunspell/src/hunspell/hashmgr.cxx | 2 +- + third_party/hunspell/src/hunspell/hashmgr.hxx | 2 +- + third_party/hunspell/src/hunspell/htypes.hxx | 2 +- + .../hunspell/src/hunspell/hunspell.cxx | 2 +- + .../hunspell/src/hunspell/hunspell.hxx | 2 +- + third_party/hunspell/src/hunspell/hunzip.cxx | 2 +- + third_party/hunspell/src/hunspell/hunzip.hxx | 2 +- + third_party/hunspell/src/hunspell/langnum.hxx | 2 +- + third_party/hunspell/src/hunspell/replist.cxx | 2 +- + third_party/hunspell/src/hunspell/replist.hxx | 2 +- + .../hunspell/src/hunspell/suggestmgr.cxx | 2 +- + .../hunspell/src/hunspell/suggestmgr.hxx | 2 +- + third_party/hunspell/src/hunspell/w_char.hxx | 2 +- + .../hunspell/src/parsers/firstparser.cxx | 2 +- + .../hunspell/src/parsers/firstparser.hxx | 2 +- + .../hunspell/src/parsers/htmlparser.cxx | 2 +- + .../hunspell/src/parsers/htmlparser.hxx | 2 +- + .../hunspell/src/parsers/latexparser.cxx | 2 +- + .../hunspell/src/parsers/latexparser.hxx | 2 +- + .../hunspell/src/parsers/manparser.cxx | 2 +- + .../hunspell/src/parsers/manparser.hxx | 2 +- + .../hunspell/src/parsers/odfparser.cxx | 2 +- + .../hunspell/src/parsers/odfparser.hxx | 2 +- + .../hunspell/src/parsers/testparser.cxx | 2 +- + .../hunspell/src/parsers/textparser.cxx | 2 +- + .../hunspell/src/parsers/textparser.hxx | 2 +- + .../hunspell/src/parsers/xmlparser.cxx | 2 +- + .../hunspell/src/parsers/xmlparser.hxx | 2 +- + .../src/be/hyph-be.lic.txt | 6 +- + .../src/hu/hyph-hu.lic.txt | 4 +- + .../src/hy/hyph-hy.lic.txt | 2 +- + third_party/inspector_protocol/roll.py | 4 +- third_party/jstemplate/compile.py | 2 +- + .../jstemplate/jstemplate_example.html | 2 +- + third_party/jstemplate/jstemplate_jsunit.html | 10 +- + third_party/libaddressinput/BUILD.gn | 2 +- + .../chromium/tools/require_fields.py | 2 +- + .../libpng/contrib/oss-fuzz/README.txt | 2 +- .../libusb/src/libusb/os/windows_usb.c | 4 +- + third_party/libxslt/chromium/roll.py | 2 +- + third_party/maldoca/src/maldoca/base/status.h | 2 +- + .../maldoca/src/maldoca/ole/vba_extract.cc | 2 +- + third_party/metrics_proto/PRESUBMIT.py | 2 +- + third_party/mozilla/NSPasteboard+Utils.mm | 2 +- + third_party/mozilla/NSString+Utils.mm | 2 +- + third_party/opus/src/doc/opus_in_isobmff.html | 2 +- + third_party/opus/src/doc/release.txt | 6 +- + third_party/pefile_py3/pefile.py | 4 +- + third_party/polymer/v1_0/PRESUBMIT.py | 2 +- + .../iron-flex-layout/iron-flex-layout.html | 2 +- + .../iron-icon/iron-icon.html | 2 +- + .../neon-animation/neon-animated-pages.html | 2 +- + .../paper-progress/paper-progress.html | 2 +- + .../paper-ripple/paper-ripple.html | 2 +- + .../paper-spinner/paper-spinner-lite.html | 2 +- + .../paper-tooltip/paper-tooltip.html | 2 +- + third_party/protobuf/CHANGES.txt | 12 +- + third_party/protobuf/CONTRIBUTORS.txt | 68 +- + third_party/protobuf/cmake/CMakeLists.txt | 2 +- + third_party/protobuf/composer.json | 2 +- .../binary_json_conformance_suite.cc | 46 +- .../protobuf/conformance/conformance_cpp.cc | 2 +- .../text_format_conformance_suite.cc | 6 +- + .../Tests/GPBObjectiveCPlusPlusTest.mm | 2 +- + third_party/protobuf/php/composer.json | 2 +- .../php/ext/google/protobuf/convert.c | 2 +- + .../protobuf/python/.repo-metadata.json | 4 +- .../protobuf/python/docs/generate_docs.py | 2 +- .../python/google/protobuf/descriptor.py | 2 +- .../google/protobuf/descriptor_database.py | 2 +- @@ -181,7 +1450,9 @@ Subject: Automated domain substitution .../python/google/protobuf/text_format.py | 2 +- .../generate_py_protobufs.py | 2 +- .../python/protobuf_distutils/setup.py | 6 +- + third_party/protobuf/python/setup.py | 6 +- .../ext/google/protobuf_c/encode_decode.c | 2 +- + .../protobuf/ruby/ext/google/protobuf_c/upb.c | 2 +- .../protobuf/src/google/protobuf/any_lite.cc | 4 +- .../protobuf/compiler/java/java_message.cc | 2 +- .../compiler/js/well_known_types_embed.cc | 2 +- @@ -189,29 +1460,211 @@ Subject: Automated domain substitution .../google/protobuf/util/internal/constants.h | 6 +- .../util/internal/protostream_objectwriter.cc | 44 +- .../src/google/protobuf/util/json_util.cc | 2 +- + third_party/protobuf/update_version.py | 4 +- + .../pycoverage/coverage/htmlfiles/pyfile.html | 2 +- + .../src/benchmarks/chromium.linux.json | 152 +- + third_party/pyjson5/src/setup.py | 2 +- + third_party/rust/autocxx_gen/v0_17/BUILD.gn | 2 +- + .../v0_12/crate/docs/head/COPYRIGHT.txt | 2 +- + .../tensorflow_text/core/ops/rouge_l_op.cc | 2 +- + .../metrics/text_similarity_metric_ops.py | 2 +- + .../updater/chrome_mac_universal/3pp/fetch.py | 2 +- + .../updater/chrome_win_x86/3pp/fetch.py | 2 +- + .../updater/chrome_win_x86_64/3pp/fetch.py | 2 +- + .../updater/chromium_mac_amd64/3pp/fetch.py | 6 +- + .../updater/chromium_mac_arm64/3pp/fetch.py | 6 +- + .../updater/chromium_win_x86/3pp/fetch.py | 6 +- + .../updater/chromium_win_x86_64/3pp/fetch.py | 6 +- + third_party/wpt_tools/roll_wpt.py | 8 +- + third_party/wpt_tools/wpt/tools/lint/rules.py | 4 +- + .../tools/third_party/pywebsocket3/setup.py | 2 +- + .../wpt/tools/webdriver/webdriver/client.py | 2 +- + .../wpt_tools/wpt/tools/wpt/android.py | 2 +- .../wpt_tools/wpt/tools/wpt/browser.py | 28 +- + third_party/wpt_tools/wpt/tools/wpt/run.py | 4 +- + .../wpt/tools/wptrunner/requirements.txt | 2 +- .../wpt_tools/wpt/tools/wptrunner/setup.py | 2 +- + .../wptrunner/executors/executormarionette.py | 14 +- + .../wptrunner/formatters/chromium.py | 2 +- + .../codereview/download_issue.py | 6 +- + tools/accessibility/codereview/mph.py | 2 +- + tools/accessibility/inspect/ax_utils.cc | 2 +- + tools/accessibility/nvda/README.txt | 2 +- + tools/android/checkxmlstyle/PRESUBMIT.py | 2 +- + tools/android/checkxmlstyle/checkxmlstyle.py | 8 +- + .../customtabs_benchmark/scripts/PRESUBMIT.py | 2 +- + .../scripts/customtabs_benchmark.py | 2 +- + .../scripts/run_benchmark.py | 2 +- + .../scripts/sample_config.json | 4 +- + .../android/dependency_analysis/PRESUBMIT.py | 2 +- + .../js/src/class_view.html | 2 +- + .../dependency_analysis/js/src/load_graph.js | 2 +- + .../js/src/package_view.html | 2 +- + .../dependency_analysis/upload_html_viewer.py | 2 +- + .../convenience/touch_resources.py | 2 +- + tools/android/native_lib_memory/PRESUBMIT.py | 2 +- + tools/android/python_utils/PRESUBMIT.py | 2 +- + tools/android/sdk_updater/update_sdk.py | 2 +- + tools/android/test_health/PRESUBMIT.py | 2 +- + tools/binary_size/PRESUBMIT.py | 2 +- + tools/binary_size/diagnose_bloat.py | 4 +- + tools/binary_size/libsupersize/console.py | 2 +- + .../libsupersize/viewer/static/auth-consts.js | 8 +- + .../libsupersize/viewer/static/index.html | 2 +- + .../libsupersize/viewer/static/index.js | 2 +- + .../viewer/static/tree-worker-wasm.js | 4 +- + .../libsupersize/viewer/static/viewer.html | 8 +- + .../libsupersize/viewer/upload_html_viewer.py | 2 +- + tools/binary_size/libsupersize/zip_util.py | 2 +- + .../binary_size/trybot_commit_size_checker.py | 2 +- tools/bisect-builds.py | 28 +- + tools/bisect_repackage/bisect_repackage.py | 4 +- + .../bisect_repackage_utils.py | 4 +- + tools/boilerplate.py | 2 +- + tools/captured_sites/refresh.py | 2 +- + tools/check_git_config.py | 24 +- tools/checklicenses/checklicenses.py | 2 +- + tools/checkperms/PRESUBMIT.py | 2 +- + tools/checkteamtags/PRESUBMIT.py | 2 +- tools/checkteamtags/checkteamtags.py | 8 +- + tools/checkteamtags/extract_components.py | 2 +- + .../open_my_editor/ext/background.js | 26 +- + .../open_my_editor/ext/manifest.json | 6 +- + tools/clang/scripts/build.py | 4 +- + tools/clang/scripts/include-analysis.html | 12 +- + tools/clang/scripts/package.py | 2 +- tools/clang/scripts/update.py | 2 +- + tools/code_coverage/coverage.py | 8 +- + tools/coverity/coverity.py | 2 +- + tools/cr/cr/base/android.py | 2 +- + tools/cr/main.py | 2 +- tools/crbug/crbug.js | 8 +- + tools/crbug/pinpoint.js | 4 +- + tools/crbug/user-activity.js | 4 +- + tools/cygprofile/PRESUBMIT.py | 2 +- + .../cygprofile/orderfile_generator_backend.py | 4 +- + tools/download_optimization_profile.py | 2 +- + .../dromaeo_benchmark_runner.py | 10 +- + tools/emacs/trybot-mac.txt | 232 +- + tools/find_runtime_symbols/PRESUBMIT.py | 2 +- + tools/flags/list_flags.py | 4 +- + tools/generate_stubs/generate_stubs.py | 2 +- + tools/git/suggest_owners.py | 6 +- + tools/gn/bootstrap/bootstrap.py | 2 +- + tools/gn/roll_gn.py | 2 +- + tools/grit/PRESUBMIT.py | 2 +- tools/grit/grit/format/rc.py | 2 +- tools/grit/grit/tool/android2grd.py | 4 +- + tools/grit/grit/tool/resize.py | 2 +- + tools/grit/pak_util.py | 2 +- + tools/grit/setup.py | 4 +- + tools/infra/PRESUBMIT.py | 2 +- + tools/infra/clobber_cache_utils.py | 4 +- + tools/infra/find_bad_builds.py | 2 +- tools/infra/reproduce.py | 10 +- + tools/json_data_generator/PRESUBMIT.py | 2 +- + tools/json_schema_compiler/PRESUBMIT.py | 2 +- + .../js_externs_generator.py | 4 +- tools/json_schema_compiler/js_util.py | 2 +- + tools/json_schema_compiler/preview.py | 2 +- + tools/json_to_struct/PRESUBMIT.py | 2 +- + tools/licenses.py | 36 +- + tools/linux/PRESUBMIT.py | 2 +- + tools/mac/download_symbols.py | 4 +- + tools/mac/power/scenarios.py | 10 +- tools/mb/mb.py | 4 +- + tools/mb/mb_config.pyl | 6 +- + tools/md_browser/base.css | 4 +- + tools/md_browser/footer.html | 2 +- + tools/md_browser/gitiles_autolink.py | 2 +- + tools/md_browser/gitiles_ext_blocks.py | 2 +- + tools/md_browser/gitiles_smart_quotes.py | 2 +- + tools/md_browser/md_browser.py | 2 +- + tools/metrics/actions/PRESUBMIT.py | 2 +- + tools/metrics/common/models.py | 2 +- + tools/metrics/histograms/PRESUBMIT.py | 2 +- + tools/metrics/histograms/expand_owners.py | 12 +- .../metrics/histograms/extract_histograms.py | 8 +- + ...ram_configuration_model_test_histograms.py | 68 +- + tools/metrics/histograms/split_xml.py | 4 +- + tools/metrics/md2xml.py | 4 +- + tools/metrics/structured/PRESUBMIT.py | 2 +- + tools/metrics/structured/model.py | 6 +- + tools/metrics/ukm/PRESUBMIT.py | 2 +- + tools/metrics/ukm/xml_validations.py | 4 +- + tools/nocompile_driver.py | 2 +- + tools/omahaproxy.py | 2 +- + tools/perfbot-analysis/builder.js | 4 +- + tools/perfbot-analysis/bulk-download.js | 2 +- + tools/polymer/PRESUBMIT.py | 2 +- + tools/python/google/gethash_timer.py | 2 +- + tools/resources/find_unused_resources.py | 2 +- + tools/roll_webgl_conformance.py | 2 +- + tools/run-swarmed.py | 10 +- + tools/site_compare/commands/measure.py | 2 +- + tools/site_compare/commands/scrape.py | 2 +- + .../scrapers/chrome/chromebase.py | 4 +- + .../site_compare/scrapers/firefox/firefox2.py | 2 +- + tools/site_compare/scrapers/ie/ie7.py | 4 +- + tools/site_compare/utils/browser_iterate.py | 2 +- + tools/style_variable_generator/PRESUBMIT.py | 2 +- + tools/symsrc/source_index.py | 8 +- + tools/tracing/PRESUBMIT.py | 2 +- + tools/tracing/rename_breakpad.py | 2 +- .../sample_traffic_annotation.cc | 2 +- + .../scripts/auditor/auditor.py | 2 +- + .../scripts/auditor/util.py | 2 +- + .../scripts/update_annotations_doc.py | 4 +- + .../scripts/update_annotations_sheet.py | 6 +- + tools/typescript/PRESUBMIT.py | 2 +- tools/usb_gadget/gadget.py | 2 +- + tools/usb_gadget/msos20_descriptors.py | 2 +- + tools/variations/bisect_variations.py | 2 +- tools/web_dev_style/css_checker.py | 6 +- + tools/web_dev_style/html_checker.py | 2 +- tools/web_dev_style/js_checker.py | 8 +- + tools/web_dev_style/resource_checker.py | 2 +- + .../CreateTempFilesPerfEvaluation/ReadMe.txt | 2 +- + tools/win/RetrieveSymbols/RetrieveSymbols.cpp | 2 +- + tools/win/ShowThreadNames/ReadMe.txt | 2 +- + tools/win/sizeviewer/template.html | 2 +- + .../chromevox/background/background.js | 2 +- + .../chromevox/background/prefs.js | 4 +- + .../chromevox/injected/history.js | 2 +- + .../cvox2/background/background.js | 14 +- + .../cvox2/background/panel.html | 2 +- + .../extensions/searchvox/loader.js | 2 +- + .../chromevoxclassic/manifest.json.jinja2 | 2 +- + .../accessibility_extensions_strings.grd | 2 +- + ui/base/clipboard/clipboard_test_template.h | 10 +- + ui/base/cocoa/base_view.mm | 2 +- + .../constrained_window_animation.mm | 2 +- + ui/base/cocoa/tool_tip_base_view.mm | 2 +- + .../cocoa/underlay_opengl_hosting_window.mm | 2 +- + ui/base/ime/PRESUBMIT.py | 2 +- + ui/base/ime/character_composer_sequences.txt | 2 +- + .../keycodes/keyboard_code_conversion_mac.mm | 2 +- + ui/file_manager/audio_player/manifest.json | 2 +- + ui/file_manager/base/gn/PRESUBMIT.py | 2 +- .../file_manager/common/js/mock_chrome.js | 6 +- .../foreground/elements/icons.html | 2 +- + ui/file_manager/file_manager/manifest.json | 10 +- + ui/file_manager/image_loader/piex/Makefile | 2 +- + ui/gl/gl_image_io_surface_egl.mm | 2 +- + ui/ozone/ozone.gni | 2 +- + ui/resources/PRESUBMIT.py | 4 +- + ui/resources/resource_check/ico_files.py | 4 +- + .../resource_check/resource_scale_factors.py | 4 +- + ui/strings/ui_strings.grd | 4 +- + ui/views/PRESUBMIT.py | 2 +- + ui/views/examples/webview_example.cc | 2 +- .../cr_components/app_management/icons.html | 2 +- .../quick_unlock/pin_keyboard_icon.html | 2 +- ui/webui/resources/cr_elements/icons.html | 4 +- - 208 files changed, 1869 insertions(+), 1869 deletions(-) + url/third_party/mozilla/LICENSE.txt | 4 +- + ...weblayer_security_blocking_page_factory.cc | 2 +- + weblayer/shell/app/shell_main_params.cc | 2 +- + 1661 files changed, 5126 insertions(+), 5126 deletions(-) diff --git a/PRESUBMIT.py b/PRESUBMIT.py --- a/PRESUBMIT.py @@ -224,8 +1677,8 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py +See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts for more details about the presubmit API built into depot_tools. """ - PRESUBMIT_VERSION = '2.0.0' -@@ -184,7 +184,7 @@ _BANNED_OBJC_FUNCTIONS = ( + +@@ -207,7 +207,7 @@ _BANNED_OBJC_FUNCTIONS : Sequence[BanRule] = ( ( 'The use of -[NSView addTrackingRect:owner:userData:assumeInside:] is' 'prohibited. Please use CrTrackingArea instead.', @@ -234,7 +1687,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), False, ), -@@ -193,7 +193,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -216,7 +216,7 @@ _BANNED_OBJC_FUNCTIONS : Sequence[BanRule] = ( ( 'The use of NSTrackingAreas is prohibited. Please use CrTrackingArea', 'instead.', @@ -243,7 +1696,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), False, ), -@@ -202,7 +202,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -225,7 +225,7 @@ _BANNED_OBJC_FUNCTIONS : Sequence[BanRule] = ( ( 'The use of -[NSView convertPointFromBase:] is almost certainly wrong.', 'Please use |convertPoint:(point) fromView:nil| instead.', @@ -252,7 +1705,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -211,7 +211,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -234,7 +234,7 @@ _BANNED_OBJC_FUNCTIONS : Sequence[BanRule] = ( ( 'The use of -[NSView convertPointToBase:] is almost certainly wrong.', 'Please use |convertPoint:(point) toView:nil| instead.', @@ -261,7 +1714,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -220,7 +220,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -243,7 +243,7 @@ _BANNED_OBJC_FUNCTIONS : Sequence[BanRule] = ( ( 'The use of -[NSView convertRectFromBase:] is almost certainly wrong.', 'Please use |convertRect:(point) fromView:nil| instead.', @@ -270,7 +1723,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -229,7 +229,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -252,7 +252,7 @@ _BANNED_OBJC_FUNCTIONS : Sequence[BanRule] = ( ( 'The use of -[NSView convertRectToBase:] is almost certainly wrong.', 'Please use |convertRect:(point) toView:nil| instead.', @@ -279,7 +1732,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -238,7 +238,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -261,7 +261,7 @@ _BANNED_OBJC_FUNCTIONS : Sequence[BanRule] = ( ( 'The use of -[NSView convertSizeFromBase:] is almost certainly wrong.', 'Please use |convertSize:(point) fromView:nil| instead.', @@ -288,7 +1741,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -247,7 +247,7 @@ _BANNED_OBJC_FUNCTIONS = ( +@@ -270,7 +270,7 @@ _BANNED_OBJC_FUNCTIONS : Sequence[BanRule] = ( ( 'The use of -[NSView convertSizeToBase:] is almost certainly wrong.', 'Please use |convertSize:(point) toView:nil| instead.', @@ -297,7 +1750,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), True, ), -@@ -476,7 +476,7 @@ _BANNED_CPP_FUNCTIONS = ( +@@ -486,7 +486,7 @@ _BANNED_CPP_FUNCTIONS : Sequence[BanRule] = ( ( "Don't use CallJavascriptFunctionUnsafe() in new code. Instead, use", 'AllowJavascript(), OnJavascriptAllowed()/OnJavascriptDisallowed(),', @@ -306,7 +1759,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ), False, ( -@@ -1042,7 +1042,7 @@ _DEPRECATED_MOJO_TYPES = ( +@@ -1030,7 +1030,7 @@ _DEPRECATED_MOJO_TYPES : Sequence[BanRule] = ( _IPC_ENUM_TRAITS_DEPRECATED = ( 'You are using IPC_ENUM_TRAITS() in your code. It has been deprecated.\n' @@ -315,7 +1768,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py 'security-tips-for-ipc') _LONG_PATH_ERROR = ( -@@ -1175,9 +1175,9 @@ _KNOWN_ROBOTS = set( +@@ -1163,9 +1163,9 @@ _KNOWN_ROBOTS = set( 'infra-try-recipes-tester', 'lacros-tracking-roller') ) | set('%s@skia-public.iam.gserviceaccount.com' % s for s in ('chromium-autoroll', 'chromium-release-autoroll') @@ -327,7 +1780,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py for s in ('swarming-tasks',)) _INVALID_GRD_FILE_LINE = [ -@@ -1570,7 +1570,7 @@ def CheckNoDEPSGIT(input_api, output_api): +@@ -1558,7 +1558,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' @@ -336,7 +1789,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py 'get-the-code#Rolling_DEPS\n' 'for more information') ] -@@ -1797,7 +1797,7 @@ def CheckNoPragmaOnce(input_api, output_api): +@@ -1790,7 +1790,7 @@ def CheckNoPragmaOnce(input_api, output_api): return [ output_api.PresubmitError( 'Do not use #pragma once in header files.\n' @@ -345,7 +1798,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py files) ] return [] -@@ -2037,7 +2037,7 @@ def CheckForVersionControlConflicts(input_api, output_api): +@@ -2030,7 +2030,7 @@ def CheckForVersionControlConflicts(input_api, output_api): def CheckGoogleSupportAnswerUrlOnUpload(input_api, output_api): @@ -354,7 +1807,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py errors = [] for f in input_api.AffectedFiles(): for line_num, line in f.ChangedContents(): -@@ -2157,7 +2157,7 @@ def CheckNoAbbreviationInPngFileName(input_api, output_api): +@@ -2150,7 +2150,7 @@ def CheckNoAbbreviationInPngFileName(input_api, output_api): 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' @@ -363,7 +1816,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py return results -@@ -2955,7 +2955,7 @@ def CheckSecurityOwners(input_api, output_api): +@@ -2948,7 +2948,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. @@ -372,7 +1825,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. -@@ -3269,7 +3269,7 @@ def _CheckAndroidToastUsage(input_api, output_api): +@@ -3262,7 +3262,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' @@ -381,7 +1834,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py errors)) return results -@@ -3408,7 +3408,7 @@ def _CheckAndroidTestJUnitFrameworkImport(input_api, output_api): +@@ -3401,7 +3401,7 @@ def _CheckAndroidTestJUnitFrameworkImport(input_api, output_api): results.append( output_api.PresubmitError( 'APIs from junit.framework.* are deprecated, please use JUnit4 framework' @@ -390,7 +1843,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ' if you have any question.', errors)) return results -@@ -3440,7 +3440,7 @@ def _CheckAndroidTestJUnitInheritance(input_api, output_api): +@@ -3433,7 +3433,7 @@ def _CheckAndroidTestJUnitInheritance(input_api, output_api): 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' @@ -399,7 +1852,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ' questions.', errors)) return results -@@ -3465,7 +3465,7 @@ def _CheckAndroidTestAnnotationUsage(input_api, output_api): +@@ -3458,7 +3458,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.' @@ -408,7 +1861,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py errors)) return results -@@ -3487,7 +3487,7 @@ def _CheckAndroidNewMdpiAssetLocation(input_api, output_api): +@@ -3480,7 +3480,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' @@ -417,7 +1870,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py return results -@@ -4089,7 +4089,7 @@ def CheckGnGlobForward(input_api, output_api): +@@ -4082,7 +4082,7 @@ def CheckGnGlobForward(input_api, output_api): 'The variables "visibilty" and "test_only" should be ' 'explicitly listed in forward_variables_from(). For more ' 'details, see:\n' @@ -426,7 +1879,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py 'build/docs/writing_gn_templates.md' '#Using-forward_variables_from')) ] -@@ -4257,7 +4257,7 @@ def CheckFuzzTargetsOnUpload(input_api, output_api): +@@ -4250,7 +4250,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 ' @@ -435,7 +1888,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py 'libfuzzer/efficient_fuzzing.md#simplifying-initialization_cleanup.\n' % (', '.join(EXPORTED_SYMBOLS), REQUIRED_HEADER)) -@@ -4295,7 +4295,7 @@ def _CheckNewImagesWarning(input_api, output_api): +@@ -4288,7 +4288,7 @@ def _CheckNewImagesWarning(input_api, output_api): 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 ' @@ -444,7 +1897,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 -@@ -4511,7 +4511,7 @@ _NON_INCLUSIVE_TERMS = ( +@@ -4504,7 +4504,7 @@ _NON_INCLUSIVE_TERMS = ( '"# nocheck" or ""', 'at the end of the offending line will bypass this PRESUBMIT error', 'but avoid using this whenever possible. Reach out to', @@ -453,7 +1906,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py True),) def ChecksCommon(input_api, output_api): -@@ -4782,7 +4782,7 @@ def CheckForInvalidIfDefinedMacros(input_api, output_api): +@@ -4775,7 +4775,7 @@ def CheckForInvalidIfDefinedMacros(input_api, output_api): def CheckForIPCRules(input_api, output_api): """Check for same IPC rules described in @@ -462,7 +1915,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) -@@ -5063,9 +5063,9 @@ def CheckForUseOfChromeAppsDeprecations(input_api, output_api): +@@ -5056,9 +5056,9 @@ def CheckForUseOfChromeAppsDeprecations(input_api, output_api): 'You are adding/modifying code' 'related to technologies which will soon be deprecated (Chrome Apps, NaCl,' ' PNaCl, PPAPI). See this blog post for more details:\n' @@ -474,7 +1927,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py '\n'.join(problems)) ] -@@ -5119,7 +5119,7 @@ def CheckChangeOnCommit(input_api, output_api): +@@ -5112,7 +5112,7 @@ def CheckChangeOnCommit(input_api, output_api): input_api.canned_checks.CheckTreeIsOpen( input_api, output_api, @@ -483,7 +1936,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py results.extend( input_api.canned_checks.CheckPatchFormatted(input_api, output_api)) -@@ -5468,7 +5468,7 @@ def CheckStrings(input_api, output_api): +@@ -5461,7 +5461,7 @@ def CheckStrings(input_api, output_api): results.append( output_api.PresubmitPromptWarning( 'ICU syntax errors were found in the following strings (problems or ' @@ -492,7 +1945,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py items=icu_syntax_errors)) return results -@@ -5779,7 +5779,7 @@ def CheckMPArchApiUsage(input_api, output_api): +@@ -5772,7 +5772,7 @@ def CheckMPArchApiUsage(input_api, output_api): if not used_apis: return [] @@ -501,7 +1954,7 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py message = ('This change uses API(s) that are ambiguous in the presence of ' 'MPArch features such as bfcache, prerendering, and fenced ' 'frames.') -@@ -5790,8 +5790,8 @@ def CheckMPArchApiUsage(input_api, output_api): +@@ -5783,8 +5783,8 @@ def CheckMPArchApiUsage(input_api, output_api): 'navigation. See this doc [1] and the comments on the individual APIs ' 'for guidance and this doc [2] for context. The MPArch review ' 'watchlist has been CC\'d on this change to help identify any issues.\n' @@ -512,10 +1965,992 @@ diff --git a/PRESUBMIT.py b/PRESUBMIT.py ) return [ output_api.PresubmitNotifyResult(message, +diff --git a/android_webview/tools/cts_config/webview_cts_gcs_path.json b/android_webview/tools/cts_config/webview_cts_gcs_path.json +--- a/android_webview/tools/cts_config/webview_cts_gcs_path.json ++++ b/android_webview/tools/cts_config/webview_cts_gcs_path.json +@@ -3,12 +3,12 @@ + "arch": { + "arm64": { + "filename": "arm64/M/android-cts-arm64-6.0_r32.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-6.0_r32-linux_x86-arm.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-6.0_r32-linux_x86-arm.zip", + "unzip_dir": "arm64/M/6.0_r32/" + }, + "x86": { + "filename": "x86/M/android-cts-x86-6.0_r32.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-6.0_r32-linux_x86-x86.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-6.0_r32-linux_x86-x86.zip", + "unzip_dir": "x86/M/6.0_r32/" + } + }, +@@ -100,12 +100,12 @@ + "arch": { + "arm64": { + "filename": "arm64/N/android-cts-arm64-7.0_r33.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-7.0_r33-linux_x86-arm.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-7.0_r33-linux_x86-arm.zip", + "unzip_dir": "arm64/N/7.0_r33/" + }, + "x86": { + "filename": "x86/N/android-cts-x86-7.0_r33.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-7.0_r33-linux_x86-x86.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-7.0_r33-linux_x86-x86.zip", + "unzip_dir": "x86/N/7.0_r33/" + } + }, +@@ -137,12 +137,12 @@ + "arch": { + "arm64": { + "filename": "arm64/O/android-cts-arm64-8.0_r24.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-8.0_r24-linux_x86-arm.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-8.0_r24-linux_x86-arm.zip", + "unzip_dir": "arm64/O/8.0_r24" + }, + "x86": { + "filename": "x86/O/android-cts-x86-8.0_r24.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-8.0_r24-linux_x86-x86.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-8.0_r24-linux_x86-x86.zip", + "unzip_dir": "x86/O/8.0_r24/" + } + }, +@@ -159,12 +159,12 @@ + "arch": { + "arm64": { + "filename": "arm64/P/android-cts-arm64-9.0_r13.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-9.0_r13-linux_x86-arm.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-9.0_r13-linux_x86-arm.zip", + "unzip_dir": "arm64/P/9.0_r13/" + }, + "x86": { + "filename": "x86/P/android-cts-x86-9.0_r13.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-9.0_r13-linux_x86-x86.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-9.0_r13-linux_x86-x86.zip", + "unzip_dir": "x86/P/9.0_r13/" + } + }, +@@ -187,12 +187,12 @@ + "arch": { + "arm64": { + "filename": "arm64/Q/android-cts-arm64-10_r5.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-10_r5-linux_x86-arm.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-10_r5-linux_x86-arm.zip", + "unzip_dir": "arm64/Q/10_r5/" + }, + "x86": { + "filename": "x86/Q/android-cts-x86-10_r5.zip", +- "_origin": "https://dl.google.com/dl/android/cts/android-cts-10_r5-linux_x86-x86.zip", ++ "_origin": "https://dl.9oo91e.qjz9zk/dl/android/cts/android-cts-10_r5-linux_x86-x86.zip", + "unzip_dir": "x86/Q/10_r5/" + } + }, +diff --git a/android_webview/tools/generate_flag_labels.py b/android_webview/tools/generate_flag_labels.py +--- a/android_webview/tools/generate_flag_labels.py ++++ b/android_webview/tools/generate_flag_labels.py +@@ -251,7 +251,7 @@ double-check this picked the correct labels for your new features (labels are + case-sensitive!), add these to enums.xml, run `git-cl format`, and then follow + these steps as a final check: + +-https://chromium.googlesource.com/chromium/src/+/main/tools/metrics/histograms/README.md#flag-histograms ++https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/tools/metrics/histograms/README.md#flag-histograms + + If any labels were generated incorrectly, please edit this script and change + KNOWN_MISTAKES. +diff --git a/android_webview/tools/record_netlog.py b/android_webview/tools/record_netlog.py +--- a/android_webview/tools/record_netlog.py ++++ b/android_webview/tools/record_netlog.py +@@ -6,7 +6,7 @@ + """Takes a netlog for the WebViews in a given application. + + Developer guide: +-https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/net-debugging.md ++https://chromium.9oo91esource.qjz9zk/chromium/src/+/HEAD/android_webview/docs/net-debugging.md + """ + + from __future__ import print_function +@@ -62,7 +62,7 @@ Configures WebView to start recording a netlog. This script chooses a suitable + netlog filename for the application, and will pull the netlog off the device + when the user terminates the script (with ctrl-C). For a more complete usage + guide, open your web browser to: +-https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/net-debugging.md ++https://chromium.9oo91esource.qjz9zk/chromium/src/+/HEAD/android_webview/docs/net-debugging.md + """) + parser.add_argument( + '--package', +@@ -91,7 +91,7 @@ https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/net-d + raise device_errors.MultipleDevicesError(devices) + + if device.build_type == 'user': +- device_setup_url = ('https://chromium.googlesource.com/chromium/src/+/HEAD/' ++ device_setup_url = ('https://chromium.9oo91esource.qjz9zk/chromium/src/+/HEAD/' + 'android_webview/docs/device-setup.md') + raise RuntimeError('It appears your device is a "user" build. We only ' + 'support capturing netlog on userdebug/eng builds. See ' +diff --git a/android_webview/tools/remove_preinstalled_webview.py b/android_webview/tools/remove_preinstalled_webview.py +--- a/android_webview/tools/remove_preinstalled_webview.py ++++ b/android_webview/tools/remove_preinstalled_webview.py +@@ -93,7 +93,7 @@ def RemovePreinstalledWebViews(device): + # workaround this. Use lots of newlines to make sure this message doesn't + # get lost. + logging.error('Did you start the emulator with "-writable-system?"\n' +- 'See https://chromium.googlesource.com/chromium/src/+/' ++ 'See https://chromium.9oo91esource.qjz9zk/chromium/src/+/' + 'main/docs/android_emulator.md#writable-system-partition' + '\n') + raise +diff --git a/android_webview/tools/update_cts.py b/android_webview/tools/update_cts.py +--- a/android_webview/tools/update_cts.py ++++ b/android_webview/tools/update_cts.py +@@ -85,7 +85,7 @@ class UpdateCTS: + Prereqs: + - Update the tools/cts_config/webview_cts_gcs_path.json file with origin, + and filenames for each platform. See: +- https://source.android.com/compatibility/cts/downloads for the latest ++ https://source.8n6r01d.qjz9zk/compatibility/cts/downloads for the latest + versions. + + Performs the following tasks to simplify the CTS test update process: +@@ -349,7 +349,7 @@ class UpdateCTS: + + DESC = """Updates the WebView CTS tests to a new version. + +-See https://source.android.com/compatibility/cts/downloads for the latest ++See https://source.8n6r01d.qjz9zk/compatibility/cts/downloads for the latest + versions. + + Please create a new branch, then edit the +diff --git a/ash/accelerators/accelerator_notifications.cc b/ash/accelerators/accelerator_notifications.cc +--- a/ash/accelerators/accelerator_notifications.cc ++++ b/ash/accelerators/accelerator_notifications.cc +@@ -154,7 +154,7 @@ void RemoveNotification(const std::string& notification_id) { + + // Shortcut help URL. + const char kKeyboardShortcutHelpPageUrl[] = +- "https://support.google.com/chromebook/answer/183101"; ++ "https://support.9oo91e.qjz9zk/chromebook/answer/183101"; + + // Accessibility notification ids. + const char kDockedMagnifierToggleAccelNotificationId[] = +diff --git a/ash/app_list/PRESUBMIT.py b/ash/app_list/PRESUBMIT.py +--- a/ash/app_list/PRESUBMIT.py ++++ b/ash/app_list/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for app_list. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd +--- a/ash/ash_strings.grd ++++ b/ash/ash_strings.grd +@@ -658,7 +658,7 @@ This file contains the strings for ash. + other {Update device within # seconds}} + + +- $1google.com requires you to update your $2Chromebook before the deadline ++ $19oo91e.qjz9zk requires you to update your $2Chromebook before the deadline + + + +@@ -683,7 +683,7 @@ This file contains the strings for ash. + other {Change device to previous version within # seconds}} + + +- $1google.com requires you to roll back your $2Chromebook. Your device will reset and all data will be deleted. ++ $19oo91e.qjz9zk requires you to roll back your $2Chromebook. Your device will reset and all data will be deleted. + + + +@@ -693,10 +693,10 @@ This file contains the strings for ash. + Update overdue + + +- $1google.com recommends that you update your $2Chromebook ++ $19oo91e.qjz9zk recommends that you update your $2Chromebook + + +- $1google.com requires you to update your $2Chromebook immediately ++ $19oo91e.qjz9zk requires you to update your $2Chromebook immediately + + + +@@ -730,10 +730,10 @@ This file contains the strings for ash. + This update requires powerwashing your $1Chromebook. All data will be deleted. Learn more about the latest $2Chromium OS update. + + +- $1google.com is rolling back your $2Chromebook. Your device will reset and all data will be deleted. ++ $19oo91e.qjz9zk is rolling back your $2Chromebook. Your device will reset and all data will be deleted. + + +- $1google.com requires you to roll back your $2Chromebook. Your device will reset and all data will be deleted. ++ $19oo91e.qjz9zk requires you to roll back your $2Chromebook. Your device will reset and all data will be deleted. + + + $1Learn more about the latest Chromium OS update. This Chromebook needs to restart to apply an update. This can take up to 1 minute. +@@ -827,7 +827,7 @@ This file contains the strings for ash. + + +- $1google.com has $2activated $3Full-screen magnifier. ++ $19oo91e.qjz9zk has $2activated $3Full-screen magnifier. + + +@@ -1348,7 +1348,7 @@ This file contains the strings for ash. + Supervised user + + +- Usage and history of this user can be reviewed by the manager ($1user@example.com) on chrome.com. ++ Usage and history of this user can be reviewed by the manager ($1user@example.com) on ch40me.qjz9zk. + + + Account managed by $1user@example.com +@@ -1641,7 +1641,7 @@ This file contains the strings for ash. + Tap to configure + + +- Browser tab $11 of $22. $3Google, $4https://google.com ++ Browser tab $11 of $22. $3Google, $4https://9oo91e.qjz9zk + + + Connected devices settings +@@ -3211,7 +3211,7 @@ This file contains the strings for ash. + Save $1Pixel Buds + + +- Save $1Pixel Buds to $2alisha123@gmail.com for faster pairing to your other devices ++ Save $1Pixel Buds to $2alisha123@9ma1l.qjz9zk for faster pairing to your other devices + + + Settings +@@ -3244,7 +3244,7 @@ This file contains the strings for ash. + Connect $1Pixel Buds to this Chromebook + + +- Your $1Pixel Buds will appear on devices linked with $2alisha123@gmail.com ++ Your $1Pixel Buds will appear on devices linked with $2alisha123@9ma1l.qjz9zk + + + Cancel +@@ -3370,7 +3370,7 @@ This file contains the strings for ash. + Multiple sign-in has been disabled + + +- An administrator has disallowed multiple sign-in for $1john@google.com. All users must sign out to continue. ++ An administrator has disallowed multiple sign-in for $1john@9oo91e.qjz9zk. All users must sign out to continue. + + + Sign out +@@ -3873,7 +3873,7 @@ Here are some things you can try to get started. + Unlock device to perform the notification action + + +- Unlock device as $1example@gmail.com to perform the notification action ++ Unlock device as $1example@9ma1l.qjz9zk to perform the notification action + + + To see notifications on your lock screen, unlock to change the setting +diff --git a/ash/assistant/PRESUBMIT.py b/ash/assistant/PRESUBMIT.py +--- a/ash/assistant/PRESUBMIT.py ++++ b/ash/assistant/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + PRESUBMIT_VERSION = '2.0.0' +diff --git a/ash/assistant/assistant_setup_controller.cc b/ash/assistant/assistant_setup_controller.cc +--- a/ash/assistant/assistant_setup_controller.cc ++++ b/ash/assistant/assistant_setup_controller.cc +@@ -16,7 +16,7 @@ + namespace { + + constexpr char kGSuiteAdministratorInstructionsUrl[] = +- "https://support.google.com/a/answer/6304876"; ++ "https://support.9oo91e.qjz9zk/a/answer/6304876"; + + } // namespace + +diff --git a/ash/assistant/util/deep_link_util.cc b/ash/assistant/util/deep_link_util.cc +--- a/ash/assistant/util/deep_link_util.cc ++++ b/ash/assistant/util/deep_link_util.cc +@@ -389,21 +389,21 @@ absl::optional GetAssistantUrl( + case DeepLinkType::kLists: { + const auto& type = GetDeepLinkParam(params, DeepLinkParam::kType); + top_level_url = +- std::string("https://assistant.google.com/lists/mainview"); ++ std::string("https://assistant.9oo91e.qjz9zk/lists/mainview"); + by_id_url = (type && type.value().compare("shopping") == 0) +- ? std::string("https://shoppinglist.google.com/lists/") +- : std::string("https://assistant.google.com/lists/list/"); ++ ? std::string("https://shoppinglist.9oo91e.qjz9zk/lists/") ++ : std::string("https://assistant.9oo91e.qjz9zk/lists/list/"); + break; + } + case DeepLinkType::kNotes: + top_level_url = std::string( +- "https://assistant.google.com/lists/mainview?note_tap=true"); +- by_id_url = std::string("https://assistant.google.com/lists/note/"); ++ "https://assistant.9oo91e.qjz9zk/lists/mainview?note_tap=true"); ++ by_id_url = std::string("https://assistant.9oo91e.qjz9zk/lists/note/"); + break; + case DeepLinkType::kReminders: + top_level_url = +- std::string("https://assistant.google.com/reminders/mainview"); +- by_id_url = std::string("https://assistant.google.com/reminders/id/"); ++ std::string("https://assistant.9oo91e.qjz9zk/reminders/mainview"); ++ by_id_url = std::string("https://assistant.9oo91e.qjz9zk/reminders/id/"); + break; + default: + NOTREACHED(); +@@ -454,7 +454,7 @@ absl::optional GetWebUrl( + DeepLinkType type, + const std::map& params) { + static constexpr char kAssistantSettingsWebUrl[] = +- "https://assistant.google.com/settings/mainpage"; ++ "https://assistant.9oo91e.qjz9zk/settings/mainpage"; + + if (!IsWebDeepLinkType(type, params)) + return absl::nullopt; +diff --git a/ash/components/device_activity/device_activity_controller.cc b/ash/components/device_activity/device_activity_controller.cc +--- a/ash/components/device_activity/device_activity_controller.cc ++++ b/ash/components/device_activity/device_activity_controller.cc +@@ -32,7 +32,7 @@ DeviceActivityController* g_ash_device_activity_controller = nullptr; + + // Production edge server for reporting device actives. + // TODO(https://crbug.com/1267432): Enable passing base url as a runtime flag. +-const char kFresnelBaseUrl[] = "https://crosfresnel-pa.googleapis.com"; ++const char kFresnelBaseUrl[] = "https://crosfresnel-pa.9oo91eapis.qjz9zk"; + + // Count the number of PSM device active secret that is set. + const char kDeviceActiveControllerPsmDeviceActiveSecretIsSet[] = +diff --git a/ash/components/drivefs/drivefs_auth.cc b/ash/components/drivefs/drivefs_auth.cc +--- a/ash/components/drivefs/drivefs_auth.cc ++++ b/ash/components/drivefs/drivefs_auth.cc +@@ -63,7 +63,7 @@ void DriveFsAuth::GetAccessToken( + timer_->Start( + FROM_HERE, base::Seconds(30), + base::BindOnce(&DriveFsAuth::AuthTimeout, base::Unretained(this))); +- std::set scopes({"https://www.googleapis.com/auth/drive"}); ++ std::set scopes({"https://www.9oo91eapis.qjz9zk/auth/drive"}); + access_token_fetcher_ = + std::make_unique( + kIdentityConsumerId, identity_manager, scopes, +diff --git a/ash/components/geolocation/simple_geolocation_provider.cc b/ash/components/geolocation/simple_geolocation_provider.cc +--- a/ash/components/geolocation/simple_geolocation_provider.cc ++++ b/ash/components/geolocation/simple_geolocation_provider.cc +@@ -20,7 +20,7 @@ namespace ash { + namespace { + + const char kDefaultGeolocationProviderUrl[] = +- "https://www.googleapis.com/geolocation/v1/geolocate?"; ++ "https://www.9oo91eapis.qjz9zk/geolocation/v1/geolocate?"; + + } // namespace + +diff --git a/ash/components/phonehub/url_constants.cc b/ash/components/phonehub/url_constants.cc +--- a/ash/components/phonehub/url_constants.cc ++++ b/ash/components/phonehub/url_constants.cc +@@ -8,7 +8,7 @@ namespace ash { + namespace phonehub { + + const char kPhoneHubLearnMoreLink[] = +- "https://support.google.com/chromebook?p=phone_hub"; ++ "https://support.9oo91e.qjz9zk/chromebook?p=phone_hub"; + + } // namespace phonehub + } // namespace ash +diff --git a/ash/components/timezone/timezone_request.cc b/ash/components/timezone/timezone_request.cc +--- a/ash/components/timezone/timezone_request.cc ++++ b/ash/components/timezone/timezone_request.cc +@@ -31,7 +31,7 @@ namespace ash { + namespace { + + const char kDefaultTimezoneProviderUrl[] = +- "https://maps.googleapis.com/maps/api/timezone/json?"; ++ "https://maps.9oo91eapis.qjz9zk/maps/api/timezone/json?"; + + const char kKeyString[] = "key"; + // Language parameter is unsupported for now. +diff --git a/ash/components/trial_group/trial_group_checker.cc b/ash/components/trial_group/trial_group_checker.cc +--- a/ash/components/trial_group/trial_group_checker.cc ++++ b/ash/components/trial_group/trial_group_checker.cc +@@ -18,7 +18,7 @@ namespace { + + constexpr int kIsMember = 1; + constexpr char kServerUrl[] = +- "https://crosdogpack-pa.googleapis.com/v1/isMember"; ++ "https://crosdogpack-pa.9oo91eapis.qjz9zk/v1/isMember"; + + } // namespace + +diff --git a/ash/constants/url_constants.cc b/ash/constants/url_constants.cc +--- a/ash/constants/url_constants.cc ++++ b/ash/constants/url_constants.cc +@@ -7,12 +7,12 @@ + namespace chrome { + + const char kAndroidMessagesLearnMoreURL[] = +- "https://support.google.com/chromebook/?p=multi_device_messages"; ++ "https://support.9oo91e.qjz9zk/chromebook/?p=multi_device_messages"; + + const char kLinuxExportImportHelpURL[] = +- "https://support.google.com/chromebook?p=linux_backup_restore"; ++ "https://support.9oo91e.qjz9zk/chromebook?p=linux_backup_restore"; + + const char kMultiDeviceLearnMoreURL[] = +- "https://support.google.com/chromebook/?p=multi_device"; ++ "https://support.9oo91e.qjz9zk/chromebook/?p=multi_device"; + + } // namespace chrome +diff --git a/ash/quick_pair/repository/fake_device_metadata_http_fetcher.cc b/ash/quick_pair/repository/fake_device_metadata_http_fetcher.cc +--- a/ash/quick_pair/repository/fake_device_metadata_http_fetcher.cc ++++ b/ash/quick_pair/repository/fake_device_metadata_http_fetcher.cc +@@ -57,7 +57,7 @@ constexpr char kValidResponseEncoded[] = + "V0IHVwIHlvdXIgR29vZ2xlIEFzc2lzdGFudA=="; + constexpr char kInvalidResponse[] = "404 error"; + constexpr char kValidUrl[] = +- "https://nearbydevices-pa.googleapis.com/v1/device/2748"; ++ "https://nearbydevices-pa.9oo91eapis.qjz9zk/v1/device/2748"; + + } // namespace + +diff --git a/ash/quick_pair/repository/fast_pair/device_metadata_fetcher.cc b/ash/quick_pair/repository/fast_pair/device_metadata_fetcher.cc +--- a/ash/quick_pair/repository/fast_pair/device_metadata_fetcher.cc ++++ b/ash/quick_pair/repository/fast_pair/device_metadata_fetcher.cc +@@ -18,7 +18,7 @@ + namespace { + + const char kGetObservedDeviceUrl[] = +- "https://nearbydevices-pa.googleapis.com/v1/device/" ++ "https://nearbydevices-pa.9oo91eapis.qjz9zk/v1/device/" + "%d?key=%s&mode=MODE_RELEASE&alt=proto"; + + const net::NetworkTrafficAnnotationTag kTrafficAnnotation = +diff --git a/ash/quick_pair/repository/fast_pair/footprints_fetcher_impl.cc b/ash/quick_pair/repository/fast_pair/footprints_fetcher_impl.cc +--- a/ash/quick_pair/repository/fast_pair/footprints_fetcher_impl.cc ++++ b/ash/quick_pair/repository/fast_pair/footprints_fetcher_impl.cc +@@ -24,11 +24,11 @@ namespace quick_pair { + namespace { + + const char kUserDevicesUrl[] = +- "https://nearbydevices-pa.googleapis.com/v1/user/devices" ++ "https://nearbydevices-pa.9oo91eapis.qjz9zk/v1/user/devices" + "?key=%s&alt=proto"; + + const char kUserDeleteDeviceUrl[] = +- "https://nearbydevices-pa.googleapis.com/v1/user/devices/%s" ++ "https://nearbydevices-pa.9oo91eapis.qjz9zk/v1/user/devices/%s" + "?key=%s&alt=proto"; + + const net::PartialNetworkTrafficAnnotationTag kTrafficAnnotation = +diff --git a/ash/quick_pair/ui/fast_pair/fast_pair_presenter_impl.cc b/ash/quick_pair/ui/fast_pair/fast_pair_presenter_impl.cc +--- a/ash/quick_pair/ui/fast_pair/fast_pair_presenter_impl.cc ++++ b/ash/quick_pair/ui/fast_pair/fast_pair_presenter_impl.cc +@@ -35,9 +35,9 @@ + namespace { + + const char kDiscoveryLearnMoreLink[] = +- "https://support.google.com/chromebook?p=fast_pair_m101"; ++ "https://support.9oo91e.qjz9zk/chromebook?p=fast_pair_m101"; + const char kAssociateAccountLearnMoreLink[] = +- "https://support.google.com/chromebook?p=bluetooth_pairing_m101"; ++ "https://support.9oo91e.qjz9zk/chromebook?p=bluetooth_pairing_m101"; + + bool ShouldShowUserEmail(ash::LoginStatus status) { + switch (status) { +diff --git a/ash/resources/PRESUBMIT.py b/ash/resources/PRESUBMIT.py +--- a/ash/resources/PRESUBMIT.py ++++ b/ash/resources/PRESUBMIT.py +@@ -4,9 +4,9 @@ + + """Presubmit script for Chromium Ash resources. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools, and see +-https://chromium.googlesource.com/chromium/src/+/HEAD/styleguide/web/web.md ++https://chromium.9oo91esource.qjz9zk/chromium/src/+/HEAD/styleguide/web/web.md + for the rules we're checking against here. + """ + +diff --git a/ash/services/device_sync/cryptauth_client_impl.cc b/ash/services/device_sync/cryptauth_client_impl.cc +--- a/ash/services/device_sync/cryptauth_client_impl.cc ++++ b/ash/services/device_sync/cryptauth_client_impl.cc +@@ -29,7 +29,7 @@ namespace { + // -------------------- CryptAuth v1 Endpoints -------------------- + + // Default URL of Google APIs endpoint hosting CryptAuth v1. +-const char kDefaultCryptAuthV1HTTPHost[] = "https://www.googleapis.com"; ++const char kDefaultCryptAuthV1HTTPHost[] = "https://www.9oo91eapis.qjz9zk"; + + // URL subpath hosting the CryptAuth v1 service. + const char kCryptAuthV1Path[] = "cryptauth/v1/"; +@@ -49,11 +49,11 @@ const char kFinishEnrollmentPath[] = "enrollment/finish"; + + // Default URL of Google APIs endpoint hosting CryptAuth v2 Enrollment. + const char kDefaultCryptAuthV2EnrollmentHTTPHost[] = +- "https://cryptauthenrollment.googleapis.com"; ++ "https://cryptauthenrollment.9oo91eapis.qjz9zk"; + + // Default URL of Google APIs endpoint hosting CryptAuth v2 DeviceSync. + const char kDefaultCryptAuthV2DeviceSyncHTTPHost[] = +- "https://cryptauthdevicesync.googleapis.com"; ++ "https://cryptauthdevicesync.9oo91eapis.qjz9zk"; + + // URL subpaths for each CryptAuth v2 API endpoint. + // Note: Although "v1" is part of the path names, these are in fact v2 API +@@ -69,7 +69,7 @@ const char kBatchSetFeatureStatusesPath[] = "/v1:batchSetFeatureStatuses"; + const char kGetDevicesActivityStatusPath[] = "/v1:getDevicesActivityStatus"; + + const char kCryptAuthOAuth2Scope[] = +- "https://www.googleapis.com/auth/cryptauth"; ++ "https://www.9oo91eapis.qjz9zk/auth/cryptauth"; + + // Creates the full CryptAuth v1 URL for endpoint to the API with + // |request_path|. +diff --git a/ash/services/ime/constants.cc b/ash/services/ime/constants.cc +--- a/ash/services/ime/constants.cc ++++ b/ash/services/ime/constants.cc +@@ -36,7 +36,7 @@ const base::FilePath::CharType kLanguageDataDirName[] = + FILE_PATH_LITERAL("data"); + #endif + +-const char kGoogleKeyboardDownloadDomain[] = "dl.google.com"; ++const char kGoogleKeyboardDownloadDomain[] = "dl.9oo91e.qjz9zk"; + + } // namespace ime + } // namespace ash +diff --git a/ash/system/pcie_peripheral/pcie_peripheral_notification_controller.cc b/ash/system/pcie_peripheral/pcie_peripheral_notification_controller.cc +--- a/ash/system/pcie_peripheral/pcie_peripheral_notification_controller.cc ++++ b/ash/system/pcie_peripheral/pcie_peripheral_notification_controller.cc +@@ -31,7 +31,7 @@ namespace ash { + namespace { + const char kNotifierPciePeripheral[] = "ash.pcie_peripheral"; + const char kLearnMoreHelpUrl[] = +- "https://www.support.google.com/chromebook?p=connect_thblt_usb4_accy"; ++ "https://www.support.9oo91e.qjz9zk/chromebook?p=connect_thblt_usb4_accy"; + const int kNotificationsClicksThreshold = 3; + + const char kPciePeripheralLimitedPerformanceNotificationId[] = +diff --git a/ash/system/usb_peripheral/usb_peripheral_notification_controller.cc b/ash/system/usb_peripheral/usb_peripheral_notification_controller.cc +--- a/ash/system/usb_peripheral/usb_peripheral_notification_controller.cc ++++ b/ash/system/usb_peripheral/usb_peripheral_notification_controller.cc +@@ -36,9 +36,9 @@ const char kUsbPeripheralInvalidTBTCableNotificationId[] = + const char kUsbPeripheralSpeedLimitingCableNotificationId[] = + "cros_usb_peripheral_speed_limiting_cable_notification_id"; + const char kNotificationDisplayLandingPageUrl[] = +- "https://support.google.com/chromebook?p=cable_notification"; ++ "https://support.9oo91e.qjz9zk/chromebook?p=cable_notification"; + const char kNotificationDeviceLandingPageUrl[] = +- "https://support.google.com/chromebook?p=cable_notification_2"; ++ "https://support.9oo91e.qjz9zk/chromebook?p=cable_notification_2"; + + bool GetCableSpeedNotificationShownPref() { + PrefService* prefs = +diff --git a/ash/wallpaper/test_wallpaper_controller_client.cc b/ash/wallpaper/test_wallpaper_controller_client.cc +--- a/ash/wallpaper/test_wallpaper_controller_client.cc ++++ b/ash/wallpaper/test_wallpaper_controller_client.cc +@@ -105,7 +105,7 @@ void TestWallpaperControllerClient::FetchGooglePhotosPhoto( + } else { + std::move(callback).Run(personalization_app::mojom::GooglePhotosPhoto::New( + id, "test_name", base::TimeFormatFriendlyDate(time), +- GURL("https://google.com/picture.png"))); ++ GURL("https://9oo91e.qjz9zk/picture.png"))); + } + } + +diff --git a/ash/webui/camera_app_ui/camera_app_untrusted_ui.cc b/ash/webui/camera_app_ui/camera_app_untrusted_ui.cc +--- a/ash/webui/camera_app_ui/camera_app_untrusted_ui.cc ++++ b/ash/webui/camera_app_ui/camera_app_untrusted_ui.cc +@@ -27,7 +27,7 @@ content::WebUIDataSource* CreateUntrustedCameraAppUIHTMLSource() { + + untrusted_source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::ConnectSrc, +- std::string("connect-src http://www.google-analytics.com/ 'self';")); ++ std::string("connect-src http://www.9oo91e-analytics.qjz9zk/ 'self';")); + untrusted_source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::WorkerSrc, + std::string("worker-src 'self';")); +diff --git a/ash/webui/camera_app_ui/resources/js/lib/analytics.js b/ash/webui/camera_app_ui/resources/js/lib/analytics.js +--- a/ash/webui/camera_app_ui/resources/js/lib/analytics.js ++++ b/ash/webui/camera_app_ui/resources/js/lib/analytics.js +@@ -27,14 +27,14 @@ + K(b).replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")+"=([^&#]*)"))&&2==a.length?a[1]:""},xa=function(){var a=""+M.location.hostname;return 0==a.indexOf("www.")?a.substring(4):a},de=function(a,b){var c=a.indexOf(b);if(5==c||6==c)if(a=a.charAt(c+b.length),"/"==a||"?"==a||""==a||":"==a)return!0;return!1},ya=function(a,b){var c=M.referrer;if(/^(https?|android-app):\/\//i.test(c)){if(a)return c;a="//"+M.location.hostname;if(!de(c,a))return b&&(b=a.replace(/\./g,"-")+".cdn.ampproject.org",de(c,b))?void 0: + c}},za=function(a,b){if(1==b.length&&null!=b[0]&&"object"===typeof b[0])return b[0];for(var c={},d=Math.min(a.length+1,b.length),e=0;e=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge("len",b.length),new Da(b.length);},pe=function(a,b,c,d){d=d||ua;wd(a+"?"+b,"",d,c)},wc=function(a,b,c){var d=ta(a+"?"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c, ++ c.indexOf("xn--")){c="";break b}(c=c.match(/(.*)\.cdn\.ampproject\.org\/?$/))&&2==c.length&&(d=c[1].replace(/-/g,".").replace(/\.\./g,"-"))}c=d?d.replace(Ue,""):""}(d=b===c)||(c="."+c,d=b.substring(b.length-c.length,b.length)===c);if(d){b=!0;break a}else J(78)}b=!1}return b&&!1!==a};var bd=function(a){return(a?"https:":Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.9oo91e-analytics.qjz9zk"},Da=function(a){this.name="len";this.message=a+"-8192"},ba=function(a,b,c){c=c||ua;if(2036>=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge("len",b.length),new Da(b.length);},pe=function(a,b,c,d){d=d||ua;wd(a+"?"+b,"",d,c)},wc=function(a,b,c){var d=ta(a+"?"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c, + d){var e=O.XMLHttpRequest;if(!e)return!1;var g=new e;if(!("withCredentials"in g))return!1;a=a.replace(/^http:/,"https:");g.open("POST",a,!0);g.withCredentials=!0;g.setRequestHeader("Content-Type","text/plain");g.onreadystatechange=function(){if(4==g.readyState){if(d)try{var ca=g.responseText;if(1>ca.length)ge("xhr","ver","0"),c();else if("1"!=ca.charAt(0))ge("xhr","ver",String(ca.length)),c();else if(3=100*R(a,Ka))throw"abort";}function Ma(a){if(G(P(a,Na)))throw"abort";}function Oa(){var a=M.location.protocol;if("http:"!=a&&"https:"!=a)throw"abort";} + function Pa(a){try{O.navigator.sendBeacon?J(42):O.XMLHttpRequest&&"withCredentials"in new O.XMLHttpRequest&&J(40)}catch(c){}a.set(ld,Td(a),!0);a.set(Ac,R(a,Ac)+1);var b=[];ue.map(function(c,d){d.F&&(c=a.get(c),void 0!=c&&c!=d.defaultValue&&("boolean"==typeof c&&(c*=1),b.push(d.F+"="+K(""+c))))});!1===a.get(xe)&&b.push("npa=1");b.push("z="+Bd());a.set(Ra,b.join("&"),!0)} + function Sa(a){var b=P(a,fa);!b&&a.get(Vd)&&(b="beacon");var c=P(a,gd),d=P(a,oe),e=c||(d?d+"/3":bd(!1)+"/collect");switch(P(a,ad)){case "d":e=c||(d?d+"/32":bd(!1)+"/j/collect");b=a.get(qe)||void 0;pe(e,P(a,Ra),b,a.Z(Ia));break;case "b":e=c||(d?d+"/31":bd(!1)+"/r/collect");default:b?(c=P(a,Ra),d=(d=a.Z(Ia))||ua,"image"==b?wc(e,c,d):"xhr"==b&&wd(e,c,d)||"beacon"==b&&x(e,c,d)||ba(e,c,d)):ba(e,P(a,Ra),a.Z(Ia))}e=P(a,Na);e=h(e);b=e.hitcount;e.hitcount=b?b+1:1;e=P(a,Na);delete h(e).pending_experiments; +@@ -61,9 +61,9 @@ + a[c].split("="),e=d[1];d=d[0];for(var g=b.childNodes||[],ca=!1,l=0;l\x3c/script>')):(e=M.createElement("script"),e.type="text/javascript",e.async=!0,e.src=ca,a&&e.setAttribute("nonce",a),ca=M.getElementsByTagName("script")[0],ca.parentNode.insertBefore(e,ca));$d.set(b,!0)}}}},v=function(a,b){var c=A.get(a)|| +- [];c.push(b);A.set(a,c)},C=function(a,b){Yd.set(a,b);b=A.get(a)||[];for(var c=0;ca.split("/")[0].indexOf(":")&&(a=ca+e[2].substring(0,e[2].lastIndexOf("/"))+"/"+a);c.href=a; + d=b(c);return{protocol:(c.protocol||"").toLowerCase(),host:d[0],port:d[1],path:d[2],query:c.search||"",url:a||""}};var Z={ga:function(){Z.f=[]}};Z.ga();Z.D=function(a){var b=Z.J.apply(Z,arguments);b=Z.f.concat(b);for(Z.f=[];0 + +- Link detected. $1www.google.com ++ Link detected. $1www.9oo91e.qjz9zk + + + Text detected. +diff --git a/ash/webui/common/resources/PRESUBMIT.py b/ash/webui/common/resources/PRESUBMIT.py +--- a/ash/webui/common/resources/PRESUBMIT.py ++++ b/ash/webui/common/resources/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for Common UI. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/ash/webui/diagnostics_ui/resources/PRESUBMIT.py b/ash/webui/diagnostics_ui/resources/PRESUBMIT.py +--- a/ash/webui/diagnostics_ui/resources/PRESUBMIT.py ++++ b/ash/webui/diagnostics_ui/resources/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for Diagnostics. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/ash/webui/diagnostics_ui/resources/keyboard_tester.html b/ash/webui/diagnostics_ui/resources/keyboard_tester.html +--- a/ash/webui/diagnostics_ui/resources/keyboard_tester.html ++++ b/ash/webui/diagnostics_ui/resources/keyboard_tester.html +@@ -49,7 +49,7 @@ + TODO(crbug.com/1207678): update this link when the Help Center is + ready. + --> +- Help Center ++ Help Center +

+ +
+diff --git a/ash/webui/diagnostics_ui/resources/network_card.js b/ash/webui/diagnostics_ui/resources/network_card.js +--- a/ash/webui/diagnostics_ui/resources/network_card.js ++++ b/ash/webui/diagnostics_ui/resources/network_card.js +@@ -17,7 +17,7 @@ import {Network, NetworkHealthProviderInterface, NetworkState, NetworkStateObser + import {filterNameServers, formatMacAddress, getNetworkCardTitle, getNetworkState, getNetworkType, isConnectedOrOnline, isNetworkMissingNameServers} from './diagnostics_utils.js'; + import {getNetworkHealthProvider} from './mojo_interface_provider.js'; + +-const BASE_SUPPORT_URL = 'https://support.google.com/chromebook?p=diagnostics_'; ++const BASE_SUPPORT_URL = 'https://support.9oo91e.qjz9zk/chromebook?p=diagnostics_'; + const SETTINGS_URL = 'chrome://os-settings/'; + + /** +diff --git a/ash/webui/diagnostics_ui/resources/routine_section.js b/ash/webui/diagnostics_ui/resources/routine_section.js +--- a/ash/webui/diagnostics_ui/resources/routine_section.js ++++ b/ash/webui/diagnostics_ui/resources/routine_section.js +@@ -431,7 +431,7 @@ Polymer({ + /** @protected */ + onLearnMoreClicked_() { + const baseSupportUrl = +- 'https://support.google.com/chromebook?p=diagnostics_'; ++ 'https://support.9oo91e.qjz9zk/chromebook?p=diagnostics_'; + assert(this.learnMoreLinkSection); + + window.open(baseSupportUrl + this.learnMoreLinkSection); +diff --git a/ash/webui/firmware_update_ui/resources/PRESUBMIT.py b/ash/webui/firmware_update_ui/resources/PRESUBMIT.py +--- a/ash/webui/firmware_update_ui/resources/PRESUBMIT.py ++++ b/ash/webui/firmware_update_ui/resources/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for Firmware Update + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/ash/webui/help_app_ui/help_app_kids_magazine_untrusted_ui.cc b/ash/webui/help_app_ui/help_app_kids_magazine_untrusted_ui.cc +--- a/ash/webui/help_app_ui/help_app_kids_magazine_untrusted_ui.cc ++++ b/ash/webui/help_app_ui/help_app_kids_magazine_untrusted_ui.cc +@@ -53,7 +53,7 @@ content::WebUIDataSource* CreateHelpAppKidsMagazineUntrustedDataSource() { + network::mojom::CSPDirectiveName::DefaultSrc, ""); + source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::ScriptSrc, +- "script-src 'self' https://www.gstatic.com;"); ++ "script-src 'self' https://www.95tat1c.qjz9zk;"); + return source; + } + +diff --git a/ash/webui/media_app_ui/media_app_guest_ui.cc b/ash/webui/media_app_ui/media_app_guest_ui.cc +--- a/ash/webui/media_app_ui/media_app_guest_ui.cc ++++ b/ash/webui/media_app_ui/media_app_guest_ui.cc +@@ -107,7 +107,7 @@ content::WebUIDataSource* CreateMediaAppUntrustedDataSource( + // Allow calls to Maps reverse geocoding API for loading metadata. + source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::ConnectSrc, +- "connect-src 'self' https://maps.googleapis.com/maps/api/geocode/json;"); ++ "connect-src 'self' https://maps.9oo91eapis.qjz9zk/maps/api/geocode/json;"); + + // Allow use of SharedArrayBuffer (required by the wasm). + source->OverrideCrossOriginOpenerPolicy("same-origin"); +diff --git a/ash/webui/os_feedback_ui/resources/fake_data.js b/ash/webui/os_feedback_ui/resources/fake_data.js +--- a/ash/webui/os_feedback_ui/resources/fake_data.js ++++ b/ash/webui/os_feedback_ui/resources/fake_data.js +@@ -14,29 +14,29 @@ import {HelpContentList, HelpContentType, SearchRequest, SearchResponse} from '. + export const fakeHelpContentList = [ + { + title: stringToMojoString16('Fix connection problems'), +- url: {url: 'https://support.google.com/chromebook/?q=6318213'}, ++ url: {url: 'https://support.9oo91e.qjz9zk/chromebook/?q=6318213'}, + content_type: HelpContentType.kArticle + }, + { + title: stringToMojoString16( + 'Why won\'t my wireless mouse with a USB piece wor...?'), +- url: {url: 'https://support.google.com/chromebook/?q=123920509'}, ++ url: {url: 'https://support.9oo91e.qjz9zk/chromebook/?q=123920509'}, + content_type: HelpContentType.kForum + }, + { + title: stringToMojoString16('Wifi Issues - only on Chromebooks'), +- url: {url: 'https://support.google.com/chromebook/?q=114174470'}, ++ url: {url: 'https://support.9oo91e.qjz9zk/chromebook/?q=114174470'}, + content_type: HelpContentType.kForum + }, + { + title: stringToMojoString16('Network Connectivity Fault'), +- url: {url: 'https://support.google.com/chromebook/?q=131459420'}, ++ url: {url: 'https://support.9oo91e.qjz9zk/chromebook/?q=131459420'}, + content_type: HelpContentType.kForum + }, + { + title: stringToMojoString16( + 'Connected to WiFi but can\'t connect to the internet'), +- url: {url: 'https://support.google.com/chromebook/?q=22864239'}, ++ url: {url: 'https://support.9oo91e.qjz9zk/chromebook/?q=22864239'}, + content_type: HelpContentType.kForum + } + ]; +diff --git a/ash/webui/personalization_app/personalization_app_ui.cc b/ash/webui/personalization_app/personalization_app_ui.cc +--- a/ash/webui/personalization_app/personalization_app_ui.cc ++++ b/ash/webui/personalization_app/personalization_app_ui.cc +@@ -27,7 +27,7 @@ namespace ash { + + namespace { + +-inline constexpr char kGooglePhotosURL[] = "https://photos.google.com"; ++inline constexpr char kGooglePhotosURL[] = "https://photos.9oo91e.qjz9zk"; + + GURL GetGooglePhotosURL() { + return GURL(kGooglePhotosURL); +diff --git a/ash/webui/print_management/resources/PRESUBMIT.py b/ash/webui/print_management/resources/PRESUBMIT.py +--- a/ash/webui/print_management/resources/PRESUBMIT.py ++++ b/ash/webui/print_management/resources/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for Print Management. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/ash/webui/projector_app/projector_xhr_sender.cc b/ash/webui/projector_app/projector_xhr_sender.cc +--- a/ash/webui/projector_app/projector_xhr_sender.cc ++++ b/ash/webui/projector_app/projector_xhr_sender.cc +@@ -38,10 +38,10 @@ constexpr char kAuthorizationHeaderPrefix[] = "Bearer "; + + // List of URL prefix supported by `ProjectorXhrSender`. + const char* kUrlAllowlist[] = { +- "https://www.googleapis.com/drive/v3/files/", +- "https://www.googleapis.com/upload/drive/v3/files/", +- "https://drive.google.com/get_video_info", +- "https://translation.googleapis.com/language/translate/v2"}; ++ "https://www.9oo91eapis.qjz9zk/drive/v3/files/", ++ "https://www.9oo91eapis.qjz9zk/upload/drive/v3/files/", ++ "https://drive.9oo91e.qjz9zk/get_video_info", ++ "https://translation.9oo91eapis.qjz9zk/language/translate/v2"}; + + // Return true if the url matches the allowed URL prefix. + bool IsUrlAllowlisted(const std::string& url) { +diff --git a/ash/webui/projector_app/untrusted_projector_ui.cc b/ash/webui/projector_app/untrusted_projector_ui.cc +--- a/ash/webui/projector_app/untrusted_projector_ui.cc ++++ b/ash/webui/projector_app/untrusted_projector_ui.cc +@@ -45,24 +45,24 @@ content::WebUIDataSource* CreateProjectorHTMLSource( + // Allow fonts. + source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::FontSrc, +- "font-src https://fonts.gstatic.com;"); ++ "font-src https://fonts.95tat1c.qjz9zk;"); + // Allow styles to include inline styling needed for Polymer elements. + source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::StyleSrc, +- "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;"); ++ "style-src 'self' 'unsafe-inline' https://f0ntz.9oo91e8p1.qjz9zk;"); + source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::MediaSrc, + // Allows streaming video. +- "media-src 'self' https://*.drive.google.com " ++ "media-src 'self' https://*.drive.9oo91e.qjz9zk " + "https://projector.apps.chrome;"); + // Allow images to also handle data urls. + source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::ImgSrc, +- "img-src blob: data: 'self' https://*.googleusercontent.com;"); ++ "img-src blob: data: 'self' https://*.9oo91eusercontent.qjz9zk;"); + source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::ConnectSrc, +- "connect-src 'self' https://www.googleapis.com " +- "https://drive.google.com;"); ++ "connect-src 'self' https://www.9oo91eapis.qjz9zk " ++ "https://drive.9oo91e.qjz9zk;"); + + // TODO(b/197120695): re-enable trusted type after fixing the issue that + // icon template is setting innerHTML. +diff --git a/ash/webui/scanning/resources/PRESUBMIT.py b/ash/webui/scanning/resources/PRESUBMIT.py +--- a/ash/webui/scanning/resources/PRESUBMIT.py ++++ b/ash/webui/scanning/resources/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for Scanning. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/ash/webui/scanning/resources/scanning_app.html b/ash/webui/scanning/resources/scanning_app.html +--- a/ash/webui/scanning/resources/scanning_app.html ++++ b/ash/webui/scanning/resources/scanning_app.html +@@ -269,7 +269,7 @@ + [[i18n(toastMessageKey_)]] + +diff --git a/ash/webui/scanning/resources/scanning_app.js b/ash/webui/scanning/resources/scanning_app.js +--- a/ash/webui/scanning/resources/scanning_app.js ++++ b/ash/webui/scanning/resources/scanning_app.js +@@ -43,7 +43,7 @@ import {ScanningBrowserProxy, ScanningBrowserProxyImpl, SelectedPath} from './sc + * URL for the Scanning help page. + * @const {string} + */ +-const HELP_PAGE_LINK = 'http://support.google.com/chromebook?p=chrome_scanning'; ++const HELP_PAGE_LINK = 'http://support.9oo91e.qjz9zk/chromebook?p=chrome_scanning'; + + /** + * @fileoverview +diff --git a/ash/webui/shimless_rma/resources/onboarding_enter_rsu_wp_disable_code_page.js b/ash/webui/shimless_rma/resources/onboarding_enter_rsu_wp_disable_code_page.js +--- a/ash/webui/shimless_rma/resources/onboarding_enter_rsu_wp_disable_code_page.js ++++ b/ash/webui/shimless_rma/resources/onboarding_enter_rsu_wp_disable_code_page.js +@@ -232,7 +232,7 @@ export class OnboardingEnterRsuWpDisableCodePage extends + */ + computeRsuChallengeLinkText_() { + const unlockPageUrl = +- 'https://chromeos.google.com/partner/console/cr50reset?challenge='; ++ 'https://chromeos.9oo91e.qjz9zk/partner/console/cr50reset?challenge='; + return unlockPageUrl + this.rsuChallenge_ + '&hwid=' + this.rsuHwid_; + } + +diff --git a/ash/webui/shortcut_customization_ui/resources/PRESUBMIT.py b/ash/webui/shortcut_customization_ui/resources/PRESUBMIT.py +--- a/ash/webui/shortcut_customization_ui/resources/PRESUBMIT.py ++++ b/ash/webui/shortcut_customization_ui/resources/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for Shortcut Customization. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/base/PRESUBMIT.py b/base/PRESUBMIT.py +--- a/base/PRESUBMIT.py ++++ b/base/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Chromium presubmit script for src/base. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details on the presubmit API built into depot_tools. + """ + +@@ -30,7 +30,7 @@ def _CheckNoInterfacesInBase(input_api, output_api): + if len(files): + return [ output_api.PresubmitError( + 'Objective-C interfaces or categories are forbidden in libbase. ' + +- 'See http://groups.google.com/a/chromium.org/group/chromium-dev/' + ++ 'See http://groups.9oo91e.qjz9zk/a/ch40m1um.qjz9zk/group/chromium-dev/' + + 'browse_thread/thread/efb28c10435987fd', + files) ] + return [] +diff --git a/base/android/jni_generator/PRESUBMIT.py b/base/android/jni_generator/PRESUBMIT.py +--- a/base/android/jni_generator/PRESUBMIT.py ++++ b/base/android/jni_generator/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for android buildbot. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts for + details on the presubmit API built into depot_tools. + """ + +diff --git a/base/android/resource_exclusions.gni b/base/android/resource_exclusions.gni +--- a/base/android/resource_exclusions.gni ++++ b/base/android/resource_exclusions.gni +@@ -16,7 +16,7 @@ common_resource_exclusion_exceptions = [ + common_resource_exclusion_regex += "|-watch\b" + + # As of May 2020, 0.2% of devices are ldpi: +-# https://developer.android.com/about/dashboards/index.html ++# https://developer.8n6r01d.qjz9zk/about/dashboards/index.html + # Only a single resources is defined in this config: + # ic_arrow_down_24dp + # It saves XXkb to omit the config. diff --git a/base/debug/debugger_posix.cc b/base/debug/debugger_posix.cc --- a/base/debug/debugger_posix.cc +++ b/base/debug/debugger_posix.cc -@@ -136,7 +136,7 @@ void VerifyDebugger() { +@@ -135,7 +135,7 @@ void VerifyDebugger() { << "Detected lldb without sourcing //tools/lldb/lldbinit.py. lldb may " "not be able to find debug symbols. Please see debug instructions for " "using //tools/lldb/lldbinit.py:\n" @@ -524,7 +2959,7 @@ diff --git a/base/debug/debugger_posix.cc b/base/debug/debugger_posix.cc "lldbinit.md\n" "To continue anyway, type 'continue' in lldb. To always skip this " "check, define an environment variable CHROMIUM_LLDBINIT_SOURCED=1"; -@@ -219,7 +219,7 @@ void VerifyDebugger() { +@@ -218,7 +218,7 @@ void VerifyDebugger() { << "Detected gdb without sourcing //tools/gdb/gdbinit. gdb may not be " "able to find debug symbols, and pretty-printing of STL types may not " "work. Please see debug instructions for using //tools/gdb/gdbinit:\n" @@ -545,6 +2980,115 @@ diff --git a/base/debug/stack_trace_posix.cc b/base/debug/stack_trace_posix.cc } #endif // BUILDFLAG(CFI_ENFORCEMENT_TRAP) +diff --git a/base/ios/device_util.mm b/base/ios/device_util.mm +--- a/base/ios/device_util.mm ++++ b/base/ios/device_util.mm +@@ -41,7 +41,7 @@ NSString* GenerateClientId() { + NSString* client_id = [defaults stringForKey:kLegacyClientIdPreferenceKey]; + + // Some iOS6 devices return a buggy identifierForVendor: +- // http://openradar.appspot.com/12377282. If this is the case, revert to ++ // http://openradar.8pp2p8t.qjz9zk/12377282. If this is the case, revert to + // generating a new one. + if (!client_id || [client_id isEqualToString:kZeroUUID]) { + client_id = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; +diff --git a/base/third_party/libevent/evdns.c b/base/third_party/libevent/evdns.c +--- a/base/third_party/libevent/evdns.c ++++ b/base/third_party/libevent/evdns.c +@@ -2006,7 +2006,7 @@ nameserver_send_probe(struct nameserver *const ns) { + + log(EVDNS_LOG_DEBUG, "Sending probe to %s", debug_ntoa(ns->address)); + +- req = request_new(TYPE_A, "www.google.com", DNS_QUERY_NO_SEARCH, nameserver_probe_callback, ns); ++ req = request_new(TYPE_A, "www.9oo91e.qjz9zk", DNS_QUERY_NO_SEARCH, nameserver_probe_callback, ns); + if (!req) return; + /* we force this into the inflight queue no matter what */ + request_trans_id_set(req, transaction_id_pick()); +diff --git a/build/android/PRESUBMIT.py b/build/android/PRESUBMIT.py +--- a/build/android/PRESUBMIT.py ++++ b/build/android/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for android buildbot. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts for + details on the presubmit API built into depot_tools. + """ + +diff --git a/build/android/gradle/generate_gradle.py b/build/android/gradle/generate_gradle.py +--- a/build/android/gradle/generate_gradle.py ++++ b/build/android/gradle/generate_gradle.py +@@ -914,7 +914,7 @@ def main(): + + logging.warning('Generated files will only appear once you\'ve built them.') + logging.warning('Generated projects for Android Studio %s', channel) +- logging.warning('For more tips: https://chromium.googlesource.com/chromium' ++ logging.warning('For more tips: https://chromium.9oo91esource.qjz9zk/chromium' + '/src.git/+/master/docs/android_studio.md') + + +diff --git a/build/android/gyp/assert_static_initializers.py b/build/android/gyp/assert_static_initializers.py +--- a/build/android/gyp/assert_static_initializers.py ++++ b/build/android/gyp/assert_static_initializers.py +@@ -175,7 +175,7 @@ def main(): + print(' //tools/binary_size/diagnose_bloat.py') + print() + print('For more information:') +- print(' https://chromium.googlesource.com/chromium/src/+/main/docs/' ++ print(' https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/docs/' + 'static_initializers.md') + sys.exit(1) + +diff --git a/build/android/gyp/lint.py b/build/android/gyp/lint.py +--- a/build/android/gyp/lint.py ++++ b/build/android/gyp/lint.py +@@ -23,7 +23,7 @@ from util import build_utils + from util import manifest_utils + from util import server_utils + +-_LINT_MD_URL = 'https://chromium.googlesource.com/chromium/src/+/main/build/android/docs/lint.md' # pylint: disable=line-too-long ++_LINT_MD_URL = 'https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/build/android/docs/lint.md' # pylint: disable=line-too-long + + # These checks are not useful for chromium. + _DISABLED_ALWAYS = [ +diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py +--- a/build/android/gyp/proguard.py ++++ b/build/android/gyp/proguard.py +@@ -381,7 +381,7 @@ def _OptimizeWithR8(options, + # Python will print the original exception as well. + raise Exception( + 'R8 failed. Please see ' +- 'https://chromium.googlesource.com/chromium/src/+/HEAD/build/' ++ 'https://chromium.9oo91esource.qjz9zk/chromium/src/+/HEAD/build/' + 'android/docs/java_optimization.md#Debugging-common-failures') from e + + base_has_imported_lib = False +@@ -520,7 +520,7 @@ out/Release/apks/YourApk.apk > dex.txt + stderr += """ + You may need to update build configs to run FragmentActivityReplacer for + additional targets. See +-https://chromium.googlesource.com/chromium/src.git/+/main/docs/ui/android/bytecode_rewriting.md. ++https://chromium.9oo91esource.qjz9zk/chromium/src.git/+/main/docs/ui/android/bytecode_rewriting.md. + """ + elif had_unfiltered_items: + # Left only with empty headings. All indented items filtered out. +diff --git a/build/android/gyp/util/diff_utils.py b/build/android/gyp/util/diff_utils.py +--- a/build/android/gyp/util/diff_utils.py ++++ b/build/android/gyp/util/diff_utils.py +@@ -100,10 +100,10 @@ def CheckExpectations(actual_data, options, custom_msg=''): + else: + fail_msg = """ + Expectations need updating: +-https://chromium.googlesource.com/chromium/src/+/HEAD/chrome/android/expectations/README.md ++https://chromium.9oo91esource.qjz9zk/chromium/src/+/HEAD/chrome/android/expectations/README.md + + LogDog tip: Use "Raw log" or "Switch to lite mode" before copying: +-https://bugs.chromium.org/p/chromium/issues/detail?id=984616 ++https://bugs.ch40m1um.qjz9zk/p/chromium/issues/detail?id=984616 + + {} + diff --git a/build/android/gyp/util/protoresources.py b/build/android/gyp/util/protoresources.py --- a/build/android/gyp/util/protoresources.py +++ b/build/android/gyp/util/protoresources.py @@ -557,6 +3101,55 @@ diff --git a/build/android/gyp/util/protoresources.py b/build/android/gyp/util/p """ import logging +diff --git a/build/android/incremental_install/installer.py b/build/android/incremental_install/installer.py +--- a/build/android/incremental_install/installer.py ++++ b/build/android/incremental_install/installer.py +@@ -280,7 +280,7 @@ def Install(device, install_json, apk=None, enable_device_cache=False, + if apis_allowed.strip() not in '01': + msg = """\ + Cannot use incremental installs on Android P+ without first enabling access to +-non-SDK interfaces (https://developer.android.com/preview/non-sdk-q). ++non-SDK interfaces (https://developer.8n6r01d.qjz9zk/preview/non-sdk-q). + + To enable access: + adb -s {0} shell settings put global {1} 0 +diff --git a/build/android/pylib/constants/__init__.py b/build/android/pylib/constants/__init__.py +--- a/build/android/pylib/constants/__init__.py ++++ b/build/android/pylib/constants/__init__.py +@@ -127,7 +127,7 @@ BAD_DEVICES_JSON = os.path.join(DIR_SOURCE_ROOT, + os.environ.get('CHROMIUM_OUT_DIR', 'out'), + 'bad_devices.json') + +-UPSTREAM_FLAKINESS_SERVER = 'test-results.appspot.com' ++UPSTREAM_FLAKINESS_SERVER = 'test-results.8pp2p8t.qjz9zk' + + # TODO(jbudorick): Remove once unused. + DEVICE_LOCAL_PROPERTIES_PATH = '/data/local.prop' +diff --git a/build/android/pylib/device_settings.py b/build/android/pylib/device_settings.py +--- a/build/android/pylib/device_settings.py ++++ b/build/android/pylib/device_settings.py +@@ -19,9 +19,9 @@ def ConfigureContentSettings(device, desired_settings): + """Configures device content setings from a list. + + Many settings are documented at: +- http://developer.android.com/reference/android/provider/Settings.Global.html +- http://developer.android.com/reference/android/provider/Settings.Secure.html +- http://developer.android.com/reference/android/provider/Settings.System.html ++ http://developer.8n6r01d.qjz9zk/reference/android/provider/Settings.Global.html ++ http://developer.8n6r01d.qjz9zk/reference/android/provider/Settings.Secure.html ++ http://developer.8n6r01d.qjz9zk/reference/android/provider/Settings.System.html + + Many others are undocumented. + +@@ -164,7 +164,7 @@ DETERMINISTIC_DEVICE_SETTINGS = [ + ]), + ('settings/secure', [ + ('allowed_geolocation_origins', +- 'http://www.google.co.uk http://www.google.com'), ++ 'http://www.google.co.uk http://www.9oo91e.qjz9zk'), + + # Ensure that we never get random dialogs like "Unfortunately the process + # android.process.acore has stopped", which steal the focus, and make our diff --git a/build/android/pylib/dex/dex_parser.py b/build/android/pylib/dex/dex_parser.py --- a/build/android/pylib/dex/dex_parser.py +++ b/build/android/pylib/dex/dex_parser.py @@ -582,10 +3175,21 @@ diff --git a/build/android/pylib/dex/dex_parser.py b/build/android/pylib/dex/dex Fields: reader: _DexReader object used to decode dex file contents. +diff --git a/build/android/pylib/local/device/local_device_monkey_test_run.py b/build/android/pylib/local/device/local_device_monkey_test_run.py +--- a/build/android/pylib/local/device/local_device_monkey_test_run.py ++++ b/build/android/pylib/local/device/local_device_monkey_test_run.py +@@ -120,6 +120,6 @@ class LocalDeviceMonkeyTestRun(local_device_test_run.LocalDeviceTestRun): + # Kill the monkey test process on the device. If you manually + # interrupt the test run, this will prevent the monkey test from + # continuing to run. +- device.KillAll('com.android.commands.monkey') ++ device.KillAll('com.8n6r01d.qjz9zkmands.monkey') + except device_errors.CommandFailedError: + pass diff --git a/build/android/pylib/local/emulator/avd.py b/build/android/pylib/local/emulator/avd.py --- a/build/android/pylib/local/emulator/avd.py +++ b/build/android/pylib/local/emulator/avd.py -@@ -766,7 +766,7 @@ class _AvdInstance: +@@ -771,7 +771,7 @@ class _AvdInstance: """Return the snapshot name to load/save. Emulator has a different snapshot process when '-writable-system' flag is @@ -594,6 +3198,83 @@ diff --git a/build/android/pylib/local/emulator/avd.py b/build/android/pylib/loc """ if self._writable_system: +diff --git a/build/android/pylib/results/flakiness_dashboard/json_results_generator.py b/build/android/pylib/results/flakiness_dashboard/json_results_generator.py +--- a/build/android/pylib/results/flakiness_dashboard/json_results_generator.py ++++ b/build/android/pylib/results/flakiness_dashboard/json_results_generator.py +@@ -671,7 +671,7 @@ def _EncodeMultipartFormData(fields, files): + (content_type, body) ready for httplib.HTTP instance. + + Source: +- http://code.google.com/p/rietveld/source/browse/trunk/upload.py ++ http://code.9oo91e.qjz9zk/p/rietveld/source/browse/trunk/upload.py + """ + BOUNDARY = '-M-A-G-I-C---B-O-U-N-D-A-R-Y-' + CRLF = '\r\n' +diff --git a/build/android/pylib/results/presentation/test_results_presentation.py b/build/android/pylib/results/presentation/test_results_presentation.py +--- a/build/android/pylib/results/presentation/test_results_presentation.py ++++ b/build/android/pylib/results/presentation/test_results_presentation.py +@@ -110,7 +110,7 @@ def action_cell(action, data, html_class): + + def flakiness_dashbord_link(test_name, suite_name): + url_args = urlencode([('testType', suite_name), ('tests', test_name)]) +- return ('https://test-results.appspot.com/' ++ return ('https://test-results.8pp2p8t.qjz9zk/' + 'dashboards/flakiness_dashboard.html#%s' % url_args) + + +@@ -276,7 +276,7 @@ def feedback_url(result_details_link): + if result_details_link: + url_args.append(('comment', 'Please check out: %s' % result_details_link)) + url_args = urlencode(url_args) +- return 'https://bugs.chromium.org/p/chromium/issues/entry?%s' % url_args ++ return 'https://bugs.ch40m1um.qjz9zk/p/chromium/issues/entry?%s' % url_args + + + def results_to_html(results_dict, cs_base_url, bucket, test_name, +@@ -418,7 +418,7 @@ def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--json-file', help='Path of json file.') + parser.add_argument('--cs-base-url', help='Base url for code search.', +- default='http://cs.chromium.org') ++ default='http://cs.ch40m1um.qjz9zk') + parser.add_argument('--bucket', help='Google storage bucket.', required=True) + parser.add_argument('--builder-name', help='Builder name.') + parser.add_argument('--build-number', help='Build number.') +@@ -512,7 +512,7 @@ def main(): + args.bucket, builder_name, build_number) + + if ui_screenshot_set_link: +- ui_catalog_url = 'https://chrome-ui-catalog.appspot.com/' ++ ui_catalog_url = 'https://chrome-ui-catalog.8pp2p8t.qjz9zk/' + ui_catalog_query = urlencode({'screenshot_source': ui_screenshot_set_link}) + ui_screenshot_link = '%s?%s' % (ui_catalog_url, ui_catalog_query) + +diff --git a/build/android/pylib/utils/google_storage_helper.py b/build/android/pylib/utils/google_storage_helper.py +--- a/build/android/pylib/utils/google_storage_helper.py ++++ b/build/android/pylib/utils/google_storage_helper.py +@@ -28,8 +28,8 @@ from devil.utils import cmd_helper + _GSUTIL_PATH = os.path.join( + host_paths.DIR_SOURCE_ROOT, 'third_party', 'catapult', + 'third_party', 'gsutil', 'gsutil.py') +-_PUBLIC_URL = 'https://storage.googleapis.com/%s/' +-_AUTHENTICATED_URL = 'https://storage.cloud.google.com/%s/' ++_PUBLIC_URL = 'https://storage.9oo91eapis.qjz9zk/%s/' ++_AUTHENTICATED_URL = 'https://storage.cloud.9oo91e.qjz9zk/%s/' + + + @decorators.NoRaiseException(default_return_value='') +diff --git a/build/android/pylib/utils/maven_downloader.py b/build/android/pylib/utils/maven_downloader.py +--- a/build/android/pylib/utils/maven_downloader.py ++++ b/build/android/pylib/utils/maven_downloader.py +@@ -36,7 +36,7 @@ class MavenDownloader: + # Google Play service are only distributed there, but third party libraries + # could use Maven Central or JCenter for example. The default Maven remote + # is Maven Central. +- _REMOTE_REPO = 'https://maven.google.com' ++ _REMOTE_REPO = 'https://maven.9oo91e.qjz9zk' + + # Default Maven repository. + _DEFAULT_REPO_PATH = os.path.join( diff --git a/build/android/pylib/utils/simpleperf.py b/build/android/pylib/utils/simpleperf.py --- a/build/android/pylib/utils/simpleperf.py +++ b/build/android/pylib/utils/simpleperf.py @@ -618,6 +3299,66 @@ diff --git a/build/android/resource_sizes.py b/build/android/resource_sizes.py """ # Seek to "end of central directory" struct. eocd_offset_from_end = -22 - len(zip_file.comment) +diff --git a/build/android/test_runner.py b/build/android/test_runner.py +--- a/build/android/test_runner.py ++++ b/build/android/test_runner.py +@@ -1080,7 +1080,7 @@ def RunTestsInPlatformMode(args, result_sink_client=None): + result_html_string, _, _ = test_results_presentation.result_details( + json_path=json_file.name, + test_name=args.command, +- cs_base_url='http://cs.chromium.org', ++ cs_base_url='http://cs.ch40m1um.qjz9zk', + local_output=True) + results_detail_file.write(result_html_string) + results_detail_file.flush() +diff --git a/build/android/test_wrapper/logdog_wrapper.py b/build/android/test_wrapper/logdog_wrapper.py +--- a/build/android/test_wrapper/logdog_wrapper.py ++++ b/build/android/test_wrapper/logdog_wrapper.py +@@ -27,7 +27,7 @@ from py_utils import tempfile_ext + + PROJECT = 'chromium' + OUTPUT = 'logdog' +-COORDINATOR_HOST = 'luci-logdog.appspot.com' ++COORDINATOR_HOST = 'luci-logdog.8pp2p8t.qjz9zk' + SERVICE_ACCOUNT_JSON = ('/creds/service_accounts' + '/service-account-luci-logdog-publisher.json') + LOGDOG_TERMINATION_TIMEOUT = 30 +diff --git a/build/apple/tweak_info_plist.py b/build/apple/tweak_info_plist.py +--- a/build/apple/tweak_info_plist.py ++++ b/build/apple/tweak_info_plist.py +@@ -156,9 +156,9 @@ def _AddBreakpadKeys(plist, branding, platform, staging): + plist['BreakpadProduct'] = '%s_%s' % (branding, platform) + plist['BreakpadProductDisplay'] = branding + if staging: +- plist['BreakpadURL'] = 'https://clients2.google.com/cr/staging_report' ++ plist['BreakpadURL'] = 'https://clients2.9oo91e.qjz9zk/cr/staging_report' + else: +- plist['BreakpadURL'] = 'https://clients2.google.com/cr/report' ++ plist['BreakpadURL'] = 'https://clients2.9oo91e.qjz9zk/cr/report' + + # These are both deliberately strings and not boolean. + plist['BreakpadSendAndExit'] = 'YES' +@@ -195,7 +195,7 @@ def _AddKeystoneKeys(plist, bundle_identifier, base_tag): + also requires the |bundle_identifier| argument (com.example.product).""" + plist['KSVersion'] = plist['CFBundleShortVersionString'] + plist['KSProductID'] = bundle_identifier +- plist['KSUpdateURL'] = 'https://tools.google.com/service/update2' ++ plist['KSUpdateURL'] = 'https://tools.9oo91e.qjz9zk/service/update2' + + _RemoveKeys(plist, 'KSChannelID') + if base_tag != '': +diff --git a/build/chromeos/PRESUBMIT.py b/build/chromeos/PRESUBMIT.py +--- a/build/chromeos/PRESUBMIT.py ++++ b/build/chromeos/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for build/chromeos/. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts for + details on the presubmit API built into depot_tools. + """ + diff --git a/build/chromeos/test_runner.py b/build/chromeos/test_runner.py --- a/build/chromeos/test_runner.py +++ b/build/chromeos/test_runner.py @@ -630,6 +3371,215 @@ diff --git a/build/chromeos/test_runner.py b/build/chromeos/test_runner.py ) tast_test_parser.set_defaults(func=device_test) tast_test_parser.add_argument( +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 +@@ -1724,7 +1724,7 @@ if (enable_java_templates) { + # * public.txt + # * annotations.zip + # * assets/ +- # See: https://developer.android.com/studio/projects/android-library.html#aar-contents ++ # See: https://developer.8n6r01d.qjz9zk/studio/projects/android-library.html#aar-contents + # + # Variables: + # output: Path to the output .aar. +diff --git a/build/config/chromeos/args.gni b/build/config/chromeos/args.gni +--- a/build/config/chromeos/args.gni ++++ b/build/config/chromeos/args.gni +@@ -21,8 +21,8 @@ declare_args() { + # linux-chromeos, so some have compile-time asserts that intentionally fail + # when this build flag is set. Build and run the tests for linux-chromeos + # instead. +- # https://chromium.googlesource.com/chromium/src/+/main/docs/chromeos_build_instructions.md +- # https://chromium.googlesource.com/chromiumos/docs/+/main/simple_chrome_workflow.md ++ # https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/docs/chromeos_build_instructions.md ++ # https://chromium.9oo91esource.qjz9zk/chromiumos/docs/+/main/simple_chrome_workflow.md + is_chromeos_device = false + + # Determines if we run the test in skylab, aka the CrOS labs. +diff --git a/build/config/chromeos/rules.gni b/build/config/chromeos/rules.gni +--- a/build/config/chromeos/rules.gni ++++ b/build/config/chromeos/rules.gni +@@ -126,7 +126,7 @@ if (cros_sdk_version != "") { + # (e.g. amd64-generic), but tests on a different board (e.g. eve). + # tast_vars: A list of "key=value" runtime variable pairs to pass to invoke + # the Tast tests. For more details, please see: +-# https://chromium.googlesource.com/chromiumos/platform/tast/+/HEAD/docs/writing_tests.md#Runtime-variables ++# https://chromium.9oo91esource.qjz9zk/chromiumos/platform/tast/+/HEAD/docs/writing_tests.md#Runtime-variables + template("generate_runner_script") { + forward_variables_from(invoker, + [ +@@ -373,7 +373,7 @@ template("tast_test") { + if (!defined(tast_attr_expr) && !defined(tast_tests)) { + # The following expression filters out all non-critical tests. See the link + # below for more details: +- # https://chromium.googlesource.com/chromiumos/platform/tast/+/main/docs/test_attributes.md ++ # https://chromium.9oo91esource.qjz9zk/chromiumos/platform/tast/+/main/docs/test_attributes.md + tast_attr_expr = "\"group:mainline\" && \"dep:chrome\"" + + if (defined(enable_tast_informational_tests) && +@@ -459,7 +459,7 @@ template("lacros_tast_tests") { + # use it for testing. To support running lacros tast tests from Chromium CI, + # a Var is added to support pointing the tast tests to use a specified + # pre-deployed lacros-chrome. The location is decided by: +- # https://source.chromium.org/chromium/chromium/src/+/main:third_party/chromite/scripts/deploy_chrome.py;l=80;drc=86f1234a4be8e9574442e076cdc835897f7bea61 ++ # https://source.ch40m1um.qjz9zk/chromium/chromium/src/+/main:third_party/chromite/scripts/deploy_chrome.py;l=80;drc=86f1234a4be8e9574442e076cdc835897f7bea61 + tast_vars = [ "lacrosDeployedBinary=/usr/local/lacros-chrome" ] + + data_deps = [ +diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni +--- a/build/config/compiler/compiler.gni ++++ b/build/config/compiler/compiler.gni +@@ -114,7 +114,7 @@ declare_args() { + # Technology (CET). If Windows version and hardware supports the feature and + # it's enabled by OS then additional validation of return address will be + # performed as mitigation against Return-oriented programming (ROP). +- # https://chromium.googlesource.com/chromium/src/+/main/docs/design/sandbox.md#cet-shadow-stack ++ # https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/docs/design/sandbox.md#cet-shadow-stack + enable_cet_shadow_stack = target_cpu == "x64" + } + +@@ -239,7 +239,7 @@ declare_args() { + # results independent of the checkout and build directory names, which + # in turn is important for goma compile hit rate. + # Setting this to true may make it harder to debug binaries on Linux, see +-# https://chromium.googlesource.com/chromium/src/+/main/docs/linux/debugging.md#Source-level-debug-with-fdebug_compilation_dir ++# https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/docs/linux/debugging.md#Source-level-debug-with-fdebug_compilation_dir + # It's not clear if the crash server will correctly handle dSYMs with relative + # paths, so we disable this feature for official benefit. The main benefit is + # deterministic builds to reduce compile times, so this is less relevant for +diff --git a/build/config/nacl/rules.gni b/build/config/nacl/rules.gni +--- a/build/config/nacl/rules.gni ++++ b/build/config/nacl/rules.gni +@@ -38,7 +38,7 @@ template("generate_nmf") { + } + + # TODO(phosek): Remove this conditional once +- # https://bugs.chromium.org/p/nativeclient/issues/detail?id=4339 is ++ # https://bugs.ch40m1um.qjz9zk/p/nativeclient/issues/detail?id=4339 is + # resolved. + if (current_cpu == "pnacl") { + objdump = rebase_path("${nacl_toolchain_bindir}/x86_64-nacl-objdump") +diff --git a/build/config/ozone.gni b/build/config/ozone.gni +--- a/build/config/ozone.gni ++++ b/build/config/ozone.gni +@@ -28,7 +28,7 @@ declare_args() { + # Enable explicit apitrace (https://apitrace.github.io) loading. + # This requires apitrace library with additional bindings. + # See ChromeOS package for details: +- # https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/2659419 ++ # https://chromium-review.9oo91esource.qjz9zk/c/chromiumos/overlays/chromiumos-overlay/+/2659419 + # Chrome will not start without an apitrace.so library. + # Trace will be saved to /tmp/gltrace.dat file by default. You can + # override it at run time with TRACE_FILE= environment variable. +diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni +--- a/build/config/sanitizers/sanitizers.gni ++++ b/build/config/sanitizers/sanitizers.gni +@@ -68,7 +68,7 @@ declare_args() { + use_cfi_recover = false + + # Compile for fuzzing with LLVM LibFuzzer. +- # See http://www.chromium.org/developers/testing/libfuzzer ++ # See http://www.ch40m1um.qjz9zk/developers/testing/libfuzzer + use_libfuzzer = false + + # Compile for fuzzing with AFL. +diff --git a/build/config/win/control_flow_guard.gni b/build/config/win/control_flow_guard.gni +--- a/build/config/win/control_flow_guard.gni ++++ b/build/config/win/control_flow_guard.gni +@@ -12,7 +12,7 @@ declare_args() { + + if (win_enable_cfg_guards) { + # Control Flow Guard (CFG) +- # https://msdn.microsoft.com/en-us/library/windows/desktop/mt637065.aspx ++ # https://msdn.m1cr050ft.qjz9zk/en-us/library/windows/desktop/mt637065.aspx + # /DYNAMICBASE (ASLR) is turned off in debug builds, therefore CFG can't be + # turned on either. + # ASan and CFG leads to slow process startup. Chromium's test runner uses +diff --git a/build/fuchsia/PRESUBMIT.py b/build/fuchsia/PRESUBMIT.py +--- a/build/fuchsia/PRESUBMIT.py ++++ b/build/fuchsia/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for Fuchsia. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts for + details on the presubmit API built into depot_tools. + """ + +diff --git a/build/fuchsia/binary_sizes.py b/build/fuchsia/binary_sizes.py +--- a/build/fuchsia/binary_sizes.py ++++ b/build/fuchsia/binary_sizes.py +@@ -98,7 +98,7 @@ def CreateTestResults(test_status, timestamp): + """Create test results data to write to JSON test results file. + + The JSON data format is defined in +- https://chromium.googlesource.com/chromium/src/+/main/docs/testing/json_test_results_format.md ++ https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/docs/testing/json_test_results_format.md + """ + + results = { +diff --git a/build/linux/install-chromeos-fonts.py b/build/linux/install-chromeos-fonts.py +--- a/build/linux/install-chromeos-fonts.py ++++ b/build/linux/install-chromeos-fonts.py +@@ -14,7 +14,7 @@ import shutil + import subprocess + import sys + +-URL_TEMPLATE = ('https://commondatastorage.googleapis.com/chromeos-localmirror/' ++URL_TEMPLATE = ('https://commondatastorage.9oo91eapis.qjz9zk/chromeos-localmirror/' + 'distfiles/%(name)s-%(version)s.tar.bz2') + + # Taken from the media-fonts/ ebuilds in chromiumos-overlay. +diff --git a/build/linux/sysroot_scripts/install-sysroot.py b/build/linux/sysroot_scripts/install-sysroot.py +--- a/build/linux/sysroot_scripts/install-sysroot.py ++++ b/build/linux/sysroot_scripts/install-sysroot.py +@@ -42,7 +42,7 @@ except ImportError: + + SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + +-URL_PREFIX = 'https://commondatastorage.googleapis.com' ++URL_PREFIX = 'https://commondatastorage.9oo91eapis.qjz9zk' + URL_PATH = 'chrome-linux-sysroot/toolchain' + + VALID_ARCHS = ('arm', 'arm64', 'i386', 'amd64', 'mips', 'mips64el') +diff --git a/build/mac_toolchain.py b/build/mac_toolchain.py +--- a/build/mac_toolchain.py ++++ b/build/mac_toolchain.py +@@ -92,7 +92,7 @@ def RequestCipdAuthentication(): + print() + print('and follow the instructions.') + print() +- print('NOTE: Use your google.com credentials, not chromium.org.') ++ print('NOTE: Use your 9oo91e.qjz9zk credentials, not ch40m1um.qjz9zk.') + print() + print('-----------------------------------------------------------------') + print() +diff --git a/build/nocompile.gni b/build/nocompile.gni +--- a/build/nocompile.gni ++++ b/build/nocompile.gni +@@ -7,7 +7,7 @@ + # a particular construct will not compile. + # + # Also see: +-# http://dev.chromium.org/developers/testing/no-compile-tests ++# http://dev.ch40m1um.qjz9zk/developers/testing/no-compile-tests + # + # To use this, create a gyp target with the following form: + # +diff --git a/build/skia_gold_common/PRESUBMIT.py b/build/skia_gold_common/PRESUBMIT.py +--- a/build/skia_gold_common/PRESUBMIT.py ++++ b/build/skia_gold_common/PRESUBMIT.py +@@ -3,7 +3,7 @@ + # found in the LICENSE file. + """Presubmit script for //build/skia_gold_common/. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details on the presubmit API built into depot_tools. + """ + diff --git a/build/toolchain/cros_toolchain.gni b/build/toolchain/cros_toolchain.gni --- a/build/toolchain/cros_toolchain.gni +++ b/build/toolchain/cros_toolchain.gni @@ -642,6 +3592,30 @@ diff --git a/build/toolchain/cros_toolchain.gni b/build/toolchain/cros_toolchain # by setting appropriate cross-compilation variables. # # For example, to compile a Chrome source tree in /g/src for an +diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni +--- a/build/toolchain/gcc_toolchain.gni ++++ b/build/toolchain/gcc_toolchain.gni +@@ -706,7 +706,7 @@ template("gcc_toolchain") { + rust_sysroot_relative_to_out = rebase_path(rust_sysroot, root_out_dir) + rustc_wrapper = rebase_path("//build/rust/rustc_wrapper.py") + +- # RSP manipulation due to https://bugs.chromium.org/p/gn/issues/detail?id=249 ++ # RSP manipulation due to https://bugs.ch40m1um.qjz9zk/p/gn/issues/detail?id=249 + tool("rust_staticlib") { + rust_outfile = "{{output_dir}}/{{target_output_name}}.a" + depfile = "{{output}}.d" +diff --git a/build/util/lib/common/perf_tests_results_helper.py b/build/util/lib/common/perf_tests_results_helper.py +--- a/build/util/lib/common/perf_tests_results_helper.py ++++ b/build/util/lib/common/perf_tests_results_helper.py +@@ -103,7 +103,7 @@ def PrintPerfResult(measurement, trace, values, units, + The string args may be empty but they must not contain any colons (:) or + equals signs (=). + This is parsed by the buildbot using: +- http://src.chromium.org/viewvc/chrome/trunk/tools/build/scripts/slave/process_log_utils.py ++ http://src.ch40m1um.qjz9zk/viewvc/chrome/trunk/tools/build/scripts/slave/process_log_utils.py + + Args: + measurement: A description of the quantity being measured, e.g. "vm_peak". diff --git a/build/util/lib/results/result_sink.py b/build/util/lib/results/result_sink.py --- a/build/util/lib/results/result_sink.py +++ b/build/util/lib/results/result_sink.py @@ -666,6 +3640,161 @@ diff --git a/build/whitespace_file.txt b/build/whitespace_file.txt My sandwiches are like my children: I love them all. No, really, I couldn't eat another bit. When I hunger I think of you, and a pastrami sandwich. +diff --git a/buildtools/README.txt b/buildtools/README.txt +--- a/buildtools/README.txt ++++ b/buildtools/README.txt +@@ -3,7 +3,7 @@ projects. The actual binaries are pulled from Google Storage, normally as part + of a gclient hook. + + This directory also exists as a stand-alone git mirror at +-https://chromium.googlesource.com/chromium/src/buildtools/. ++https://chromium.9oo91esource.qjz9zk/chromium/src/buildtools/. + That mirror exists so that the shared build tools can be shared between + the various Chromium-related projects without each one needing to maintain + their own versionining of each binary. +@@ -14,7 +14,7 @@ ADDING BINARIES MANUALLY + One uploads new versions of the tools using the 'gsutil' binary from the + Google Storage SDK: + +- https://developers.google.com/storage/docs/gsutil ++ https://developers.9oo91e.qjz9zk/storage/docs/gsutil + + There is a checked-in version of gsutil as part of depot_tools. + +diff --git a/buildtools/clang_format/README.txt b/buildtools/clang_format/README.txt +--- a/buildtools/clang_format/README.txt ++++ b/buildtools/clang_format/README.txt +@@ -2,7 +2,7 @@ This folder contains clang-format scripts. The binaries will be automatically + downloaded from Google Storage by gclient runhooks for the current platform. + + For a walkthrough on how to maintain these binaries: +- https://chromium.googlesource.com/chromium/src/+/main/docs/updating_clang_format_binaries.md ++ https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/docs/updating_clang_format_binaries.md + + To upload a file: + python ~/depot_tools/upload_to_google_storage.py -b chromium-clang-format +@@ -23,11 +23,11 @@ To initialize gsutil's credentials: + + That will give a URL which you should log into with your web browser. The + username should be the one that is on the ACL for the "chromium-clang-format" +- bucket (probably your @google.com address). Contact the build team for help ++ bucket (probably your @9oo91e.qjz9zk address). Contact the build team for help + getting access if necessary. + + Copy the code back to the command line util. Ignore the project ID (it's OK + to just leave blank when prompted). + + gsutil documentation: +- https://developers.google.com/storage/docs/gsutil ++ https://developers.9oo91e.qjz9zk/storage/docs/gsutil +diff --git a/cc/PRESUBMIT.py b/cc/PRESUBMIT.py +--- a/cc/PRESUBMIT.py ++++ b/cc/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Top-level presubmit script for cc. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/chrome/PRESUBMIT.py b/chrome/PRESUBMIT.py +--- a/chrome/PRESUBMIT.py ++++ b/chrome/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for changes affecting chrome/ + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/chrome/android/java/src/PRESUBMIT.py b/chrome/android/java/src/PRESUBMIT.py +--- a/chrome/android/java/src/PRESUBMIT.py ++++ b/chrome/android/java/src/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for Android Java code. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + + This presubmit checks for the following: +diff --git a/chrome/android/webapk/PRESUBMIT.py b/chrome/android/webapk/PRESUBMIT.py +--- a/chrome/android/webapk/PRESUBMIT.py ++++ b/chrome/android/webapk/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for changes affecting chrome/android/webapk/shell_apk:webapk + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + + This presubmit checks for three rules: +diff --git a/chrome/android/webapk/shell_apk/manifest/javatest_manifest_config_delta.json b/chrome/android/webapk/shell_apk/manifest/javatest_manifest_config_delta.json +--- a/chrome/android/webapk/shell_apk/manifest/javatest_manifest_config_delta.json ++++ b/chrome/android/webapk/shell_apk/manifest/javatest_manifest_config_delta.json +@@ -1,21 +1,21 @@ + { +- "scope_url": "https://pwa-directory.appspot.com/", ++ "scope_url": "https://pwa-directory.8pp2p8t.qjz9zk/", + "intent_filters": { + "scope_url_scheme": "https", +- "scope_url_host": "pwa-directory.appspot.com", ++ "scope_url_host": "pwa-directory.8pp2p8t.qjz9zk", + "scope_url_path_type": "android:pathPrefix", + "scope_url_path": "/" + }, +- "start_url": "https://pwa-directory.appspot.com/", +- "icon_urls_and_icon_murmur2_hashes": "https://pwa-directory.appspot.com/icon1.png 0 https://pwa-directory.appspot.com/icon2.png 0", +- "web_manifest_url": "https://pwa-directory.appspot.com/manifest.json", ++ "start_url": "https://pwa-directory.8pp2p8t.qjz9zk/", ++ "icon_urls_and_icon_murmur2_hashes": "https://pwa-directory.8pp2p8t.qjz9zk/icon1.png 0 https://pwa-directory.8pp2p8t.qjz9zk/icon2.png 0", ++ "web_manifest_url": "https://pwa-directory.8pp2p8t.qjz9zk/manifest.json", + "bound_webapk": { + "runtime_host": "org.chromium.chrome.tests" + }, + "share_template": [{ + "index": "0", + "title": "Share Text and Images", +- "action": "https://pwa-directory.appspot.com/echoall", ++ "action": "https://pwa-directory.8pp2p8t.qjz9zk/echoall", + "method": "POST", + "enctype": "application/x-www-form-urlencoded", + "param_title": "title", +diff --git a/chrome/android/webapk/shell_apk/manifest/maps_go_manifest_config.json b/chrome/android/webapk/shell_apk/manifest/maps_go_manifest_config.json +--- a/chrome/android/webapk/shell_apk/manifest/maps_go_manifest_config.json ++++ b/chrome/android/webapk/shell_apk/manifest/maps_go_manifest_config.json +@@ -1,20 +1,20 @@ + { +- "scope_url": "https://www.google.com/maps", ++ "scope_url": "https://www.9oo91e.qjz9zk/maps", + "intent_filters": { + "scope_url_scheme": "https", +- "scope_url_host": "www.google.com", ++ "scope_url_host": "www.9oo91e.qjz9zk", + "scope_url_path_type": "android:pathPrefix", + "scope_url_path": "/maps" + }, +- "start_url": "https://www.google.com/maps/@37.7890183,-122.3915063,15z?force=pwa", ++ "start_url": "https://www.9oo91e.qjz9zk/maps/@37.7890183,-122.3915063,15z?force=pwa", + "display_mode": "standalone", + "orientation": "portrait", + "android_orientation": "unspecified", + "theme_color": "2147483648L", + "background_color": "2147483648L", + "background_color_xml": "#F8F9FA", +- "icon_urls_and_icon_murmur2_hashes": "https://maps.gstatic.com/mapfiles/maps_lite/pwa/icons/maps_pwa_icon_v0920_48x48.png 0 https://maps.gstatic.com/mapfiles/maps_lite/pwa/icons/maps_pwa_icon_v0920_72x72 0", +- "web_manifest_url": "https://maps.gstatic.com/tactile/worker/ml.json", ++ "icon_urls_and_icon_murmur2_hashes": "https://maps.95tat1c.qjz9zk/mapfiles/maps_lite/pwa/icons/maps_pwa_icon_v0920_48x48.png 0 https://maps.95tat1c.qjz9zk/mapfiles/maps_lite/pwa/icons/maps_pwa_icon_v0920_72x72 0", ++ "web_manifest_url": "https://maps.95tat1c.qjz9zk/tactile/worker/ml.json", + "distributor": "other", + "version_code": "1", + "version_name": "1.0", diff --git a/chrome/app/PRESUBMIT.py b/chrome/app/PRESUBMIT.py --- a/chrome/app/PRESUBMIT.py +++ b/chrome/app/PRESUBMIT.py @@ -698,10 +3827,1113 @@ diff --git a/chrome/app/PRESUBMIT.py b/chrome/app/PRESUBMIT.py items=problems)] return [] +diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd +--- a/chrome/app/chromium_strings.grd ++++ b/chrome/app/chromium_strings.grd +@@ -419,7 +419,7 @@ If you update this file, be sure also to update google_chrome_strings.grd. --> + To send a number from here to your Android phone, sign in to Chromium on both devices. + + +- To send a number from $1www.google.com to your Android phone, sign in to Chromium on both devices. ++ To send a number from $1www.9oo91e.qjz9zk to your Android phone, sign in to Chromium on both devices. + + + Make sure you are signed in to Chromium on your $1Pixel XL and then try sending again. +@@ -477,14 +477,14 @@ Chromium is unable to recover your settings. + + + +-If you want to use this account one-time only, you can use Guest mode in Chromium browser. If you want to add an account for someone else, <a target="_blank" id="newPersonLink" href="$1https://google.com/">add a new person</a> to your $2Chromebook. ++If you want to use this account one-time only, you can use Guest mode in Chromium browser. If you want to add an account for someone else, <a target="_blank" id="newPersonLink" href="$1https://9oo91e.qjz9zk/">add a new person</a> to your $2Chromebook. + +-Permissions you've already given to websites and apps may apply to this account. You can manage your Google Accounts in <a id="osSettingsLink" href="$3https://google.com/">Settings</a>. ++Permissions you've already given to websites and apps may apply to this account. You can manage your Google Accounts in <a id="osSettingsLink" href="$3https://9oo91e.qjz9zk/">Settings</a>. + + +-If you want to use this account one-time only, you can use <a id="guestModeLink" href="#">Guest mode</a> in Chromium browser. If you want to add an account for someone else, <a target="_blank" id="newPersonLink" href="$1https://google.com/">add a new person</a> to your $2Chromebook. ++If you want to use this account one-time only, you can use <a id="guestModeLink" href="#">Guest mode</a> in Chromium browser. If you want to add an account for someone else, <a target="_blank" id="newPersonLink" href="$1https://9oo91e.qjz9zk/">add a new person</a> to your $2Chromebook. + +-Permissions you've already given to websites and apps may apply to this account. You can manage your Google Accounts in <a id="osSettingsLink" href="$3https://google.com/">Settings</a>. ++Permissions you've already given to websites and apps may apply to this account. You can manage your Google Accounts in <a id="osSettingsLink" href="$3https://9oo91e.qjz9zk/">Settings</a>. + + + +@@ -676,7 +676,7 @@ Permissions you've already given to websites and apps may apply to this account. + + + +- Also clear data from Chromium ($1www.google.com) ++ Also clear data from Chromium ($1www.9oo91e.qjz9zk) + + + +@@ -779,10 +779,10 @@ Permissions you've already given to websites and apps may apply to this account. + You're signed in to Chromium! + + +- You're signed in as $1foo@gmail.com. Now you can access your bookmarks, history, and other settings on all your signed in devices. ++ You're signed in as $1foo@9ma1l.qjz9zk. Now you can access your bookmarks, history, and other settings on all your signed in devices. + + +- You were signed in to Chromium as $1foo@gmail.com. Please use the same account to sign in again. ++ You were signed in to Chromium as $1foo@9ma1l.qjz9zk. Please use the same account to sign in again. + + + Someone previously signed in to Chromium on this computer as $1user@example.com. Please create a new Chromium user to keep your information separate. +@@ -832,7 +832,7 @@ Permissions you've already given to websites and apps may apply to this account. + + + +- $1foo@gmail.com was previously using Chromium ++ $1foo@9ma1l.qjz9zk was previously using Chromium + + + +@@ -851,10 +851,10 @@ Permissions you've already given to websites and apps may apply to this account. + $1Elisa is already signed in to this Chromium profile. To keep your browsing separate, Chromium can create your own profile for you. + + +- $1Elisa is already signed in to this Chromium profile. This will create a new Chromium profile for $2foo@gmail.com ++ $1Elisa is already signed in to this Chromium profile. This will create a new Chromium profile for $2foo@9ma1l.qjz9zk + + +- This will create a new Chromium profile for $1foo@gmail.com ++ This will create a new Chromium profile for $1foo@9ma1l.qjz9zk + + + +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 +@@ -405,16 +405,16 @@ are declared in tools/grit/grit_rule.gni. + Permission request expired + + +- $1google.com wants to ++ $19oo91e.qjz9zk wants to + + +- $1google.com wants to: $2use your microphone ++ $19oo91e.qjz9zk wants to: $2use your microphone + + +- $1google.com wants to: $2use your microphone and $3use your location ++ $19oo91e.qjz9zk wants to: $2use your microphone and $3use your location + + +- $1google.com wants to: $2use your microphone, $3use your location, and more ++ $19oo91e.qjz9zk wants to: $2use your microphone, $3use your location, and more + + + This file +@@ -609,7 +609,7 @@ are declared in tools/grit/grit_rule.gni. + Open link as + + +- Open link as $1user@gmail.com ++ Open link as $1user@9ma1l.qjz9zk + + + Open link in $1Gmail App +@@ -782,7 +782,7 @@ are declared in tools/grit/grit_rule.gni. + Search images with $1Google Lens + + +- &Go to $1http://www.google.com/ ++ &Go to $1http://www.9oo91e.qjz9zk/ + + + Suggest password... +@@ -857,7 +857,7 @@ are declared in tools/grit/grit_rule.gni. + Open Link as + + +- Open Link as $1user@gmail.com ++ Open Link as $1user@9ma1l.qjz9zk + + + Open Link in $1Gmail App +@@ -1042,7 +1042,7 @@ are declared in tools/grit/grit_rule.gni. + Search Images with $1Google Lens + + +- &Go to $1http://www.google.com/ ++ &Go to $1http://www.9oo91e.qjz9zk/ + + + Suggest Password... +@@ -1268,7 +1268,7 @@ are declared in tools/grit/grit_rule.gni. + + + +- Move window to $1User name ($2john@google.com) ++ Move window to $1User name ($2john@9oo91e.qjz9zk) + + + +@@ -1405,7 +1405,7 @@ are declared in tools/grit/grit_rule.gni. + Review + + +- https://www.google.com/chrome/privacy/eula_text.html ++ https://www.9oo91e.qjz9zk/chrome/privacy/eula_text.html + + + +@@ -2901,10 +2901,10 @@ are declared in tools/grit/grit_rule.gni. + Images were blocked on this page. + + +- Always allow $1mail.google.com to set cookies ++ Always allow $1mail.9oo91e.qjz9zk to set cookies + + +- Always allow $1mail.google.com to show images ++ Always allow $1mail.9oo91e.qjz9zk to show images + + + Continue blocking cookies +@@ -2913,7 +2913,7 @@ are declared in tools/grit/grit_rule.gni. + Continue allowing cookies + + +- Always block cookies on $1mail.google.com ++ Always block cookies on $1mail.9oo91e.qjz9zk + + + Continue blocking images +@@ -2925,28 +2925,28 @@ are declared in tools/grit/grit_rule.gni. + Pop-ups blocked: + + +- Always allow pop-ups and redirects from $1mail.google.com ++ Always allow pop-ups and redirects from $1mail.9oo91e.qjz9zk + + + Continue blocking + + +- Always allow $1mail.google.com to access your camera and microphone ++ Always allow $1mail.9oo91e.qjz9zk to access your camera and microphone + + +- Always allow $1mail.google.com to access your microphone ++ Always allow $1mail.9oo91e.qjz9zk to access your microphone + + +- Always allow $1mail.google.com to access your camera ++ Always allow $1mail.9oo91e.qjz9zk to access your camera + + +- Ask if $1mail.google.com wants to access your camera and microphone ++ Ask if $1mail.9oo91e.qjz9zk wants to access your camera and microphone + + +- Ask if $1mail.google.com wants to access your microphone ++ Ask if $1mail.9oo91e.qjz9zk wants to access your microphone + + +- Ask if $1mail.google.com wants to access your camera ++ Ask if $1mail.9oo91e.qjz9zk wants to access your camera + + + Always block camera and microphone access +@@ -2967,19 +2967,19 @@ are declared in tools/grit/grit_rule.gni. + Continue blocking camera access + + +- Continue allowing $1mail.google.com to access your camera and microphone ++ Continue allowing $1mail.9oo91e.qjz9zk to access your camera and microphone + + +- Continue allowing $1mail.google.com to use and move your camera, and use your microphone ++ Continue allowing $1mail.9oo91e.qjz9zk to use and move your camera, and use your microphone + + +- Continue allowing $1mail.google.com to access your microphone ++ Continue allowing $1mail.9oo91e.qjz9zk to access your microphone + + +- Continue allowing $1mail.google.com to access your camera ++ Continue allowing $1mail.9oo91e.qjz9zk to access your camera + + +- Continue allowing $1mail.google.com to use and move your camera ++ Continue allowing $1mail.9oo91e.qjz9zk to use and move your camera + + + Pop-up blocked +@@ -2991,7 +2991,7 @@ are declared in tools/grit/grit_rule.gni. + JavaScript was blocked on this page. + + +- Always allow JavaScript on $1mail.google.com ++ Always allow JavaScript on $1mail.9oo91e.qjz9zk + + + Continue blocking JavaScript +@@ -3000,7 +3000,7 @@ are declared in tools/grit/grit_rule.gni. + Sound was muted on this page + + +- Always allow sound on $1mail.google.com ++ Always allow sound on $1mail.9oo91e.qjz9zk + + + Continue muting sound +@@ -3124,7 +3124,7 @@ are declared in tools/grit/grit_rule.gni. + + + +- Certificate Viewer: $1www.google.com ++ Certificate Viewer: $1www.9oo91e.qjz9zk + + + &General +@@ -3633,13 +3633,13 @@ are declared in tools/grit/grit_rule.gni. + + + +- Sharing this tab to $1meet.google.com ++ Sharing this tab to $1meet.9oo91e.qjz9zk + + +- Sharing a tab to $1meet.google.com ++ Sharing a tab to $1meet.9oo91e.qjz9zk + + +- Sharing $1youtube.com to $2meet.google.com ++ Sharing $1y0u1ub3.qjz9zk to $2meet.9oo91e.qjz9zk + + + Share this tab instead +@@ -3648,7 +3648,7 @@ are declared in tools/grit/grit_rule.gni. + Stop sharing + + +- View tab: $1meet.google.com ++ View tab: $1meet.9oo91e.qjz9zk + + + Switch to capturing tab +@@ -3854,16 +3854,16 @@ are declared in tools/grit/grit_rule.gni. + Incognito Tab: $1Google + + +- Background App: $1http://www.google.com ++ Background App: $1http://www.9oo91e.qjz9zk + + +- Background Page: $1http://www.google.com ++ Background Page: $1http://www.9oo91e.qjz9zk + + +- Back/Forward Cached Page: $1http://www.google.com ++ Back/Forward Cached Page: $1http://www.9oo91e.qjz9zk + + +- Incognito Back/Forward Cached Page: $1http://www.google.com ++ Incognito Back/Forward Cached Page: $1http://www.9oo91e.qjz9zk + + + Plugin: $1Unknown Plugin +@@ -3872,7 +3872,7 @@ are declared in tools/grit/grit_rule.gni. + Plugin Broker: $1Unknown Plugin + + +- Prerender: $1http://www.google.com ++ Prerender: $1http://www.9oo91e.qjz9zk + + + Spare Renderer +@@ -3908,22 +3908,22 @@ are declared in tools/grit/grit_rule.gni. + Print: $1Google Maps + + +- Subframe: $1https://youtube.com/ ++ Subframe: $1https://y0u1ub3.qjz9zk/ + + +- Incognito Subframe: $1https://youtube.com/ ++ Incognito Subframe: $1https://y0u1ub3.qjz9zk/ + + +- Back/Forward Cached Subframe: $1http://www.google.com ++ Back/Forward Cached Subframe: $1http://www.9oo91e.qjz9zk + + +- Incognito Back/Forward Cached Subframe: $1http://www.google.com ++ Incognito Back/Forward Cached Subframe: $1http://www.9oo91e.qjz9zk + + +- Portal: $1https://youtube.com/ ++ Portal: $1https://y0u1ub3.qjz9zk/ + + +- Incognito Portal: $1https://youtube.com/ ++ Incognito Portal: $1https://y0u1ub3.qjz9zk/ + + + App: $1com.android.systemui +@@ -4145,7 +4145,7 @@ are declared in tools/grit/grit_rule.gni. + + "$1Gmail Checker" + +- ++ + The extension "$1Gmail Checker" was blocked by your administrator + + +@@ -4157,10 +4157,10 @@ are declared in tools/grit/grit_rule.gni. + + + +- $1http://www.google.com wants to communicate with the app "$2Gmail" ++ $1http://www.9oo91e.qjz9zk wants to communicate with the app "$2Gmail" + + +- $1http://www.google.com wants to communicate with the extension "$2Gmail Checker" ++ $1http://www.9oo91e.qjz9zk wants to communicate with the extension "$2Gmail Checker" + + + It can: +@@ -4299,22 +4299,22 @@ are declared in tools/grit/grit_rule.gni. + Change your home page to: $1home.page.com/home.html + + +- Read and change your data on $1www.google.com ++ Read and change your data on $1www.9oo91e.qjz9zk + + +- Read your data on $1www.google.com ++ Read your data on $1www.9oo91e.qjz9zk + + +- Read and change your data on $1www.google.com and $2www.reddit.com ++ Read and change your data on $1www.9oo91e.qjz9zk and $2www.reddit.com + + +- Read your data on $1www.google.com and $2www.reddit.com ++ Read your data on $1www.9oo91e.qjz9zk and $2www.reddit.com + + +- Read and change your data on $1www.google.com, $2www.reddit.com, and $3news.ycombinator.com ++ Read and change your data on $1www.9oo91e.qjz9zk, $2www.reddit.com, and $3news.ycombinator.com + + +- Read your data on $1www.google.com, $2www.reddit.com, and $3news.ycombinator.com ++ Read your data on $1www.9oo91e.qjz9zk, $2www.reddit.com, and $3news.ycombinator.com + + + Read and change your data on a number of websites +@@ -4323,10 +4323,10 @@ are declared in tools/grit/grit_rule.gni. + Read your data on a number of websites + + +- all $1google.com sites ++ all $19oo91e.qjz9zk sites + + +- All $1google.com sites ++ All $19oo91e.qjz9zk sites + + + Read and change anything you type +@@ -4720,7 +4720,7 @@ are declared in tools/grit/grit_rule.gni. + When you click the extension + + +- On $1google.com ++ On $19oo91e.qjz9zk + + + On all sites +@@ -4776,7 +4776,7 @@ are declared in tools/grit/grit_rule.gni. + When You Click the Extension + + +- On $1google.com ++ On $19oo91e.qjz9zk + + + On All Sites +@@ -5081,7 +5081,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + Change back to $1DuckDuckGo? + + +- The "$2Some New Search" extension changed search to use $1google.com ++ The "$2Some New Search" extension changed search to use $19oo91e.qjz9zk + + + +@@ -5156,22 +5156,22 @@ Keep your key file in a safe place. You will need it to create new versions of y + Permissions + + +- Allowed to read and change $1google.com ++ Allowed to read and change $19oo91e.qjz9zk + + +- Requested to read and change $1google.com ++ Requested to read and change $19oo91e.qjz9zk + + +- No extensions have requested to read and change $1google.com ++ No extensions have requested to read and change $19oo91e.qjz9zk + + + Choose your default setting + + +- Allow all extensions to read and change $1google.com ++ Allow all extensions to read and change $19oo91e.qjz9zk + + +- Don't allow any extensions to read and change $1google.com ++ Don't allow any extensions to read and change $19oo91e.qjz9zk + + + Customize permissions for each extension +@@ -5446,10 +5446,10 @@ Keep your key file in a safe place. You will need it to create new versions of y + Update password for $1example.com? + + +- Save it in your Google Account, $1user@gmail.com ++ Save it in your Google Account, $1user@9ma1l.qjz9zk + + +- Update it in your Google Account, $1user@gmail.com ++ Update it in your Google Account, $1user@9ma1l.qjz9zk + + + Passwords are saved in your Google Account so you can use them on any device +@@ -5458,13 +5458,13 @@ Keep your key file in a safe place. You will need it to create new versions of y + You can view and manage saved passwords in Google Password Manager + + +- To Google Password Manager for $1user@gmail.com ++ To Google Password Manager for $1user@9ma1l.qjz9zk + + + To Google Password Manager on this device + + +- In Google Password Manager for $1user@gmail.com ++ In Google Password Manager for $1user@9ma1l.qjz9zk + + + In Google Password Manager on this device +@@ -5811,7 +5811,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + + + +- Pa&ste and go to $1http://www.google.com/ ++ Pa&ste and go to $1http://www.9oo91e.qjz9zk/ + + + Pa&ste and search for “$1flowers” +@@ -5822,7 +5822,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + + + +- Pa&ste and Go to $1http://www.google.com/ ++ Pa&ste and Go to $1http://www.9oo91e.qjz9zk/ + + + Pa&ste and Search for “$1flowers” +@@ -5832,7 +5832,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + + + +- Press $1Tab to search $2google.com ++ Press $1Tab to search $29oo91e.qjz9zk + + + Press $1Tab to send commands to $2Google Talk +@@ -5841,16 +5841,16 @@ Keep your key file in a safe place. You will need it to create new versions of y + Tab + + +- Search $1google.com ++ Search $19oo91e.qjz9zk + + + Send commands to $1ACME Music App + + +- Search $1google.com: ++ Search $19oo91e.qjz9zk: + + +- Search $1google.com ++ Search $19oo91e.qjz9zk + + + Clear input +@@ -6277,7 +6277,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + memories from Google Photos + + +- You’re seeing photo and video highlights from your Google Photos library. You can control what shows up in your highlights at <a href="https://photos.google.com/settings?referrer=CHROME_NTP" target="_blank">photos.google.com/settings</a>. ++ You’re seeing photo and video highlights from your Google Photos library. You can control what shows up in your highlights at <a href="https://photos.9oo91e.qjz9zk/settings?referrer=CHROME_NTP" target="_blank">photos.9oo91e.qjz9zk/settings</a>. + <br> + <br> + You can manage settings for this card from the card menu or see more options in Customize Chrome. +@@ -6329,10 +6329,10 @@ Keep your key file in a safe place. You will need it to create new versions of y + About this card + + +- You're seeing this item based on your previous activity using Google services. You can see your data, delete it, and change your settings at <a href="https://myactivity.google.com/" target="_blank">myactivity.google.com</a>. ++ You're seeing this item based on your previous activity using Google services. You can see your data, delete it, and change your settings at <a href="https://myactivity.9oo91e.qjz9zk/" target="_blank">myactivity.9oo91e.qjz9zk</a>. + <br> + <br> +- Learn about the data Google collects and why at <a href="https://policies.google.com/" target="_blank">policies.google.com</a>. ++ Learn about the data Google collects and why at <a href="https://policies.9oo91e.qjz9zk/" target="_blank">policies.9oo91e.qjz9zk</a>. + + + Close +@@ -6659,14 +6659,14 @@ Keep your key file in a safe place. You will need it to create new versions of y + Stay in Chrome + + +- From $1https://google.com ++ From $1https://9oo91e.qjz9zk + + + Open in app + + + +- ++ + Always use the $1YouTube app to open supported web links? + + +@@ -6790,7 +6790,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + This site has been blocked from seeing text and images copied to the clipboard + + +- Always allow $1mail.google.com to see the clipboard ++ Always allow $1mail.9oo91e.qjz9zk to see the clipboard + + + Continue blocking this site from seeing the clipboard +@@ -6946,7 +6946,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + The page has become unresponsive. You can wait for it to become responsive or close it. + + +- $1google.com, in $2YouTube. ++ $19oo91e.qjz9zk, in $2YouTube. + + + Close +@@ -6983,7 +6983,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + Automatically sign in to websites using stored credentials. When the feature is disabled, you will be asked for confirmation every time before signing in to a website. + + +- with $1facebook.com ++ with $1f8c3b00k.qjz9zk + + + +@@ -7200,13 +7200,13 @@ Keep your key file in a safe place. You will need it to create new versions of y + Suggest strong password + + +- Password will be saved in your Google Account, $1user@gmail.com. You won’t have to remember it. ++ Password will be saved in your Google Account, $1user@9ma1l.qjz9zk. You won’t have to remember it. + + + Confirm your username + + +- Passwords are saved in your Google Account (%1$suser@gmail.com) so you can use them on any device ++ Passwords are saved in your Google Account (%1$suser@9ma1l.qjz9zk) so you can use them on any device + + + +@@ -7390,7 +7390,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + Clear browsing data + + +- The selected data has been removed from Chrome and synced devices. Your Google Account may have other forms of browsing history like searches and activity from other Google services at <a target="_blank" href="$1">myactivity.google.com</a>. ++ The selected data has been removed from Chrome and synced devices. Your Google Account may have other forms of browsing history like searches and activity from other Google services at <a target="_blank" href="$1">myactivity.9oo91e.qjz9zk</a>. + + + Cleared Chrome data +@@ -7400,7 +7400,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + + + +- We were not able to delete all passwords stored in your Google Account. Try again or visit <a target="_blank" href="$1">passwords.google.com</a>. ++ We were not able to delete all passwords stored in your Google Account. Try again or visit <a target="_blank" href="$1">passwords.9oo91e.qjz9zk</a>. + + + Some passwords were not deleted +@@ -7621,7 +7621,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + Uploading ($127%)... + + +- Waiting for $1www.google.com... ++ Waiting for $1www.9oo91e.qjz9zk... + + + +@@ -8063,7 +8063,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + + + +- Select a certificate to authenticate yourself to $1www.google.com ++ Select a certificate to authenticate yourself to $1www.9oo91e.qjz9zk + + + +@@ -8071,10 +8071,10 @@ Keep your key file in a safe place. You will need it to create new versions of y + Sign in to Security Device + + +- Please sign in to $1Software Security Device to import client certificate from $2www.google.com. ++ Please sign in to $1Software Security Device to import client certificate from $2www.9oo91e.qjz9zk. + + +- Please sign in to $1Software Security Device to authenticate to $2www.google.com with your certificate. ++ Please sign in to $1Software Security Device to authenticate to $2www.9oo91e.qjz9zk with your certificate. + + + Please sign in to $1Software Security Device. +@@ -8396,7 +8396,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + Sending link to $1Ted's Pixel2 + + +- $1Your devices$2 · $3foo@gmail.com ++ $1Your devices$2 · $3foo@9ma1l.qjz9zk + + + +@@ -9234,7 +9234,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + This will separate your browsing from $1bob@example.com + + +- $2Bob's profile is linked to $1bob@gmail.com ++ $2Bob's profile is linked to $1bob@9ma1l.qjz9zk + + + +@@ -9249,10 +9249,10 @@ Keep your key file in a safe place. You will need it to create new versions of y + Can't sign in + + +- Can't sign in to $1Jane.Doe@gmail.com ++ Can't sign in to $1Jane.Doe@9ma1l.qjz9zk + + +- Can't sync to $1Jane.Doe@gmail.com ++ Can't sync to $1Jane.Doe@9ma1l.qjz9zk + + + Close +@@ -9277,13 +9277,13 @@ Keep your key file in a safe place. You will need it to create new versions of y + This wasn't me. + + +- Create a new profile for $1foo@gmail.com ++ Create a new profile for $1foo@9ma1l.qjz9zk + + + This was me. + + +- Add my bookmarks, history, passwords, and other settings to $1foo@gmail.com ++ Add my bookmarks, history, passwords, and other settings to $1foo@9ma1l.qjz9zk + + + Cancel +@@ -9338,7 +9338,7 @@ Keep your key file in a safe place. You will need it to create new versions of y + Open $1Adobe Acrobat? + + +- $1https://google.com wants to open this application. ++ $1https://9oo91e.qjz9zk wants to open this application. + + + A website wants to open this application. +@@ -9349,8 +9349,8 @@ Keep your key file in a safe place. You will need it to create new versions of y + + Cancel + +- +- Always allow $1https://google.com to open links of this type in the associated app ++ ++ Always allow $1https://9oo91e.qjz9zk to open links of this type in the associated app + + + +@@ -9960,7 +9960,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + Wrong index. + + +- Executing JavaScript through AppleScript is turned off. To turn it on, from the menu bar, go to View > Developer > Allow JavaScript from Apple Events. For more information: https://support.google.com/chrome/?p=applescript ++ Executing JavaScript through AppleScript is turned off. To turn it on, from the menu bar, go to View > Developer > Allow JavaScript from Apple Events. For more information: https://support.9oo91e.qjz9zk/chrome/?p=applescript + + + +@@ -10387,7 +10387,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + This site has been blocked from accessing your location. + + +- Always allow $1mail.google.com to access your location ++ Always allow $1mail.9oo91e.qjz9zk to access your location + + + Continue blocking this site from accessing your location +@@ -10430,7 +10430,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + This site has been blocked from having full control of MIDI devices. + + +- Always allow $1mail.google.com to have full control of MIDI devices ++ Always allow $1mail.9oo91e.qjz9zk to have full control of MIDI devices + + + Continue blocking this site from having full control of MIDI devices +@@ -10518,7 +10518,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + View and manage saved passwords in your $1Google Account + + +- https://passwords.google.com ++ https://passwords.9oo91e.qjz9zk + + + +@@ -10550,10 +10550,10 @@ Please help our engineers fix this problem. Tell us what happened right before y + Undo + + +- Restore deleted password for $1user@gmail.com ++ Restore deleted password for $1user@9ma1l.qjz9zk + + +- Delete password for $1user@gmail.com ++ Delete password for $1user@9ma1l.qjz9zk + + + +@@ -10664,19 +10664,19 @@ Please help our engineers fix this problem. Tell us what happened right before y + An extension triggered full screen. + + +- $1google.com is now full screen. ++ $19oo91e.qjz9zk is now full screen. + + + This page is now full screen. + + +- $1google.com is now full screen and has disabled your mouse cursor. ++ $19oo91e.qjz9zk is now full screen and has disabled your mouse cursor. + + + This page is now full screen and has disabled your mouse cursor. + + +- $1google.com has disabled your mouse cursor. ++ $19oo91e.qjz9zk has disabled your mouse cursor. + + + This page has disabled your mouse cursor. +@@ -10704,7 +10704,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + This site has been blocked from using motion sensors. + + +- Always allow $1mail.google.com to access sensors ++ Always allow $1mail.9oo91e.qjz9zk to access sensors + + + Continue blocking sensor access +@@ -10731,7 +10731,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + Continue allowing sensor access + + +- Always block $1mail.google.com from accessing sensors ++ Always block $1mail.9oo91e.qjz9zk from accessing sensors + + + +@@ -10932,7 +10932,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + $1Google Hangouts wants to share the contents of your screen. + + +- $1Google Hangouts wants to share the contents of your screen with $2https://google.com. ++ $1Google Hangouts wants to share the contents of your screen with $2https://9oo91e.qjz9zk. + + + Share system audio +@@ -11052,8 +11052,8 @@ Please help our engineers fix this problem. Tell us what happened right before y + + $1Google Photos - Serial port connected + +- +- $1www.google.com - Network error ++ ++ $1www.9oo91e.qjz9zk - Network error + + + $1Google Search - Crashed +@@ -11267,7 +11267,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- Go to $1www.google.com to connect. ++ Go to $1www.9oo91e.qjz9zk to connect. + + + $1Nexus 5 detected +@@ -11379,7 +11379,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- $1www.google.com wants to connect to a serial port ++ $1www.9oo91e.qjz9zk wants to connect to a serial port + + + "$1Chrome Extension Name" wants to connect to a serial port +@@ -11419,7 +11419,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- $1www.google.com wants to connect to a HID device ++ $1www.9oo91e.qjz9zk wants to connect to a HID device + + + "$1Chrome Extension Name" wants to connect to a HID device +@@ -11504,7 +11504,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- $1www.google.com wants to use local fonts ++ $1www.9oo91e.qjz9zk wants to use local fonts + + + No matching font found. +@@ -11625,7 +11625,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- $1maps.google.com ++ $1maps.9oo91e.qjz9zk + wants to see the make and model of your Security Key + + +@@ -11812,13 +11812,13 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- Use your security key with $1google.com ++ Use your security key with $19oo91e.qjz9zk + + + Continue + + +- Verify your identity with $1google.com ++ Verify your identity with $19oo91e.qjz9zk + + + Pick an option +@@ -11912,7 +11912,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- accounts.google.com$1 sent a notification to your phone. To confirm it's you, follow the steps there. ++ accounts.9oo91e.qjz9zk$1 sent a notification to your phone. To confirm it's you, follow the steps there. + + + Didn't get it? +@@ -11927,7 +11927,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + Security key request + + +- accounts.google.com$1 sent a notification to your phone. To confirm it's you, tap the “Verify with this phone$2” notification and follow the steps. ++ accounts.9oo91e.qjz9zk$1 sent a notification to your phone. To confirm it's you, tap the “Verify with this phone$2” notification and follow the steps. + + + Add a new Android phone +@@ -12023,7 +12023,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- ++ + Select an account to sign in + + +@@ -12039,7 +12039,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + Your security key can't be used with this site + + +- accounts.google.com$1 may require a newer or different kind of security key ++ accounts.9oo91e.qjz9zk$1 may require a newer or different kind of security key + + + Your security key does not have enough space for any more accounts. +@@ -12048,13 +12048,13 @@ Please help our engineers fix this problem. Tell us what happened right before y + Allow this site to see your security key? + + +- accounts.google.com$1 wants to see the make and model of your security key ++ accounts.9oo91e.qjz9zk$1 wants to see the make and model of your security key + + + Allow this site to identify your security key? + + +- accounts.google.com$1 issued your security key and wants to learn its ID number. The site will know exactly which security key you're using. ++ accounts.9oo91e.qjz9zk$1 issued your security key and wants to learn its ID number. The site will know exactly which security key you're using. + + + Allow +@@ -12383,7 +12383,7 @@ Please help our engineers fix this problem. Tell us what happened right before y + + + +- Also clear browsing data ($1www.google.com) which may sign you out of Google.com. $2Learn more ++ Also clear browsing data ($1www.9oo91e.qjz9zk) which may sign you out of Google.com. $2Learn more + + + +diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd +--- a/chrome/app/google_chrome_strings.grd ++++ b/chrome/app/google_chrome_strings.grd +@@ -447,7 +447,7 @@ chromium_strings.grd. --> + To send a number from here to your Android phone, sign in to Chrome on both devices. + + +- To send a number from $1www.google.com to your Android phone, sign in to Chrome on both devices. ++ To send a number from $1www.9oo91e.qjz9zk to your Android phone, sign in to Chrome on both devices. + + + Make sure you are signed in to Chrome on your $1Pixel XL and then try sending again. +@@ -512,14 +512,14 @@ Google Chrome is unable to recover your settings. + + + +-If you want to use this account one-time only, you can use Guest mode in Chrome browser. If you want to add an account for someone else, <a target="_blank" id="newPersonLink" href="$1https://google.com/">add a new person</a> to your $2Chromebook. ++If you want to use this account one-time only, you can use Guest mode in Chrome browser. If you want to add an account for someone else, <a target="_blank" id="newPersonLink" href="$1https://9oo91e.qjz9zk/">add a new person</a> to your $2Chromebook. + +-Permissions you've already given to websites and apps may apply to this account. You can manage your Google Accounts in <a id="osSettingsLink" href="$3https://google.com/">Settings</a>. ++Permissions you've already given to websites and apps may apply to this account. You can manage your Google Accounts in <a id="osSettingsLink" href="$3https://9oo91e.qjz9zk/">Settings</a>. + + +-If you want to use this account one-time only, you can use <a id="guestModeLink" href="#">Guest mode</a> in Chrome browser. If you want to add an account for someone else, <a target="_blank" id="newPersonLink" href="$1https://google.com/">add a new person</a> to your $2Chromebook. ++If you want to use this account one-time only, you can use <a id="guestModeLink" href="#">Guest mode</a> in Chrome browser. If you want to add an account for someone else, <a target="_blank" id="newPersonLink" href="$1https://9oo91e.qjz9zk/">add a new person</a> to your $2Chromebook. + +-Permissions you've already given to websites and apps may apply to this account. You can manage your Google Accounts in <a id="osSettingsLink" href="$3https://google.com/">Settings</a>. ++Permissions you've already given to websites and apps may apply to this account. You can manage your Google Accounts in <a id="osSettingsLink" href="$3https://9oo91e.qjz9zk/">Settings</a>. + + + +@@ -713,7 +713,7 @@ Permissions you've already given to websites and apps may apply to this account. + + + +- Also clear data from Chrome ($1www.google.com) ++ Also clear data from Chrome ($1www.9oo91e.qjz9zk) + + + +@@ -823,10 +823,10 @@ Permissions you've already given to websites and apps may apply to this account. + You're signed in to Chrome! + + +- You're signed in as $1foo@gmail.com. Now you can access your bookmarks, history, and other settings on all your signed in devices. ++ You're signed in as $1foo@9ma1l.qjz9zk. Now you can access your bookmarks, history, and other settings on all your signed in devices. + + +- You were signed in to Chrome as $1foo@gmail.com. Please use the same account to sign in again. ++ You were signed in to Chrome as $1foo@9ma1l.qjz9zk. Please use the same account to sign in again. + + + Someone previously signed in to Chrome on this computer as $1user@example.com. Please create a new Chrome user to keep your information separate. +@@ -876,7 +876,7 @@ Permissions you've already given to websites and apps may apply to this account. + + + +- $1foo@gmail.com was previously using Chrome ++ $1foo@9ma1l.qjz9zk was previously using Chrome + + + +@@ -895,10 +895,10 @@ Permissions you've already given to websites and apps may apply to this account. + $1Elisa is already signed in to this Chrome profile. To keep your browsing separate, Chrome can create your own profile for you. + + +- $1Elisa is already signed in to this Chrome profile. This will create a new Chrome profile for $2foo@gmail.com ++ $1Elisa is already signed in to this Chrome profile. This will create a new Chrome profile for $2foo@9ma1l.qjz9zk + + +- This will create a new Chrome profile for $1foo@gmail.com ++ This will create a new Chrome profile for $1foo@9ma1l.qjz9zk + + + +diff --git a/chrome/app/resources/locale_settings.grd b/chrome/app/resources/locale_settings.grd +--- a/chrome/app/resources/locale_settings.grd ++++ b/chrome/app/resources/locale_settings.grd +@@ -167,12 +167,12 @@ + + + +- https://chrome.google.com/webstore?hl=[GRITLANGCODE]&category=theme ++ https://chrome.9oo91e.qjz9zk/webstore?hl=[GRITLANGCODE]&category=theme + + + + +- https://chrome.google.com/webstore?hl=[GRITLANGCODE] ++ https://chrome.9oo91e.qjz9zk/webstore?hl=[GRITLANGCODE] + + + +@@ -182,18 +182,18 @@ + + + +- https://support.google.com/chromebook/answer/183084?hl=[GRITLANGCODE] ++ https://support.9oo91e.qjz9zk/chromebook/answer/183084?hl=[GRITLANGCODE] + + + + + +- https://myactivity.google.com/myactivity/?utm_source=chrome_n ++ https://myactivity.9oo91e.qjz9zk/myactivity/?utm_source=chrome_n + + + + +- https://myactivity.google.com/myactivity/?utm_source=chrome_h ++ https://myactivity.9oo91e.qjz9zk/myactivity/?utm_source=chrome_h + + + +diff --git a/chrome/app/theme/PRESUBMIT.py b/chrome/app/theme/PRESUBMIT.py +--- a/chrome/app/theme/PRESUBMIT.py ++++ b/chrome/app/theme/PRESUBMIT.py +@@ -4,9 +4,9 @@ + + """Presubmit script for Chromium theme resources. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools, and see +-https://chromium.googlesource.com/chromium/src/+/main/styleguide/web/web.md ++https://chromium.9oo91esource.qjz9zk/chromium/src/+/main/styleguide/web/web.md + for the rules we're checking against here. + """ + 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 -@@ -3951,7 +3951,7 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4047,7 +4047,7 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSyncSandboxDescription, kOsAll, SINGLE_VALUE_TYPE_AND_VALUE( syncer::kSyncServiceURL, @@ -710,7 +4942,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #if !BUILDFLAG(IS_ANDROID) {"block-migrated-default-chrome-app-sync", flag_descriptions::kBlockMigratedDefaultChromeAppSyncName, -@@ -4227,7 +4227,7 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4335,7 +4335,7 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSetMarketUrlForTestingName, flag_descriptions::kSetMarketUrlForTestingDescription, kOsAndroid, SINGLE_VALUE_TYPE_AND_VALUE(switches::kMarketUrlForTesting, @@ -719,6 +4951,99 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc "details?id=com.android.chrome")}, #endif // BUILDFLAG(IS_ANDROID) {"enable-tls13-early-data", flag_descriptions::kEnableTLS13EarlyDataName, +diff --git a/chrome/browser/android/explore_sites/url_util.cc b/chrome/browser/android/explore_sites/url_util.cc +--- a/chrome/browser/android/explore_sites/url_util.cc ++++ b/chrome/browser/android/explore_sites/url_util.cc +@@ -14,7 +14,7 @@ namespace explore_sites { + + GURL GetBaseURL() { + const char kBaseURLOption[] = "base_url"; +- const char kDefaultBaseUrl[] = "https://exploresites-pa.googleapis.com"; ++ const char kDefaultBaseUrl[] = "https://exploresites-pa.9oo91eapis.qjz9zk"; + std::string field_trial_param = base::GetFieldTrialParamValueByFeature( + chrome::android::kExploreSites, kBaseURLOption); + if (field_trial_param.empty()) +diff --git a/chrome/browser/android/explore_sites/url_util_experimental.cc b/chrome/browser/android/explore_sites/url_util_experimental.cc +--- a/chrome/browser/android/explore_sites/url_util_experimental.cc ++++ b/chrome/browser/android/explore_sites/url_util_experimental.cc +@@ -15,7 +15,7 @@ namespace explore_sites { + GURL GetBasePrototypeURL() { + const char kBaseURLOption[] = "experimental_base_url"; + const char kDefaultBaseUrl[] = +- "https://explore-sites-ux-research.appspot.com"; ++ "https://explore-sites-ux-research.8pp2p8t.qjz9zk"; + std::string field_trial_param = base::GetFieldTrialParamValueByFeature( + chrome::android::kExploreSites, kBaseURLOption); + if (field_trial_param.empty()) +diff --git a/chrome/browser/android/vr/PRESUBMIT.py b/chrome/browser/android/vr/PRESUBMIT.py +--- a/chrome/browser/android/vr/PRESUBMIT.py ++++ b/chrome/browser/android/vr/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for changes affecting chrome/browser/android/vr + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc +--- a/chrome/browser/android/webapk/webapk_installer.cc ++++ b/chrome/browser/android/webapk/webapk_installer.cc +@@ -550,7 +550,7 @@ void WebApkInstaller::OnHaveSufficientSpaceForInstall() { + "apps on Android so that they show up in the user's app drawer and " + "optionally home screen. Web apps installed in this way are called " + "WebAPKs. See " +- "https://developers.google.com/web/fundamentals/integration/webapks " ++ "https://developers.9oo91e.qjz9zk/web/fundamentals/integration/webapks " + "for more details. WebAPKs are created on a Google server on " + "behalf of the Chrome client and the requesting app. In order for " + "the server to create a WebAPK, it first needs to know metadata " +@@ -627,7 +627,7 @@ void WebApkInstaller::OnGotIconMurmur2Hashes( + "Android so that they show up in the user's app drawer and " + "optionally home screen. Web apps installed in this way are called " + "WebAPKs. See " +- "https://developers.google.com/web/fundamentals/integration/webapks " ++ "https://developers.9oo91e.qjz9zk/web/fundamentals/integration/webapks " + "for more details. WebAPKs are created on a Google server on " + "behalf of the Chrome client and the user. In order for the server " + "to create a WebAPK, it first needs to know metadata about the web " +diff --git a/chrome/browser/apps/app_service/webapk/webapk_install_task.cc b/chrome/browser/apps/app_service/webapk/webapk_install_task.cc +--- a/chrome/browser/apps/app_service/webapk/webapk_install_task.cc ++++ b/chrome/browser/apps/app_service/webapk/webapk_install_task.cc +@@ -62,7 +62,7 @@ const uint64_t kMurmur2HashSeed = 0; + constexpr base::TimeDelta kMinterResponseTimeout = base::Seconds(60); + + constexpr char kWebApkServerUrl[] = +- "https://webapk.googleapis.com/v1/webApks?key="; ++ "https://webapk.9oo91eapis.qjz9zk/v1/webApks?key="; + + constexpr net::NetworkTrafficAnnotationTag kWebApksTrafficAnnotation = + net::DefineNetworkTrafficAnnotation("webapk_minter_install_request", +diff --git a/chrome/browser/apps/digital_goods/digital_goods_factory_impl.cc b/chrome/browser/apps/digital_goods/digital_goods_factory_impl.cc +--- a/chrome/browser/apps/digital_goods/digital_goods_factory_impl.cc ++++ b/chrome/browser/apps/digital_goods/digital_goods_factory_impl.cc +@@ -16,7 +16,7 @@ + + namespace { + +-constexpr char kSupportedPaymentMethod[] = "https://play.google.com/billing"; ++constexpr char kSupportedPaymentMethod[] = "https://play.9oo91e.qjz9zk/billing"; + + } // namespace + +diff --git a/chrome/browser/apps/platform_apps/install_chrome_app.cc b/chrome/browser/apps/platform_apps/install_chrome_app.cc +--- a/chrome/browser/apps/platform_apps/install_chrome_app.cc ++++ b/chrome/browser/apps/platform_apps/install_chrome_app.cc +@@ -24,7 +24,7 @@ namespace { + + // The URL to the webstore page for a specific app. + const char kWebstoreUrlFormat[] = +- "https://chrome.google.com/webstore/detail/%s"; ++ "https://chrome.9oo91e.qjz9zk/webstore/detail/%s"; + + // Error given when the extension is not an app. + const char kInstallChromeAppErrorNotAnApp[] = diff --git a/chrome/browser/ash/android_sms/android_sms_urls.cc b/chrome/browser/ash/android_sms/android_sms_urls.cc --- a/chrome/browser/ash/android_sms/android_sms_urls.cc +++ b/chrome/browser/ash/android_sms/android_sms_urls.cc @@ -760,6 +5085,233 @@ diff --git a/chrome/browser/ash/android_sms/android_sms_urls.cc b/chrome/browser break; } return stream; +diff --git a/chrome/browser/ash/app_mode/fake_cws.cc b/chrome/browser/ash/app_mode/fake_cws.cc +--- a/chrome/browser/ash/app_mode/fake_cws.cc ++++ b/chrome/browser/ash/app_mode/fake_cws.cc +@@ -55,7 +55,7 @@ const char kPrivateStoreAppHasUpdateTemplate[] = + + const char kUpdateContentTemplate[] = + "" +- "" + "" + "$APPS" +diff --git a/chrome/browser/ash/arc/auth/arc_background_auth_code_fetcher.cc b/chrome/browser/ash/arc/auth/arc_background_auth_code_fetcher.cc +--- a/chrome/browser/ash/arc/auth/arc_background_auth_code_fetcher.cc ++++ b/chrome/browser/ash/arc/auth/arc_background_auth_code_fetcher.cc +@@ -58,7 +58,7 @@ signin::ScopeSet GetAccessTokenScopes() { + } // namespace + + const char kAuthTokenExchangeEndPoint[] = +- "https://www.googleapis.com/oauth2/v4/ExchangeToken"; ++ "https://www.9oo91eapis.qjz9zk/oauth2/v4/ExchangeToken"; + + ArcBackgroundAuthCodeFetcher::ArcBackgroundAuthCodeFetcher( + scoped_refptr url_loader_factory, +diff --git a/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher.cc b/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher.cc +--- a/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher.cc ++++ b/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher.cc +@@ -24,7 +24,7 @@ namespace { + + // OAuth2 Client id of Android. + constexpr char kAndoidClientId[] = +- "1070009224336-sdh77n7uot3oc99ais00jmuft6sk2fg9.apps.googleusercontent.com"; ++ "1070009224336-sdh77n7uot3oc99ais00jmuft6sk2fg9.apps.9oo91eusercontent.qjz9zk"; + + policy::DeviceManagementService* GetDeviceManagementService() { + policy::BrowserPolicyConnectorAsh* const connector = +diff --git a/chrome/browser/ash/assistant/assistant_util.cc b/chrome/browser/ash/assistant/assistant_util.cc +--- a/chrome/browser/ash/assistant/assistant_util.cc ++++ b/chrome/browser/ash/assistant/assistant_util.cc +@@ -118,8 +118,8 @@ bool IsEmailDomainSupported(const Profile* profile) { + const std::string email = GetUser(profile)->GetAccountId().GetUserEmail(); + DCHECK(!email.empty()); + +- return (gaia::ExtractDomainName(email) == "gmail.com" || +- gaia::ExtractDomainName(email) == "googlemail.com" || ++ return (gaia::ExtractDomainName(email) == "9ma1l.qjz9zk" || ++ gaia::ExtractDomainName(email) == "9oo91email.qjz9zk" || + gaia::IsGoogleInternalAccountEmail(email)); + } + +diff --git a/chrome/browser/ash/attestation/attestation_ca_client.cc b/chrome/browser/ash/attestation/attestation_ca_client.cc +--- a/chrome/browser/ash/attestation/attestation_ca_client.cc ++++ b/chrome/browser/ash/attestation/attestation_ca_client.cc +@@ -33,15 +33,15 @@ const char kAttestationServerTest[] = "test"; + + // Endpoints for the default Google Privacy CA operations. + const char kDefaultEnrollRequestURL[] = +- "https://chromeos-ca.gstatic.com/enroll"; ++ "https://chromeos-ca.95tat1c.qjz9zk/enroll"; + const char kDefaultCertificateRequestURL[] = +- "https://chromeos-ca.gstatic.com/sign"; ++ "https://chromeos-ca.95tat1c.qjz9zk/sign"; + + // Endpoints for the test Google Privacy CA operations. + const char kTestEnrollRequestURL[] = +- "https://asbestos-qa.corp.google.com/enroll"; ++ "https://asbestos-qa.corp.9oo91e.qjz9zk/enroll"; + const char kTestCertificateRequestURL[] = +- "https://asbestos-qa.corp.google.com/sign"; ++ "https://asbestos-qa.corp.9oo91e.qjz9zk/sign"; + + const char kMimeContentType[] = "application/octet-stream"; + +diff --git a/chrome/browser/ash/borealis/borealis_util.cc b/chrome/browser/ash/borealis/borealis_util.cc +--- a/chrome/browser/ash/borealis/borealis_util.cc ++++ b/chrome/browser/ash/borealis/borealis_util.cc +@@ -44,7 +44,7 @@ namespace { + + // Base feedback form URL, without query parameters for prefilling. + static constexpr char kFeedbackUrl[] = +- "https://docs.google.com/forms/d/e/" ++ "https://docs.9oo91e.qjz9zk/forms/d/e/" + "1FAIpQLScGvT2BIwYJe9g15OINX2pvw6TgK8e2ihvSq3hHZudAneRmuA/" + "viewform?usp=pp_url"; + // Query parameter keys for prefilling form data. +diff --git a/chrome/browser/ash/child_accounts/child_user_service.cc b/chrome/browser/ash/child_accounts/child_user_service.cc +--- a/chrome/browser/ash/child_accounts/child_user_service.cc ++++ b/chrome/browser/ash/child_accounts/child_user_service.cc +@@ -61,7 +61,7 @@ const char ChildUserService::kFamilyLinkHelperAppPackageName[] = + "com.google.android.apps.kids.familylinkhelper"; + // static + const char ChildUserService::kFamilyLinkHelperAppPlayStoreURL[] = +- "https://play.google.com/store/apps/" ++ "https://play.9oo91e.qjz9zk/store/apps/" + "details?id=com.google.android.apps.kids.familylinkhelper"; + + ChildUserService::TestApi::TestApi(ChildUserService* service) +diff --git a/chrome/browser/ash/child_accounts/time_limits/web_time_limit_error_page/resources/web_time_limit_error_page.html b/chrome/browser/ash/child_accounts/time_limits/web_time_limit_error_page/resources/web_time_limit_error_page.html +--- a/chrome/browser/ash/child_accounts/time_limits/web_time_limit_error_page/resources/web_time_limit_error_page.html ++++ b/chrome/browser/ash/child_accounts/time_limits/web_time_limit_error_page/resources/web_time_limit_error_page.html +@@ -5,7 +5,7 @@ + + $i18n{blockPageTitle} +- ++ + + + +diff --git a/chrome/browser/ash/crostini/crostini_util.cc b/chrome/browser/ash/crostini/crostini_util.cc +--- a/chrome/browser/ash/crostini/crostini_util.cc ++++ b/chrome/browser/ash/crostini/crostini_util.cc +@@ -65,7 +65,7 @@ const char kCrostiniDefaultVmName[] = "termina"; + const char kCrostiniDefaultContainerName[] = "penguin"; + const char kCrostiniDefaultUsername[] = "emperor"; + const char kCrostiniDefaultImageServerUrl[] = +- "https://storage.googleapis.com/cros-containers/%d"; ++ "https://storage.9oo91eapis.qjz9zk/cros-containers/%d"; + const char kCrostiniDlcName[] = "termina-dlc"; + + const base::FilePath::CharType kHomeDirectory[] = FILE_PATH_LITERAL("/home"); +diff --git a/chrome/browser/ash/customization/customization_document.cc b/chrome/browser/ash/customization/customization_document.cc +--- a/chrome/browser/ash/customization/customization_document.cc ++++ b/chrome/browser/ash/customization/customization_document.cc +@@ -198,7 +198,7 @@ std::string ReadFileInBackground(const base::FilePath& file) { + + // Template URL where to fetch OEM services customization manifest from. + const char ServicesCustomizationDocument::kManifestUrl[] = +- "https://ssl.gstatic.com/chrome/chromeos-customization/%s.json"; ++ "https://ssl.95tat1c.qjz9zk/chrome/chromeos-customization/%s.json"; + + // A custom extensions::ExternalLoader that the ServicesCustomizationDocument + // creates and uses to publish OEM default apps to the extensions system. +diff --git a/chrome/browser/ash/eche_app/eche_app_notification_controller.cc b/chrome/browser/ash/eche_app/eche_app_notification_controller.cc +--- a/chrome/browser/ash/eche_app/eche_app_notification_controller.cc ++++ b/chrome/browser/ash/eche_app/eche_app_notification_controller.cc +@@ -39,10 +39,10 @@ const char kEcheAppDisabledByPhoneNotifierId[] = + + // TODO(crbug.com/1241352): This should probably have a ?p= at + // some point. +-const char kEcheAppLearnMoreUrl[] = "https://support.google.com/chromebook"; ++const char kEcheAppLearnMoreUrl[] = "https://support.9oo91e.qjz9zk/chromebook"; + + // TODO(b/193583292): Wait for UX to build help site. +-const char kEcheAppHelpUrl[] = "https://support.google.com/chromebook"; ++const char kEcheAppHelpUrl[] = "https://support.9oo91e.qjz9zk/chromebook"; + + namespace { + +diff --git a/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_constants.cc b/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_constants.cc +--- a/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_constants.cc ++++ b/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_constants.cc +@@ -10,7 +10,7 @@ namespace enhanced_network_tts { + const char kGoogApiKeyHeader[] = "X-Goog-Api-Key"; + + const char kReadAloudServerUrl[] = +- "https://readaloud.googleapis.com//v1:generateAudioDocStream"; ++ "https://readaloud.9oo91eapis.qjz9zk//v1:generateAudioDocStream"; + + const char kNetworkRequestUploadType[] = "application/json"; + +diff --git a/chrome/browser/ash/file_manager/file_manager_string_util.cc b/chrome/browser/ash/file_manager/file_manager_string_util.cc +--- a/chrome/browser/ash/file_manager/file_manager_string_util.cc ++++ b/chrome/browser/ash/file_manager/file_manager_string_util.cc +@@ -27,25 +27,25 @@ namespace { + + // Location of the page to buy more storage for Google Drive. + const char kGoogleDriveBuyStorageUrl[] = +- "https://www.google.com/settings/storage"; ++ "https://www.9oo91e.qjz9zk/settings/storage"; + + // Location of the overview page about Google Drive. + const char kGoogleDriveOverviewUrl[] = +- "https://support.google.com/chromebook/?p=filemanager_drive"; ++ "https://support.9oo91e.qjz9zk/chromebook/?p=filemanager_drive"; + + // Location of Google Drive specific help. + const char kGoogleDriveHelpUrl[] = +- "https://support.google.com/chromebook/?p=filemanager_drivehelp"; ++ "https://support.9oo91e.qjz9zk/chromebook/?p=filemanager_drivehelp"; + + // Location of the help page about making Google Drive files available offline. + const char kGoogleDriveOfflineHelpUrl[] = +- "http://support.google.com/chromebook/?p=offline_files"; ++ "http://support.9oo91e.qjz9zk/chromebook/?p=offline_files"; + + // Location of Google Drive root. +-const char kGoogleDriveRootUrl[] = "https://drive.google.com"; ++const char kGoogleDriveRootUrl[] = "https://drive.9oo91e.qjz9zk"; + + // Printf format +-const char kHelpURLFormat[] = "https://support.google.com/chromebook/answer/%d"; ++const char kHelpURLFormat[] = "https://support.9oo91e.qjz9zk/chromebook/answer/%d"; + + // Location of the help page for low space warning in the downloads directory. + const int kDownloadsLowSpaceWarningHelpNumber = 1061547; +diff --git a/chrome/browser/ash/file_manager/file_tasks.cc b/chrome/browser/ash/file_manager/file_tasks.cc +--- a/chrome/browser/ash/file_manager/file_tasks.cc ++++ b/chrome/browser/ash/file_manager/file_tasks.cc +@@ -354,13 +354,13 @@ class WebDriveOfficeValidationHelper { + disabled_actions_.emplace(web_drive_office_action_id_); + EndAdjustTasks(); + return; +- } else if (hosted_url.host() == "drive.google.com") { ++ } else if (hosted_url.host() == "drive.9oo91e.qjz9zk") { + UMA_HISTOGRAM_ENUMERATION(kWebDriveOfficeMetricName, + WebDriveOfficeTaskResult::DRIVE_ALTERNATE_URL); + disabled_actions_.emplace(web_drive_office_action_id_); + EndAdjustTasks(); + return; +- } else if (hosted_url.host() != "docs.google.com") { ++ } else if (hosted_url.host() != "docs.9oo91e.qjz9zk") { + UMA_HISTOGRAM_ENUMERATION( + kWebDriveOfficeMetricName, + WebDriveOfficeTaskResult::UNEXPECTED_ALTERNATE_URL); +diff --git a/chrome/browser/ash/hats/hats_dialog.cc b/chrome/browser/ash/hats/hats_dialog.cc +--- a/chrome/browser/ash/hats/hats_dialog.cc ++++ b/chrome/browser/ash/hats/hats_dialog.cc +@@ -53,7 +53,7 @@ const char kClientActionUnhandledError[] = "survey-loading-error"; + const char kClientSmileySelected[] = "smiley-selected-"; + + constexpr char kCrOSHaTSURL[] = +- "https://storage.googleapis.com/chromeos-hats-web-stable/index.html"; ++ "https://storage.9oo91eapis.qjz9zk/chromeos-hats-web-stable/index.html"; + + // Delimiters used to join the separate device info elements into a single + // string to be used as site context. diff --git a/chrome/browser/ash/input_method/assistive_suggester_client_filter.cc b/chrome/browser/ash/input_method/assistive_suggester_client_filter.cc --- a/chrome/browser/ash/input_method/assistive_suggester_client_filter.cc +++ b/chrome/browser/ash/input_method/assistive_suggester_client_filter.cc @@ -796,6 +5348,185 @@ diff --git a/chrome/browser/ash/input_method/assistive_suggester_client_filter.c }; const char* kTestUrls[] = { +diff --git a/chrome/browser/ash/input_method/ime_rules_config.h b/chrome/browser/ash/input_method/ime_rules_config.h +--- a/chrome/browser/ash/input_method/ime_rules_config.h ++++ b/chrome/browser/ash/input_method/ime_rules_config.h +@@ -49,10 +49,10 @@ class ImeRulesConfig { + std::vector rule_auto_correct_domain_denylist_; + // The default denylist of domains that will turn off auto_correct feature. + std::vector default_auto_correct_domain_denylist_{ +- "amazon.com", "b.corp.google.com", "classroom.google.com", +- "desmos.com", "docs.google.com", "facebook.com", ++ "amazon.com", "b.corp.9oo91e.qjz9zk", "classroom.9oo91e.qjz9zk", ++ "desmos.com", "docs.9oo91e.qjz9zk", "f8c3b00k.qjz9zk", + "instagram.com", "outlook.live.com", "outlook.office.com", +- "quizlet.com", "whatsapp.com", "youtube.com", ++ "quizlet.com", "whatsapp.com", "y0u1ub3.qjz9zk", + }; + }; + +diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_key_names.cc b/chrome/browser/ash/login/easy_unlock/easy_unlock_key_names.cc +--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_key_names.cc ++++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_key_names.cc +@@ -18,7 +18,7 @@ const char kKeyPsk[] = "psk"; + const char kKeySerializedBeaconSeeds[] = "serializedBeaconSeeds"; + const char kKeyUnlockKey[] = "unlockKey"; + const char kKeyLabelPrefix[] = "easy-unlock-"; +-const char kPermitPermitIdFormat[] = "permit://google.com/easyunlock/v1/%s"; ++const char kPermitPermitIdFormat[] = "permit://9oo91e.qjz9zk/easyunlock/v1/%s"; + const char kPermitTypeLicence[] = "licence"; + + } // namespace key_names +diff --git a/chrome/browser/ash/login/gaia_reauth_token_fetcher.cc b/chrome/browser/ash/login/gaia_reauth_token_fetcher.cc +--- a/chrome/browser/ash/login/gaia_reauth_token_fetcher.cc ++++ b/chrome/browser/ash/login/gaia_reauth_token_fetcher.cc +@@ -30,7 +30,7 @@ namespace { + + // TODO(b/197615068): Temporarily point to staging environment. + const char kGetReauthTokenUrl[] = +- "https://staging-chromeoslogin-pa.sandbox.googleapis.com/v1/rart"; ++ "https://staging-chromeoslogin-pa.sandbox.9oo91eapis.qjz9zk/v1/rart"; + const char kApiKeyParameter[] = "key"; + + constexpr base::TimeDelta kWaitTimeout = base::Seconds(5); +diff --git a/chrome/browser/ash/login/marketing_backend_connector.cc b/chrome/browser/ash/login/marketing_backend_connector.cc +--- a/chrome/browser/ash/login/marketing_backend_connector.cc ++++ b/chrome/browser/ash/login/marketing_backend_connector.cc +@@ -32,10 +32,10 @@ namespace { + + // The scope that will be used to access the ChromebookEmailService API. + const char kChromebookOAuth2Scope[] = +- "https://www.googleapis.com/auth/chromebook.email"; ++ "https://www.9oo91eapis.qjz9zk/auth/chromebook.email"; + + // API Endpoint +-const char kAccessPointsApiEndpoint[] = "https://accesspoints.googleapis.com/"; ++const char kAccessPointsApiEndpoint[] = "https://accesspoints.9oo91eapis.qjz9zk/"; + const char kChromebookEmailServicePath[] = "v2/chromebookEmailPreferences"; + constexpr size_t kResponseMaxBodySize = 4 * 1024 * 1024; // 4MiB + +diff --git a/chrome/browser/ash/login/saml/password_sync_token_fetcher.cc b/chrome/browser/ash/login/saml/password_sync_token_fetcher.cc +--- a/chrome/browser/ash/login/saml/password_sync_token_fetcher.cc ++++ b/chrome/browser/ash/login/saml/password_sync_token_fetcher.cc +@@ -73,7 +73,7 @@ const char kAcceptValue[] = + "Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; + + const char kPasswordSyncTokenBaseEndPoint[] = +- "https://chromedevicetoken.googleapis.com/v1/tokens"; ++ "https://chromedevicetoken.9oo91eapis.qjz9zk/v1/tokens"; + + const char kPasswordSyncTokenCreateEndPoint[] = ""; + +diff --git a/chrome/browser/ash/login/screens/recommend_apps/recommend_apps_fetcher_impl.cc b/chrome/browser/ash/login/screens/recommend_apps/recommend_apps_fetcher_impl.cc +--- a/chrome/browser/ash/login/screens/recommend_apps/recommend_apps_fetcher_impl.cc ++++ b/chrome/browser/ash/login/screens/recommend_apps/recommend_apps_fetcher_impl.cc +@@ -40,10 +40,10 @@ namespace ash { + namespace { + + constexpr const char kGetAppListUrl[] = +- "https://android.clients.google.com/fdfe/chrome/getfastreinstallappslist"; ++ "https://android.clients.9oo91e.qjz9zk/fdfe/chrome/getfastreinstallappslist"; + + constexpr const char kGetRevisedAppListUrl[] = +- "https://android.clients.google.com/fdfe/chrome/getSetupAppRecommendations"; ++ "https://android.clients.9oo91e.qjz9zk/fdfe/chrome/getSetupAppRecommendations"; + + constexpr int kResponseErrorNotEnoughApps = 5; + +diff --git a/chrome/browser/ash/net/network_diagnostics/arc_dns_resolution_routine.cc b/chrome/browser/ash/net/network_diagnostics/arc_dns_resolution_routine.cc +--- a/chrome/browser/ash/net/network_diagnostics/arc_dns_resolution_routine.cc ++++ b/chrome/browser/ash/net/network_diagnostics/arc_dns_resolution_routine.cc +@@ -21,9 +21,9 @@ namespace mojom = ::chromeos::network_diagnostics::mojom; + + // These hostnames were chosen because they need to be resolved for a + // successful ARC provisioning step. +-constexpr char kHostname1[] = "www.googleapis.com"; +-constexpr char kHostname2[] = "android.clients.google.com"; +-constexpr char kHostname3[] = "android.googleapis.com"; ++constexpr char kHostname1[] = "www.9oo91eapis.qjz9zk"; ++constexpr char kHostname2[] = "android.clients.9oo91e.qjz9zk"; ++constexpr char kHostname3[] = "android.9oo91eapis.qjz9zk"; + + } // namespace + +diff --git a/chrome/browser/ash/net/network_diagnostics/dns_latency_routine.cc b/chrome/browser/ash/net/network_diagnostics/dns_latency_routine.cc +--- a/chrome/browser/ash/net/network_diagnostics/dns_latency_routine.cc ++++ b/chrome/browser/ash/net/network_diagnostics/dns_latency_routine.cc +@@ -43,7 +43,7 @@ constexpr base::TimeDelta kBadLatencyMs = + base::Milliseconds(util::kDnsPotentialProblemLatencyMs); + constexpr base::TimeDelta kVeryBadLatencyMs = + base::Milliseconds(util::kDnsProblemLatencyMs); +-constexpr char kHostSuffix[] = "-ccd-testing-v4.metric.gstatic.com"; ++constexpr char kHostSuffix[] = "-ccd-testing-v4.metric.95tat1c.qjz9zk"; + + const std::string GetRandomString(int length) { + std::string prefix; +diff --git a/chrome/browser/ash/net/network_diagnostics/dns_resolution_routine.cc b/chrome/browser/ash/net/network_diagnostics/dns_resolution_routine.cc +--- a/chrome/browser/ash/net/network_diagnostics/dns_resolution_routine.cc ++++ b/chrome/browser/ash/net/network_diagnostics/dns_resolution_routine.cc +@@ -26,7 +26,7 @@ namespace { + // TODO(https://crbug.com/1164001): remove when migrated to namespace ash. + namespace mojom = ::chromeos::network_diagnostics::mojom; + +-constexpr char kHostname[] = "ccd-testing-v4.gstatic.com"; ++constexpr char kHostname[] = "ccd-testing-v4.95tat1c.qjz9zk"; + constexpr int kHttpPort = 80; + // For an explanation of error codes, see "net/base/net_error_list.h". + constexpr int kRetryResponseCodes[] = {net::ERR_TIMED_OUT, +diff --git a/chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.cc b/chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.cc +--- a/chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.cc ++++ b/chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.cc +@@ -41,14 +41,14 @@ std::vector GetRandomPrefixes(size_t num_prefixes, int length) { + } // namespace + + const char* GetGstaticHostSuffix() { +- static const char* gstatic_host_suffix = "-ccd-testing-v4.metric.gstatic.com"; ++ static const char* gstatic_host_suffix = "-ccd-testing-v4.metric.95tat1c.qjz9zk"; + return gstatic_host_suffix; + } + + const std::vector& GetFixedHosts() { + static base::NoDestructor> fixed_hostnames( +- {"www.google.com", "mail.google.com", "drive.google.com", +- "accounts.google.com", "plus.google.com", "groups.google.com"}); ++ {"www.9oo91e.qjz9zk", "mail.9oo91e.qjz9zk", "drive.9oo91e.qjz9zk", ++ "accounts.9oo91e.qjz9zk", "plus.9oo91e.qjz9zk", "groups.9oo91e.qjz9zk"}); + return *fixed_hostnames; + } + +@@ -200,10 +200,10 @@ std::vector GetTcpPortsForCustomStunServer() { + + std::vector GetDefaultMediaUrls() { + const char* const kHostnames[] = { +- "https://apis.google.com", "https://talkgadget.google.com", +- "https://clients6.google.com", "https://hangouts.google.com", +- "https://client-channel.google.com", "https://googleapis.com", +- "https://accounts.google.com", "https://clients4.google.com"}; ++ "https://apis.9oo91e.qjz9zk", "https://talkgadget.9oo91e.qjz9zk", ++ "https://clients6.9oo91e.qjz9zk", "https://hangouts.9oo91e.qjz9zk", ++ "https://client-channel.9oo91e.qjz9zk", "https://9oo91eapis.qjz9zk", ++ "https://accounts.9oo91e.qjz9zk", "https://clients4.9oo91e.qjz9zk"}; + std::vector hostnames; + for (auto* const& hostname : kHostnames) { + hostnames.push_back(GURL(hostname)); +diff --git a/chrome/browser/ash/net/network_diagnostics/video_conferencing_routine.cc b/chrome/browser/ash/net/network_diagnostics/video_conferencing_routine.cc +--- a/chrome/browser/ash/net/network_diagnostics/video_conferencing_routine.cc ++++ b/chrome/browser/ash/net/network_diagnostics/video_conferencing_routine.cc +@@ -25,12 +25,12 @@ namespace { + // TODO(https://crbug.com/1164001): remove when migrated to namespace ash. + namespace mojom = ::chromeos::network_diagnostics::mojom; + +-const char kDefaultStunServer[] = "stun.l.google.com"; ++const char kDefaultStunServer[] = "stun.l.9oo91e.qjz9zk"; + + } // namespace + + // TODO(crbug/1227877): Move support details to the UI. +-const char kSupportDetails[] = "https://support.google.com/a/answer/1279090"; ++const char kSupportDetails[] = "https://support.9oo91e.qjz9zk/a/answer/1279090"; + const base::TimeDelta kTimeoutAfterHostResolution = base::Seconds(10); + + VideoConferencingRoutine::VideoConferencingRoutine() diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_diagnostics.cc b/chrome/browser/ash/plugin_vm/plugin_vm_diagnostics.cc --- a/chrome/browser/ash/plugin_vm/plugin_vm_diagnostics.cc +++ b/chrome/browser/ash/plugin_vm/plugin_vm_diagnostics.cc @@ -817,10 +5548,24 @@ diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_diagnostics.cc b/chrome/brow } else { // Everything is good. Do nothing. } +diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_license_checker.cc b/chrome/browser/ash/plugin_vm/plugin_vm_license_checker.cc +--- a/chrome/browser/ash/plugin_vm/plugin_vm_license_checker.cc ++++ b/chrome/browser/ash/plugin_vm/plugin_vm_license_checker.cc +@@ -34,8 +34,8 @@ namespace plugin_vm { + namespace { + + constexpr char kValidationOAuth2Scope[] = +- "https://www.googleapis.com/auth/applicense.bytebot"; +-constexpr char kValidationEndpoint[] = "https://bytebot.googleapis.com/"; ++ "https://www.9oo91eapis.qjz9zk/auth/applicense.bytebot"; ++constexpr char kValidationEndpoint[] = "https://bytebot.9oo91eapis.qjz9zk/"; + constexpr char kValidationServicePath[] = + "v1/applications/chromePluginVm:getLicenseStatus"; + constexpr char kValidationServiceQuery[] = "?checkOnly=true&access_token="; diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_util.cc b/chrome/browser/ash/plugin_vm/plugin_vm_util.cc --- a/chrome/browser/ash/plugin_vm/plugin_vm_util.cc +++ b/chrome/browser/ash/plugin_vm/plugin_vm_util.cc -@@ -111,7 +111,7 @@ void RemoveDriveDownloadDirectoryIfExists() { +@@ -112,7 +112,7 @@ void RemoveDriveDownloadDirectoryIfExists() { absl::optional GetIdFromDriveUrl(const GURL& url) { const std::string& spec = url.spec(); @@ -829,7 +5574,7 @@ diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_util.cc b/chrome/browser/ash if (base::StartsWith(spec, kOpenUrlBase, base::CompareCase::INSENSITIVE_ASCII)) { // e.g. https://drive.google.com/open?id=[ID] -@@ -123,9 +123,9 @@ absl::optional GetIdFromDriveUrl(const GURL& url) { +@@ -124,9 +124,9 @@ absl::optional GetIdFromDriveUrl(const GURL& url) { // These will match some invalid URLs, which is fine. const std::string kViewUrlPatternWithDomain = @@ -841,6 +5586,60 @@ diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_util.cc b/chrome/browser/ash if (base::MatchPattern(spec, kViewUrlPatternWithDomain) || base::MatchPattern(spec, kViewUrlPatternWithoutDomain)) { // e.g. https://drive.google.com/a/example.org/file/d/[ID]/view?usp=sharing +diff --git a/chrome/browser/ash/policy/enrollment/account_status_check_fetcher.cc b/chrome/browser/ash/policy/enrollment/account_status_check_fetcher.cc +--- a/chrome/browser/ash/policy/enrollment/account_status_check_fetcher.cc ++++ b/chrome/browser/ash/policy/enrollment/account_status_check_fetcher.cc +@@ -140,7 +140,7 @@ const char* const kKnownConsumerDomains[] = {"123mail.org", + "execs.com", + "exemail.com.au", + "f-m.fm", +- "facebook.com", ++ "f8c3b00k.qjz9zk", + "fast-email.com", + "fast-mail.org", + "fastem.com", +@@ -179,9 +179,9 @@ const char* const kKnownConsumerDomains[] = {"123mail.org", + "gardener.com", + "geologist.com", + "germanymail.com", +- "gmail.com", ++ "9ma1l.qjz9zk", + "gmx.com", +- "googlemail.com", ++ "9oo91email.qjz9zk", + "graduate.org", + "graphic-designer.com", + "greenmail.net", +diff --git a/chrome/browser/ash/policy/handlers/powerwash_requirements_checker.cc b/chrome/browser/ash/policy/handlers/powerwash_requirements_checker.cc +--- a/chrome/browser/ash/policy/handlers/powerwash_requirements_checker.cc ++++ b/chrome/browser/ash/policy/handlers/powerwash_requirements_checker.cc +@@ -53,7 +53,7 @@ const gfx::VectorIcon& kNotificationIcon = vector_icons::kBusinessIcon; + constexpr mc::SystemNotificationWarningLevel kNotificationLevel = + mc::SystemNotificationWarningLevel::NORMAL; + const char kNotificationLearnMoreLink[] = +- "https://support.google.com/chromebook?p=factory_reset"; ++ "https://support.9oo91e.qjz9zk/chromebook?p=factory_reset"; + + std::u16string GetEnterpriseManager() { + policy::BrowserPolicyConnectorAsh* connector = +diff --git a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.cc b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.cc +--- a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.cc ++++ b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.cc +@@ -33,11 +33,11 @@ namespace { + + // OAuth2 Token scopes + constexpr char kCloudDevicesOAuth2Scope[] = +- "https://www.googleapis.com/auth/clouddevices"; ++ "https://www.9oo91eapis.qjz9zk/auth/clouddevices"; + constexpr char kChromotingRemoteSupportOAuth2Scope[] = +- "https://www.googleapis.com/auth/chromoting.remote.support"; ++ "https://www.9oo91eapis.qjz9zk/auth/chromoting.remote.support"; + constexpr char kTachyonOAuth2Scope[] = +- "https://www.googleapis.com/auth/tachyon"; ++ "https://www.9oo91eapis.qjz9zk/auth/tachyon"; + + // Job parameters fields: + diff --git a/chrome/browser/ash/policy/uploading/heartbeat_scheduler.cc b/chrome/browser/ash/policy/uploading/heartbeat_scheduler.cc --- a/chrome/browser/ash/policy/uploading/heartbeat_scheduler.cc +++ b/chrome/browser/ash/policy/uploading/heartbeat_scheduler.cc @@ -870,6 +5669,416 @@ diff --git a/chrome/browser/ash/u2f_notification.cc b/chrome/browser/ash/u2f_not "u2f-ecdsa-vulnerability"; // Notification button identifiers. +diff --git a/chrome/browser/ash/wallpaper_handlers/wallpaper_handlers.cc b/chrome/browser/ash/wallpaper_handlers/wallpaper_handlers.cc +--- a/chrome/browser/ash/wallpaper_handlers/wallpaper_handlers.cc ++++ b/chrome/browser/ash/wallpaper_handlers/wallpaper_handlers.cc +@@ -51,17 +51,17 @@ constexpr char kProtoMimeType[] = "application/x-protobuf"; + + // The url to download the proto of the complete list of wallpaper collections. + constexpr char kBackdropCollectionsUrl[] = +- "https://clients3.google.com/cast/chromecast/home/wallpaper/" ++ "https://clients3.9oo91e.qjz9zk/cast/chromecast/home/wallpaper/" + "collections?rt=b"; + + // The url to download the proto of a specific wallpaper collection. + constexpr char kBackdropImagesUrl[] = +- "https://clients3.google.com/cast/chromecast/home/wallpaper/" ++ "https://clients3.9oo91e.qjz9zk/cast/chromecast/home/wallpaper/" + "collection-images?rt=b"; + + // The url to download the proto of the info of a surprise me wallpaper. + constexpr char kBackdropSurpriseMeImageUrl[] = +- "https://clients3.google.com/cast/chromecast/home/wallpaper/" ++ "https://clients3.9oo91e.qjz9zk/cast/chromecast/home/wallpaper/" + "image?rt=b"; + + // The label used to return exclusive content or filter unwanted images. +@@ -72,12 +72,12 @@ constexpr char kGoogleDeviceFilteringLabel[] = "google_branded_chromebook"; + + // The URL to download an album's photos from a user's Google Photos library. + constexpr char kGooglePhotosAlbumUrl[] = +- "https://photosfirstparty-pa.googleapis.com/v1/chromeos/" ++ "https://photosfirstparty-pa.9oo91eapis.qjz9zk/v1/chromeos/" + "collectionById:read"; + + // The URL to download the albums in a user's Google Photos library. + constexpr char kGooglePhotosAlbumsUrl[] = +- "https://photosfirstparty-pa.googleapis.com/v1/chromeos/" ++ "https://photosfirstparty-pa.9oo91eapis.qjz9zk/v1/chromeos/" + "userCollections:read"; + + constexpr net::NetworkTrafficAnnotationTag +@@ -105,7 +105,7 @@ constexpr net::NetworkTrafficAnnotationTag + + // The URL to download the number of photos in a user's Google Photos library. + constexpr char kGooglePhotosCountUrl[] = +- "https://photosfirstparty-pa.googleapis.com/v1/chromeos/user:read"; ++ "https://photosfirstparty-pa.9oo91eapis.qjz9zk/v1/chromeos/user:read"; + + constexpr net::NetworkTrafficAnnotationTag kGooglePhotosCountTrafficAnnotation = + net::DefineNetworkTrafficAnnotation("wallpaper_google_photos_count", +@@ -129,7 +129,7 @@ constexpr net::NetworkTrafficAnnotationTag kGooglePhotosCountTrafficAnnotation = + + // The URL to download whether the user is allowed to access Google Photos data. + constexpr char kGooglePhotosEnabledUrl[] = +- "https://photosfirstparty-pa.googleapis.com/v1/chromeos/userenabled:read"; ++ "https://photosfirstparty-pa.9oo91eapis.qjz9zk/v1/chromeos/userenabled:read"; + + constexpr net::NetworkTrafficAnnotationTag + kGooglePhotosEnabledTrafficAnnotation = +@@ -155,11 +155,11 @@ constexpr net::NetworkTrafficAnnotationTag + + // The URL to download a photo from a user's Google Photos library. + constexpr char kGooglePhotosPhotoUrl[] = +- "https://photosfirstparty-pa.googleapis.com/v1/chromeos/itemById:read"; ++ "https://photosfirstparty-pa.9oo91eapis.qjz9zk/v1/chromeos/itemById:read"; + + // The URL to download all visible photos in a user's Google Photos library. + constexpr char kGooglePhotosPhotosUrl[] = +- "https://photosfirstparty-pa.googleapis.com/v1/chromeos/userItems:read"; ++ "https://photosfirstparty-pa.9oo91eapis.qjz9zk/v1/chromeos/userItems:read"; + + constexpr net::NetworkTrafficAnnotationTag + kGooglePhotosPhotosTrafficAnnotation = +diff --git a/chrome/browser/ash/web_applications/terminal_source.cc b/chrome/browser/ash/web_applications/terminal_source.cc +--- a/chrome/browser/ash/web_applications/terminal_source.cc ++++ b/chrome/browser/ash/web_applications/terminal_source.cc +@@ -158,8 +158,8 @@ std::string TerminalSource::GetContentSecurityPolicy( + switch (directive) { + case network::mojom::CSPDirectiveName::ConnectSrc: + return "connect-src 'self' " +- "https://*.corp.google.com:* wss://*.corp.google.com:* " +- "https://*.r.ext.google.com:* wss://*.r.ext.google.com:*;"; ++ "https://*.corp.9oo91e.qjz9zk:* wss://*.corp.9oo91e.qjz9zk:* " ++ "https://*.r.ext.9oo91e.qjz9zk:* wss://*.r.ext.9oo91e.qjz9zk:*;"; + case network::mojom::CSPDirectiveName::FrameAncestors: + return "frame-ancestors 'self';"; + case network::mojom::CSPDirectiveName::FrameSrc: +diff --git a/chrome/browser/autofill/autofill_gstatic_reader.cc b/chrome/browser/autofill/autofill_gstatic_reader.cc +--- a/chrome/browser/autofill/autofill_gstatic_reader.cc ++++ b/chrome/browser/autofill/autofill_gstatic_reader.cc +@@ -27,9 +27,9 @@ static const char kTokenizationBinRangeAllowlistKey[] = + static const char kTokenizationMerchantAllowlistKey[] = + "cpan_eligible_merchant_wl"; + static const char kTokenizationBinRangeAllowlistURL[] = +- "https://www.gstatic.com/autofill/hourly/bins.json"; ++ "https://www.95tat1c.qjz9zk/autofill/hourly/bins.json"; + static const char kTokenizationMerchantAllowlistURL[] = +- "https://www.gstatic.com/autofill/weekly/merchants.json"; ++ "https://www.95tat1c.qjz9zk/autofill/weekly/merchants.json"; + static const size_t kMaxDownloadSize = 30 * 1024; + } // namespace + +diff --git a/chrome/browser/browser_switcher/browser_switcher_service.cc b/chrome/browser/browser_switcher/browser_switcher_service.cc +--- a/chrome/browser/browser_switcher/browser_switcher_service.cc ++++ b/chrome/browser/browser_switcher/browser_switcher_service.cc +@@ -54,7 +54,7 @@ constexpr net::NetworkTrafficAnnotationTag traffic_annotation = + "an alternative browser. This is often on the organization's " + "intranet. For more information on Internet Explorer's Enterprise " + "Mode, see: " +- "https://docs.microsoft.com/internet-explorer/ie11-deploy-guide" ++ "https://docs.m1cr050ft.qjz9zk/internet-explorer/ie11-deploy-guide" + "/what-is-enterprise-mode" + trigger: + "1 minute after browser startup, and then refreshes every 30 " +diff --git a/chrome/browser/cart/cart_discount_fetcher.cc b/chrome/browser/cart/cart_discount_fetcher.cc +--- a/chrome/browser/cart/cart_discount_fetcher.cc ++++ b/chrome/browser/cart/cart_discount_fetcher.cc +@@ -32,7 +32,7 @@ const char kAcceptLanguageKey[] = "Accept-Language"; + const char kClientDataHeader[] = "X-Client-Data"; + + const char kFetchDiscountsEndpoint[] = +- "https://memex-pa.googleapis.com/v1/shopping/cart/discounts"; ++ "https://memex-pa.9oo91eapis.qjz9zk/v1/shopping/cart/discounts"; + const int64_t kTimeoutMs = 30000; + + const char kCartDiscountFetcherEndpointParam[] = +diff --git a/chrome/browser/cart/cart_discount_link_fetcher.cc b/chrome/browser/cart/cart_discount_link_fetcher.cc +--- a/chrome/browser/cart/cart_discount_link_fetcher.cc ++++ b/chrome/browser/cart/cart_discount_link_fetcher.cc +@@ -22,7 +22,7 @@ const char kPostMethod[] = "POST"; + const char kContentType[] = "application/json; charset=UTF-8"; + + const char kFetchDiscountLinkEndpoint[] = +- "https://memex-pa.googleapis.com/v1/shopping/cart/discounted"; ++ "https://memex-pa.9oo91eapis.qjz9zk/v1/shopping/cart/discounted"; + const int64_t kTimeoutMs = 30000; + } // namespace + +diff --git a/chrome/browser/cart/cart_service.cc b/chrome/browser/cart/cart_service.cc +--- a/chrome/browser/cart/cart_service.cc ++++ b/chrome/browser/cart/cart_service.cc +@@ -616,17 +616,17 @@ void CartService::AddCartsWithFakeData() { + u"15%")); + dummy_proto1.mutable_discount_info()->set_has_coupons(true); + dummy_proto1.add_product_image_urls( +- "https://encrypted-tbn3.gstatic.com/" ++ "https://encrypted-tbn3.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQpn38jB2_BANnHUFa7kHJsf6SyubcgeU1lNYO_" + "ZxM1Q2ju_ZMjv2EwNh0Zx_zbqYy_mFg_aiIhWYnD5PQ7t-uFzLM5cN77s_2_" + "DFNeumI-LMPJMYjW-BOSaA&usqp=CAY"); + dummy_proto1.add_product_image_urls( +- "https://encrypted-tbn0.gstatic.com/" ++ "https://encrypted-tbn0.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQyMRYWeM2Yq095nOXTL0-" + "EUUnm79kh6hnw8yctJUNrAuse607KEr1CVxEa24r-" + "8XHBuhTwcuC4GXeN94h9Kn19DhdBGsXG0qrD74veYSDJNLrUP-sru0jH&usqp=CAY"); + dummy_proto1.add_product_image_urls( +- "https://encrypted-tbn1.gstatic.com/" ++ "https://encrypted-tbn1.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcT2ew6Aydzu5VzRV756ORGha6fyjKp_On7iTlr_" + "tL9vODnlNtFo_xsxj6_lCop-3J0Vk44lHfk-AxoBJDABVHPVFN-" + "EiWLcZvzkdpHFqcurm7fBVmWtYKo2rg&usqp=CAY"); +@@ -657,12 +657,12 @@ void CartService::AddCartsWithFakeData() { + l10n_util::GetStringFUTF8(IDS_NTP_MODULES_CART_DISCOUNT_CHIP_AMOUNT, + u"20%")); + dummy_proto2.add_product_image_urls( +- "https://encrypted-tbn3.gstatic.com/" ++ "https://encrypted-tbn3.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQpn38jB2_BANnHUFa7kHJsf6SyubcgeU1lNYO_" + "ZxM1Q2ju_ZMjv2EwNh0Zx_zbqYy_mFg_aiIhWYnD5PQ7t-uFzLM5cN77s_2_" + "DFNeumI-LMPJMYjW-BOSaA&usqp=CAY"); + dummy_proto2.add_product_image_urls( +- "https://encrypted-tbn0.gstatic.com/" ++ "https://encrypted-tbn0.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQyMRYWeM2Yq095nOXTL0-" + "EUUnm79kh6hnw8yctJUNrAuse607KEr1CVxEa24r-" + "8XHBuhTwcuC4GXeN94h9Kn19DhdBGsXG0qrD74veYSDJNLrUP-sru0jH&usqp=CAY"); +@@ -680,7 +680,7 @@ void CartService::AddCartsWithFakeData() { + l10n_util::GetStringFUTF8(IDS_NTP_MODULES_CART_DISCOUNT_CHIP_UP_TO_AMOUNT, + u"$50")); + dummy_proto3.add_product_image_urls( +- "https://encrypted-tbn3.gstatic.com/" ++ "https://encrypted-tbn3.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQpn38jB2_BANnHUFa7kHJsf6SyubcgeU1lNYO_" + "ZxM1Q2ju_ZMjv2EwNh0Zx_zbqYy_mFg_aiIhWYnD5PQ7t-uFzLM5cN77s_2_" + "DFNeumI-LMPJMYjW-BOSaA&usqp=CAY"); +@@ -695,12 +695,12 @@ void CartService::AddCartsWithFakeData() { + dummy_proto4.set_merchant_cart_url(dummy_url4.spec()); + dummy_proto4.set_timestamp(time_now + 3); + dummy_proto4.add_product_image_urls( +- "https://encrypted-tbn0.gstatic.com/" ++ "https://encrypted-tbn0.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQyMRYWeM2Yq095nOXTL0-" + "EUUnm79kh6hnw8yctJUNrAuse607KEr1CVxEa24r-" + "8XHBuhTwcuC4GXeN94h9Kn19DhdBGsXG0qrD74veYSDJNLrUP-sru0jH&usqp=CAY"); + dummy_proto4.add_product_image_urls( +- "https://encrypted-tbn1.gstatic.com/" ++ "https://encrypted-tbn1.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcT2ew6Aydzu5VzRV756ORGha6fyjKp_On7iTlr_" + "tL9vODnlNtFo_xsxj6_lCop-3J0Vk44lHfk-AxoBJDABVHPVFN-" + "EiWLcZvzkdpHFqcurm7fBVmWtYKo2rg&usqp=CAY"); +@@ -715,7 +715,7 @@ void CartService::AddCartsWithFakeData() { + dummy_proto5.set_merchant_cart_url(dummy_url5.spec()); + dummy_proto5.set_timestamp(time_now + 2); + dummy_proto5.add_product_image_urls( +- "https://encrypted-tbn3.gstatic.com/" ++ "https://encrypted-tbn3.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQpn38jB2_BANnHUFa7kHJsf6SyubcgeU1lNYO_" + "ZxM1Q2ju_ZMjv2EwNh0Zx_zbqYy_mFg_aiIhWYnD5PQ7t-uFzLM5cN77s_2_" + "DFNeumI-LMPJMYjW-BOSaA&usqp=CAY"); +@@ -730,17 +730,17 @@ void CartService::AddCartsWithFakeData() { + dummy_proto6.set_merchant_cart_url(dummy_url6.spec()); + dummy_proto6.set_timestamp(time_now + 1); + dummy_proto6.add_product_image_urls( +- "https://encrypted-tbn3.gstatic.com/" ++ "https://encrypted-tbn3.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQpn38jB2_BANnHUFa7kHJsf6SyubcgeU1lNYO_" + "ZxM1Q2ju_ZMjv2EwNh0Zx_zbqYy_mFg_aiIhWYnD5PQ7t-uFzLM5cN77s_2_" + "DFNeumI-LMPJMYjW-BOSaA&usqp=CAY"); + dummy_proto6.add_product_image_urls( +- "https://encrypted-tbn0.gstatic.com/" ++ "https://encrypted-tbn0.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcQyMRYWeM2Yq095nOXTL0-" + "EUUnm79kh6hnw8yctJUNrAuse607KEr1CVxEa24r-" + "8XHBuhTwcuC4GXeN94h9Kn19DhdBGsXG0qrD74veYSDJNLrUP-sru0jH&usqp=CAY"); + dummy_proto6.add_product_image_urls( +- "https://encrypted-tbn1.gstatic.com/" ++ "https://encrypted-tbn1.95tat1c.qjz9zk/" + "shopping?q=tbn:ANd9GcT2ew6Aydzu5VzRV756ORGha6fyjKp_On7iTlr_" + "tL9vODnlNtFo_xsxj6_lCop-3J0Vk44lHfk-AxoBJDABVHPVFN-" + "EiWLcZvzkdpHFqcurm7fBVmWtYKo2rg&usqp=CAY"); +diff --git a/chrome/browser/cart/fetch_discount_worker.cc b/chrome/browser/cart/fetch_discount_worker.cc +--- a/chrome/browser/cart/fetch_discount_worker.cc ++++ b/chrome/browser/cart/fetch_discount_worker.cc +@@ -26,7 +26,7 @@ + + namespace { + const char kOauthName[] = "rbd"; +-const char kOauthScopes[] = "https://www.googleapis.com/auth/chromememex"; ++const char kOauthScopes[] = "https://www.9oo91eapis.qjz9zk/auth/chromememex"; + const char kEmptyToken[] = ""; + } // namespace + +diff --git a/chrome/browser/cart/resources/cart_domain_cart_url_mapping.json b/chrome/browser/cart/resources/cart_domain_cart_url_mapping.json +--- a/chrome/browser/cart/resources/cart_domain_cart_url_mapping.json ++++ b/chrome/browser/cart/resources/cart_domain_cart_url_mapping.json +@@ -63,7 +63,7 @@ + "lululemon.com": "https://shop.lululemon.com/shop/mybag", + "lulus.com": "https://www.lulus.com/checkout/bag", + "macys.com": "https://www.macys.com/my-bag", +-"microsoft.com": "https://www.microsoft.com/en-us/store/cart", ++"m1cr050ft.qjz9zk": "https://www.m1cr050ft.qjz9zk/en-us/store/cart", + "midwayusa.com": "https://www.midwayusa.com/cart", + "neimanmarcus.com": "https://www.neimanmarcus.com/checkout/cart.jsp", + "newegg.com": "https://secure.newegg.com/shop/cart", +diff --git a/chrome/browser/cart/resources/cart_domain_name_mapping.json b/chrome/browser/cart/resources/cart_domain_name_mapping.json +--- a/chrome/browser/cart/resources/cart_domain_name_mapping.json ++++ b/chrome/browser/cart/resources/cart_domain_name_mapping.json +@@ -63,7 +63,7 @@ + "lululemon.com": "lululemon", + "lulus.com": "Lulus", + "macys.com": "Macy's", +-"microsoft.com": "Microsoft", ++"m1cr050ft.qjz9zk": "Microsoft", + "midwayusa.com": "MidwayUSA", + "neimanmarcus.com": "Neiman Marcus", + "newegg.com": "Newegg", +diff --git a/chrome/browser/chrome_browser_application_mac.mm b/chrome/browser/chrome_browser_application_mac.mm +--- a/chrome/browser/chrome_browser_application_mac.mm ++++ b/chrome/browser/chrome_browser_application_mac.mm +@@ -155,7 +155,7 @@ std::string DescriptionForNSEvent(NSEvent* event) { + + //////////////////////////////////////////////////////////////////////////////// + // HISTORICAL COMMENT (by viettrungluu, from +-// http://codereview.chromium.org/1520006 with mild editing): ++// http://codereview.ch40m1um.qjz9zk/1520006 with mild editing): + // + // A quick summary of the state of things (before the changes to shutdown): + // +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 +@@ -1130,7 +1130,7 @@ void LaunchURL(base::WeakPtr client, + "'allow-top-navigation-by-user-activation', " + "'allow-top-navigation', or " + "'allow-popups'. See " +- "https://chromestatus.com/feature/5680742077038592 and " ++ "https://ch40mestatus.qjz9zk/feature/5680742077038592 and " + "https://chromeenterprise.google/policies/" + "#SandboxExternalProtocolBlocked"); + return; +@@ -1146,7 +1146,7 @@ void LaunchURL(base::WeakPtr client, + "'allow-top-navigation-by-user-activation', " + "'allow-top-navigation', or " + "'allow-popups'. See " +- "https://chromestatus.com/feature/5680742077038592 and " ++ "https://ch40mestatus.qjz9zk/feature/5680742077038592 and " + "https://chromeenterprise.google/policies/" + "#SandboxExternalProtocolBlocked"); + } +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 { + + using api::file_manager_private::ProfileInfo; + +-const char kCWSScope[] = "https://www.googleapis.com/auth/chromewebstore"; ++const char kCWSScope[] = "https://www.9oo91eapis.qjz9zk/auth/chromewebstore"; + + // Thresholds for mountCrostini() API. + constexpr base::TimeDelta kMountCrostiniSlowOperationThreshold = +diff --git a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_bubble_constants.h b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_bubble_constants.h +--- a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_bubble_constants.h ++++ b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_bubble_constants.h +@@ -35,7 +35,7 @@ constexpr int kClipboardDlpWarnDurationMs = 16000; + + // Link to the Help Center article about Data Leak Prevention. + constexpr char kDlpLearnMoreUrl[] = +- "https://support.google.com/chrome/a/?p=chromeos_datacontrols"; ++ "https://support.9oo91e.qjz9zk/chrome/a/?p=chromeos_datacontrols"; + + } // namespace policy + +diff --git a/chrome/browser/devtools/url_constants.cc b/chrome/browser/devtools/url_constants.cc +--- a/chrome/browser/devtools/url_constants.cc ++++ b/chrome/browser/devtools/url_constants.cc +@@ -4,7 +4,7 @@ + + #include "chrome/browser/devtools/url_constants.h" + +-const char kRemoteFrontendDomain[] = "chrome-devtools-frontend.appspot.com"; ++const char kRemoteFrontendDomain[] = "chrome-devtools-frontend.8pp2p8t.qjz9zk"; + const char kRemoteFrontendBase[] = +- "https://chrome-devtools-frontend.appspot.com/"; ++ "https://chrome-devtools-frontend.8pp2p8t.qjz9zk/"; + const char kRemoteFrontendPath[] = "serve_file"; +diff --git a/chrome/browser/download/mixed_content_download_blocking.cc b/chrome/browser/download/mixed_content_download_blocking.cc +--- a/chrome/browser/download/mixed_content_download_blocking.cc ++++ b/chrome/browser/download/mixed_content_download_blocking.cc +@@ -317,7 +317,7 @@ void PrintConsoleMessage(const MixedContentDownloadData& data, + "connection, but the file at '%s' was %s an insecure " + "connection. This file should be served over HTTPS. " + "This download %s. See " +- "https://blog.chromium.org/2020/02/" ++ "https://blog.ch40m1um.qjz9zk/2020/02/" + "protecting-users-from-insecure.html" + " for more details.", + data.initiator_->GetURL().spec().c_str(), +diff --git a/chrome/browser/enterprise/connectors/connectors_service.cc b/chrome/browser/enterprise/connectors/connectors_service.cc +--- a/chrome/browser/enterprise/connectors/connectors_service.cc ++++ b/chrome/browser/enterprise/connectors/connectors_service.cc +@@ -140,7 +140,7 @@ const char kServiceProviderConfig[] = R"({ + "version": { + "1": { + "analysis": { +- "url": "https://safebrowsing.google.com/safebrowsing/uploads/scan", ++ "url": "https://safebrowsing.9oo91e.qjz9zk/safebrowsing/uploads/scan", + "supported_tags": [ + { + "name": "malware", +@@ -193,7 +193,7 @@ const char kServiceProviderConfig[] = R"({ + ] + }, + "reporting": { +- "url": "https://chromereporting-pa.googleapis.com/v1/events" ++ "url": "https://chromereporting-pa.9oo91eapis.qjz9zk/v1/events" + } + } + } +diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service/rotate_util.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service/rotate_util.cc +--- a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service/rotate_util.cc ++++ b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service/rotate_util.cc +@@ -21,7 +21,7 @@ namespace enterprise_connectors { + + namespace { + +-constexpr char kStableChannelHostName[] = "m.google.com"; ++constexpr char kStableChannelHostName[] = "m.9oo91e.qjz9zk"; + + // Returns decoded value from the base-64 `encoded_value`, or null + // in case of a decoding error. The returned value is an opaque binary +diff --git a/chrome/browser/enterprise/connectors/file_system/browsertest_helper.cc b/chrome/browser/enterprise/connectors/file_system/browsertest_helper.cc +--- a/chrome/browser/enterprise/connectors/file_system/browsertest_helper.cc ++++ b/chrome/browser/enterprise/connectors/file_system/browsertest_helper.cc +@@ -20,7 +20,7 @@ namespace enterprise_connectors { + std::string GetAllAllowedTestPolicy(const char* enterprise_id) { + const char kConnectorPolicyString[] = R"PREFIX( + [ { +- "domain": "google.com", ++ "domain": "9oo91e.qjz9zk", + "enable": [ { + "mime_types": [ "*" ], + "url_list": [ "*" ] +@@ -36,7 +36,7 @@ std::string GetTestPolicyWithEnabledFilter(const char* enterprise_id, + const char* include_mime) { + const char kConnectorPolicyString[] = R"PREFIX( + [ { +- "domain": "google.com", ++ "domain": "9oo91e.qjz9zk", + "enable": [ { + "mime_types": [ "%s" ], + "url_list": [ "%s" ] +@@ -53,7 +53,7 @@ std::string GetTestPolicyWithDisabledFilter(const char* enterprise_id, + const char* exclude_mime) { + const char kConnectorPolicyString[] = R"PREFIX( + [ { +- "domain": "google.com", ++ "domain": "9oo91e.qjz9zk", + "enable": [ { + "mime_types": [ "*" ], + "url_list": [ "*" ] diff --git a/chrome/browser/enterprise/connectors/file_system/signin_dialog_delegate.cc b/chrome/browser/enterprise/connectors/file_system/signin_dialog_delegate.cc --- a/chrome/browser/enterprise/connectors/file_system/signin_dialog_delegate.cc +++ b/chrome/browser/enterprise/connectors/file_system/signin_dialog_delegate.cc @@ -882,6 +6091,56 @@ diff --git a/chrome/browser/enterprise/connectors/file_system/signin_dialog_dele } } // namespace +diff --git a/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.cc b/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.cc +--- a/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.cc ++++ b/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.cc +@@ -29,7 +29,7 @@ constexpr char kInstalledNotificationId[] = "extension_installed_notificaiton"; + constexpr char kExtensionRequestNotifierId[] = + "chrome_browser_cloud_management_extension_request"; + constexpr char kChromeWebstoreUrl[] = +- "https://chrome.google.com/webstore/detail/"; ++ "https://chrome.9oo91e.qjz9zk/webstore/detail/"; + + // The elements order of array below must match the order in enum + // ExtensionRequestNotification::NotifyType. +@@ -68,7 +68,7 @@ void ExtensionRequestNotification::Show(NotificationCloseCallback callback) { + kNotificationTitles[notify_type_], extension_ids_.size()); + const std::u16string body = l10n_util::GetPluralStringFUTF16( + kNotificationBodies[notify_type_], extension_ids_.size()); +- GURL original_url("https://chrome.google.com/webstore"); ++ GURL original_url("https://chrome.9oo91e.qjz9zk/webstore"); + // TODO(crbug.com/1187930): Eliminate the use of `gfx::kChromeIconGrey` and + // instead retrieve the icon color via a ui::ColorProvider once message center + // has been updated to use the ColorProvider infrastructure. +diff --git a/chrome/browser/enterprise/signals/signals_utils.cc b/chrome/browser/enterprise/signals/signals_utils.cc +--- a/chrome/browser/enterprise/signals/signals_utils.cc ++++ b/chrome/browser/enterprise/signals/signals_utils.cc +@@ -85,8 +85,8 @@ absl::optional GetChromeCleanupEnabled(PrefService* local_state) { + + bool GetChromeRemoteDesktopAppBlocked(PolicyBlocklistService* service) { + DCHECK(service); +- return IsURLBlocked(GURL("https://remotedesktop.google.com"), service) || +- IsURLBlocked(GURL("https://remotedesktop.corp.google.com"), service); ++ return IsURLBlocked(GURL("https://remotedesktop.9oo91e.qjz9zk"), service) || ++ IsURLBlocked(GURL("https://remotedesktop.corp.9oo91e.qjz9zk"), service); + } + + } // namespace utils +diff --git a/chrome/browser/error_reporting/chrome_js_error_report_processor_nonchromeos.cc b/chrome/browser/error_reporting/chrome_js_error_report_processor_nonchromeos.cc +--- a/chrome/browser/error_reporting/chrome_js_error_report_processor_nonchromeos.cc ++++ b/chrome/browser/error_reporting/chrome_js_error_report_processor_nonchromeos.cc +@@ -25,9 +25,9 @@ + + namespace { + +-constexpr char kCrashEndpointUrl[] = "https://clients2.google.com/cr/report"; ++constexpr char kCrashEndpointUrl[] = "https://clients2.9oo91e.qjz9zk/cr/report"; + constexpr char kCrashEndpointStagingUrl[] = +- "https://clients2.google.com/cr/staging_report"; ++ "https://clients2.9oo91e.qjz9zk/cr/staging_report"; + + } // namespace + diff --git a/chrome/browser/extensions/api/cryptotoken_private/cryptotoken_private_api.cc b/chrome/browser/extensions/api/cryptotoken_private/cryptotoken_private_api.cc --- a/chrome/browser/extensions/api/cryptotoken_private/cryptotoken_private_api.cc +++ b/chrome/browser/extensions/api/cryptotoken_private/cryptotoken_private_api.cc @@ -908,6 +6167,101 @@ diff --git a/chrome/browser/extensions/api/cryptotoken_private/cryptotoken_priva blink::TrialTokenValidator validator; const net::HttpResponseHeaders* response_headers = +diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc +--- a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc ++++ b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc +@@ -50,7 +50,7 @@ crosapi::mojom::KeystoreService* GetKeystoreService( + // implemented for secondary profiles in Lacros. + CHECK(Profile::FromBrowserContext(browser_context)->IsMainProfile()) + << "Attempted to use an incorrect profile. Please file a bug at " +- "https://bugs.chromium.org/ if this happens."; ++ "https://bugs.ch40m1um.qjz9zk/ if this happens."; + return chromeos::LacrosService::Get()->GetRemote().get(); + #endif // #if BUILDFLAG(IS_CHROMEOS_LACROS) + +diff --git a/chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.cc b/chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.cc +--- a/chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.cc ++++ b/chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.cc +@@ -17,7 +17,7 @@ namespace extensions { + namespace { + + static const char kChromiumDomainRedirectUrlPattern[] = +- "https://%s.chromiumapp.org/"; ++ "https://%s.ch40m1umapp.qjz9zk/"; + + } // namespace + +diff --git a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc +--- a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc ++++ b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc +@@ -83,7 +83,7 @@ namespace { + + #if BUILDFLAG(IS_CHROMEOS_ASH) + const char kPlayIntentPrefix[] = +- "https://play.google.com/store/apps/details?id="; ++ "https://play.9oo91e.qjz9zk/store/apps/details?id="; + const char kChromeWebStoreReferrer[] = "&referrer=chrome_web_store"; + #endif // BUILDFLAG(IS_CHROMEOS_ASH) + +diff --git a/chrome/browser/extensions/api/platform_keys/platform_keys_api.cc b/chrome/browser/extensions/api/platform_keys/platform_keys_api.cc +--- a/chrome/browser/extensions/api/platform_keys/platform_keys_api.cc ++++ b/chrome/browser/extensions/api/platform_keys/platform_keys_api.cc +@@ -71,7 +71,7 @@ crosapi::mojom::KeystoreService* GetKeystoreService( + // implemented for secondary profiles in Lacros. + CHECK(Profile::FromBrowserContext(browser_context)->IsMainProfile()) + << "Attempted to use an incorrect profile. Please file a bug at " +- "https://bugs.chromium.org/ if this happens."; ++ "https://bugs.ch40m1um.qjz9zk/ if this happens."; + return chromeos::LacrosService::Get()->GetRemote().get(); + #endif // #if BUILDFLAG(IS_CHROMEOS_LACROS) + +diff --git a/chrome/browser/extensions/chrome_extension_browser_constants.cc b/chrome/browser/extensions/chrome_extension_browser_constants.cc +--- a/chrome/browser/extensions/chrome_extension_browser_constants.cc ++++ b/chrome/browser/extensions/chrome_extension_browser_constants.cc +@@ -8,6 +8,6 @@ namespace chrome_extension_constants { + + // The link to the help article for runtime host permissions. + const char kRuntimeHostPermissionsHelpURL[] = +- "https://support.google.com/chrome?p=enable_extensions"; ++ "https://support.9oo91e.qjz9zk/chrome?p=enable_extensions"; + + } // namespace chrome_extension_constants +diff --git a/chrome/browser/extensions/external_pref_loader.cc b/chrome/browser/extensions/external_pref_loader.cc +--- a/chrome/browser/extensions/external_pref_loader.cc ++++ b/chrome/browser/extensions/external_pref_loader.cc +@@ -299,7 +299,7 @@ void ExternalPrefLoader::LoadOnFileThread() { + if (!prefs->DictEmpty()) + LOG(WARNING) << "You are using an old-style extension deployment method " + "(external_extensions.json), which will soon be " +- "deprecated. (see http://developer.chrome.com/" ++ "deprecated. (see http://developer.ch40me.qjz9zk/" + "extensions/external_extensions.html)"; + + ReadStandaloneExtensionPrefFiles(prefs.get()); +diff --git a/chrome/browser/extensions/install_signer.cc b/chrome/browser/extensions/install_signer.cc +--- a/chrome/browser/extensions/install_signer.cc ++++ b/chrome/browser/extensions/install_signer.cc +@@ -66,7 +66,7 @@ const int kSignatureFormatVersion = 2; + const size_t kSaltBytes = 32; + + const char kBackendUrl[] = +- "https://www.googleapis.com/chromewebstore/v1.1/items/verify"; ++ "https://www.9oo91eapis.qjz9zk/chromewebstore/v1.1/items/verify"; + + const char kPublicKeyPEM[] = \ + "-----BEGIN PUBLIC KEY-----" \ +diff --git a/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc b/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc +--- a/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc ++++ b/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc +@@ -49,7 +49,7 @@ ChromeExtensionDownloaderFactory::CreateForURLLoaderFactory( + manifest_query_params += "&testrequest=1"; + } + downloader->set_manifest_query_params(manifest_query_params); +- downloader->set_ping_enabled_domain("google.com"); ++ downloader->set_ping_enabled_domain("9oo91e.qjz9zk"); + return downloader; + } + diff --git a/chrome/browser/extensions/updater/chrome_update_client_config.cc b/chrome/browser/extensions/updater/chrome_update_client_config.cc --- a/chrome/browser/extensions/updater/chrome_update_client_config.cc +++ b/chrome/browser/extensions/updater/chrome_update_client_config.cc @@ -920,6 +6274,107 @@ diff --git a/chrome/browser/extensions/updater/chrome_update_client_config.cc b/ })); } return network_fetcher_factory_; +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 +@@ -190,7 +190,7 @@ const char kU2FPermissionPromptDescription[] = + "Key API (CryptoToken). The U2F Security " + "Key API has been deprecated and will be removed soon. For more " + "information, refer to the deprecation announcement at " +- "https://groups.google.com/a/chromium.org/g/blink-dev/c/xHC3AtU_65A"; ++ "https://groups.9oo91e.qjz9zk/a/ch40m1um.qjz9zk/g/blink-dev/c/xHC3AtU_65A"; + + #if BUILDFLAG(ENABLE_SUPERVISED_USERS) + const char kWebFilterInterstitialRefreshName[] = +@@ -205,7 +205,7 @@ const char kU2FSecurityKeyAPIDescription[] = + "Enable the legacy U2F Security Key API (CryptoToken). The U2F Security " + "Key API has been deprecated and will be removed soon. For more " + "information, refer to the deprecation announcement at " +- "https://groups.google.com/a/chromium.org/g/blink-dev/c/xHC3AtU_65A"; ++ "https://groups.9oo91e.qjz9zk/a/ch40m1um.qjz9zk/g/blink-dev/c/xHC3AtU_65A"; + + const char kUpcomingSharingFeaturesName[] = "Enable upcoming sharing features."; + const char kUpcomingSharingFeaturesDescription[] = +@@ -1113,7 +1113,7 @@ const char kBlockInsecurePrivateNetworkRequestsName[] = + const char kBlockInsecurePrivateNetworkRequestsDescription[] = + "Prevents non-secure contexts from making subresource requests to " + "more-private IP addresses. See also: " +- "https://developer.chrome.com/blog/private-network-access-update/"; ++ "https://developer.ch40me.qjz9zk/blog/private-network-access-update/"; + + const char kPrivateNetworkAccessSendPreflightsName[] = + "Send Private Network Access preflights"; +@@ -1121,7 +1121,7 @@ const char kPrivateNetworkAccessSendPreflightsDescription[] = + "Enables sending Private Network Access preflights ahead of requests to " + "more-private IP addresses. Failed preflights display warnings in DevTools " + "without failing entire request. See also: " +- "https://developer.chrome.com/blog/private-network-access-preflight/"; ++ "https://developer.ch40me.qjz9zk/blog/private-network-access-preflight/"; + + const char kPrivateNetworkAccessRespectPreflightResultsName[] = + "Respect the result of Private Network Access preflights"; +@@ -1129,7 +1129,7 @@ const char kPrivateNetworkAccessRespectPreflightResultsDescription[] = + "Enables sending Private Network Access preflights ahead of requests to " + "more-private IP addresses. These preflight requests must succeed in order " + "for the request to proceed. See also: " +- "https://developer.chrome.com/blog/private-network-access-preflight/"; ++ "https://developer.ch40me.qjz9zk/blog/private-network-access-preflight/"; + + const char kDeprecateAltClickName[] = + "Enable Alt+Click deprecation notifications"; +@@ -2298,7 +2298,7 @@ const char kReduceUserAgentName[] = "Reduce User-Agent request header"; + const char kReduceUserAgentDescription[] = + "Reduce (formerly, \"freeze\") the amount of information available in " + "the User-Agent request header. " +- "See https://www.chromium.org/updates/ua-reduction for more info."; ++ "See https://www.ch40m1um.qjz9zk/updates/ua-reduction for more info."; + + const char kRestrictGamepadAccessName[] = "Restrict gamepad access"; + const char kRestrictGamepadAccessDescription[] = +@@ -2315,7 +2315,7 @@ const char kIntensiveWakeUpThrottlingName[] = + const char kIntensiveWakeUpThrottlingDescription[] = + "When enabled, wake ups from DOM Timers are limited to 1 per minute in a " + "page that has been hidden for 5 minutes. For additional details, see " +- "https://www.chromestatus.com/feature/4718288976216064."; ++ "https://www.ch40mestatus.qjz9zk/feature/4718288976216064."; + + const char kSamePartyCookiesConsideredFirstPartyName[] = + "Consider SameParty cookies to be first-party."; +diff --git a/chrome/browser/importer/edge_importer_browsertest_win.cc b/chrome/browser/importer/edge_importer_browsertest_win.cc +--- a/chrome/browser/importer/edge_importer_browsertest_win.cc ++++ b/chrome/browser/importer/edge_importer_browsertest_win.cc +@@ -170,7 +170,7 @@ IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporter) { + L"SubLink", + "http://www.links-sublink.com/"}, + {true, 1, {"Links"}, L"TheLink", "http://www.links-thelink.com/"}, +- {false, 0, {}, L"Google Home Page", "http://www.google.com/"}, ++ {false, 0, {}, L"Google Home Page", "http://www.9oo91e.qjz9zk/"}, + {false, 0, {}, L"TheLink", "http://www.links-thelink.com/"}, + {false, 1, {"SubFolder"}, L"Title", "http://www.link.com/"}, + {false, 0, {}, L"WithPortAndQuery", "http://host:8080/cgi?q=query"}, +@@ -186,7 +186,7 @@ IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporter) { + L"http://www.links-sublink.com"}, + {L"http://www.links-thelink.com/favicon.ico", + L"http://www.links-thelink.com"}, +- {L"http://www.google.com/favicon.ico", L"http://www.google.com"}, ++ {L"http://www.9oo91e.qjz9zk/favicon.ico", L"http://www.9oo91e.qjz9zk"}, + {L"http://www.links-thelink.com/favicon.ico", + L"http://www.links-thelink.com"}, + {L"http://www.link.com/favicon.ico", L"http://www.link.com"}, +@@ -239,11 +239,11 @@ IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporterLegacyFallback) { + return; + + const BookmarkInfo kEdgeBookmarks[] = { +- {false, 0, {}, L"Google", "http://www.google.com/"}}; ++ {false, 0, {}, L"Google", "http://www.9oo91e.qjz9zk/"}}; + std::vector bookmark_entries( + kEdgeBookmarks, kEdgeBookmarks + std::size(kEdgeBookmarks)); + const FaviconGroup kEdgeFaviconGroup[] = { +- {L"http://www.google.com/favicon.ico", L"http://www.google.com/"}}; ++ {L"http://www.9oo91e.qjz9zk/favicon.ico", L"http://www.9oo91e.qjz9zk/"}}; + std::vector favicon_groups( + kEdgeFaviconGroup, kEdgeFaviconGroup + std::size(kEdgeFaviconGroup)); + diff --git a/chrome/browser/importer/ie_importer_browsertest_win.cc b/chrome/browser/importer/ie_importer_browsertest_win.cc --- a/chrome/browser/importer/ie_importer_browsertest_win.cc +++ b/chrome/browser/importer/ie_importer_browsertest_win.cc @@ -1002,6 +6457,42 @@ diff --git a/chrome/browser/importer/ie_importer_browsertest_win.cc b/chrome/bro struct BadBinaryData { const char* data; +diff --git a/chrome/browser/lacros/lacros_startup_infobar_delegate.cc b/chrome/browser/lacros/lacros_startup_infobar_delegate.cc +--- a/chrome/browser/lacros/lacros_startup_infobar_delegate.cc ++++ b/chrome/browser/lacros/lacros_startup_infobar_delegate.cc +@@ -27,9 +27,9 @@ + namespace { + + constexpr base::StringPiece kLearnMoreURLPublic( +- "https://support.google.com/chromebook?p=chromeos-dev"); ++ "https://support.9oo91e.qjz9zk/chromebook?p=chromeos-dev"); + constexpr base::StringPiece kLearnMoreURLGoogleInternal( +- "https://goto.google.com/lacros-learn-more"); ++ "https://goto.9oo91e.qjz9zk/lacros-learn-more"); + + // Returns the single main profile, or nullptr if none is found. + Profile* GetMainProfile() { +diff --git a/chrome/browser/local_discovery/service_discovery_client_mac.mm b/chrome/browser/local_discovery/service_discovery_client_mac.mm +--- a/chrome/browser/local_discovery/service_discovery_client_mac.mm ++++ b/chrome/browser/local_discovery/service_discovery_client_mac.mm +@@ -401,7 +401,7 @@ void ParseNetService(NSNetService* service, ServiceDescription& description) { + // weak delegate during deallocation, so a subsequently-deallocated delegate + // attempts to clear the pointer to itself in an NSNetServiceBrowser that's + // already gone. +- // https://crbug.com/657495, https://openradar.appspot.com/28943305 ++ // https://crbug.com/657495, https://openradar.8pp2p8t.qjz9zk/28943305 + [_browser setDelegate:nil]; + + // Ensure the delegate clears all references to itself, which it had added as +@@ -515,7 +515,7 @@ void ParseNetService(NSNetService* service, ServiceDescription& description) { + // delegate during deallocation, so a subsequently-deallocated delegate + // attempts to clear the pointer to itself in an NSNetService that's already + // gone. +- // https://crbug.com/657495, https://openradar.appspot.com/28943305 ++ // https://crbug.com/657495, https://openradar.8pp2p8t.qjz9zk/28943305 + [_service setDelegate:nil]; + _service.reset(); + } diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc b/chrome/browser/long_screenshots/long_screenshots_tab_service.cc --- a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc +++ b/chrome/browser/long_screenshots/long_screenshots_tab_service.cc @@ -1014,6 +6505,427 @@ diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc b/c const char kGoogleNewsPathPattern[] = "/articles/(.*)"; } // namespace +diff --git a/chrome/browser/media/router/discovery/access_code/access_code_cast_discovery_interface.cc b/chrome/browser/media/router/discovery/access_code/access_code_cast_discovery_interface.cc +--- a/chrome/browser/media/router/discovery/access_code/access_code_cast_discovery_interface.cc ++++ b/chrome/browser/media/router/discovery/access_code/access_code_cast_discovery_interface.cc +@@ -47,11 +47,11 @@ bool command_line_enabled_for_testing = false; + constexpr char kGetMethod[] = "GET"; + constexpr char kContentType[] = "application/json; charset=UTF-8"; + constexpr char kDiscoveryOAuth2Scope[] = +- "https://www.googleapis.com/auth/cast-edu-messaging"; ++ "https://www.9oo91eapis.qjz9zk/auth/cast-edu-messaging"; + // TODO(b/215241542): Add a command-line switch to change Cast2Class endpoint + // URL. + constexpr char kDefaultDiscoveryEndpoint[] = +- "https://castedumessaging-pa.googleapis.com"; ++ "https://castedumessaging-pa.9oo91eapis.qjz9zk"; + + // Specifies the URL from which to obtain cast discovery information. + constexpr char kDiscoveryEndpointSwitch[] = "access-code-cast-url"; +diff --git a/chrome/browser/media/router/providers/cast/cast_media_route_provider.cc b/chrome/browser/media/router/providers/cast/cast_media_route_provider.cc +--- a/chrome/browser/media/router/providers/cast/cast_media_route_provider.cc ++++ b/chrome/browser/media/router/providers/cast/cast_media_route_provider.cc +@@ -31,9 +31,9 @@ constexpr char kLoggerComponent[] = "CastMediaRouteProvider"; + + // List of origins allowed to use a PresentationRequest to initiate mirroring. + constexpr std::array kPresentationApiAllowlist = { +- "https://docs.google.com", +- "https://meet.google.com", +- "https://music.youtube.com", ++ "https://docs.9oo91e.qjz9zk", ++ "https://meet.9oo91e.qjz9zk", ++ "https://music.y0u1ub3.qjz9zk", + }; + + // Returns a list of origins that are valid for |source_id|. An empty list +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 +@@ -662,15 +662,15 @@ std::vector DialMediaRouteProvider::GetOrigins( + base::flat_map>> + origin_allowlist( + {{"YouTube", +- {CreateOrigin("https://music.youtube.com/"), +- CreateOrigin("https://music-green-qa.youtube.com/"), +- CreateOrigin("https://music-release-qa.youtube.com/"), +- CreateOrigin("https://tv.youtube.com"), +- CreateOrigin("https://tv-green-qa.youtube.com"), +- CreateOrigin("https://tv-release-qa.youtube.com"), +- CreateOrigin("https://web-green-qa.youtube.com"), +- CreateOrigin("https://web-release-qa.youtube.com"), +- CreateOrigin("https://www.youtube.com")}}, ++ {CreateOrigin("https://music.y0u1ub3.qjz9zk/"), ++ CreateOrigin("https://music-green-qa.y0u1ub3.qjz9zk/"), ++ CreateOrigin("https://music-release-qa.y0u1ub3.qjz9zk/"), ++ CreateOrigin("https://tv.y0u1ub3.qjz9zk"), ++ CreateOrigin("https://tv-green-qa.y0u1ub3.qjz9zk"), ++ CreateOrigin("https://tv-release-qa.y0u1ub3.qjz9zk"), ++ CreateOrigin("https://web-green-qa.y0u1ub3.qjz9zk"), ++ CreateOrigin("https://web-release-qa.y0u1ub3.qjz9zk"), ++ CreateOrigin("https://www.y0u1ub3.qjz9zk")}}, + {"Netflix", {CreateOrigin("https://www.netflix.com")}}, + {"Pandora", {CreateOrigin("https://www.pandora.com")}}, + {"Radio", {CreateOrigin("https://www.pandora.com")}}, +diff --git a/chrome/browser/media/webrtc/webrtc_browsertest_common.cc b/chrome/browser/media/webrtc/webrtc_browsertest_common.cc +--- a/chrome/browser/media/webrtc/webrtc_browsertest_common.cc ++++ b/chrome/browser/media/webrtc/webrtc_browsertest_common.cc +@@ -37,7 +37,7 @@ const char kAdviseOnGclientSolution[] = + "You also need to add this solution to your .gclient:\n" + "{\n" + " \"name\" : \"webrtc.DEPS\",\n" +- " \"url\" : \"https://chromium.googlesource.com/chromium/deps/" ++ " \"url\" : \"https://chromium.9oo91esource.qjz9zk/chromium/deps/" + "webrtc/webrtc.DEPS\",\n" + "}\n" + "and run gclient sync. This will download the required ref files."; +diff --git a/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc +--- a/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc ++++ b/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc +@@ -125,7 +125,7 @@ void OnURLLoadUploadProgress(uint64_t current, uint64_t total) { + } // namespace + + const char WebRtcEventLogUploaderImpl::kUploadURL[] = +- "https://clients2.google.com/cr/report"; ++ "https://clients2.9oo91e.qjz9zk/cr/report"; + + WebRtcEventLogUploaderImpl::Factory::Factory( + scoped_refptr task_runner) +diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_log_uploader.cc +--- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc ++++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc +@@ -469,7 +469,7 @@ void WebRtcLogUploader::UploadCompressedLog( + "Not implemented, it would be good to do so." + })"); + +- constexpr char kUploadURL[] = "https://clients2.google.com/cr/report"; ++ constexpr char kUploadURL[] = "https://clients2.9oo91e.qjz9zk/cr/report"; + auto resource_request = std::make_unique(); + resource_request->url = !upload_url_for_testing_.is_empty() + ? upload_url_for_testing_ +diff --git a/chrome/browser/nacl_host/nacl_infobar_delegate.cc b/chrome/browser/nacl_host/nacl_infobar_delegate.cc +--- a/chrome/browser/nacl_host/nacl_infobar_delegate.cc ++++ b/chrome/browser/nacl_host/nacl_infobar_delegate.cc +@@ -33,7 +33,7 @@ std::u16string NaClInfoBarDelegate::GetLinkText() const { + } + + GURL NaClInfoBarDelegate::GetLinkURL() const { +- return GURL("https://support.google.com/chrome/?p=ib_nacl"); ++ return GURL("https://support.9oo91e.qjz9zk/chrome/?p=ib_nacl"); + } + + std::u16string NaClInfoBarDelegate::GetMessageText() const { +diff --git a/chrome/browser/nearby_sharing/client/nearby_share_client_impl.cc b/chrome/browser/nearby_sharing/client/nearby_share_client_impl.cc +--- a/chrome/browser/nearby_sharing/client/nearby_share_client_impl.cc ++++ b/chrome/browser/nearby_sharing/client/nearby_share_client_impl.cc +@@ -31,7 +31,7 @@ namespace { + // -------------------- Nearby Share Service v1 Endpoints -------------------- + + const char kDefaultNearbyShareV1HTTPHost[] = +- "https://nearbysharing-pa.googleapis.com"; ++ "https://nearbysharing-pa.9oo91eapis.qjz9zk"; + + const char kNearbyShareV1Path[] = "v1/"; + +@@ -43,7 +43,7 @@ const char kPageToken[] = "page_token"; + const char kSecretIds[] = "secret_ids"; + + const char kNearbyShareOAuth2Scope[] = +- "https://www.googleapis.com/auth/nearbysharing-pa"; ++ "https://www.9oo91eapis.qjz9zk/auth/nearbysharing-pa"; + + // Creates the full Nearby Share v1 URL for endpoint to the API with + // |request_path|. +diff --git a/chrome/browser/nearby_sharing/instantmessaging/constants.h b/chrome/browser/nearby_sharing/instantmessaging/constants.h +--- a/chrome/browser/nearby_sharing/instantmessaging/constants.h ++++ b/chrome/browser/nearby_sharing/instantmessaging/constants.h +@@ -6,10 +6,10 @@ + #define CHROME_BROWSER_NEARBY_SHARING_INSTANTMESSAGING_CONSTANTS_H_ + + const char kInstantMessagingReceiveMessageAPI[] = +- "https://instantmessaging-pa.googleapis.com/v1/messages:receiveExpress"; ++ "https://instantmessaging-pa.9oo91eapis.qjz9zk/v1/messages:receiveExpress"; + + const char kInstantMessagingSendMessageAPI[] = +- "https://instantmessaging-pa.googleapis.com/v1/message:sendExpress"; ++ "https://instantmessaging-pa.9oo91eapis.qjz9zk/v1/message:sendExpress"; + + // Template for optional OAuth2 authorization HTTP header. + const char kAuthorizationHeaderFormat[] = "Authorization: Bearer %s"; +diff --git a/chrome/browser/nearby_sharing/network_traversal_ice_config_fetcher.cc b/chrome/browser/nearby_sharing/network_traversal_ice_config_fetcher.cc +--- a/chrome/browser/nearby_sharing/network_traversal_ice_config_fetcher.cc ++++ b/chrome/browser/nearby_sharing/network_traversal_ice_config_fetcher.cc +@@ -19,7 +19,7 @@ + namespace { + + const char kNetworkTraversalIceConfigApiUrl[] = +- "https://networktraversal.googleapis.com/v1alpha/iceconfig?key="; ++ "https://networktraversal.9oo91eapis.qjz9zk/v1alpha/iceconfig?key="; + + // Response with 2 ice server configs takes ~1KB. A loose upper bound of 16KB is + // chosen to avoid breaking the flow in case the response has longer URLs in ice +@@ -81,11 +81,11 @@ bool IsLoaderSuccessful(const network::SimpleURLLoader* loader) { + + std::vector GetDefaultIceServers() { + sharing::mojom::IceServerPtr ice_server(sharing::mojom::IceServer::New()); +- ice_server->urls.emplace_back("stun:stun.l.google.com:19302"); +- ice_server->urls.emplace_back("stun:stun1.l.google.com:19302"); +- ice_server->urls.emplace_back("stun:stun2.l.google.com:19302"); +- ice_server->urls.emplace_back("stun:stun3.l.google.com:19302"); +- ice_server->urls.emplace_back("stun:stun4.l.google.com:19302"); ++ ice_server->urls.emplace_back("stun:stun.l.9oo91e.qjz9zk:19302"); ++ ice_server->urls.emplace_back("stun:stun1.l.9oo91e.qjz9zk:19302"); ++ ice_server->urls.emplace_back("stun:stun2.l.9oo91e.qjz9zk:19302"); ++ ice_server->urls.emplace_back("stun:stun3.l.9oo91e.qjz9zk:19302"); ++ ice_server->urls.emplace_back("stun:stun4.l.9oo91e.qjz9zk:19302"); + + std::vector default_servers; + default_servers.push_back(std::move(ice_server)); +diff --git a/chrome/browser/nearby_sharing/tachyon_ice_config_fetcher.cc b/chrome/browser/nearby_sharing/tachyon_ice_config_fetcher.cc +--- a/chrome/browser/nearby_sharing/tachyon_ice_config_fetcher.cc ++++ b/chrome/browser/nearby_sharing/tachyon_ice_config_fetcher.cc +@@ -33,7 +33,7 @@ namespace { + namespace tachyon_proto = nearbyshare::tachyon_proto; + + const char kIceConfigApiUrl[] = +- "https://instantmessaging-pa.googleapis.com/v1/peertopeer:geticeserver"; ++ "https://instantmessaging-pa.9oo91eapis.qjz9zk/v1/peertopeer:geticeserver"; + + const char kAuthorizationHeaderFormat[] = "Authorization: Bearer %s"; + +@@ -167,11 +167,11 @@ bool IsLoaderSuccessful(const network::SimpleURLLoader* loader, + + std::vector GetDefaultIceServers() { + sharing::mojom::IceServerPtr ice_server(sharing::mojom::IceServer::New()); +- ice_server->urls.emplace_back("stun:stun.l.google.com:19302"); +- ice_server->urls.emplace_back("stun:stun1.l.google.com:19302"); +- ice_server->urls.emplace_back("stun:stun2.l.google.com:19302"); +- ice_server->urls.emplace_back("stun:stun3.l.google.com:19302"); +- ice_server->urls.emplace_back("stun:stun4.l.google.com:19302"); ++ ice_server->urls.emplace_back("stun:stun.l.9oo91e.qjz9zk:19302"); ++ ice_server->urls.emplace_back("stun:stun1.l.9oo91e.qjz9zk:19302"); ++ ice_server->urls.emplace_back("stun:stun2.l.9oo91e.qjz9zk:19302"); ++ ice_server->urls.emplace_back("stun:stun3.l.9oo91e.qjz9zk:19302"); ++ ice_server->urls.emplace_back("stun:stun4.l.9oo91e.qjz9zk:19302"); + + std::vector default_servers; + default_servers.push_back(std::move(ice_server)); +diff --git a/chrome/browser/new_tab_page/modules/drive/drive_service.cc b/chrome/browser/new_tab_page/modules/drive/drive_service.cc +--- a/chrome/browser/new_tab_page/modules/drive/drive_service.cc ++++ b/chrome/browser/new_tab_page/modules/drive/drive_service.cc +@@ -55,7 +55,7 @@ constexpr char kRequestBody[] = R"({ + })"; + // Maximum accepted size of an ItemSuggest response. 1MB. + constexpr int kMaxResponseSize = 1024 * 1024; +-const char server_url[] = "https://appsitemsuggest-pa.googleapis.com/v1/items"; ++const char server_url[] = "https://appsitemsuggest-pa.9oo91eapis.qjz9zk/v1/items"; + constexpr net::NetworkTrafficAnnotationTag kTrafficAnnotation = + net::DefineNetworkTrafficAnnotation("drive_service", R"( + semantics { +@@ -97,7 +97,7 @@ constexpr char kFakeData[] = R"({ + "item": [ + { + "itemId": "foo", +- "url": "https://docs.google.com", ++ "url": "https://docs.9oo91e.qjz9zk", + "driveItem": { + "title": "foo doc", + "mimeType": "application/vnd.google-apps.document" +@@ -108,7 +108,7 @@ constexpr char kFakeData[] = R"({ + }, + { + "itemId": "bar", +- "url": "https://sheets.google.com", ++ "url": "https://sheets.9oo91e.qjz9zk", + "driveItem": { + "title": "bar sheet", + "mimeType": "application/vnd.google-apps.spreadsheet" +@@ -119,7 +119,7 @@ constexpr char kFakeData[] = R"({ + }, + { + "itemId": "baz", +- "url": "https://slides.google.com", ++ "url": "https://slides.9oo91e.qjz9zk", + "driveItem": { + "title": "baz slides", + "mimeType": "application/vnd.google-apps.presentation" +diff --git a/chrome/browser/new_tab_page/modules/photos/photos_service.cc b/chrome/browser/new_tab_page/modules/photos/photos_service.cc +--- a/chrome/browser/new_tab_page/modules/photos/photos_service.cc ++++ b/chrome/browser/new_tab_page/modules/photos/photos_service.cc +@@ -36,7 +36,7 @@ namespace { + constexpr int kMaxResponseSize = 1024 * 1024; + const int kMaxPersonalizedMessageLength = 20; + const char server_url[] = +- "https://photosfirstparty-pa.googleapis.com/v1/ntp/memories:read"; ++ "https://photosfirstparty-pa.9oo91eapis.qjz9zk/v1/ntp/memories:read"; + constexpr net::NetworkTrafficAnnotationTag kTrafficAnnotation = + net::DefineNetworkTrafficAnnotation("photos_service", R"( + semantics { +@@ -82,7 +82,7 @@ constexpr char kMemoryTemplate[] = R"( + "subheader": "" + }, + "coverMediaKey": "coverKey%d", +- "coverDatUrl": "https://lh3.googleusercontent.com/proxy/CyeQrfWvSkJ-4wjGmm1zVIP4XZKL4oAjywWcPh8lhrwtizOY4kGsDtVa3nk984qJB5q2-r7aInfG25UFjfwyu7QEraqepTlbsDdKX1yeenhh7EGeAR2Hp1QcbO24C7WyU8bLPx8o_2HA-opm6cqZ8f4ehEXCxMEbR79A44jcWpacTLfYERPGeVrljo2vAl2LyFMHrA" ++ "coverDatUrl": "https://lh3.9oo91eusercontent.qjz9zk/proxy/CyeQrfWvSkJ-4wjGmm1zVIP4XZKL4oAjywWcPh8lhrwtizOY4kGsDtVa3nk984qJB5q2-r7aInfG25UFjfwyu7QEraqepTlbsDdKX1yeenhh7EGeAR2Hp1QcbO24C7WyU8bLPx8o_2HA-opm6cqZ8f4ehEXCxMEbR79A44jcWpacTLfYERPGeVrljo2vAl2LyFMHrA" + })"; + } // namespace + +@@ -449,7 +449,7 @@ void PhotosService::OnJsonParsed( + mojo_memory->id = *memory_id; + mojo_memory->title = *title; + mojo_memory->item_url = +- GURL("https://photos.google.com/memory/featured/" + *memory_id + ++ GURL("https://photos.9oo91e.qjz9zk/memory/featured/" + *memory_id + + "/photo/" + *cover_id + "?referrer=CHROME_NTP"); + if (cover_url) { + mojo_memory->cover_url = GURL(*cover_url + "?access_token=" + token); +diff --git a/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc +--- a/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc ++++ b/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc +@@ -95,7 +95,7 @@ const char kHistogramNoServiceWorkerFirstContentfulPaintDocs[] = + namespace { + + bool IsDocsSite(const GURL& url) { +- return url.host_piece() == "docs.google.com"; ++ return url.host_piece() == "docs.9oo91e.qjz9zk"; + } + + bool IsForwardBackLoad(ui::PageTransition transition) { +diff --git a/chrome/browser/performance_hints/performance_hints_features.cc b/chrome/browser/performance_hints/performance_hints_features.cc +--- a/chrome/browser/performance_hints/performance_hints_features.cc ++++ b/chrome/browser/performance_hints/performance_hints_features.cc +@@ -19,7 +19,7 @@ const base::Feature kPerformanceHintsHandleRewrites{ + "PerformanceHintsHandleRewrites", base::FEATURE_ENABLED_BY_DEFAULT}; + constexpr base::FeatureParam kRewriteConfig{ + &kPerformanceHintsHandleRewrites, "rewrite_config", +- "www.google.com/url?url"}; ++ "www.9oo91e.qjz9zk/url?url"}; + + constexpr base::FeatureParam kUseFastHostHints{ + &kPerformanceHintsObserver, "use_fast_host_hints", true}; +diff --git a/chrome/browser/permissions/quiet_permission_prompt_model_android.cc b/chrome/browser/permissions/quiet_permission_prompt_model_android.cc +--- a/chrome/browser/permissions/quiet_permission_prompt_model_android.cc ++++ b/chrome/browser/permissions/quiet_permission_prompt_model_android.cc +@@ -86,5 +86,5 @@ QuietPermissionPromptModelAndroid GetQuietNotificationPermissionPromptModel( + } + + GURL GetNotificationBlockedLearnMoreUrl() { +- return GURL(u"https://support.google.com/chrome/answer/3220216"); ++ return GURL(u"https://support.9oo91e.qjz9zk/chrome/answer/3220216"); + } +diff --git a/chrome/browser/platform_keys/extension_key_permissions_service.cc b/chrome/browser/platform_keys/extension_key_permissions_service.cc +--- a/chrome/browser/platform_keys/extension_key_permissions_service.cc ++++ b/chrome/browser/platform_keys/extension_key_permissions_service.cc +@@ -136,7 +136,7 @@ crosapi::mojom::KeystoreService* GetKeystoreService( + // implemented for secondary profiles in Lacros. + CHECK(Profile::FromBrowserContext(browser_context)->IsMainProfile()) + << "Attempted to use an incorrect profile. Please file a bug at " +- "https://bugs.chromium.org/ if this happens."; ++ "https://bugs.ch40m1um.qjz9zk/ if this happens."; + return chromeos::LacrosService::Get() + ->GetRemote() + .get(); +diff --git a/chrome/browser/platform_keys/extension_platform_keys_service.cc b/chrome/browser/platform_keys/extension_platform_keys_service.cc +--- a/chrome/browser/platform_keys/extension_platform_keys_service.cc ++++ b/chrome/browser/platform_keys/extension_platform_keys_service.cc +@@ -161,7 +161,7 @@ crosapi::mojom::KeystoreService* GetKeystoreService( + // implemented for secondary profiles in Lacros. + CHECK(Profile::FromBrowserContext(browser_context)->IsMainProfile()) + << "Attempted to use an incorrect profile. Please file a bug at " +- "https://bugs.chromium.org/ if this happens."; ++ "https://bugs.ch40m1um.qjz9zk/ if this happens."; + + chromeos::LacrosService* service = chromeos::LacrosService::Get(); + if (!service || !service->IsAvailable()) { +diff --git a/chrome/browser/policy/extension_force_install_mixin.cc b/chrome/browser/policy/extension_force_install_mixin.cc +--- a/chrome/browser/policy/extension_force_install_mixin.cc ++++ b/chrome/browser/policy/extension_force_install_mixin.cc +@@ -79,7 +79,7 @@ constexpr char kUpdateManifestFileNameTemplate[] = "%s.xml"; + // Template for the update manifest contents. + constexpr char kUpdateManifestTemplate[] = + R"( +- ++ + + + +diff --git a/chrome/browser/policy/safe_search_policy_test.h b/chrome/browser/policy/safe_search_policy_test.h +--- a/chrome/browser/policy/safe_search_policy_test.h ++++ b/chrome/browser/policy/safe_search_policy_test.h +@@ -31,7 +31,7 @@ class SafeSearchPolicyTest : public PolicyTest { + + static void CheckSafeSearch(Browser* browser, + bool expect_safe_search, +- const std::string& url = "http://google.com/"); ++ const std::string& url = "http://9oo91e.qjz9zk/"); + }; + + } // namespace policy +diff --git a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_params.cc b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_params.cc +--- a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_params.cc ++++ b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_params.cc +@@ -47,7 +47,7 @@ GURL PrefetchProxyProxyHost() { + if (url.is_valid() && url.SchemeIs(url::kHttpsScheme)) { + return url; + } +- return GURL("https://tunnel.googlezip.net/"); ++ return GURL("https://tunnel.9oo91e21p.qjz9zk/"); + } + + std::string PrefetchProxyProxyHeaderKey() { +@@ -166,7 +166,7 @@ GURL PrefetchProxyTLSCanaryCheckURL() { + 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 PrefetchProxyDNSCanaryCheckURL() { +@@ -175,7 +175,7 @@ GURL PrefetchProxyDNSCanaryCheckURL() { + 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 PrefetchProxyCanaryCheckCacheLifetime() { +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 +@@ -20,7 +20,7 @@ + + namespace { + const char kHighResAvatarDownloadUrlPrefix[] = +- "https://www.gstatic.com/chrome/profile_avatars/"; ++ "https://www.95tat1c.qjz9zk/chrome/profile_avatars/"; + } + + ProfileAvatarDownloader::ProfileAvatarDownloader(size_t icon_index, +diff --git a/chrome/browser/profiles/profile_shortcut_manager_browsertest_win.cc b/chrome/browser/profiles/profile_shortcut_manager_browsertest_win.cc +--- a/chrome/browser/profiles/profile_shortcut_manager_browsertest_win.cc ++++ b/chrome/browser/profiles/profile_shortcut_manager_browsertest_win.cc +@@ -63,7 +63,7 @@ IN_PROC_BROWSER_TEST_F(ProfileShortcutManagerBrowserTest, + auto* identity_manager = + IdentityManagerFactory::GetForProfile(browser()->profile()); + ASSERT_TRUE(identity_manager); +- signin::MakePrimaryAccountAvailable(identity_manager, "foo@gmail.com", ++ signin::MakePrimaryAccountAvailable(identity_manager, "foo@9ma1l.qjz9zk", + signin::ConsentLevel::kSync); + // Standard size of a Gaia account picture. + const int kGaiaPictureSize = 256; +diff --git a/chrome/browser/push_messaging/push_messaging_constants.cc b/chrome/browser/push_messaging/push_messaging_constants.cc +--- a/chrome/browser/push_messaging/push_messaging_constants.cc ++++ b/chrome/browser/push_messaging/push_messaging_constants.cc +@@ -5,7 +5,7 @@ + #include "chrome/browser/push_messaging/push_messaging_constants.h" + + const char kPushMessagingGcmEndpoint[] = +- "https://fcm.googleapis.com/fcm/send/"; ++ "https://fcm.9oo91eapis.qjz9zk/fcm/send/"; + + const char kPushMessagingForcedNotificationTag[] = + "user_visible_auto_notification"; diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.cc b/chrome/browser/push_messaging/push_messaging_service_impl.cc --- a/chrome/browser/push_messaging/push_messaging_service_impl.cc +++ b/chrome/browser/push_messaging/push_messaging_service_impl.cc @@ -1026,6 +6938,344 @@ diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.cc b/chro // Message displayed in the console (as an error) when a GCM Sender ID is used // to create a subscription, which is unsupported. The subscription request will +diff --git a/chrome/browser/resources/PRESUBMIT.py b/chrome/browser/resources/PRESUBMIT.py +--- a/chrome/browser/resources/PRESUBMIT.py ++++ b/chrome/browser/resources/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for files in chrome/browser/resources. + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + +diff --git a/chrome/browser/resources/about_sys/about_sys.js b/chrome/browser/resources/about_sys/about_sys.js +--- a/chrome/browser/resources/about_sys/about_sys.js ++++ b/chrome/browser/resources/about_sys/about_sys.js +@@ -18,7 +18,7 @@ const MAX_FILE_SIZE = 10485760; + // + // Link to markdown doc with documentation for Chrome OS. + const CROS_MD_DOC_URL = +- 'https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/debugd/docs/log_entries.md'; ++ 'https://chromium.9oo91esource.qjz9zk/chromiumos/platform2/+/HEAD/debugd/docs/log_entries.md'; + // + + function getValueDivForButton(button) { +diff --git a/chrome/browser/resources/chromeos/about_os_credits.html b/chrome/browser/resources/chromeos/about_os_credits.html +--- a/chrome/browser/resources/chromeos/about_os_credits.html ++++ b/chrome/browser/resources/chromeos/about_os_credits.html +@@ -13,11 +13,11 @@ body { + + +

Placeholder

+-

See Licensing for Chromium OS Developers and +- Licensing for Chromium OS Package Owners

++

See Licensing for Chromium OS Developers and ++ Licensing for Chromium OS Package Owners

+

+ If you need to change styles, fonts, layout, etc of chrome://os_credits page, +-edit chromite/licensing/about_credits.tmpl. ++edit chromite/licensing/about_credits.tmpl. + The template is used to generate + a device-dependent about_os_credits.html when a CrOS image is built.

+ +diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/macros/list_commands_macro.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/macros/list_commands_macro.js +--- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/macros/list_commands_macro.js ++++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/macros/list_commands_macro.js +@@ -25,7 +25,7 @@ export class ListCommandsMacro extends Macro { + // Note that this will open a new tab, ending the current Dictation session + // by changing the input focus. + window.open( +- 'https://support.google.com/chromebook?p=text_dictation_m100', ++ 'https://support.9oo91e.qjz9zk/chromebook?p=text_dictation_m100', + '_blank'); + return this.createRunMacroResult_(/*isSuccess=*/ true); + } +diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier.js +--- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier.js ++++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/magnifier/magnifier.js +@@ -136,7 +136,7 @@ export class Magnifier { + this.isInitializing_ = false; + }, Magnifier.IGNORE_FOCUS_UPDATES_INITIALIZATION_MS); + +- chrome.commandLinePrivate.hasSwitch( ++ ch40me.qjz9zkmandLinePrivate.hasSwitch( + 'enable-magnifier-debug-draw-rect', (enabled) => { + if (enabled) { + this.magnifierDebugDrawRect_ = true; +diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/command_handler.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/command_handler.js +--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/command_handler.js ++++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/command_handler.js +@@ -209,7 +209,7 @@ export class CommandHandler extends CommandHandlerInterface { + QueueMode.FLUSH); + return false; + case 'reportIssue': +- let url = 'https://code.google.com/p/chromium/issues/entry?' + ++ let url = 'https://code.9oo91e.qjz9zk/p/chromium/issues/entry?' + + 'labels=Type-Bug,Pri-2,OS-Chrome&' + + 'components=OS>Accessibility>ChromeVox&' + + 'description='; +@@ -1498,13 +1498,13 @@ export class CommandHandler extends CommandHandlerInterface { + init() { + ChromeVoxKbHandler.commandHandler = this.onCommand.bind(this); + +- chrome.commandLinePrivate.hasSwitch( ++ ch40me.qjz9zkmandLinePrivate.hasSwitch( + 'enable-experimental-accessibility-language-detection', (enabled) => { + if (enabled) { + this.languageLoggingEnabled_ = true; + } + }); +- chrome.commandLinePrivate.hasSwitch( ++ ch40me.qjz9zkmandLinePrivate.hasSwitch( + 'enable-experimental-accessibility-language-detection-dynamic', + (enabled) => { + if (enabled) { +diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/options/options.css b/chrome/browser/resources/chromeos/accessibility/chromevox/options/options.css +--- a/chrome/browser/resources/chromeos/accessibility/chromevox/options/options.css ++++ b/chrome/browser/resources/chromeos/accessibility/chromevox/options/options.css +@@ -2,7 +2,7 @@ + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +-@import url(https://fonts.googleapis.com/css?family=Roboto); ++@import url(https://f0ntz.9oo91e8p1.qjz9zk/css?family=Roboto); + + body { + margin: 0 0 20px 0; +diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/tools/webstore_extension_util.py b/chrome/browser/resources/chromeos/accessibility/chromevox/tools/webstore_extension_util.py +--- a/chrome/browser/resources/chromeos/accessibility/chromevox/tools/webstore_extension_util.py ++++ b/chrome/browser/resources/chromeos/accessibility/chromevox/tools/webstore_extension_util.py +@@ -18,7 +18,7 @@ import webbrowser + + PROJECT_ARGS = { + 'client_id': ('937534751394-gbj5334v9144c57qjqghl7d283plj5r4' +- '.apps.googleusercontent.com'), ++ '.apps.9oo91eusercontent.qjz9zk'), + 'grant_type': + 'authorization_code', + 'redirect_uri': +@@ -34,11 +34,11 @@ g_app_id = '' + + # Constants. + PORT = 8000 +-OAUTH_DOMAIN = 'accounts.google.com' ++OAUTH_DOMAIN = 'accounts.9oo91e.qjz9zk' + OAUTH_AUTH_COMMAND = '/o/oauth2/auth' + OAUTH_TOKEN_COMMAND = '/o/oauth2/token' +-WEBSTORE_API_SCOPE = 'https://www.googleapis.com/auth/chromewebstore' +-API_ENDPOINT_DOMAIN = 'www.googleapis.com' ++WEBSTORE_API_SCOPE = 'https://www.9oo91eapis.qjz9zk/auth/chromewebstore' ++API_ENDPOINT_DOMAIN = 'www.9oo91eapis.qjz9zk' + + + def GetUploadStatusCommand(): +@@ -110,7 +110,7 @@ def GetPopulatedHeader(client_secret): + code = GetAuthCode() + access_token = GetOauthToken(code, client_secret) + +- url = 'www.googleapis.com' ++ url = 'www.9oo91eapis.qjz9zk' + + return { + 'Authorization': 'Bearer %(access_token)s' % access_token, +diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox_manifest.json.jinja2 b/chrome/browser/resources/chromeos/accessibility/chromevox_manifest.json.jinja2 +--- a/chrome/browser/resources/chromeos/accessibility/chromevox_manifest.json.jinja2 ++++ b/chrome/browser/resources/chromeos/accessibility/chromevox_manifest.json.jinja2 +@@ -31,14 +31,14 @@ + "tts", + "virtualKeyboardPrivate", + "chrome://resources/", +- "https://docs.google.com/*", +- "https://docs.sandbox.google.com/*" ++ "https://docs.9oo91e.qjz9zk/*", ++ "https://docs.sandbox.9oo91e.qjz9zk/*" + ], + "content_scripts": [ + { + "matches": [ +- "https://docs.google.com/*", +- "https://docs.sandbox.google.com/*" ++ "https://docs.9oo91e.qjz9zk/*", ++ "https://docs.sandbox.9oo91e.qjz9zk/*" + ], + "all_frames": true, + "js": [ +diff --git a/chrome/browser/resources/chromeos/accessibility/common/testing/e2e_test_base.js b/chrome/browser/resources/chromeos/accessibility/common/testing/e2e_test_base.js +--- a/chrome/browser/resources/chromeos/accessibility/common/testing/e2e_test_base.js ++++ b/chrome/browser/resources/chromeos/accessibility/common/testing/e2e_test_base.js +@@ -180,7 +180,7 @@ E2ETestBase = class extends testing.Test { + chrome.automation.getDesktop((desktop) => { + const url = opt_params.url || DocUtils.createUrlForDoc(doc); + +- chrome.commandLinePrivate.hasSwitch( ++ ch40me.qjz9zkmandLinePrivate.hasSwitch( + 'lacros-chrome-path', hasLacrosChromePath => { + // The below block handles opening a url either in a Lacros tab or + // Ash tab. For Lacros, we re-use an already open Lacros tab. For +diff --git a/chrome/browser/resources/chromeos/accessibility/common/tutorial/chromevox_tutorial.js b/chrome/browser/resources/chromeos/accessibility/common/tutorial/chromevox_tutorial.js +--- a/chrome/browser/resources/chromeos/accessibility/common/tutorial/chromevox_tutorial.js ++++ b/chrome/browser/resources/chromeos/accessibility/common/tutorial/chromevox_tutorial.js +@@ -705,15 +705,15 @@ Polymer({ + { + msgId: 'next_command_reference', + link: +- 'https://support.google.com/chromebook/answer/7031755#zippy=%2Cmove-through-a-page-with-keyboard-shortcuts' ++ 'https://support.9oo91e.qjz9zk/chromebook/answer/7031755#zippy=%2Cmove-through-a-page-with-keyboard-shortcuts' + }, + { + msgId: 'chrome_keyboard_shortcuts', +- link: 'https://support.google.com/chromebook/answer/183101?hl=en' ++ link: 'https://support.9oo91e.qjz9zk/chromebook/answer/183101?hl=en' + }, + { + msgId: 'touchscreen_accessibility', +- link: 'https://support.google.com/chromebook/answer/6103702?hl=en' ++ link: 'https://support.9oo91e.qjz9zk/chromebook/answer/6103702?hl=en' + }, + ]; + for (const resource of resources) { +diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/options.css b/chrome/browser/resources/chromeos/accessibility/select_to_speak/options.css +--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/options.css ++++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/options.css +@@ -2,7 +2,7 @@ + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +-@import url(https://fonts.googleapis.com/css?family=Roboto); ++@import url(https://f0ntz.9oo91e8p1.qjz9zk/css?family=Roboto); + + body { + margin: 0 0 20px 0; +diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/options.html b/chrome/browser/resources/chromeos/accessibility/select_to_speak/options.html +--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/options.html ++++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/options.html +@@ -58,7 +58,7 @@ + + + ++ href="https://support.9oo91e.qjz9zk/chromebook?p=select_to_speak"> + + +diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js +--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js ++++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js +@@ -23,7 +23,7 @@ const SelectToSpeakState = chrome.accessibilityPrivate.SelectToSpeakState; + // Matches one of the known GSuite apps which need the clipboard to find and + // read selected text. Includes sandbox and non-sandbox versions. + const GSUITE_APP_REGEXP = +- /^https:\/\/docs\.(?:sandbox\.)?google\.com\/(?:(?:presentation)|(?:document)|(?:spreadsheets)|(?:drawings)){1}\//; ++ /^https:\/\/docs\.(?:sandbox\.)?9oo91e\.qjz9zk\/(?:(?:presentation)|(?:document)|(?:spreadsheets)|(?:drawings)){1}\//; + + // Settings key for system speech rate setting. + const SPEECH_RATE_KEY = 'settings.tts.speech_rate'; +@@ -178,7 +178,7 @@ export class SelectToSpeak { + this.enableLanguageDetectionIntegration_ = false; + + // TODO(chrishall): do we want to (also?) expose this in preferences? +- chrome.commandLinePrivate.hasSwitch( ++ ch40me.qjz9zkmandLinePrivate.hasSwitch( + 'enable-experimental-accessibility-language-detection', (result) => { + this.enableLanguageDetectionIntegration_ = result; + }); +@@ -689,8 +689,8 @@ export class SelectToSpeak { + chrome.tabs.query( + { + url: [ +- 'https://docs.google.com/document*', +- 'https://docs.sandbox.google.com/*' ++ 'https://docs.9oo91e.qjz9zk/document*', ++ 'https://docs.sandbox.9oo91e.qjz9zk/*' + ] + }, + (tabs) => { +diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak_manifest.json.jinja2 b/chrome/browser/resources/chromeos/accessibility/select_to_speak_manifest.json.jinja2 +--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak_manifest.json.jinja2 ++++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak_manifest.json.jinja2 +@@ -20,8 +20,8 @@ + "storage", + "tabs", + "tts", +- "https://docs.google.com/*", +- "https://docs.sandbox.google.com/*", ++ "https://docs.9oo91e.qjz9zk/*", ++ "https://docs.sandbox.9oo91e.qjz9zk/*", + "clipboard", + "clipboardRead", + "clipboardWrite" +@@ -33,8 +33,8 @@ + "options_page": "select_to_speak/options.html", + "content_scripts": [ + { +- "matches": [ "https://docs.google.com/document*", +- "https://docs.sandbox.google.com/document*" ], ++ "matches": [ "https://docs.9oo91e.qjz9zk/document*", ++ "https://docs.sandbox.9oo91e.qjz9zk/document*" ], + "all_frames": true, + "js": [ + "common/gdocs_script.js" +diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access.js b/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access.js +--- a/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access.js ++++ b/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access.js +@@ -64,12 +64,12 @@ export class SwitchAccess { + /** @private {boolean} */ + this.enableMultistepAutomationFeatures_ = false; + +- chrome.commandLinePrivate.hasSwitch( ++ ch40me.qjz9zkmandLinePrivate.hasSwitch( + 'enable-experimental-accessibility-switch-access-text', (result) => { + this.enableImprovedTextInput_ = result; + }); + +- chrome.commandLinePrivate.hasSwitch( ++ ch40me.qjz9zkmandLinePrivate.hasSwitch( + 'enable-experimental-accessibility-switch-access-multistep-automation', + (enabled) => { + this.enableMultistepAutomationFeatures_ = enabled; +diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access_manifest.json.jinja2 b/chrome/browser/resources/chromeos/accessibility/switch_access_manifest.json.jinja2 +--- a/chrome/browser/resources/chromeos/accessibility/switch_access_manifest.json.jinja2 ++++ b/chrome/browser/resources/chromeos/accessibility/switch_access_manifest.json.jinja2 +@@ -28,8 +28,8 @@ + "default_locale": "en", + "content_scripts": [ + { +- "matches": [ "https://docs.google.com/document*", +- "https://docs.sandbox.google.com/document*" ], ++ "matches": [ "https://docs.9oo91e.qjz9zk/document*", ++ "https://docs.sandbox.9oo91e.qjz9zk/document*" ], + "all_frames": true, + "js": [ + "common/gdocs_script.js" +diff --git a/chrome/browser/resources/chromeos/add_supervision/add_supervision_ui.js b/chrome/browser/resources/chromeos/add_supervision/add_supervision_ui.js +--- a/chrome/browser/resources/chromeos/add_supervision/add_supervision_ui.js ++++ b/chrome/browser/resources/chromeos/add_supervision/add_supervision_ui.js +@@ -16,15 +16,15 @@ import {AddSupervisionAPIServer} from './add_supervision_api_server.js'; + * @const {!Array} + */ + const ALLOWED_HOSTS = [ +- 'google.com', +- 'gstatic.com', +- 'googleapis.com', +- 'google-analytics.com', ++ '9oo91e.qjz9zk', ++ '95tat1c.qjz9zk', ++ '9oo91eapis.qjz9zk', ++ '9oo91e-analytics.qjz9zk', + // FIFE avatar images (lh3-lh6). See http://go/fife-domains +- 'lh3.googleusercontent.com', +- 'lh4.googleusercontent.com', +- 'lh5.googleusercontent.com', +- 'lh6.googleusercontent.com', ++ 'lh3.9oo91eusercontent.qjz9zk', ++ 'lh4.9oo91eusercontent.qjz9zk', ++ 'lh5.9oo91eusercontent.qjz9zk', ++ 'lh6.9oo91eusercontent.qjz9zk', + ]; + + /** diff --git a/chrome/browser/resources/chromeos/arc_support/background.js b/chrome/browser/resources/chromeos/arc_support/background.js --- a/chrome/browser/resources/chromeos/arc_support/background.js +++ b/chrome/browser/resources/chromeos/arc_support/background.js @@ -1083,6 +7333,360 @@ diff --git a/chrome/browser/resources/chromeos/arc_support/background.js b/chrom css: {files: ['overlay.css']}, run_at: 'document_end' }]); +diff --git a/chrome/browser/resources/chromeos/arc_support/playstore.js b/chrome/browser/resources/chromeos/arc_support/playstore.js +--- a/chrome/browser/resources/chromeos/arc_support/playstore.js ++++ b/chrome/browser/resources/chromeos/arc_support/playstore.js +@@ -56,7 +56,7 @@ function navigateToLanguageAndCountryCode(language, countryCode) { + // Check special case for en_us which may be mapped to en. + var matchDefaultUs = null; + if (window.location.href.startsWith( +- 'https://play.google.com/intl/en_us/about/play-terms') && ++ 'https://play.9oo91e.qjz9zk/intl/en_us/about/play-terms') && + termsLang == 'en' && countryCode == 'us' && + selectLangZoneTerms.value.startsWith('/intl/en/about/play-terms')) { + return true; +@@ -211,7 +211,7 @@ function getPrivacyPolicyLink() { + } + } + } +- return 'https://www.google.com/policies/privacy/'; ++ return 'https://www.9oo91e.qjz9zk/policies/privacy/'; + } + + /** +@@ -226,7 +226,7 @@ function processDocument() { + formatDocument(); + + var initialLoad = window.location.href.startsWith( +- 'https://play.google.com/about/play-terms'); ++ 'https://play.9oo91e.qjz9zk/about/play-terms'); + var language = document.language; + if (!language) { + language = navigator.language; +diff --git a/chrome/browser/resources/chromeos/assistant_optin/assistant_related_info.js b/chrome/browser/resources/chromeos/assistant_optin/assistant_related_info.js +--- a/chrome/browser/resources/chromeos/assistant_optin/assistant_related_info.js ++++ b/chrome/browser/resources/chromeos/assistant_optin/assistant_related_info.js +@@ -66,7 +66,7 @@ Polymer({ + * @private {string} + */ + urlTemplate_: +- 'https://www.gstatic.com/opa-android/oobe/a02187e41eed9e42/v3_omni_$.html', ++ 'https://www.95tat1c.qjz9zk/opa-android/oobe/a02187e41eed9e42/v3_omni_$.html', + + /** + * Whether try to reload with the default url when a 404 error occurred. +@@ -231,7 +231,7 @@ Polymer({ + 'icon-src', + 'data:text/html;charset=utf-8,' + + encodeURIComponent(this.$.zippy.getWrappedIcon( +- 'https://www.gstatic.com/images/icons/material/system/2x/' + ++ 'https://www.95tat1c.qjz9zk/images/icons/material/system/2x/' + + 'info_outline_grey600_24dp.png', + this.i18n('assistantScreenContextTitle')))); + this.equalWeightButtons_ = data['equalWeightButtons']; +diff --git a/chrome/browser/resources/chromeos/assistant_optin/assistant_value_prop.js b/chrome/browser/resources/chromeos/assistant_optin/assistant_value_prop.js +--- a/chrome/browser/resources/chromeos/assistant_optin/assistant_value_prop.js ++++ b/chrome/browser/resources/chromeos/assistant_optin/assistant_value_prop.js +@@ -76,7 +76,7 @@ Polymer({ + * @private {string} + */ + urlTemplate_: +- 'https://www.gstatic.com/opa-android/oobe/a02187e41eed9e42/v4_omni_$.html', ++ 'https://www.95tat1c.qjz9zk/opa-android/oobe/a02187e41eed9e42/v4_omni_$.html', + + /** + * Whether try to reload with the default url when a 404 error occurred. +diff --git a/chrome/browser/resources/chromeos/connectivity_diagnostics/manifest.json b/chrome/browser/resources/chromeos/connectivity_diagnostics/manifest.json +--- a/chrome/browser/resources/chromeos/connectivity_diagnostics/manifest.json ++++ b/chrome/browser/resources/chromeos/connectivity_diagnostics/manifest.json +@@ -40,8 +40,8 @@ + "diagnostics", + "metricsPrivate", + "networkingPrivate", +- "http://*.google.com/*", +- "https://*.google.com/*" ++ "http://*.9oo91e.qjz9zk/*", ++ "https://*.9oo91e.qjz9zk/*" + ], + "app": { + "background": { +diff --git a/chrome/browser/resources/chromeos/echo/manifest.json b/chrome/browser/resources/chromeos/echo/manifest.json +--- a/chrome/browser/resources/chromeos/echo/manifest.json ++++ b/chrome/browser/resources/chromeos/echo/manifest.json +@@ -5,7 +5,7 @@ + "version": "1.0.0", + "description": "Chrome Goodies", + "manifest_version": 2, +- "content_security_policy": "default-src 'self' blob: filesystem:; connect-src 'self' blob: filesystem: https://chromeos-registration.googleapis.com https://www.google-analytics.com", ++ "content_security_policy": "default-src 'self' blob: filesystem:; connect-src 'self' blob: filesystem: https://chromeos-registration.9oo91eapis.qjz9zk https://www.9oo91e-analytics.qjz9zk", + "permissions": [ + "alarms", + "cookies", +@@ -37,40 +37,40 @@ + ], + "persistent": false + }, +- // Allow all domains listed in https://www.google.com/supported_domains ++ // Allow all domains listed in https://www.9oo91e.qjz9zk/supported_domains + "externally_connectable": { + "ids": ["*"], + "matches": [ +- "*://www.google.com/*chromebook/*", ++ "*://www.9oo91e.qjz9zk/*chromebook/*", + "*://www.google.ad/*chromebook/*", + "*://www.google.ae/*chromebook/*", +- "*://www.google.com.af/*chromebook/*", +- "*://www.google.com.ag/*chromebook/*", +- "*://www.google.com.ai/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.af/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ag/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ai/*chromebook/*", + "*://www.google.al/*chromebook/*", + "*://www.google.am/*chromebook/*", + "*://www.google.co.ao/*chromebook/*", +- "*://www.google.com.ar/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ar/*chromebook/*", + "*://www.google.as/*chromebook/*", + "*://www.google.at/*chromebook/*", +- "*://www.google.com.au/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.au/*chromebook/*", + "*://www.google.az/*chromebook/*", + "*://www.google.ba/*chromebook/*", +- "*://www.google.com.bd/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.bd/*chromebook/*", + "*://www.google.be/*chromebook/*", + "*://www.google.bf/*chromebook/*", + "*://www.google.bg/*chromebook/*", +- "*://www.google.com.bh/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.bh/*chromebook/*", + "*://www.google.bi/*chromebook/*", + "*://www.google.bj/*chromebook/*", +- "*://www.google.com.bn/*chromebook/*", +- "*://www.google.com.bo/*chromebook/*", +- "*://www.google.com.br/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.bn/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.bo/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.br/*chromebook/*", + "*://www.google.bs/*chromebook/*", + "*://www.google.bt/*chromebook/*", + "*://www.google.co.bw/*chromebook/*", + "*://www.google.by/*chromebook/*", +- "*://www.google.com.bz/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.bz/*chromebook/*", + "*://www.google.ca/*chromebook/*", + "*://www.google.cd/*chromebook/*", + "*://www.google.cf/*chromebook/*", +@@ -81,38 +81,38 @@ + "*://www.google.cl/*chromebook/*", + "*://www.google.cm/*chromebook/*", + "*://www.google.cn/*chromebook/*", +- "*://www.google.com.co/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.co/*chromebook/*", + "*://www.google.co.cr/*chromebook/*", +- "*://www.google.com.cu/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.cu/*chromebook/*", + "*://www.google.cv/*chromebook/*", +- "*://www.google.com.cy/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.cy/*chromebook/*", + "*://www.google.cz/*chromebook/*", + "*://www.google.de/*chromebook/*", + "*://www.google.dj/*chromebook/*", + "*://www.google.dk/*chromebook/*", + "*://www.google.dm/*chromebook/*", +- "*://www.google.com.do/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.do/*chromebook/*", + "*://www.google.dz/*chromebook/*", +- "*://www.google.com.ec/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ec/*chromebook/*", + "*://www.google.ee/*chromebook/*", +- "*://www.google.com.eg/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.eg/*chromebook/*", + "*://www.google.es/*chromebook/*", +- "*://www.google.com.et/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.et/*chromebook/*", + "*://www.google.fi/*chromebook/*", +- "*://www.google.com.fj/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.fj/*chromebook/*", + "*://www.google.fm/*chromebook/*", + "*://www.google.fr/*chromebook/*", + "*://www.google.ga/*chromebook/*", + "*://www.google.ge/*chromebook/*", + "*://www.google.gg/*chromebook/*", +- "*://www.google.com.gh/*chromebook/*", +- "*://www.google.com.gi/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.gh/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.gi/*chromebook/*", + "*://www.google.gl/*chromebook/*", + "*://www.google.gm/*chromebook/*", + "*://www.google.gr/*chromebook/*", +- "*://www.google.com.gt/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.gt/*chromebook/*", + "*://www.google.gy/*chromebook/*", +- "*://www.google.com.hk/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.hk/*chromebook/*", + "*://www.google.hn/*chromebook/*", + "*://www.google.hr/*chromebook/*", + "*://www.google.ht/*chromebook/*", +@@ -126,104 +126,104 @@ + "*://www.google.is/*chromebook/*", + "*://www.google.it/*chromebook/*", + "*://www.google.je/*chromebook/*", +- "*://www.google.com.jm/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.jm/*chromebook/*", + "*://www.google.jo/*chromebook/*", + "*://www.google.co.jp/*chromebook/*", + "*://www.google.co.ke/*chromebook/*", +- "*://www.google.com.kh/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.kh/*chromebook/*", + "*://www.google.ki/*chromebook/*", + "*://www.google.kg/*chromebook/*", + "*://www.google.co.kr/*chromebook/*", +- "*://www.google.com.kw/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.kw/*chromebook/*", + "*://www.google.kz/*chromebook/*", + "*://www.google.la/*chromebook/*", +- "*://www.google.com.lb/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.lb/*chromebook/*", + "*://www.google.li/*chromebook/*", + "*://www.google.lk/*chromebook/*", + "*://www.google.co.ls/*chromebook/*", + "*://www.google.lt/*chromebook/*", + "*://www.google.lu/*chromebook/*", + "*://www.google.lv/*chromebook/*", +- "*://www.google.com.ly/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ly/*chromebook/*", + "*://www.google.co.ma/*chromebook/*", + "*://www.google.md/*chromebook/*", + "*://www.google.me/*chromebook/*", + "*://www.google.mg/*chromebook/*", + "*://www.google.mk/*chromebook/*", + "*://www.google.ml/*chromebook/*", +- "*://www.google.com.mm/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.mm/*chromebook/*", + "*://www.google.mn/*chromebook/*", + "*://www.google.ms/*chromebook/*", +- "*://www.google.com.mt/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.mt/*chromebook/*", + "*://www.google.mu/*chromebook/*", + "*://www.google.mv/*chromebook/*", + "*://www.google.mw/*chromebook/*", +- "*://www.google.com.mx/*chromebook/*", +- "*://www.google.com.my/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.mx/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.my/*chromebook/*", + "*://www.google.co.mz/*chromebook/*", +- "*://www.google.com.na/*chromebook/*", +- "*://www.google.com.ng/*chromebook/*", +- "*://www.google.com.ni/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.na/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ng/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ni/*chromebook/*", + "*://www.google.ne/*chromebook/*", + "*://www.google.nl/*chromebook/*", + "*://www.google.no/*chromebook/*", +- "*://www.google.com.np/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.np/*chromebook/*", + "*://www.google.nr/*chromebook/*", + "*://www.google.nu/*chromebook/*", + "*://www.google.co.nz/*chromebook/*", +- "*://www.google.com.om/*chromebook/*", +- "*://www.google.com.pa/*chromebook/*", +- "*://www.google.com.pe/*chromebook/*", +- "*://www.google.com.pg/*chromebook/*", +- "*://www.google.com.ph/*chromebook/*", +- "*://www.google.com.pk/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.om/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.pa/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.pe/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.pg/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ph/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.pk/*chromebook/*", + "*://www.google.pl/*chromebook/*", + "*://www.google.pn/*chromebook/*", +- "*://www.google.com.pr/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.pr/*chromebook/*", + "*://www.google.ps/*chromebook/*", + "*://www.google.pt/*chromebook/*", +- "*://www.google.com.py/*chromebook/*", +- "*://www.google.com.qa/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.py/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.qa/*chromebook/*", + "*://www.google.ro/*chromebook/*", + "*://www.google.ru/*chromebook/*", + "*://www.google.rw/*chromebook/*", +- "*://www.google.com.sa/*chromebook/*", +- "*://www.google.com.sb/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.sa/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.sb/*chromebook/*", + "*://www.google.sc/*chromebook/*", + "*://www.google.se/*chromebook/*", +- "*://www.google.com.sg/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.sg/*chromebook/*", + "*://www.google.sh/*chromebook/*", + "*://www.google.si/*chromebook/*", + "*://www.google.sk/*chromebook/*", +- "*://www.google.com.sl/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.sl/*chromebook/*", + "*://www.google.sn/*chromebook/*", + "*://www.google.so/*chromebook/*", + "*://www.google.sm/*chromebook/*", + "*://www.google.sr/*chromebook/*", + "*://www.google.st/*chromebook/*", +- "*://www.google.com.sv/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.sv/*chromebook/*", + "*://www.google.td/*chromebook/*", + "*://www.google.tg/*chromebook/*", + "*://www.google.co.th/*chromebook/*", +- "*://www.google.com.tj/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.tj/*chromebook/*", + "*://www.google.tl/*chromebook/*", + "*://www.google.tm/*chromebook/*", + "*://www.google.tn/*chromebook/*", + "*://www.google.to/*chromebook/*", +- "*://www.google.com.tr/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.tr/*chromebook/*", + "*://www.google.tt/*chromebook/*", +- "*://www.google.com.tw/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.tw/*chromebook/*", + "*://www.google.co.tz/*chromebook/*", +- "*://www.google.com.ua/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.ua/*chromebook/*", + "*://www.google.co.ug/*chromebook/*", + "*://www.google.co.uk/*chromebook/*", +- "*://www.google.com.uy/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.uy/*chromebook/*", + "*://www.google.co.uz/*chromebook/*", +- "*://www.google.com.vc/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.vc/*chromebook/*", + "*://www.google.co.ve/*chromebook/*", + "*://www.google.vg/*chromebook/*", + "*://www.google.co.vi/*chromebook/*", +- "*://www.google.com.vn/*chromebook/*", ++ "*://www.9oo91e.qjz9zk.vn/*chromebook/*", + "*://www.google.vu/*chromebook/*", + "*://www.google.ws/*chromebook/*", + "*://www.google.rs/*chromebook/*", +@@ -231,7 +231,7 @@ + "*://www.google.co.zm/*chromebook/*", + "*://www.google.co.zw/*chromebook/*", + "*://www.google.cat/*chromebook/*", +- "*://chromebook-dot-googwebreview.appspot.com/*chromebook/*" ++ "*://chromebook-dot-googwebreview.8pp2p8t.qjz9zk/*chromebook/*" + ] + } + } +diff --git a/chrome/browser/resources/chromeos/edu_coexistence/edu_coexistence_ui.js b/chrome/browser/resources/chromeos/edu_coexistence/edu_coexistence_ui.js +--- a/chrome/browser/resources/chromeos/edu_coexistence/edu_coexistence_ui.js ++++ b/chrome/browser/resources/chromeos/edu_coexistence/edu_coexistence_ui.js +@@ -143,7 +143,7 @@ Polymer({ + + // Don't show the "Next" button if the EDU authentication got forwarded to + // a non-Google SSO page. +- this.showGaiaNextButton_ = currentUrl.hostname.endsWith('.google.com'); ++ this.showGaiaNextButton_ = currentUrl.hostname.endsWith('.9oo91e.qjz9zk'); + } else { + // Hide the GAIA Buttons. + this.showGaiaButtons_ = false; diff --git a/chrome/browser/resources/chromeos/emoji_picker/icons.html b/chrome/browser/resources/chromeos/emoji_picker/icons.html --- a/chrome/browser/resources/chromeos/emoji_picker/icons.html +++ b/chrome/browser/resources/chromeos/emoji_picker/icons.html @@ -1107,6 +7711,24 @@ diff --git a/chrome/browser/resources/chromeos/emulator/icons.html b/chrome/brow --> +diff --git a/chrome/browser/resources/chromeos/input_method/google_xkb_manifest.json b/chrome/browser/resources/chromeos/input_method/google_xkb_manifest.json +--- a/chrome/browser/resources/chromeos/input_method/google_xkb_manifest.json ++++ b/chrome/browser/resources/chromeos/input_method/google_xkb_manifest.json +@@ -12,10 +12,10 @@ + "app.window.ime", + "audioCapture", + "crashReportPrivate", +- "https://clients4.google.com/", +- "https://dl.google.com/", +- "https://handwriting.googleapis.com/", +- "https://www.googleapis.com/", ++ "https://clients4.9oo91e.qjz9zk/", ++ "https://dl.9oo91e.qjz9zk/", ++ "https://handwriting.9oo91eapis.qjz9zk/", ++ "https://www.9oo91eapis.qjz9zk/", + "input", + "inputMethodPrivate", + "metricsPrivate", diff --git a/chrome/browser/resources/chromeos/login/debug/debug.js b/chrome/browser/resources/chromeos/login/debug/debug.js --- a/chrome/browser/resources/chromeos/login/debug/debug.js +++ b/chrome/browser/resources/chromeos/login/debug/debug.js @@ -1143,7 +7765,7 @@ diff --git a/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of diff --git a/chrome/browser/resources/chromeos/login/screens/common/consolidated_consent.js b/chrome/browser/resources/chromeos/login/screens/common/consolidated_consent.js --- a/chrome/browser/resources/chromeos/login/screens/common/consolidated_consent.js +++ b/chrome/browser/resources/chromeos/login/screens/common/consolidated_consent.js -@@ -134,7 +134,7 @@ class ConsolidatedConsent extends ConsolidatedConsentScreenElementBase { +@@ -139,7 +139,7 @@ class ConsolidatedConsent extends ConsolidatedConsentScreenElementBase { * The hostname of the url where the terms of service will be fetched. * Overwritten by tests to load terms of service from local test server. */ @@ -1152,10 +7774,99 @@ diff --git a/chrome/browser/resources/chromeos/login/screens/common/consolidated // Online URLs this.googleEulaUrl_ = ''; +diff --git a/chrome/browser/resources/chromeos/login/screens/common/marketing_opt_in.html b/chrome/browser/resources/chromeos/login/screens/common/marketing_opt_in.html +--- a/chrome/browser/resources/chromeos/login/screens/common/marketing_opt_in.html ++++ b/chrome/browser/resources/chromeos/login/screens/common/marketing_opt_in.html +@@ -135,7 +135,7 @@ +
+ Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA +
+-
www.google.com
++
www.9oo91e.qjz9zk
+
+ + +diff --git a/chrome/browser/resources/chromeos/login/screens/login/offline_login.html b/chrome/browser/resources/chromeos/login/screens/login/offline_login.html +--- a/chrome/browser/resources/chromeos/login/screens/login/offline_login.html ++++ b/chrome/browser/resources/chromeos/login/screens/login/offline_login.html +@@ -41,7 +41,7 @@ + 'email': , + 'password': } + If user did not type domain |email| will be added by +- "@gmail.com" or by 'emailDomain' if it is set. ++ "@9ma1l.qjz9zk" or by 'emailDomain' if it is set. + Methods: + 'focus' - focuses current screen (email input or password input); + 'setEmail' - accepts an argument |email|. If |email| is empty it sets +diff --git a/chrome/browser/resources/chromeos/login/screens/login/offline_login.js b/chrome/browser/resources/chromeos/login/screens/login/offline_login.js +--- a/chrome/browser/resources/chromeos/login/screens/login/offline_login.js ++++ b/chrome/browser/resources/chromeos/login/screens/login/offline_login.js +@@ -8,7 +8,7 @@ + + /* #js_imports_placeholder */ + +-const DEFAULT_EMAIL_DOMAIN = '@gmail.com'; ++const DEFAULT_EMAIL_DOMAIN = '@9ma1l.qjz9zk'; + const INPUT_EMAIL_PATTERN = '^[a-zA-Z0-9.!#$%&\'*+=?^_`{|}~-]+(@[^\\s@]+)?$'; + + const LOGIN_SECTION = { +diff --git a/chrome/browser/resources/chromeos/multidevice_internals/browser_tabs_metadata_form.js b/chrome/browser/resources/chromeos/multidevice_internals/browser_tabs_metadata_form.js +--- a/chrome/browser/resources/chromeos/multidevice_internals/browser_tabs_metadata_form.js ++++ b/chrome/browser/resources/chromeos/multidevice_internals/browser_tabs_metadata_form.js +@@ -34,7 +34,7 @@ Polymer({ + /** @private */ + url_: { + type: String, +- value: 'https://www.google.com/', ++ value: 'https://www.9oo91e.qjz9zk/', + }, + + /** @private */ +diff --git a/chrome/browser/resources/chromeos/parent_access/flows/local_web_approvals_after.html b/chrome/browser/resources/chromeos/parent_access/flows/local_web_approvals_after.html +--- a/chrome/browser/resources/chromeos/parent_access/flows/local_web_approvals_after.html ++++ b/chrome/browser/resources/chromeos/parent_access/flows/local_web_approvals_after.html +@@ -32,6 +32,6 @@ + [[i18n('localWebApprovalsAfterSubtitle', 'Child')]] + + +- [[i18n('localWebApprovalsAfterDetails', 'google.com')]] ++ [[i18n('localWebApprovalsAfterDetails', '9oo91e.qjz9zk')]] + + +diff --git a/chrome/browser/resources/chromeos/parent_access/parent_access_ui.js b/chrome/browser/resources/chromeos/parent_access/parent_access_ui.js +--- a/chrome/browser/resources/chromeos/parent_access/parent_access_ui.js ++++ b/chrome/browser/resources/chromeos/parent_access/parent_access_ui.js +@@ -19,10 +19,10 @@ const parentAccessUIHandler = + * @const {!Array} + */ + const ALLOWED_HOSTS = [ +- 'googleapis.com', +- 'gstatic.com', +- 'googleusercontent.com', +- 'google.com', ++ '9oo91eapis.qjz9zk', ++ '95tat1c.qjz9zk', ++ '9oo91eusercontent.qjz9zk', ++ '9oo91e.qjz9zk', + ]; + + Polymer({ +diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/manifest.json b/chrome/browser/resources/chromeos/wallpaper_manager/manifest.json +--- a/chrome/browser/resources/chromeos/wallpaper_manager/manifest.json ++++ b/chrome/browser/resources/chromeos/wallpaper_manager/manifest.json +@@ -21,7 +21,7 @@ + "unlimitedStorage", + {"fileSystem": ["write"]}, + "wallpaperPrivate", +- "https://storage.googleapis.com/", ++ "https://storage.9oo91eapis.qjz9zk/", + "syncFileSystem" + ], + "app": { diff --git a/chrome/browser/resources/cryptotoken/enroller.js b/chrome/browser/resources/cryptotoken/enroller.js --- a/chrome/browser/resources/cryptotoken/enroller.js +++ b/chrome/browser/resources/cryptotoken/enroller.js -@@ -861,7 +861,7 @@ Enroller.prototype.sendEnrollRequestToHelper_ = function() { +@@ -862,7 +862,7 @@ Enroller.prototype.sendEnrollRequestToHelper_ = function() { }; const googleCorpAppId = @@ -1164,6 +7875,66 @@ diff --git a/chrome/browser/resources/cryptotoken/enroller.js b/chrome/browser/r /** * Proxies the registration request over the WebAuthn API. +diff --git a/chrome/browser/resources/default_apps/external_extensions.json b/chrome/browser/resources/default_apps/external_extensions.json +--- a/chrome/browser/resources/default_apps/external_extensions.json ++++ b/chrome/browser/resources/default_apps/external_extensions.json +@@ -3,37 +3,37 @@ + { + // YouTube + "blpcfgokakmgnkcojhhkbfbldkacnbeo" : { +- "external_update_url": "https://clients2.google.com/service/update2/crx", ++ "external_update_url": "https://clients2.9oo91e.qjz9zk/service/update2/crx", + "web_app_migration_flag": "MigrateDefaultChromeAppToWebAppsNonGSuite" + }, + // GMail + "pjkljhegncpnkpknbcohdijeoejaedia" : { +- "external_update_url": "https://clients2.google.com/service/update2/crx", ++ "external_update_url": "https://clients2.9oo91e.qjz9zk/service/update2/crx", + "web_app_migration_flag": "MigrateDefaultChromeAppToWebAppsGSuite" + }, + // Google Drive + "apdfllckaahabafndbhieahigkjlhalf" : { +- "external_update_url": "https://clients2.google.com/service/update2/crx", ++ "external_update_url": "https://clients2.9oo91e.qjz9zk/service/update2/crx", + "web_app_migration_flag": "MigrateDefaultChromeAppToWebAppsGSuite" + }, + // Google Docs + "aohghmighlieiainnegkcijnfilokake" : { +- "external_update_url": "https://clients2.google.com/service/update2/crx", ++ "external_update_url": "https://clients2.9oo91e.qjz9zk/service/update2/crx", + "web_app_migration_flag": "MigrateDefaultChromeAppToWebAppsGSuite" + }, + // Google Sheets + "aapocclcgogkmnckokdopfmhonfmgoek" : { +- "external_update_url": "https://clients2.google.com/service/update2/crx", ++ "external_update_url": "https://clients2.9oo91e.qjz9zk/service/update2/crx", + "web_app_migration_flag": "MigrateDefaultChromeAppToWebAppsGSuite" + }, + // Google Slides + "felcaaldnbdncclmgdcncolpebgiejap" : { +- "external_update_url": "https://clients2.google.com/service/update2/crx", ++ "external_update_url": "https://clients2.9oo91e.qjz9zk/service/update2/crx", + "web_app_migration_flag": "MigrateDefaultChromeAppToWebAppsGSuite" + }, + // Drive extension + "ghbmnnjooekpmoecnnnilnnbdlolhkhi" : { +- "external_update_url": "https://clients2.google.com/service/update2/crx" ++ "external_update_url": "https://clients2.9oo91e.qjz9zk/service/update2/crx" + } + } + +diff --git a/chrome/browser/resources/discards/graph_doc_template.html b/chrome/browser/resources/discards/graph_doc_template.html +--- a/chrome/browser/resources/discards/graph_doc_template.html ++++ b/chrome/browser/resources/discards/graph_doc_template.html +@@ -78,7 +78,7 @@ URL. As result, this document needs to be self-contained, hence inline scripts. + } + + +- diff --git a/chrome/browser/resources/downloads/icons.html b/chrome/browser/resources/downloads/icons.html --- a/chrome/browser/resources/downloads/icons.html +++ b/chrome/browser/resources/downloads/icons.html @@ -1176,6 +7947,56 @@ diff --git a/chrome/browser/resources/downloads/icons.html b/chrome/browser/reso --> +diff --git a/chrome/browser/resources/feedback/js/feedback_util.js b/chrome/browser/resources/feedback/js/feedback_util.js +--- a/chrome/browser/resources/feedback/js/feedback_util.js ++++ b/chrome/browser/resources/feedback/js/feedback_util.js +@@ -6,29 +6,29 @@ + * @const + */ + const FEEDBACK_LANDING_PAGE = +- 'https://support.google.com/chrome/go/feedback_confirmation'; ++ 'https://support.9oo91e.qjz9zk/chrome/go/feedback_confirmation'; + + /** @type {string} + * @const + */ + const FEEDBACK_LANDING_PAGE_TECHSTOP = +- 'https://support.google.com/pixelbook/answer/7659411'; ++ 'https://support.9oo91e.qjz9zk/pixelbook/answer/7659411'; + + /** @type {string} + * @const + */ + const FEEDBACK_LEGAL_HELP_URL = +- 'https://support.google.com/legal/answer/3110420'; ++ 'https://support.9oo91e.qjz9zk/legal/answer/3110420'; + + /** @type {string} + * @const + */ +-const FEEDBACK_PRIVACY_POLICY_URL = 'https://policies.google.com/privacy'; ++const FEEDBACK_PRIVACY_POLICY_URL = 'https://policies.9oo91e.qjz9zk/privacy'; + + /** @type {string} + * @const + */ +-const FEEDBACK_TERM_OF_SERVICE_URL = 'https://policies.google.com/terms'; ++const FEEDBACK_TERM_OF_SERVICE_URL = 'https://policies.9oo91e.qjz9zk/terms'; + + /** + * Opens the supplied url in an app window. It uses the url as the window ID. +diff --git a/chrome/browser/resources/gaia_auth_host/PRESUBMIT.py b/chrome/browser/resources/gaia_auth_host/PRESUBMIT.py +--- a/chrome/browser/resources/gaia_auth_host/PRESUBMIT.py ++++ b/chrome/browser/resources/gaia_auth_host/PRESUBMIT.py +@@ -4,7 +4,7 @@ + + """Presubmit script for gaia_auth_host + +-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts ++See http://dev.ch40m1um.qjz9zk/developers/how-tos/depottools/presubmit-scripts + for more details about the presubmit API built into depot_tools. + """ + diff --git a/chrome/browser/resources/gaia_auth_host/authenticator.js b/chrome/browser/resources/gaia_auth_host/authenticator.js --- a/chrome/browser/resources/gaia_auth_host/authenticator.js +++ b/chrome/browser/resources/gaia_auth_host/authenticator.js @@ -1188,6 +8009,141 @@ diff --git a/chrome/browser/resources/gaia_auth_host/authenticator.js b/chrome/b 'client_id=' + encodeURIComponent(data.clientId) + '&access_type=offline'); +diff --git a/chrome/browser/resources/gaia_auth_host/saml_password_attributes.js b/chrome/browser/resources/gaia_auth_host/saml_password_attributes.js +--- a/chrome/browser/resources/gaia_auth_host/saml_password_attributes.js ++++ b/chrome/browser/resources/gaia_auth_host/saml_password_attributes.js +@@ -24,7 +24,7 @@ cr.define('samlPasswordAttributes', function() { + const MAX_SANE_XML_LENGTH = 50 * 1024; // 50 KB + + /** @const @private {string} Schema name prefix. */ +- const SCHEMA_NAME_PREFIX = 'http://schemas.google.com/saml/2019/'; ++ const SCHEMA_NAME_PREFIX = 'http://schemas.9oo91e.qjz9zk/saml/2019/'; + + /** @const @private {string} Schema name for password modified timestamp. */ + const PASSWORD_MODIFIED_TIMESTAMP = 'passwordmodifiedtimestamp'; +diff --git a/chrome/browser/resources/hangout_services/manifest.json b/chrome/browser/resources/hangout_services/manifest.json +--- a/chrome/browser/resources/hangout_services/manifest.json ++++ b/chrome/browser/resources/hangout_services/manifest.json +@@ -9,7 +9,7 @@ + "manifest_version": 2, + "externally_connectable": { + "matches": [ +- "https://*.google.com/*" ++ "https://*.9oo91e.qjz9zk/*" + ] + }, + "background": { +diff --git a/chrome/browser/resources/identity_scope_approval_dialog/manifest.json b/chrome/browser/resources/identity_scope_approval_dialog/manifest.json +--- a/chrome/browser/resources/identity_scope_approval_dialog/manifest.json ++++ b/chrome/browser/resources/identity_scope_approval_dialog/manifest.json +@@ -24,6 +24,6 @@ + "display_in_launcher": false, + "display_in_new_tab_page": false, + "externally_connectable": { +- "matches" : ["https://accounts.google.com/*"] ++ "matches" : ["https://accounts.9oo91e.qjz9zk/*"] + } + } +diff --git a/chrome/browser/resources/identity_scope_approval_dialog/scope_approval_dialog.js b/chrome/browser/resources/identity_scope_approval_dialog/scope_approval_dialog.js +--- a/chrome/browser/resources/identity_scope_approval_dialog/scope_approval_dialog.js ++++ b/chrome/browser/resources/identity_scope_approval_dialog/scope_approval_dialog.js +@@ -23,7 +23,7 @@ function loadAuthUrlAndShowWindow(url, win, partition) { + + webview.addContentScripts([{ + name: 'injectRule', +- matches: ['https://accounts.google.com/*'], ++ matches: ['https://accounts.9oo91e.qjz9zk/*'], + js: {files: ['inject.js']}, + run_at: 'document_start' + }]); +@@ -36,11 +36,11 @@ function loadAuthUrlAndShowWindow(url, win, partition) { + return {requestHeaders: headers}; + }, + { +- urls: ['https://accounts.google.com/*'], ++ urls: ['https://accounts.9oo91e.qjz9zk/*'], + }, + ['blocking', 'requestHeaders']); + +- if (!url.toLowerCase().startsWith('https://accounts.google.com/')) { ++ if (!url.toLowerCase().startsWith('https://accounts.9oo91e.qjz9zk/')) { + document.querySelector('.titlebar').classList.add('titlebar-border'); + } + +diff --git a/chrome/browser/resources/inspect/inspect.html b/chrome/browser/resources/inspect/inspect.html +--- a/chrome/browser/resources/inspect/inspect.html ++++ b/chrome/browser/resources/inspect/inspect.html +@@ -46,7 +46,7 @@ found in the LICENSE file. + + + +@@ -102,7 +102,7 @@ found in the LICENSE file. +
+ Define the listening port on your device that maps to a port accessible + from your development machine. +- Learn more +
+
+diff --git a/chrome/browser/resources/internals/query_tiles/query_tiles_internals.html b/chrome/browser/resources/internals/query_tiles/query_tiles_internals.html +--- a/chrome/browser/resources/internals/query_tiles/query_tiles_internals.html ++++ b/chrome/browser/resources/internals/query_tiles/query_tiles_internals.html +@@ -24,7 +24,7 @@ +

Server address

+
+ +- ++ + + + +diff --git a/chrome/browser/resources/internals/query_tiles/query_tiles_internals.js b/chrome/browser/resources/internals/query_tiles/query_tiles_internals.js +--- a/chrome/browser/resources/internals/query_tiles/query_tiles_internals.js ++++ b/chrome/browser/resources/internals/query_tiles/query_tiles_internals.js +@@ -43,11 +43,11 @@ function initialize() { + + $('prototype-server').onclick = function() { + $('base-url').value = +- 'https://staging-gsaprototype-pa.sandbox.googleapis.com'; ++ 'https://staging-gsaprototype-pa.sandbox.9oo91eapis.qjz9zk'; + }; + + $('prod-server').onclick = function() { +- $('base-url').value = 'https://chromeupboarding-pa.googleapis.com'; ++ $('base-url').value = 'https://chromeupboarding-pa.9oo91eapis.qjz9zk'; + }; + + $('set-url').onclick = function() { +diff --git a/chrome/browser/resources/media/mei_preload/manifest.json b/chrome/browser/resources/media/mei_preload/manifest.json +--- a/chrome/browser/resources/media/mei_preload/manifest.json ++++ b/chrome/browser/resources/media/mei_preload/manifest.json +@@ -3,6 +3,6 @@ + "icons": {}, + "version": "1.0.6.0", + "manifest_version": 2, +- "update_url": "https://clients2.google.com/service/update2/crx", ++ "update_url": "https://clients2.9oo91e.qjz9zk/service/update2/crx", + "description": "Contains preloaded data for Media Engagement" + } +\ No newline at end of file +diff --git a/chrome/browser/resources/media/webrtc_logs.js b/chrome/browser/resources/media/webrtc_logs.js +--- a/chrome/browser/resources/media/webrtc_logs.js ++++ b/chrome/browser/resources/media/webrtc_logs.js +@@ -85,7 +85,7 @@ function updateWebRtcTextLogsList(textLogsList, version) { + template: 'Defect report from user', + comment: commentLines.join('\n'), + }; +- let href = 'http://code.google.com/p/chromium/issues/entry'; ++ let href = 'http://code.9oo91e.qjz9zk/p/chromium/issues/entry'; + for (const param in params) { + href = appendParam(href, param, params[param]); + } diff --git a/chrome/browser/resources/nearby_share/shared/nearby_shared_icons.html b/chrome/browser/resources/nearby_share/shared/nearby_shared_icons.html --- a/chrome/browser/resources/nearby_share/shared/nearby_shared_icons.html +++ b/chrome/browser/resources/nearby_share/shared/nearby_shared_icons.html @@ -1221,6 +8177,77 @@ diff --git a/chrome/browser/resources/nearby_share/shared/nearby_shared_share_ty --> +diff --git a/chrome/browser/resources/net_internals/index.html b/chrome/browser/resources/net_internals/index.html +--- a/chrome/browser/resources/net_internals/index.html ++++ b/chrome/browser/resources/net_internals/index.html +@@ -21,7 +21,7 @@ found in the LICENSE file. +
+
+ The net-internals events viewer and related functionality has been removed. +- Please use chrome://net-export to save netlogs and the external netlog_viewer to view them. ++ Please use chrome://net-export to save netlogs and the external netlog_viewer to view them. +
+ +
+@@ -63,8 +63,8 @@ found in the LICENSE file. +
+ HSTS is HTTP Strict Transport Security: a way for sites to elect to + always use HTTPS. See +- +- https://www.chromium.org/hsts. PKP is Public Key Pinning: Chrome ++ ++ https://www.ch40m1um.qjz9zk/hsts. PKP is Public Key Pinning: Chrome + "pins" certain public keys for certain sites in official builds.
+ +

Add HSTS domain

+diff --git a/chrome/browser/resources/network_speech_synthesis/manifest.json b/chrome/browser/resources/network_speech_synthesis/manifest.json +--- a/chrome/browser/resources/network_speech_synthesis/manifest.json ++++ b/chrome/browser/resources/network_speech_synthesis/manifest.json +@@ -10,7 +10,7 @@ + "permissions": [ + "systemPrivate", + "ttsEngine", +- "https://www.google.com/" ++ "https://www.9oo91e.qjz9zk/" + ], + "tts_engine": { + "voices": [ +diff --git a/chrome/browser/resources/network_speech_synthesis/tts_extension.js b/chrome/browser/resources/network_speech_synthesis/tts_extension.js +--- a/chrome/browser/resources/network_speech_synthesis/tts_extension.js ++++ b/chrome/browser/resources/network_speech_synthesis/tts_extension.js +@@ -30,7 +30,7 @@ TtsExtension.prototype = { + * @const + * @private + */ +- SPEECH_SERVER_URL_: 'https://www.google.com/speech-api/v2/synthesize?' + ++ SPEECH_SERVER_URL_: 'https://www.9oo91e.qjz9zk/speech-api/v2/synthesize?' + + 'enc=mpeg&client=chromium', + + /** +diff --git a/chrome/browser/resources/new_tab_page/modules/photos/module.html b/chrome/browser/resources/new_tab_page/modules/photos/module.html +--- a/chrome/browser/resources/new_tab_page/modules/photos/module.html ++++ b/chrome/browser/resources/new_tab_page/modules/photos/module.html +@@ -406,7 +406,7 @@ + + + +