diff --git a/build/patches/00Disable-FedCm.patch b/build/patches/00Disable-FedCm.patch index 44bf07c7..4e187831 100644 --- a/build/patches/00Disable-FedCm.patch +++ b/build/patches/00Disable-FedCm.patch @@ -4,14 +4,14 @@ Subject: Disable FedCm License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - content/public/common/content_features.cc | 10 +++++----- - .../renderer/platform/runtime_enabled_features.json5 | 2 +- - 2 files changed, 6 insertions(+), 6 deletions(-) + content/public/common/content_features.cc | 6 +++--- + .../blink/renderer/platform/runtime_enabled_features.json5 | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) 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 -@@ -418,7 +418,7 @@ BASE_FEATURE(kExperimentalContentSecurityPolicyFeatures, +@@ -337,7 +337,7 @@ BASE_FEATURE(kEnableServiceWorkersForChromeScheme, // by the flag in RuntimeEnabledFeatures on the blink side. See also // the use of kSetOnlyIfOverridden in content/child/runtime_features.cc. // We enable it here by default to support use in origin trials. @@ -20,15 +20,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c // Field trial boolean parameter which indicates whether FedCM IDP sign-out // is enabled. -@@ -467,15 +467,15 @@ BASE_FEATURE(kFedCmSelectiveDisclosure, - // Enables metrics collection for signin status mismatches. Also enables - // parsing the signin status HTTP headers. - // kFedCmIdpSigninStatusEnabled takes precedence over this feature flag. --BASE_FEATURE(kFedCmIdpSigninStatusMetrics, // disabled -+BASE_FEATURE(kFedCmIdpSigninStatusMetrics, // enabled - "FedCmIdpSigninStatusMetrics", // by default -- base::FEATURE_DISABLED_BY_DEFAULT); // on bromite -+ base::FEATURE_ENABLED_BY_DEFAULT); // on bromite +@@ -385,9 +385,9 @@ BASE_FEATURE(kFedCmSelectiveDisclosure, // Enables the IDP signin status API for use with FedCM, including avoiding // network requests when not signed in and mismatch handling. @@ -43,7 +35,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/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 -@@ -1596,7 +1596,7 @@ +@@ -1603,7 +1603,7 @@ { name: "FedCm", public: true, diff --git a/build/patches/00Eyeo-Adblock-Remove-Privacy-Issues.patch b/build/patches/00Eyeo-Adblock-Remove-Privacy-Issues.patch index e8d79eae..dc850b87 100644 --- a/build/patches/00Eyeo-Adblock-Remove-Privacy-Issues.patch +++ b/build/patches/00Eyeo-Adblock-Remove-Privacy-Issues.patch @@ -8,7 +8,6 @@ suit Bromite logic .../android/java/res/xml/main_preferences.xml | 19 +- chrome/browser/BUILD.gn | 2 - .../adblock/adblock_content_browser_client.cc | 26 +- - chrome/browser/android/adblock/adblock_jni.cc | 50 +- .../adblock_private/adblock_private_api.cc | 66 +- .../api/adblock_private/adblock_private_api.h | 49 + .../eyeo_filtering_private_api.cc | 20 +- @@ -27,18 +26,19 @@ suit Bromite logic .../extensions/api/_permission_features.json | 8 - .../common/extensions/api/adblock_private.idl | 8 + chrome/test/BUILD.gn | 5 - - components/adblock/android/BUILD.gn | 4 +- + components/adblock/android/BUILD.gn | 3 +- + components/adblock/android/adblock_jni.cc | 50 +- .../adblock/android/adblock_strings.grd | 54 +- .../java/res/layout/adblock_custom_item.xml | 14 +- .../layout/adblock_filter_lists_list_item.xml | 15 + ...ences.xml => eyeo_adblock_preferences.xml} | 39 +- - .../components/adblock/AdblockController.java | 56 +- + .../components/adblock/AdblockController.java | 51 +- .../AdblockAllowedDomainsFragment.java | 7 +- .../AdblockCustomFilterListsFragment.java | 32 +- .../AdblockCustomFiltersFragment.java | 7 +- .../settings/AdblockCustomItemFragment.java | 20 +- .../settings/AdblockFilterListsAdapter.java | 6 + - .../settings/AdblockSettingsFragment.java | 45 +- + .../settings/AdblockSettingsFragment.java | 44 +- components/adblock/content/browser/BUILD.gn | 18 +- .../adblock_controller_factory_base.cc | 5 +- .../browser/adblock_webcontents_observer.cc | 25 +- @@ -48,15 +48,15 @@ suit Bromite logic .../subscription_service_factory_base.cc | 11 +- .../subscription_service_factory_base.h | 1 + components/adblock/core/BUILD.gn | 39 - - .../activeping_telemetry_topic_provider.cc | 243 -- - .../activeping_telemetry_topic_provider.h | 84 - + .../activeping_telemetry_topic_provider.cc | 285 -- + .../activeping_telemetry_topic_provider.h | 87 - components/adblock/core/adblock_controller.h | 8 + .../adblock/core/adblock_controller_impl.cc | 58 +- .../adblock/core/adblock_controller_impl.h | 7 + components/adblock/core/adblock_switches.cc | 1 - components/adblock/core/adblock_switches.h | 1 - - .../adblock/core/adblock_telemetry_service.cc | 244 -- - .../adblock/core/adblock_telemetry_service.h | 107 - + .../adblock/core/adblock_telemetry_service.cc | 258 -- + .../adblock/core/adblock_telemetry_service.h | 120 - components/adblock/core/common/BUILD.gn | 8 - .../adblock/core/common/adblock_constants.cc | 2 - .../adblock/core/common/adblock_constants.h | 1 - @@ -106,9 +106,9 @@ suit Bromite logic .../blink/renderer/core/css/style_engine.cc | 8 + .../blink/renderer/core/css/style_engine.h | 1 + .../renderer/core/exported/web_document.cc | 13 +- - tools/gritsettings/resource_ids.spec | 9 +- + tools/gritsettings/resource_ids.spec | 1 - .../definitions/adblock_private.d.ts | 14 + - 103 files changed, 5081 insertions(+), 1085 deletions(-) + 103 files changed, 5070 insertions(+), 1153 deletions(-) create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.html create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.ts rename components/adblock/android/java/res/xml/{adblock_preferences.xml => eyeo_adblock_preferences.xml} (56%) @@ -165,7 +165,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -166,8 +166,6 @@ static_library("browser") { +@@ -165,8 +165,6 @@ static_library("browser") { "adblock/adblock_content_browser_client.h", "adblock/adblock_controller_factory.cc", "adblock/adblock_controller_factory.h", @@ -177,7 +177,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/browser/adblock/adblock_content_browser_client.cc --- a/chrome/browser/adblock/adblock_content_browser_client.cc +++ b/chrome/browser/adblock/adblock_content_browser_client.cc -@@ -25,6 +25,8 @@ +@@ -24,6 +24,8 @@ #include "chrome/browser/adblock/resource_classification_runner_factory.h" #include "chrome/browser/adblock/sitekey_storage_factory.h" #include "chrome/browser/adblock/subscription_service_factory.h" @@ -186,7 +186,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser_navigator_params.h" #include "components/adblock/content/browser/adblock_url_loader_factory.h" -@@ -61,6 +63,13 @@ bool IsFilteringNeeded(content::RenderFrameHost* frame) { +@@ -59,6 +61,13 @@ bool IsFilteringNeeded(content::RenderFrameHost* frame) { auto* profile = Profile::FromBrowserContext(frame->GetProcess()->GetBrowserContext()); if (profile) { @@ -200,7 +200,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b // Filtering may be needed if there's at least one enabled // FilteringConfiguration. return base::ranges::any_of( -@@ -104,23 +113,6 @@ class AdblockContextData : public base::SupportsUserData::Data { +@@ -102,23 +111,6 @@ class AdblockContextData : public base::SupportsUserData::Data { adblock::SitekeyStorageFactory::GetForBrowserContext(browser_context), adblock::ContentSecurityPolicyInjectorFactory::GetForBrowserContext( browser_context)}; @@ -214,7 +214,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b - embedder_support::GetUserAgent(), - base::BindOnce(&AdblockContextData::RemoveProxy, - self->weak_factory_.GetWeakPtr()), -- adblock::AdblockControllerFactory::GetForBrowserContext( +- adblock::SubscriptionServiceFactory::GetForBrowserContext( - Profile::FromBrowserContext( - frame->GetProcess()->GetBrowserContext()))); - self->proxies_.emplace(std::move(proxy)); @@ -224,111 +224,10 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b auto proxy = std::make_unique( std::move(config), content::GlobalRenderFrameHostId(render_process_id, -diff --git a/chrome/browser/android/adblock/adblock_jni.cc b/chrome/browser/android/adblock/adblock_jni.cc ---- a/chrome/browser/android/adblock/adblock_jni.cc -+++ b/chrome/browser/android/adblock/adblock_jni.cc -@@ -24,6 +24,7 @@ - #include "base/android/jni_array.h" - #include "base/android/jni_string.h" - #include "base/android/jni_weak_ref.h" -+#include "base/time/time_to_iso8601.h" - #include "base/logging.h" - #include "chrome/browser/adblock/adblock_controller_factory.h" - #include "chrome/browser/android/adblock/adblock_jni_factory.h" -@@ -71,6 +72,10 @@ ScopedJavaLocalRef ToJava(JNIEnv* env, - const std::string& url, - const std::string& title, - const std::string& version, -+ adblock::Subscription::InstallationState state, -+ const std::string& installation_time, -+ long download_success_count, -+ long download_error_count, - const std::vector& languages) { - ScopedJavaLocalRef url_param( - env, env->NewObject(url_class.obj(), url_constructor, -@@ -79,12 +84,19 @@ ScopedJavaLocalRef ToJava(JNIEnv* env, - return Java_Subscription_Constructor(env, url_param, - ConvertUTF8ToJavaString(env, title), - ConvertUTF8ToJavaString(env, version), -+ ConvertUTF8ToJavaString(env, Subscription::SubscriptionInstallationStateToString(state)), -+ ConvertUTF8ToJavaString(env, installation_time), -+ download_success_count, -+ download_error_count, - ToJavaArrayOfStrings(env, languages)); - } - - std::vector> CSubscriptionsToJObjects( - JNIEnv* env, - const std::vector>& subscriptions) { -+ auto* controller = adblock::GetController(); -+ raw_ptr metadata = -+ controller->GetMetadata(); - ScopedJavaLocalRef url_class = GetClass(env, "java/net/URL"); - jmethodID url_constructor = MethodID::Get( - env, url_class.obj(), "", "(Ljava/lang/String;)V"); -@@ -93,7 +105,11 @@ std::vector> CSubscriptionsToJObjects( - for (auto& sub : subscriptions) { - jobjects.push_back(ToJava( - env, url_class, url_constructor, sub->GetSourceUrl().spec(), -- sub->GetTitle(), sub->GetCurrentVersion(), std::vector{})); -+ sub->GetTitle(), sub->GetCurrentVersion(), -+ sub->GetInstallationState(), base::TimeToISO8601(sub->GetInstallationTime()), -+ metadata ? metadata->GetDownloadSuccessCount(sub->GetSourceUrl()) : 0, -+ metadata ? metadata->GetDownloadErrorCount(sub->GetSourceUrl()) : 0, -+ std::vector{})); - } - return jobjects; - } -@@ -113,6 +129,9 @@ std::vector> CSubscriptionsToJObjects( - if (sub.url.is_valid()) { - jobjects.push_back(ToJava(env, url_class, url_constructor, - sub.url.spec(), sub.title, "", -+ adblock::Subscription::InstallationState::Unknown, -+ /*installation_time*/ "", -+ /*download_success_count*/ 0, /*download_error_count*/ 0, - sub.languages)); - } - } -@@ -167,6 +186,35 @@ static void JNI_AdblockController_Bind( - adblock::GetJNI()->Bind(weak_controller_ref); - } - -+static void -+JNI_AdblockController_StartUpdate(JNIEnv* env) { -+ adblock::GetController()->StartUpdate(); -+} -+ -+static base::android::ScopedJavaLocalRef -+JNI_AdblockController_GetCustomSubscriptions(JNIEnv* env) { -+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); -+ if (!adblock::GetController()) { -+ return ToJavaArrayOfObjects(env, -+ std::vector>{}); -+ } -+ -+ return ToJavaArrayOfObjects( -+ env, adblock::CSubscriptionsToJObjects( -+ env, adblock::GetController()->GetCustomSubscriptions())); -+} -+ -+static jboolean JNI_AdblockController_IsPrivilegedFiltersEnabled( -+ JNIEnv* env) { -+ return adblock::GetController()->IsPrivilegedFiltersEnabled() ? JNI_TRUE : JNI_FALSE; -+} -+ -+static void JNI_AdblockController_SetPrivilegedFiltersEnabled( -+ JNIEnv* env, -+ jboolean j_enabled) { -+ adblock::GetController()->SetPrivilegedFiltersEnabled(j_enabled == JNI_TRUE); -+} -+ - static base::android::ScopedJavaLocalRef - JNI_AdblockController_GetInstalledSubscriptions(JNIEnv* env) { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); diff --git a/chrome/browser/extensions/api/adblock_private/adblock_private_api.cc b/chrome/browser/extensions/api/adblock_private/adblock_private_api.cc --- a/chrome/browser/extensions/api/adblock_private/adblock_private_api.cc +++ b/chrome/browser/extensions/api/adblock_private/adblock_private_api.cc -@@ -75,26 +75,12 @@ std::vector CopySessionsStats( +@@ -77,26 +77,12 @@ std::vector CopySessionsStats( return result; } @@ -358,7 +257,7 @@ diff --git a/chrome/browser/extensions/api/adblock_private/adblock_private_api.c std::vector result; for (auto& sub : current_subscriptions) { api::adblock_private::Subscription js_sub; -@@ -102,9 +88,13 @@ std::vector CopySubscriptions( +@@ -104,9 +90,13 @@ std::vector CopySubscriptions( js_sub.title = sub->GetTitle(); js_sub.current_version = sub->GetCurrentVersion(); js_sub.installation_state = @@ -373,7 +272,7 @@ diff --git a/chrome/browser/extensions/api/adblock_private/adblock_private_api.c result.emplace_back(std::move(js_sub)); } return result; -@@ -345,6 +335,44 @@ void AdblockPrivateAPI::OnListenerAdded( +@@ -347,6 +337,44 @@ void AdblockPrivateAPI::OnListenerAdded( namespace api { @@ -418,15 +317,15 @@ diff --git a/chrome/browser/extensions/api/adblock_private/adblock_private_api.c AdblockPrivateSetEnabledFunction::AdblockPrivateSetEnabledFunction() {} AdblockPrivateSetEnabledFunction::~AdblockPrivateSetEnabledFunction() {} -@@ -486,7 +514,7 @@ AdblockPrivateGetInstalledSubscriptionsFunction::Run() { - browser_context()); +@@ -514,7 +542,7 @@ AdblockPrivateGetInstalledSubscriptionsFunction::Run() { + << "adblock_private expects \"adblock\" configuration"; return RespondNow(ArgumentList( api::adblock_private::GetInstalledSubscriptions::Results::Create( -- CopySubscriptions(controller->GetInstalledSubscriptions())))); -+ CopySubscriptions(controller, controller->GetInstalledSubscriptions())))); +- CopySubscriptions(subscription_service->GetCurrentSubscriptions( ++ CopySubscriptions(controller, subscription_service->GetCurrentSubscriptions( + subscription_service->GetAdblockFilteringConfiguration()))))); } - AdblockPrivateAddAllowedDomainFunction:: diff --git a/chrome/browser/extensions/api/adblock_private/adblock_private_api.h b/chrome/browser/extensions/api/adblock_private/adblock_private_api.h --- a/chrome/browser/extensions/api/adblock_private/adblock_private_api.h +++ b/chrome/browser/extensions/api/adblock_private/adblock_private_api.h @@ -541,7 +440,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc #include "chrome/browser/adblock/content_security_policy_injector_factory.h" #include "chrome/browser/adblock/element_hider_factory.h" #include "chrome/browser/adblock/resource_classification_runner_factory.h" -@@ -735,7 +734,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -756,7 +755,6 @@ void ChromeBrowserMainExtraPartsProfiles:: ExitTypeServiceFactory::GetInstance(); #endif adblock::AdblockControllerFactory::GetInstance(); @@ -552,7 +451,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn -@@ -72,6 +72,7 @@ build_webui("build") { +@@ -74,6 +74,7 @@ build_webui("build") { web_component_files = [ "a11y_page/a11y_page.ts", "about_page/about_page.ts", @@ -560,7 +459,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc "appearance_page/appearance_fonts_page.ts", "appearance_page/appearance_page.ts", "appearance_page/home_url_input.ts", -@@ -371,6 +372,7 @@ build_webui("build") { +@@ -372,6 +373,7 @@ build_webui("build") { ts_composite = true ts_definitions = [ "//tools/typescript/definitions/autofill_private.d.ts", @@ -1113,7 +1012,7 @@ diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/brows diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts --- a/chrome/browser/resources/settings/route.ts +++ b/chrome/browser/resources/settings/route.ts -@@ -183,6 +183,10 @@ function createBrowserSettingsRoutes(): SettingsRoutes { +@@ -187,6 +187,10 @@ function createBrowserSettingsRoutes(): SettingsRoutes { r.FONTS = r.APPEARANCE.createChild('/fonts'); } @@ -1164,7 +1063,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html 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 -@@ -21,6 +21,7 @@ +@@ -20,6 +20,7 @@ #include "chrome/browser/adblock/element_hider_factory.h" #include "chrome/browser/adblock/sitekey_storage_factory.h" #include "chrome/browser/adblock/subscription_service_factory.h" @@ -1172,7 +1071,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc #include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/breadcrumbs/breadcrumb_manager_tab_helper.h" #include "chrome/browser/browser_process.h" -@@ -343,6 +344,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -350,6 +351,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } } @@ -1181,7 +1080,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc AdblockWebContentObserver::CreateForWebContents( web_contents, adblock::SubscriptionServiceFactory::GetForBrowserContext( -@@ -351,7 +354,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -358,7 +361,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents->GetBrowserContext()), adblock::SitekeyStorageFactory::GetForBrowserContext( web_contents->GetBrowserContext()), @@ -1252,7 +1151,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn import("//components/captive_portal/core/features.gni") import("//components/enterprise/buildflags/buildflags.gni") import("//components/feed/features.gni") -@@ -2699,10 +2698,6 @@ if (!is_android) { +@@ -2751,10 +2750,6 @@ if (!is_android) { sources += [ "../browser/chrome_for_testing/chrome_for_testing_info_bar_browsertest.cc" ] } @@ -1266,16 +1165,15 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn diff --git a/components/adblock/android/BUILD.gn b/components/adblock/android/BUILD.gn --- a/components/adblock/android/BUILD.gn +++ b/components/adblock/android/BUILD.gn -@@ -54,7 +54,7 @@ android_library("adblock_java") { +@@ -95,6 +95,7 @@ android_library("adblock_ui_java") { "//third_party/androidx:androidx_preference_preference_java", ] -- annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] + srcjar_deps = [ ":jni_headers" ] resources_package = "org.chromium.components.adblock" } -@@ -92,7 +92,7 @@ android_resources("java_resources") { +@@ -120,7 +121,7 @@ android_resources("java_ui_resources") { "java/res/layout/adblock_custom_item_settings.xml", "java/res/layout/adblock_filter_lists_list_item.xml", "java/res/xml/adblock_more_options.xml", @@ -1284,6 +1182,107 @@ diff --git a/components/adblock/android/BUILD.gn b/components/adblock/android/BU ] deps = [ ":adblock_strings_grd" ] +diff --git a/components/adblock/android/adblock_jni.cc b/components/adblock/android/adblock_jni.cc +--- a/components/adblock/android/adblock_jni.cc ++++ b/components/adblock/android/adblock_jni.cc +@@ -25,6 +25,7 @@ + #include "base/android/jni_array.h" + #include "base/android/jni_string.h" + #include "base/android/jni_weak_ref.h" ++#include "base/time/time_to_iso8601.h" + #include "base/logging.h" + #include "components/adblock/android/java_bindings_getters.h" + #include "components/adblock/android/jni_headers/AdblockController_jni.h" +@@ -54,6 +55,10 @@ ScopedJavaLocalRef ToJava(JNIEnv* env, + const std::string& url, + const std::string& title, + const std::string& version, ++ adblock::Subscription::InstallationState state, ++ const std::string& installation_time, ++ long download_success_count, ++ long download_error_count, + const std::vector& languages) { + ScopedJavaLocalRef url_param( + env, env->NewObject(url_class.obj(), url_constructor, +@@ -62,12 +67,19 @@ ScopedJavaLocalRef ToJava(JNIEnv* env, + return Java_Subscription_Constructor(env, url_param, + ConvertUTF8ToJavaString(env, title), + ConvertUTF8ToJavaString(env, version), ++ ConvertUTF8ToJavaString(env, Subscription::SubscriptionInstallationStateToString(state)), ++ ConvertUTF8ToJavaString(env, installation_time), ++ download_success_count, ++ download_error_count, + ToJavaArrayOfStrings(env, languages)); + } + + std::vector> CSubscriptionsToJObjects( + JNIEnv* env, + const std::vector>& subscriptions) { ++ auto* controller = adblock::GetController(); ++ raw_ptr metadata = ++ controller->GetMetadata(); + ScopedJavaLocalRef url_class = GetClass(env, "java/net/URL"); + jmethodID url_constructor = MethodID::Get( + env, url_class.obj(), "", "(Ljava/lang/String;)V"); +@@ -76,7 +88,11 @@ std::vector> CSubscriptionsToJObjects( + for (auto& sub : subscriptions) { + jobjects.push_back(ToJava( + env, url_class, url_constructor, sub->GetSourceUrl().spec(), +- sub->GetTitle(), sub->GetCurrentVersion(), std::vector{})); ++ sub->GetTitle(), sub->GetCurrentVersion(), ++ sub->GetInstallationState(), base::TimeToISO8601(sub->GetInstallationTime()), ++ metadata ? metadata->GetDownloadSuccessCount(sub->GetSourceUrl()) : 0, ++ metadata ? metadata->GetDownloadErrorCount(sub->GetSourceUrl()) : 0, ++ std::vector{})); + } + return jobjects; + } +@@ -96,6 +112,9 @@ std::vector> CSubscriptionsToJObjects( + if (sub.url.is_valid()) { + jobjects.push_back(ToJava(env, url_class, url_constructor, + sub.url.spec(), sub.title, "", ++ adblock::Subscription::InstallationState::Unknown, ++ /*installation_time*/ "", ++ /*download_success_count*/ 0, /*download_error_count*/ 0, + sub.languages)); + } + } +@@ -125,6 +144,35 @@ void AdblockJNI::Bind(JavaObjectWeakGlobalRef weak_java_controller) { + weak_java_controller_ = weak_java_controller; + } + ++static void ++JNI_AdblockController_StartUpdate(JNIEnv* env) { ++ adblock::GetController()->StartUpdate(); ++} ++ ++static base::android::ScopedJavaLocalRef ++JNI_AdblockController_GetCustomSubscriptions(JNIEnv* env) { ++ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); ++ if (!adblock::GetController()) { ++ return ToJavaArrayOfObjects(env, ++ std::vector>{}); ++ } ++ ++ return ToJavaArrayOfObjects( ++ env, adblock::CSubscriptionsToJObjects( ++ env, adblock::GetController()->GetCustomSubscriptions())); ++} ++ ++static jboolean JNI_AdblockController_IsPrivilegedFiltersEnabled( ++ JNIEnv* env) { ++ return adblock::GetController()->IsPrivilegedFiltersEnabled() ? JNI_TRUE : JNI_FALSE; ++} ++ ++static void JNI_AdblockController_SetPrivilegedFiltersEnabled( ++ JNIEnv* env, ++ jboolean j_enabled) { ++ adblock::GetController()->SetPrivilegedFiltersEnabled(j_enabled == JNI_TRUE); ++} ++ + void AdblockJNI::OnSubscriptionInstalled(const GURL& url) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + JNIEnv* env = AttachCurrentThread(); diff --git a/components/adblock/android/adblock_strings.grd b/components/adblock/android/adblock_strings.grd --- a/components/adblock/android/adblock_strings.grd +++ b/components/adblock/android/adblock_strings.grd @@ -1488,7 +1487,7 @@ rename to components/adblock/android/java/res/xml/eyeo_adblock_preferences.xml diff --git a/components/adblock/android/java/src/org/chromium/components/adblock/AdblockController.java b/components/adblock/android/java/src/org/chromium/components/adblock/AdblockController.java --- a/components/adblock/android/java/src/org/chromium/components/adblock/AdblockController.java +++ b/components/adblock/android/java/src/org/chromium/components/adblock/AdblockController.java -@@ -85,6 +85,10 @@ public final class AdblockController extends FilteringConfiguration { +@@ -73,6 +73,10 @@ public final class AdblockController extends FilteringConfiguration { private String mTitle; private String mVersion = ""; private String[] mLanguages = {}; @@ -1499,7 +1498,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock public Subscription(final URL url, final String title, final String version) { this.mUrl = url; -@@ -94,11 +98,30 @@ public final class AdblockController extends FilteringConfiguration { +@@ -82,11 +86,30 @@ public final class AdblockController extends FilteringConfiguration { @CalledByNative("Subscription") public Subscription( @@ -1531,7 +1530,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock } public String title() { -@@ -129,6 +152,7 @@ public final class AdblockController extends FilteringConfiguration { +@@ -117,6 +140,7 @@ public final class AdblockController extends FilteringConfiguration { @UiThread public void setAcceptableAdsEnabled(boolean enabled) { @@ -1539,19 +1538,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock if (enabled) addFilterList(mAcceptableAds); else -@@ -164,7 +188,10 @@ public final class AdblockController extends FilteringConfiguration { - if (title != null && !title.isEmpty()) { - recommendedSubscriptions.set(i, - new Subscription(recommendedSubscriptions.get(i).url(), title, -- "" /*version*/, recommendedSubscriptions.get(i).languages())); -+ "" /*version*/, -+ "" /*state*/, "" /*installation_time*/, -+ 0 /*download_success_count*/, 0 /*download_error_count*/, -+ recommendedSubscriptions.get(i).languages())); - break; - } - } -@@ -182,6 +209,27 @@ public final class AdblockController extends FilteringConfiguration { +@@ -144,6 +168,27 @@ public final class AdblockController extends FilteringConfiguration { removeFilterList(url); } @@ -1579,7 +1566,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock @UiThread public List getInstalledSubscriptions() { return (List) (List) Arrays.asList( -@@ -251,6 +299,10 @@ public final class AdblockController extends FilteringConfiguration { +@@ -196,6 +241,10 @@ public final class AdblockController extends FilteringConfiguration { @NativeMethods interface Natives { @@ -1637,7 +1624,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock - final List installed = - AdblockController.getInstance().getInstalledSubscriptions(); - final List recommended = -- AdblockController.getInstance().getRecommendedSubscriptions(getActivity()); +- AdblockController.getInstance().getRecommendedSubscriptions(); - final List customStrings = new ArrayList(); - for (final AdblockController.Subscription subscription : installed) { - if (recommended.contains(subscription)) { @@ -1783,15 +1770,15 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock diff --git a/components/adblock/android/java/src/org/chromium/components/adblock/settings/AdblockSettingsFragment.java b/components/adblock/android/java/src/org/chromium/components/adblock/settings/AdblockSettingsFragment.java --- a/components/adblock/android/java/src/org/chromium/components/adblock/settings/AdblockSettingsFragment.java +++ b/components/adblock/android/java/src/org/chromium/components/adblock/settings/AdblockSettingsFragment.java -@@ -16,6 +16,7 @@ import android.os.Bundle; - import android.util.Log; - import android.view.MotionEvent; - import android.view.View; +@@ -13,6 +13,7 @@ + package org.chromium.components.adblock.settings; + + import android.os.Bundle; +import android.widget.Toast; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; -@@ -34,7 +35,19 @@ public class AdblockSettingsFragment +@@ -32,7 +33,19 @@ public class AdblockSettingsFragment private Preference mFilterLists; private Preference mAllowedDomains; private Preference mMoreOptions; @@ -1812,7 +1799,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock private static final String SETTINGS_ENABLED_KEY = "fragment_adblock_settings_enabled_key"; private static final String SETTINGS_FILTER_LISTS_KEY = "fragment_adblock_settings_filter_lists_key"; -@@ -51,6 +64,16 @@ public class AdblockSettingsFragment +@@ -49,6 +62,16 @@ public class AdblockSettingsFragment private long mOnOffTogleTimestamp; private void bindPreferences() { @@ -1829,19 +1816,17 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock mAdblockEnabled = (ChromeSwitchPreference) findPreference(SETTINGS_ENABLED_KEY); mFilterLists = findPreference(SETTINGS_FILTER_LISTS_KEY); mAcceptableAdsEnabled = (ChromeSwitchPreference) findPreference(SETTINGS_AA_ENABLED_KEY); -@@ -59,14 +82,28 @@ public class AdblockSettingsFragment +@@ -62,14 +85,25 @@ public class AdblockSettingsFragment } private void applyAdblockEnabled(boolean enabledValue) { +- mFilterLists.setEnabled(enabledValue); +- mAcceptableAdsEnabled.setEnabled(enabledValue); + mStartUpdate.setEnabled(enabledValue); + mPrivilegedFilters.setEnabled(enabledValue); - mFilterLists.setEnabled(enabledValue); - mAcceptableAdsEnabled.setEnabled(enabledValue); -+ mAcceptableAdsEnabled.setVisible(false); mAllowedDomains.setEnabled(enabledValue); mMoreOptions.setEnabled(enabledValue); -- mMoreOptions.setVisible(AdblockController.getInstance().areMoreOptionsEnabled()); -+ mMoreOptions.setVisible(false); + mMoreOptions.setVisible(areMoreOptionsEnabled()); } private void synchronizePreferences() { @@ -1859,7 +1844,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock boolean enabled = AdblockController.getInstance().isEnabled(); mAdblockEnabled.setChecked(enabled); mAdblockEnabled.setOnPreferenceChangeListener(this); -@@ -103,7 +140,7 @@ public class AdblockSettingsFragment +@@ -107,7 +141,7 @@ public class AdblockSettingsFragment @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -1868,7 +1853,7 @@ diff --git a/components/adblock/android/java/src/org/chromium/components/adblock bindPreferences(); synchronizePreferences(); } -@@ -122,6 +159,8 @@ public class AdblockSettingsFragment +@@ -126,6 +160,8 @@ public class AdblockSettingsFragment maybeEnableMoreOptions(); applyAdblockEnabled((Boolean) newValue); @@ -1958,9 +1943,9 @@ diff --git a/components/adblock/content/browser/adblock_webcontents_observer.cc + void TraceHandleLoadComplete( - content::RenderFrameHost* frame_host, + intptr_t rfh_trace_id, @@ -66,18 +68,32 @@ void TraceHandleLoadComplete( - TRACE_ID_LOCAL(frame_host)); + TRACE_ID_LOCAL(rfh_trace_id)); } +bool IsFilteringNeeded(content::RenderFrameHost* frame, HostContentSettingsMap* settings_map) { @@ -2046,7 +2031,7 @@ diff --git a/components/adblock/content/browser/content_security_policy_injector diff --git a/components/adblock/content/browser/element_hider_impl.cc b/components/adblock/content/browser/element_hider_impl.cc --- a/components/adblock/content/browser/element_hider_impl.cc +++ b/components/adblock/content/browser/element_hider_impl.cc -@@ -190,12 +190,12 @@ void InsertUserCSSAndApplyElemHidingEmuJS( +@@ -208,12 +208,12 @@ void InsertUserCSSAndApplyElemHidingEmuJS( if (!frame_host) { // Render frame host was destroyed before element hiding could be applied. // This is not a bug, just legitimate a race condition. @@ -2100,7 +2085,7 @@ diff --git a/components/adblock/content/browser/subscription_service_factory_bas } base::DeleteFile(path); return result; -@@ -202,10 +204,11 @@ SubscriptionServiceFactoryBase::ConvertCustomFilters( +@@ -201,10 +203,11 @@ SubscriptionServiceFactoryBase::ConvertCustomFilters( void SubscriptionServiceFactoryBase::ConvertFilterListFile( const GURL& subscription_url, const base::FilePath& path, @@ -2204,9 +2189,8 @@ diff --git a/components/adblock/core/activeping_telemetry_topic_provider.cc b/co deleted file mode 100644 --- a/components/adblock/core/activeping_telemetry_topic_provider.cc +++ /dev/null -@@ -1,243 +0,0 @@ --/* -- * This file is part of eyeo Chromium SDK, +@@ -1,285 +0,0 @@ +-/* This file is part of eyeo Chromium SDK, - * Copyright (C) 2006-present eyeo GmbH - * - * eyeo Chromium SDK is free software: you can redistribute it and/or modify @@ -2228,8 +2212,10 @@ deleted file mode 100644 -#include "base/json/json_writer.h" -#include "base/system/sys_info.h" -#include "base/time/time.h" +-#include "base/time/time_to_iso8601.h" -#include "base/uuid.h" -#include "components/adblock/core/common/adblock_prefs.h" +-#include "components/adblock/core/subscription/subscription_config.h" - -namespace adblock { -namespace { @@ -2277,12 +2263,12 @@ deleted file mode 100644 -ActivepingTelemetryTopicProvider::ActivepingTelemetryTopicProvider( - utils::AppInfo app_info, - PrefService* pref_service, -- AdblockController* adblock_controller, +- SubscriptionService* subscription_service, - const GURL& base_url, - const std::string& auth_token) - : app_info_(std::move(app_info)), - pref_service_(pref_service), -- adblock_controller_(adblock_controller), +- subscription_service_(subscription_service), - base_url_(base_url), - auth_token_(auth_token) {} - @@ -2323,35 +2309,13 @@ deleted file mode 100644 - return auth_token_; -} - --void ActivepingTelemetryTopicProvider::GetPayload(PayloadCallback callback) { -- base::Value::Dict payload; -- payload.Set("addon_name", "eyeo-chromium-sdk"); -- payload.Set("addon_version", "2.0.0"); -- payload.Set("application", app_info_.name); -- payload.Set("application_version", app_info_.version); -- payload.Set("aa_active", adblock_controller_->IsAcceptableAdsEnabled()); -- payload.Set("platform", base::SysInfo::OperatingSystemName()); -- payload.Set("platform_version", base::SysInfo::OperatingSystemVersion()); -- // Server requires the following parameters to either have a correct, -- // non-empty value, or not be present at all. We shall not send empty strings. -- AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTag, -- "last_ping_tag", payload); -- AppendStringIfPresent(pref_service_, common::prefs::kTelemetryFirstPingTime, -- "first_ping", payload); -- AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTime, -- "last_ping", payload); -- AppendStringIfPresent(pref_service_, -- common::prefs::kTelemetryPreviousLastPingTime, -- "previous_last_ping", payload); -- -- base::Value::Dict root; -- root.Set("payload", std::move(payload)); +-void ActivepingTelemetryTopicProvider::GetPayload( +- PayloadCallback callback) const { - std::string serialized; - // The only way JSONWriter::Write() can return fail is then the Value - // contains lists or dicts that are too deep (200 levels). We just built the - // payload and root objects here, they should be really shallow. -- CHECK(base::JSONWriter::Write(root, &serialized)); -- VLOG(1) << "[eyeo] Telemetry ping payload: " << serialized; +- CHECK(base::JSONWriter::Write(GetPayloadInternal(), &serialized)); - std::move(callback).Run(std::move(serialized)); -} - @@ -2409,6 +2373,35 @@ deleted file mode 100644 - UpdatePrefs(*ping_response_time); -} - +-void ActivepingTelemetryTopicProvider::FetchDebugInfo( +- DebugInfoCallback callback) const { +- base::Value::Dict debug_info; +- debug_info.Set("endpoint_url", GetEndpointURL().spec()); +- debug_info.Set("payload", GetPayloadInternal()); +- debug_info.Set("first_ping", +- pref_service_->GetString( +- adblock::common::prefs::kTelemetryFirstPingTime)); +- debug_info.Set("time_of_next_request", +- base::TimeToISO8601(GetTimeOfNextRequest())); +- debug_info.Set( +- "last_ping", +- pref_service_->GetString(adblock::common::prefs::kTelemetryLastPingTime)); +- debug_info.Set("previous_last_ping", +- pref_service_->GetString( +- adblock::common::prefs::kTelemetryPreviousLastPingTime)); +- debug_info.Set("next_ping", +- base::TimeToISO8601(pref_service_->GetTime( +- adblock::common::prefs::kTelemetryNextPingTime))); +- +- std::string serialized; +- // The only way JSONWriter::Write() can return fail is then the Value +- // contains lists or dicts that are too deep (200 levels). We just built the +- // payload and root objects here, they should be really shallow. +- CHECK(base::JSONWriter::WriteWithOptions( +- debug_info, base::JsonOptions::OPTIONS_PRETTY_PRINT, &serialized)); +- std::move(callback).Run(std::move(serialized)); +-} +- -void ActivepingTelemetryTopicProvider::ScheduleNextPing(base::TimeDelta delay) { - pref_service_->SetTime(common::prefs::kTelemetryNextPingTime, - base::Time::Now() + delay); @@ -2435,6 +2428,40 @@ deleted file mode 100644 - tag.AsLowercaseString()); -} - +-base::Value ActivepingTelemetryTopicProvider::GetPayloadInternal() const { +- base::Value::Dict payload; +- bool aa_enabled = false; +- auto* adblock_configuration = +- subscription_service_->GetAdblockFilteringConfiguration(); +- if (adblock_configuration) { +- aa_enabled = base::ranges::any_of( +- adblock_configuration->GetFilterLists(), +- [&](const auto& url) { return url == AcceptableAdsUrl(); }); +- } +- payload.Set("addon_name", "eyeo-chromium-sdk"); +- payload.Set("addon_version", "2.0.0"); +- payload.Set("application", app_info_.name); +- payload.Set("application_version", app_info_.version); +- payload.Set("aa_active", aa_enabled); +- payload.Set("platform", base::SysInfo::OperatingSystemName()); +- payload.Set("platform_version", base::SysInfo::OperatingSystemVersion()); +- // Server requires the following parameters to either have a correct, +- // non-empty value, or not be present at all. We shall not send empty strings. +- AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTag, +- "last_ping_tag", payload); +- AppendStringIfPresent(pref_service_, common::prefs::kTelemetryFirstPingTime, +- "first_ping", payload); +- AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTime, +- "last_ping", payload); +- AppendStringIfPresent(pref_service_, +- common::prefs::kTelemetryPreviousLastPingTime, +- "previous_last_ping", payload); +- +- base::Value::Dict root; +- root.Set("payload", std::move(payload)); +- return base::Value(std::move(root)); +-} +- -// static -void ActivepingTelemetryTopicProvider::SetHttpPortForTesting( - int http_port_for_testing) { @@ -2452,7 +2479,7 @@ diff --git a/components/adblock/core/activeping_telemetry_topic_provider.h b/com deleted file mode 100644 --- a/components/adblock/core/activeping_telemetry_topic_provider.h +++ /dev/null -@@ -1,84 +0,0 @@ +@@ -1,87 +0,0 @@ -/* - * This file is part of eyeo Chromium SDK, - * Copyright (C) 2006-present eyeo GmbH @@ -2475,9 +2502,9 @@ deleted file mode 100644 - -#include "base/memory/raw_ptr.h" -#include "base/time/time.h" --#include "components/adblock/core/adblock_controller.h" -#include "components/adblock/core/adblock_telemetry_service.h" -#include "components/adblock/core/common/adblock_utils.h" +-#include "components/adblock/core/subscription/subscription_service.h" -#include "components/prefs/pref_service.h" - -namespace adblock { @@ -2496,7 +2523,7 @@ deleted file mode 100644 - public: - ActivepingTelemetryTopicProvider(utils::AppInfo app_info, - PrefService* pref_service, -- AdblockController* adblock_controller, +- SubscriptionService* subscription_service, - const GURL& base_url, - const std::string& auth_token); - ~ActivepingTelemetryTopicProvider() final; @@ -2506,7 +2533,7 @@ deleted file mode 100644 - - GURL GetEndpointURL() const final; - std::string GetAuthToken() const final; -- void GetPayload(PayloadCallback callback) final; +- void GetPayload(PayloadCallback callback) const final; - - // Normally 12 hours since last ping, 1 hour in case of retries. - base::Time GetTimeOfNextRequest() const final; @@ -2515,6 +2542,8 @@ deleted file mode 100644 - // from |response_content|. - void ParseResponse(std::unique_ptr response_content) final; - +- void FetchDebugInfo(DebugInfoCallback callback) const final; +- - // Sets the port used by the embedded http server required for browser tests. - // Must be called before the first call to DefaultBaseUrl(). - static void SetHttpPortForTesting(int http_port_for_testing); @@ -2526,10 +2555,11 @@ deleted file mode 100644 - private: - void ScheduleNextPing(base::TimeDelta delay); - void UpdatePrefs(const std::string& ping_response_time); +- base::Value GetPayloadInternal() const; - - const utils::AppInfo app_info_; - raw_ptr pref_service_; -- raw_ptr adblock_controller_; +- raw_ptr subscription_service_; - const GURL base_url_; - const std::string auth_token_; -}; @@ -2717,7 +2747,7 @@ diff --git a/components/adblock/core/adblock_telemetry_service.cc b/components/a deleted file mode 100644 --- a/components/adblock/core/adblock_telemetry_service.cc +++ /dev/null -@@ -1,244 +0,0 @@ +@@ -1,258 +0,0 @@ -/* - * This file is part of eyeo Chromium SDK, - * Copyright (C) 2006-present eyeo GmbH @@ -2739,6 +2769,7 @@ deleted file mode 100644 - -#include - +-#include "base/barrier_callback.h" -#include "base/functional/bind.h" -#include "base/memory/weak_ptr.h" -#include "base/strings/string_number_conversions.h" @@ -2835,6 +2866,10 @@ deleted file mode 100644 - url_loader_.reset(); - } - +- const std::unique_ptr& GetTopicProvider() const { +- return topic_provider_; +- } +- - private: - bool IsRequestInFlight() { - return url_loader_ != nullptr || weak_ptr_factory_.HasWeakPtrs(); @@ -2929,6 +2964,15 @@ deleted file mode 100644 - OnEnabledStateChangedInternal(); -} - +-void AdblockTelemetryService::GetTopicProvidersDebugInfo( +- TopicProvidersDebugInfoCallback service_callback) const { +- const auto barrier_callback = base::BarrierCallback( +- ongoing_conversations_.size(), std::move(service_callback)); +- for (const auto& conversation : ongoing_conversations_) { +- conversation->GetTopicProvider()->FetchDebugInfo(barrier_callback); +- } +-} +- -void AdblockTelemetryService::OnEnabledStateChangedInternal() { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (adblock_filtering_configuration_->IsEnabled() && !timer_.IsRunning()) { @@ -2966,7 +3010,7 @@ diff --git a/components/adblock/core/adblock_telemetry_service.h b/components/ad deleted file mode 100644 --- a/components/adblock/core/adblock_telemetry_service.h +++ /dev/null -@@ -1,107 +0,0 @@ +@@ -1,120 +0,0 @@ -/* - * This file is part of eyeo Chromium SDK, - * Copyright (C) 2006-present eyeo GmbH @@ -2991,6 +3035,7 @@ deleted file mode 100644 -#include -#include - +-#include "base/functional/callback_forward.h" -#include "base/memory/raw_ptr.h" -#include "base/sequence_checker.h" -#include "base/time/time.h" @@ -3018,6 +3063,7 @@ deleted file mode 100644 - class TopicProvider { - public: - using PayloadCallback = base::OnceCallback; +- using DebugInfoCallback = base::OnceCallback; - virtual ~TopicProvider() = default; - // Endpoint URL on the Telemetry server onto which requests should be sent. - virtual GURL GetEndpointURL() const = 0; @@ -3025,7 +3071,7 @@ deleted file mode 100644 - virtual std::string GetAuthToken() const = 0; - // Data uploaded with the request, should be valid for the schema - // present on the server. Async to allow querying asynchronous data sources. -- virtual void GetPayload(PayloadCallback callback) = 0; +- virtual void GetPayload(PayloadCallback callback) const = 0; - // Returns the desired time when AdblockTelemetryService should make the - // next network request. - virtual base::Time GetTimeOfNextRequest() const = 0; @@ -3034,6 +3080,10 @@ deleted file mode 100644 - // response errors via GetTimeToNextRequest(). - virtual void ParseResponse( - std::unique_ptr response_content) = 0; +- // Gets debugging info to be logged on chrome://adblock-internals. Do not +- // put any secrets here (tokens, api keys). Asynchronous to allow reusing +- // the async logic of GetPayload, if needed. +- virtual void FetchDebugInfo(DebugInfoCallback callback) const = 0; - }; - AdblockTelemetryService( - FilteringConfiguration* filtering_configuration, @@ -3041,6 +3091,8 @@ deleted file mode 100644 - base::TimeDelta initial_delay, - base::TimeDelta check_interval); - ~AdblockTelemetryService() override; +- using TopicProvidersDebugInfoCallback = +- base::OnceCallback)>; - - // Add all required topic providers before calling Start(). - void AddTopicProvider(std::unique_ptr topic_provider); @@ -3056,6 +3108,11 @@ deleted file mode 100644 - // FilteringConfiguration::Observer - void OnEnabledStateChanged(FilteringConfiguration* config) override; - +- // Collects debug information from all topic providers. Runs |callback| once +- // all topic providers have provided their info. +- void GetTopicProvidersDebugInfo( +- TopicProvidersDebugInfoCallback callback) const; +- - private: - void OnEnabledStateChangedInternal(); - void RunPeriodicCheck(); @@ -3251,7 +3308,7 @@ diff --git a/components/adblock/core/configuration/filtering_configuration.h b/c + // Adding an existing filter list, or removing a non-existing filter list, are // NOPs and do not notify observers. - virtual void AddFilterList(GURL url) = 0; + virtual void AddFilterList(const GURL& url) = 0; diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.cc b/components/adblock/core/configuration/persistent_filtering_configuration.cc --- a/components/adblock/core/configuration/persistent_filtering_configuration.cc +++ b/components/adblock/core/configuration/persistent_filtering_configuration.cc @@ -3296,8 +3353,8 @@ diff --git a/components/adblock/core/configuration/persistent_filtering_configur + void SetPrivilegedFiltersEnabled(bool enabled) final; + bool IsPrivilegedFiltersEnabled() final; + - void AddFilterList(GURL url) final; - void RemoveFilterList(GURL url) final; + void AddFilterList(const GURL& url) final; + void RemoveFilterList(const GURL& url) final; std::vector GetFilterLists() const final; diff --git a/components/adblock/core/converter/flatbuffer_converter.cc b/components/adblock/core/converter/flatbuffer_converter.cc --- a/components/adblock/core/converter/flatbuffer_converter.cc @@ -3903,7 +3960,7 @@ diff --git a/components/adblock/core/subscription/subscription_collection_impl.c diff --git a/components/adblock/core/subscription/subscription_config.cc b/components/adblock/core/subscription/subscription_config.cc --- a/components/adblock/core/subscription/subscription_config.cc +++ b/components/adblock/core/subscription/subscription_config.cc -@@ -221,17 +221,17 @@ const std::vector& config::GetKnownSubscriptions() { +@@ -239,17 +239,17 @@ const std::vector& config::GetKnownSubscriptions() { SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, SubscriptionPrivilegedFilterStatus::Forbidden}, {AcceptableAdsUrl(), @@ -3926,7 +3983,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo {GURL(GetHost() + "i_dont_care_about_cookies.txt"), "I don't care about cookies", {}, -@@ -262,13 +262,13 @@ const std::vector& config::GetKnownSubscriptions() { +@@ -280,13 +280,13 @@ const std::vector& config::GetKnownSubscriptions() { {}, SubscriptionUiVisibility::Invisible, SubscriptionFirstRunBehavior::Ignore, @@ -3942,7 +3999,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo // You can customize subscriptions available on first run and in settings // here. Items are displayed in settings in order declared here. See -@@ -297,7 +297,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) { +@@ -315,7 +315,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) { for (const auto& cur : GetKnownSubscriptions()) { if (cur.url == url) { return cur.privileged_status == @@ -3951,7 +4008,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo } } -@@ -307,9 +307,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) { +@@ -325,9 +325,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) { const std::vector& config::GetPreloadedSubscriptionConfiguration() { static const std::vector preloaded_subscriptions = @@ -4300,7 +4357,7 @@ new file mode 100644 diff --git a/components/resources/BUILD.gn b/components/resources/BUILD.gn --- a/components/resources/BUILD.gn +++ b/components/resources/BUILD.gn -@@ -79,7 +79,6 @@ grit("components_resources") { +@@ -76,7 +76,6 @@ grit("components_resources") { deps += [ "//components/resources/adblocking:copy_snippets_lib", @@ -4311,10 +4368,10 @@ diff --git a/components/resources/BUILD.gn b/components/resources/BUILD.gn diff --git a/components/resources/adblock_resources.grdp b/components/resources/adblock_resources.grdp --- a/components/resources/adblock_resources.grdp +++ b/components/resources/adblock_resources.grdp -@@ -20,7 +20,4 @@ - +@@ -21,7 +21,4 @@ + - - - @@ -4369,9 +4426,9 @@ diff --git a/components/resources/adblocking/BUILD.gn b/components/resources/adb - ] -} - - copy("copy_snippets_lib") { - if (is_debug) { - sources = [ "//components/resources/adblocking/snippets/dist/isolated-first.source.jst" ] + action("prepare_snippets_deps") { + script = "//tools/eyeo/snippets_deps.py" + inputs = ["//components/resources/adblocking/snippets/dist"] diff --git a/components/resources/adblocking/elemhide_for_selector.jst b/components/resources/adblocking/elemhide_for_selector.jst --- a/components/resources/adblocking/elemhide_for_selector.jst +++ b/components/resources/adblocking/elemhide_for_selector.jst @@ -8117,7 +8174,7 @@ diff --git a/third_party/blink/renderer/core/css/style_engine.cc b/third_party/b diff --git a/third_party/blink/renderer/core/css/style_engine.h b/third_party/blink/renderer/core/css/style_engine.h --- a/third_party/blink/renderer/core/css/style_engine.h +++ b/third_party/blink/renderer/core/css/style_engine.h -@@ -242,6 +242,7 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected, +@@ -243,6 +243,7 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected, const ComputedStyle* embedder_style) const; void ViewportStyleSettingChanged(); @@ -8158,29 +8215,14 @@ diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_pa diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec -@@ -655,10 +655,6 @@ +@@ -678,7 +678,6 @@ + "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/hats/resources.grd": { "META": {"sizes": {"includes": [10]}}, "includes": [4980], - }, -- "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/adblock_internals/resources.grd": { -- "META": {"sizes": {"includes": [10],}}, -- "includes": [4720], - }, # END chrome/ WebUI resources section # START chrome/ miscellaneous section. -@@ -1221,6 +1217,11 @@ - "includes": [7440], - }, - -+ "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/adblock_internals/resources.grd": { -+ "META": {"sizes": {"includes": [10],}}, -+ "includes": [8000], -+ }, -+ - # END "everything else" section. - # Everything but chrome/, components/, content/, and ios/ - diff --git a/tools/typescript/definitions/adblock_private.d.ts b/tools/typescript/definitions/adblock_private.d.ts --- a/tools/typescript/definitions/adblock_private.d.ts +++ b/tools/typescript/definitions/adblock_private.d.ts diff --git a/build/patches/00Fix-chromium-build-bugs.patch b/build/patches/00Fix-chromium-build-bugs.patch index 7afc431f..7fecc35e 100644 --- a/build/patches/00Fix-chromium-build-bugs.patch +++ b/build/patches/00Fix-chromium-build-bugs.patch @@ -7,7 +7,6 @@ Subject: Fix chromium build bugs .../AutofillSaveCardBottomSheetBridge.java | 2 +- .../org/chromium/chrome/browser/tab/TabImpl.java | 2 +- ...me_browser_main_extra_parts_nacl_deprecation.cc | 2 ++ - chrome/browser/download/download_ui_model.cc | 2 ++ .../api/autofill_private/autofill_util.cc | 2 ++ .../api/reading_list/reading_list_event_router.h | 2 +- .../navigation_predictor_metrics_document_data.h | 2 ++ @@ -20,7 +19,6 @@ Subject: Fix chromium build bugs chrome/browser/usb/chrome_usb_delegate.cc | 2 ++ .../autofill/core/browser/data_model/address.cc | 4 ++-- components/autofill/core/browser/form_structure.cc | 2 ++ - .../core/browser/ui/suggestion_selection.cc | 12 +----------- .../core/browser/webdata/autofill_table.cc | 12 ++++++------ components/omnibox/browser/omnibox_field_trial.cc | 4 ++-- .../phishing_classifier/phishing_image_embedder.cc | 14 +++----------- @@ -28,7 +26,7 @@ Subject: Fix chromium build bugs crypto/BUILD.gn | 3 +++ net/BUILD.gn | 1 + third_party/libevent/BUILD.gn | 2 ++ - 25 files changed, 48 insertions(+), 45 deletions(-) + 23 files changed, 45 insertions(+), 34 deletions(-) diff --git a/BUILD.gn b/BUILD.gn --- a/BUILD.gn @@ -56,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/Autofi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -385,7 +385,7 @@ public class TabImpl implements Tab { +@@ -401,7 +401,7 @@ public class TabImpl implements Tab { } @Override @@ -84,29 +82,10 @@ diff --git a/chrome/browser/chrome_browser_main_extra_parts_nacl_deprecation.cc } // namespace -diff --git a/chrome/browser/download/download_ui_model.cc b/chrome/browser/download/download_ui_model.cc ---- a/chrome/browser/download/download_ui_model.cc -+++ b/chrome/browser/download/download_ui_model.cc -@@ -177,6 +177,7 @@ bool ShouldShowWarningForNoSafeBrowsing(Profile* profile) { - #endif - } - -+#if !BUILDFLAG(IS_ANDROID) - bool CanUserTurnOnSafeBrowsing(Profile* profile) { - #if BUILDFLAG(FULL_SAFE_BROWSING) - return !safe_browsing::IsSafeBrowsingPolicyManaged(*profile->GetPrefs()); -@@ -184,6 +185,7 @@ bool CanUserTurnOnSafeBrowsing(Profile* profile) { - return false; - #endif - } -+#endif - - } // namespace - diff --git a/chrome/browser/extensions/api/autofill_private/autofill_util.cc b/chrome/browser/extensions/api/autofill_private/autofill_util.cc --- a/chrome/browser/extensions/api/autofill_private/autofill_util.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_util.cc -@@ -42,6 +42,7 @@ namespace { +@@ -43,6 +43,7 @@ namespace { // Get the multi-valued element for |type| and return it as a |vector|. // TODO(khorimoto): remove this function since multi-valued types are // deprecated. @@ -114,7 +93,7 @@ diff --git a/chrome/browser/extensions/api/autofill_private/autofill_util.cc b/c std::vector GetList(const autofill::AutofillProfile& profile, autofill::ServerFieldType type) { std::vector list; -@@ -65,6 +66,7 @@ std::vector GetList(const autofill::AutofillProfile& profile, +@@ -66,6 +67,7 @@ std::vector GetList(const autofill::AutofillProfile& profile, return list; } @@ -149,7 +128,7 @@ diff --git a/chrome/browser/navigation_predictor/navigation_predictor_metrics_do diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn --- a/chrome/browser/safe_browsing/BUILD.gn +++ b/chrome/browser/safe_browsing/BUILD.gn -@@ -210,6 +210,7 @@ static_library("safe_browsing") { +@@ -182,6 +182,7 @@ static_library("safe_browsing") { "//components/version_info", "//content/public/browser", "//services/preferences/public/mojom:mojom", @@ -194,7 +173,7 @@ diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_cont diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc --- a/chrome/browser/ui/views/tabs/tab.cc +++ b/chrome/browser/ui/views/tabs/tab.cc -@@ -536,7 +536,7 @@ bool Tab::OnMousePressed(const ui::MouseEvent& event) { +@@ -540,7 +540,7 @@ bool Tab::OnMousePressed(const ui::MouseEvent& event) { } bool Tab::OnMouseDragged(const ui::MouseEvent& event) { @@ -256,17 +235,17 @@ diff --git a/chrome/browser/usb/chrome_usb_delegate.cc b/chrome/browser/usb/chro diff --git a/components/autofill/core/browser/data_model/address.cc b/components/autofill/core/browser/data_model/address.cc --- a/components/autofill/core/browser/data_model/address.cc +++ b/components/autofill/core/browser/data_model/address.cc -@@ -30,7 +30,7 @@ +@@ -40,7 +40,7 @@ Address::Address(AddressCountryCode country_code) + !i18n_model_definition::IsCustomHierarchyAvailableForCountry( + country_code)) {} - namespace autofill { +-Address::~Address() = default; ++Address::~Address() = default --Address::Address() : structured_address_(std::make_unique()){}; -+Address::Address() : structured_address_(std::make_unique()){} + Address& Address::operator=(const Address& address) { + if (this == &address) { +@@ -59,7 +59,7 @@ Address& Address::operator=(const Address& address) { - Address::Address(const Address& address) { - *this = address; -@@ -44,7 +44,7 @@ Address& Address::operator=(const Address& address) { - } structured_address_->CopyFrom(address.GetStructuredAddress()); return *this; -}; @@ -293,32 +272,10 @@ diff --git a/components/autofill/core/browser/form_structure.cc b/components/aut void PopulateRandomizedFormMetadata(const RandomizedEncoder& encoder, const FormStructure& form, -diff --git a/components/autofill/core/browser/ui/suggestion_selection.cc b/components/autofill/core/browser/ui/suggestion_selection.cc ---- a/components/autofill/core/browser/ui/suggestion_selection.cc -+++ b/components/autofill/core/browser/ui/suggestion_selection.cc -@@ -152,17 +152,7 @@ Suggestion GetFillFullNameSuggestion(Suggestion::BackendId backend_id) { - // whole form. - // TODO(crbug.com/1459990): Use this once the new popup with submenus - // implementation is complete. --Suggestion GetFillEverythingFromAddressProfileSuggestion( -- Suggestion::BackendId backend_id) { -- Suggestion suggestion(l10n_util::GetStringUTF16( -- IDS_AUTOFILL_FILL_EVERYTHING_FROM_ADDRESS_PROFILE_POPUP_OPTION_SELECTED)); -- suggestion.popup_item_id = PopupItemId::kFillEverythingFromAddressProfile; -- suggestion.icon = "magicIcon"; -- suggestion.payload = backend_id; -- suggestion.acceptance_a11y_announcement = l10n_util::GetStringUTF16( -- IDS_AUTOFILL_A11Y_ANNOUNCE_FILL_EVERYTHING_FROM_ADDRESS_PROFILE_POPUP_OPTION_SELECTED); -- return suggestion; --} -+// (UAZO) removed due error: unused function - - // Append new suggestions to `suggestions` based on the `ServerFieldType` list - // provided. Suggestions are not added if their info is not found in the diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/components/autofill/core/browser/webdata/autofill_table.cc --- a/components/autofill/core/browser/webdata/autofill_table.cc +++ b/components/autofill/core/browser/webdata/autofill_table.cc -@@ -412,12 +412,12 @@ void InsertBuilder(sql::Database* db, +@@ -426,12 +426,12 @@ void InsertBuilder(sql::Database* db, } // Renames the table `from` into `to` and returns true if successful. @@ -340,7 +297,7 @@ diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/compon diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc --- a/components/omnibox/browser/omnibox_field_trial.cc +++ b/components/omnibox/browser/omnibox_field_trial.cc -@@ -1091,11 +1091,11 @@ MLConfig::MLConfig(const MLConfig&) = default; +@@ -1090,11 +1090,11 @@ MLConfig::MLConfig(const MLConfig&) = default; ScopedMLConfigForTesting::ScopedMLConfigForTesting() : original_config_(std::make_unique(GetMLConfig())) { @@ -381,7 +338,7 @@ diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phish diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc --- a/content/browser/browser_interface_binders.cc +++ b/content/browser/browser_interface_binders.cc -@@ -353,6 +353,7 @@ void BindDateTimeChooserForFrame( +@@ -346,6 +346,7 @@ void BindDateTimeChooserForFrame( void BindTextSuggestionHostForFrame( RenderFrameHost* host, mojo::PendingReceiver receiver) { @@ -405,7 +362,7 @@ diff --git a/crypto/BUILD.gn b/crypto/BUILD.gn diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1659,6 +1659,7 @@ component("net") { +@@ -1651,6 +1651,7 @@ component("net") { configs -= [ "//build/config/compiler:default_optimization" ] configs += [ "//build/config/compiler:optimize_max" ] } diff --git a/build/patches/00Internal-firewall.patch b/build/patches/00Internal-firewall.patch index c8e63c64..969d48d1 100644 --- a/build/patches/00Internal-firewall.patch +++ b/build/patches/00Internal-firewall.patch @@ -34,10 +34,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html services/network/network_context.cc | 73 +++ .../network/public/cpp/simple_url_loader.cc | 18 + .../network/public/cpp/simple_url_loader.h | 3 + - .../loader/fetch/url_loader/url_loader.cc | 145 +++++- + .../platform/loader/fetch/fetch_utils.cc | 171 ++++++- + .../loader/fetch/url_loader/url_loader.cc | 4 +- .../scripts/auditor/auditor.py | 1 + .../scripts/auditor/util.py | 1 + - 28 files changed, 1502 insertions(+), 16 deletions(-) + 29 files changed, 1527 insertions(+), 21 deletions(-) create mode 100644 services/firewall/public/BUILD.gn create mode 100644 services/firewall/public/firewall_features.cc create mode 100644 services/firewall/public/firewall_features.h @@ -55,7 +56,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2495,6 +2495,7 @@ static_library("browser") { +@@ -2552,6 +2552,7 @@ static_library("browser") { "//third_party/ungoogled:switches", "//services/device/public/mojom", "//services/device/public/mojom:usb", @@ -66,7 +67,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 -@@ -202,6 +202,7 @@ +@@ -203,6 +203,7 @@ #include "sandbox/policy/features.h" #include "sandbox/policy/switches.h" #include "services/device/public/cpp/device_features.h" @@ -74,7 +75,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "services/media_session/public/cpp/features.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/network_switches.h" -@@ -8329,6 +8330,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -8592,6 +8593,11 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(page_info::kPageInfoHideSiteSettings)}, #endif // !BUILDFLAG(IS_ANDROID) @@ -235,7 +236,7 @@ diff --git a/components/webapps/browser/android/webapk/webapk_icon_hasher.cc b/c diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1098,6 +1098,7 @@ component("net") { +@@ -1096,6 +1096,7 @@ component("net") { "//build:chromeos_buildflags", "//net/data/ssl/chrome_root_store:gen_root_store_inc", "//net/http:transport_security_state_generated_files", @@ -270,7 +271,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque } URLRequestHttpJob::~URLRequestHttpJob() { -@@ -574,6 +577,18 @@ void URLRequestHttpJob::MaybeStartTransactionInternal(int result) { +@@ -555,6 +558,18 @@ void URLRequestHttpJob::MaybeStartTransactionInternal(int result) { void URLRequestHttpJob::StartTransactionInternal() { DCHECK(!override_response_headers_); @@ -1528,7 +1529,7 @@ new file mode 100644 diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -87,6 +87,7 @@ +@@ -88,6 +88,7 @@ #include "net/url_request/url_request.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context_builder.h" @@ -1536,7 +1537,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont #include "services/network/brokered_client_socket_factory.h" #include "services/network/cookie_manager.h" #include "services/network/cors/cors_url_loader_factory.h" -@@ -1625,6 +1626,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { +@@ -1622,6 +1623,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { void NetworkContext::CreateUDPSocket( mojo::PendingReceiver receiver, mojo::PendingRemote listener) { @@ -1546,7 +1547,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateUDPSocket(std::move(receiver), std::move(listener)); } -@@ -1637,6 +1641,17 @@ void NetworkContext::CreateRestrictedUDPSocket( +@@ -1634,6 +1638,17 @@ void NetworkContext::CreateRestrictedUDPSocket( mojo::PendingRemote listener, CreateRestrictedUDPSocketCallback callback) { // SimpleHostResolver is transitively owned by |this|. @@ -1564,7 +1565,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateRestrictedUDPSocket( addr, mode, traffic_annotation, std::move(params), std::move(receiver), std::move(listener), SimpleHostResolver::Create(this), -@@ -1649,6 +1664,17 @@ void NetworkContext::CreateTCPServerSocket( +@@ -1646,6 +1661,17 @@ void NetworkContext::CreateTCPServerSocket( const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, mojo::PendingReceiver receiver, CreateTCPServerSocketCallback callback) { @@ -1582,7 +1583,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPServerSocket( local_addr, std::move(options), static_cast(traffic_annotation), -@@ -1663,6 +1689,21 @@ void NetworkContext::CreateTCPConnectedSocket( +@@ -1660,6 +1686,21 @@ void NetworkContext::CreateTCPConnectedSocket( mojo::PendingReceiver receiver, mojo::PendingRemote observer, CreateTCPConnectedSocketCallback callback) { @@ -1604,7 +1605,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPConnectedSocket( local_addr, remote_addr_list, std::move(tcp_connected_socket_options), static_cast(traffic_annotation), -@@ -1674,6 +1715,20 @@ void NetworkContext::CreateTCPBoundSocket( +@@ -1671,6 +1712,20 @@ void NetworkContext::CreateTCPBoundSocket( const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, mojo::PendingReceiver receiver, CreateTCPBoundSocketCallback callback) { @@ -1625,7 +1626,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPBoundSocket( local_addr, static_cast(traffic_annotation), -@@ -1739,6 +1794,24 @@ void NetworkContext::CreateWebSocket( +@@ -1736,6 +1791,24 @@ void NetworkContext::CreateWebSocket( mojo::PendingRemote auth_handler, mojo::PendingRemote header_client, const absl::optional& throttling_profile_id) { @@ -1705,14 +1706,40 @@ diff --git a/services/network/public/cpp/simple_url_loader.h b/services/network/ }; } // namespace network -diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc ---- a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc -+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc -@@ -648,23 +648,150 @@ net::NetworkTrafficAnnotationTag URLLoader::Context::GetTrafficAnnotationTag( +diff --git a/third_party/blink/renderer/platform/loader/fetch/fetch_utils.cc b/third_party/blink/renderer/platform/loader/fetch/fetch_utils.cc +--- a/third_party/blink/renderer/platform/loader/fetch/fetch_utils.cc ++++ b/third_party/blink/renderer/platform/loader/fetch/fetch_utils.cc +@@ -97,28 +97,153 @@ net::NetworkTrafficAnnotationTag FetchUtils::GetTrafficAnnotationTag( + case network::mojom::RequestDestination::kIframe: + case network::mojom::RequestDestination::kFrame: + case network::mojom::RequestDestination::kFencedframe: +- case network::mojom::RequestDestination::kWebIdentity: NOTREACHED(); [[fallthrough]]; + // Split destination with new annotations ++ case network::mojom::RequestDestination::kWebIdentity: ++ return net::DefineNetworkTrafficAnnotation("blink_resource_loader_webidentity", R"( ++ semantics { ++ sender: "Blink Resource Loader" ++ description: ++ "Blink-initiated request, which includes all resources for " ++ "normal page loads, chrome URLs, and downloads." ++ trigger: ++ "The user navigates to a URL or downloads a file. Also when a " ++ "webpage, ServiceWorker, or chrome:// uses any network communication." ++ data: "Anything the initiator wants to send." ++ destination: OTHER ++ } ++ policy { ++ cookies_allowed: YES ++ cookies_store: "user" ++ setting: "These requests cannot be disabled in settings." ++ policy_exception_justification: ++ "Not implemented. Without these requests, Chrome will be unable " ++ "to load any webpage." ++ })"); ++ + case network::mojom::RequestDestination::kServiceWorker: + case network::mojom::RequestDestination::kSharedWorker: + case network::mojom::RequestDestination::kWorker: @@ -1826,8 +1853,33 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loa + "to load any webpage." + })"); + -+ case network::mojom::RequestDestination::kXslt: -+ return net::DefineNetworkTrafficAnnotation("blink_resource_loader_xslt", R"( + case network::mojom::RequestDestination::kEmpty: + case network::mojom::RequestDestination::kAudio: +- case network::mojom::RequestDestination::kAudioWorklet: + case network::mojom::RequestDestination::kFont: + case network::mojom::RequestDestination::kImage: +- case network::mojom::RequestDestination::kManifest: +- case network::mojom::RequestDestination::kPaintWorklet: +- case network::mojom::RequestDestination::kReport: + case network::mojom::RequestDestination::kScript: +- case network::mojom::RequestDestination::kServiceWorker: +- case network::mojom::RequestDestination::kSharedWorker: + case network::mojom::RequestDestination::kStyle: + case network::mojom::RequestDestination::kTrack: + case network::mojom::RequestDestination::kVideo: +- case network::mojom::RequestDestination::kWebBundle: +- case network::mojom::RequestDestination::kWorker: +- case network::mojom::RequestDestination::kXslt: +- case network::mojom::RequestDestination::kDictionary: + return net::DefineNetworkTrafficAnnotation("blink_resource_loader", R"( + semantics { + sender: "Blink Resource Loader" +@@ -140,10 +265,32 @@ net::NetworkTrafficAnnotationTag FetchUtils::GetTrafficAnnotationTag( + "to load any webpage." + })"); + ++ case network::mojom::RequestDestination::kDictionary: ++ return net::DefineNetworkTrafficAnnotation("blink_resource_loader_dictionary", R"( + semantics { + sender: "Blink Resource Loader" + description: @@ -1848,26 +1900,35 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loa + "to load any webpage." + })"); + - case network::mojom::RequestDestination::kEmpty: - case network::mojom::RequestDestination::kAudio: -- case network::mojom::RequestDestination::kAudioWorklet: - case network::mojom::RequestDestination::kFont: - case network::mojom::RequestDestination::kImage: -- case network::mojom::RequestDestination::kManifest: -- case network::mojom::RequestDestination::kPaintWorklet: -- case network::mojom::RequestDestination::kReport: - case network::mojom::RequestDestination::kScript: -- case network::mojom::RequestDestination::kServiceWorker: -- case network::mojom::RequestDestination::kSharedWorker: - case network::mojom::RequestDestination::kStyle: - case network::mojom::RequestDestination::kTrack: - case network::mojom::RequestDestination::kVideo: -- case network::mojom::RequestDestination::kWebBundle: -- case network::mojom::RequestDestination::kWorker: -- case network::mojom::RequestDestination::kXslt: - case network::mojom::RequestDestination::kDictionary: - return net::DefineNetworkTrafficAnnotation("blink_resource_loader", R"( - semantics { + case network::mojom::RequestDestination::kEmbed: + case network::mojom::RequestDestination::kObject: + return net::DefineNetworkTrafficAnnotation( +- "blink_extension_resource_loader", R"( ++ "blink_extension_resource_loader_embed", R"( + semantics { + sender: "Blink Resource Loader" + description: +diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc +--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc ++++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc +@@ -287,7 +287,7 @@ void URLLoader::Context::Start( + download_to_blob_registry.InitWithNewPipeAndPassReceiver()); + } + net::NetworkTrafficAnnotationTag tag = +- FetchUtils::GetTrafficAnnotationTag(*request); ++ FetchUtils::GetTrafficAnnotationTag(*request); // check for deprecation + resource_request_sender_->SendSync( + std::move(request), tag, loader_options, sync_load_response, + url_loader_factory_, std::move(throttles), timeout_interval, +@@ -300,7 +300,7 @@ void URLLoader::Context::Start( + TRACE_EVENT_WITH_FLOW0("loading", "URLLoader::Context::Start", this, + TRACE_EVENT_FLAG_FLOW_OUT); + net::NetworkTrafficAnnotationTag tag = +- FetchUtils::GetTrafficAnnotationTag(*request); ++ FetchUtils::GetTrafficAnnotationTag(*request); // check for deprecation + request_id_ = resource_request_sender_->SendAsync( + std::move(request), GetMaybeUnfreezableTaskRunner(), tag, loader_options, + cors_exempt_header_list_, base::WrapRefCounted(this), url_loader_factory_, diff --git a/tools/traffic_annotation/scripts/auditor/auditor.py b/tools/traffic_annotation/scripts/auditor/auditor.py --- a/tools/traffic_annotation/scripts/auditor/auditor.py +++ b/tools/traffic_annotation/scripts/auditor/auditor.py diff --git a/build/patches/00Remove-auth-header-upon-cross-origin-redirect.patch b/build/patches/00Remove-auth-header-upon-cross-origin-redirect.patch index 3ab905c3..9369c097 100644 --- a/build/patches/00Remove-auth-header-upon-cross-origin-redirect.patch +++ b/build/patches/00Remove-auth-header-upon-cross-origin-redirect.patch @@ -11,7 +11,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc --- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc -@@ -826,6 +826,9 @@ bool ResourceLoader::WillFollowRedirect( +@@ -822,6 +822,9 @@ bool ResourceLoader::WillFollowRedirect( new_url)) { fetcher_->GetUseCounter().CountUse( mojom::WebFeature::kAuthorizationCrossOrigin); @@ -20,11 +20,11 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc + } } - if (removed_headers) { + // TODO(https://crbug.com/471397, https://crbug.com/1406737): Reconsider diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc -@@ -172,6 +172,9 @@ bool SyncLoadContext::OnReceivedRedirect( +@@ -179,6 +179,9 @@ void SyncLoadContext::OnReceivedRedirect( if (has_authorization_header_ && !url::IsSameOriginWith(response_->url, redirect_info.new_url)) { response_->has_authorization_header_between_cross_origin_redirect_ = true; @@ -33,6 +33,6 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_lo + } } - if (removed_headers) { + response_->url = redirect_info.new_url; -- 2.25.1 diff --git a/build/patches/00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch b/build/patches/00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch index 25332191..ff94183b 100644 --- a/build/patches/00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch +++ b/build/patches/00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -174,7 +174,7 @@ const base::FeatureParam kSkipFrameCountForLazyAds( +@@ -180,7 +180,7 @@ const base::FeatureParam kSkipFrameCountForLazyAds( // Vitals. BASE_FEATURE(kAutomaticLazyFrameLoadingToEmbeds, "AutomaticLazyFrameLoadingToEmbeds", // must be enabled diff --git a/build/patches/00Temp-disable-predictive-back-gesture.patch b/build/patches/00Temp-disable-predictive-back-gesture.patch index cab4237c..c3f39e5e 100644 --- a/build/patches/00Temp-disable-predictive-back-gesture.patch +++ b/build/patches/00Temp-disable-predictive-back-gesture.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -187,7 +187,7 @@ by a child template that "extends" this file. +@@ -188,7 +188,7 @@ by a child template that "extends" this file. android:networkSecurityConfig="@xml/network_security_config" android:allowAudioPlaybackCapture="false" android:appComponentFactory="org.chromium.chrome.browser.base.SplitCompatAppComponentFactory" diff --git a/build/patches/00Temp-remove-support-for-shared-workers.patch b/build/patches/00Temp-remove-support-for-shared-workers.patch index d7832a64..b718b94f 100644 --- a/build/patches/00Temp-remove-support-for-shared-workers.patch +++ b/build/patches/00Temp-remove-support-for-shared-workers.patch @@ -17,7 +17,7 @@ Test with https://worker-playground.glitch.me/ 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 -@@ -3150,6 +3150,7 @@ bool ChromeContentBrowserClient::AllowSharedWorker( +@@ -3164,6 +3164,7 @@ bool ChromeContentBrowserClient::AllowSharedWorker( content::BrowserContext* context, int render_process_id, int render_frame_id) { diff --git a/build/patches/Add-DuckDuckGo-Lite-search-engine.patch b/build/patches/Add-DuckDuckGo-Lite-search-engine.patch index 02f9896b..9b49fc93 100644 --- a/build/patches/Add-DuckDuckGo-Lite-search-engine.patch +++ b/build/patches/Add-DuckDuckGo-Lite-search-engine.patch @@ -4,15 +4,15 @@ Subject: Add DuckDuckGo Lite search engine License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../search_engines/prepopulated_engines.json | 10 + - .../search_engines/search_engine_type.h | 1 + - .../template_url_prepopulate_data.cc | 184 +++++++++--------- - 3 files changed, 103 insertions(+), 92 deletions(-) + components/search_engines/prepopulated_engines.json | 10 ++++++++++ + components/search_engines/search_engine_type.h | 1 + + .../search_engines/template_url_prepopulate_data.cc | 1 + + 3 files changed, 12 insertions(+) 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 -@@ -102,6 +102,16 @@ +@@ -113,6 +113,16 @@ "id": 92 }, @@ -32,828 +32,22 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h --- a/components/search_engines/search_engine_type.h +++ b/components/search_engines/search_engine_type.h -@@ -79,6 +79,7 @@ enum SearchEngineType { - SEARCH_ENGINE_STARTER_PACK_HISTORY = 62, - SEARCH_ENGINE_STARTER_PACK_TABS = 63, - SEARCH_ENGINE_GOOGLE_EN = 64, -+ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 65, +@@ -89,6 +89,7 @@ enum SearchEngineType { + SEARCH_ENGINE_BRAVE = 70, + SEARCH_ENGINE_KARMA = 71, + SEARCH_ENGINE_GOOGLE_EN = 72, ++ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 73, SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro. }; diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc --- a/components/search_engines/template_url_prepopulate_data.cc +++ b/components/search_engines/template_url_prepopulate_data.cc -@@ -43,7 +43,7 @@ const PrepopulatedEngine* const engines_AE[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -61,7 +61,7 @@ const PrepopulatedEngine* const engines_AR[] = { - &googleen, &google, - &bing, - &yahoo_ar, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -69,7 +69,7 @@ const PrepopulatedEngine* const engines_AR[] = { - const PrepopulatedEngine* const engines_AT[] = { - &googleen, &google, - &bing, -- &yahoo_at, -+ &yahoo_at, &duckduckgo_light, - &duckduckgo, - &ecosia, - }; -@@ -79,7 +79,7 @@ const PrepopulatedEngine* const engines_AU[] = { - &googleen, &google, - &bing, - &yahoo_au, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -88,7 +88,7 @@ const PrepopulatedEngine* const engines_BA[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -98,7 +98,7 @@ const PrepopulatedEngine* const engines_BE[] = { - &bing, - &yahoo, - &ecosia, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Bulgaria -@@ -106,7 +106,7 @@ const PrepopulatedEngine* const engines_BG[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -115,7 +115,7 @@ const PrepopulatedEngine* const engines_BH[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -124,7 +124,7 @@ const PrepopulatedEngine* const engines_BI[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -133,7 +133,7 @@ const PrepopulatedEngine* const engines_BN[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -142,7 +142,7 @@ const PrepopulatedEngine* const engines_BO[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -151,7 +151,7 @@ const PrepopulatedEngine* const engines_BR[] = { - &googleen, &google, - &bing, - &yahoo_br, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -161,7 +161,7 @@ const PrepopulatedEngine* const engines_BY[] = { - &yandex_by, - &mail_ru, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Belize -@@ -178,7 +178,7 @@ const PrepopulatedEngine* const engines_CA[] = { - &googleen, &google, - &bing, - &yahoo_ca, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -186,7 +186,7 @@ const PrepopulatedEngine* const engines_CA[] = { - const PrepopulatedEngine* const engines_CH[] = { - &googleen, &google, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yahoo_ch, - &ecosia, - }; -@@ -196,7 +196,7 @@ const PrepopulatedEngine* const engines_CL[] = { - &googleen, &google, - &bing, - &yahoo_cl, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -215,7 +215,7 @@ const PrepopulatedEngine* const engines_CO[] = { - &bing, - &yahoo_co, - &duckduckgo, -- &ecosia, -+ &ecosia, &duckduckgo_light, - }; - - // Costa Rica -@@ -223,7 +223,7 @@ const PrepopulatedEngine* const engines_CR[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -233,7 +233,7 @@ const PrepopulatedEngine* const engines_CZ[] = { - &seznam_cz, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Germany -@@ -241,7 +241,7 @@ const PrepopulatedEngine* const engines_DE[] = { - &googleen, &google, - &bing, - &yahoo_de, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -250,7 +250,7 @@ const PrepopulatedEngine* const engines_DK[] = { - &googleen, &google, - &bing, - &yahoo_dk, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -259,7 +259,7 @@ const PrepopulatedEngine* const engines_DO[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -269,7 +269,7 @@ const PrepopulatedEngine* const engines_DZ[] = { - &bing, - &yahoo_fr, - &yandex_com, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Ecuador -@@ -296,7 +296,7 @@ const PrepopulatedEngine* const engines_EG[] = { - &bing, - &yahoo, - &yandex_com, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Spain -@@ -304,7 +304,7 @@ const PrepopulatedEngine* const engines_ES[] = { - &googleen, &google, - &bing, - &yahoo_es, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -313,7 +313,7 @@ const PrepopulatedEngine* const engines_FI[] = { - &googleen, &google, - &bing, - &yahoo_fi, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -340,7 +340,7 @@ const PrepopulatedEngine* const engines_GB[] = { - &googleen, &google, - &bing, - &yahoo_uk, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -349,7 +349,7 @@ const PrepopulatedEngine* const engines_GR[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -358,7 +358,7 @@ const PrepopulatedEngine* const engines_GT[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -368,7 +368,7 @@ const PrepopulatedEngine* const engines_HK[] = { - &bing, - &yahoo_hk, - &baidu, -- &so_360, -+ &so_360, &duckduckgo_light, - }; - - // Honduras -@@ -376,7 +376,7 @@ const PrepopulatedEngine* const engines_HN[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -394,7 +394,7 @@ const PrepopulatedEngine* const engines_HU[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -403,7 +403,7 @@ const PrepopulatedEngine* const engines_ID[] = { - &googleen, &google, - &bing, - &yahoo_id, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -412,7 +412,7 @@ const PrepopulatedEngine* const engines_IE[] = { - &googleen, &google, - &bing, - &yahoo_uk, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -422,7 +422,7 @@ const PrepopulatedEngine* const engines_IL[] = { - &bing, - &yandex_ru, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // India -@@ -430,7 +430,7 @@ const PrepopulatedEngine* const engines_IN[] = { - &googleen, &google, - &bing, - &yahoo_in, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &info_com, - }; - -@@ -440,7 +440,7 @@ const PrepopulatedEngine* const engines_IQ[] = { - &bing, - &yahoo, - &yandex_tr, -- &petal_search, -+ &petal_search, &duckduckgo_light, - }; - - // Iran -@@ -449,14 +449,14 @@ const PrepopulatedEngine* const engines_IR[] = { - &bing, - &yahoo, - &duckduckgo, -- &ask, -+ &ask, &duckduckgo_light, - }; - - // Iceland - const PrepopulatedEngine* const engines_IS[] = { - &googleen, &google, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yahoo, - &ecosia, - }; -@@ -466,7 +466,7 @@ const PrepopulatedEngine* const engines_IT[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -475,7 +475,7 @@ const PrepopulatedEngine* const engines_JM[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -493,7 +493,7 @@ const PrepopulatedEngine* const engines_JP[] = { - &googleen, &google, - &bing, - &yahoo_jp, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &baidu, - }; - -@@ -502,7 +502,7 @@ const PrepopulatedEngine* const engines_KE[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -530,7 +530,7 @@ const PrepopulatedEngine* const engines_KZ[] = { - &yandex_kz, - &mail_ru, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Lebanon -@@ -538,7 +538,7 @@ const PrepopulatedEngine* const engines_LB[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -546,7 +546,7 @@ const PrepopulatedEngine* const engines_LB[] = { - const PrepopulatedEngine* const engines_LI[] = { - &googleen, &google, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yahoo, - &ecosia, - }; -@@ -556,7 +556,7 @@ const PrepopulatedEngine* const engines_LT[] = { - &googleen, &google, - &bing, - &yandex_ru, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yahoo, - }; - -@@ -564,7 +564,7 @@ const PrepopulatedEngine* const engines_LT[] = { - const PrepopulatedEngine* const engines_LU[] = { - &googleen, &google, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yahoo, - &ecosia, - }; -@@ -575,7 +575,7 @@ const PrepopulatedEngine* const engines_LV[] = { - &bing, - &yandex_ru, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Libya -@@ -584,7 +584,7 @@ const PrepopulatedEngine* const engines_LY[] = { - &bing, - &yahoo, - &yandex_tr, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Morocco -@@ -593,14 +593,14 @@ const PrepopulatedEngine* const engines_MA[] = { - &bing, - &yahoo_fr, - &yandex_com, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Monaco - const PrepopulatedEngine* const engines_MC[] = { - &googleen, &google, - &bing, -- &yahoo_fr, -+ &yahoo_fr, &duckduckgo_light, - &duckduckgo, - &qwant, - }; -@@ -620,7 +620,7 @@ const PrepopulatedEngine* const engines_ME[] = { - &bing, - &yandex_ru, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Macedonia -@@ -628,7 +628,7 @@ const PrepopulatedEngine* const engines_MK[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -637,7 +637,7 @@ const PrepopulatedEngine* const engines_MX[] = { - &googleen, &google, - &bing, - &yahoo_mx, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -646,7 +646,7 @@ const PrepopulatedEngine* const engines_MY[] = { - &googleen, &google, - &bing, - &yahoo_my, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -655,7 +655,7 @@ const PrepopulatedEngine* const engines_NI[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -664,7 +664,7 @@ const PrepopulatedEngine* const engines_NL[] = { - &googleen, &google, - &bing, - &yahoo_nl, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -673,7 +673,7 @@ const PrepopulatedEngine* const engines_NO[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -682,7 +682,7 @@ const PrepopulatedEngine* const engines_NZ[] = { - &googleen, &google, - &bing, - &yahoo_nz, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -700,7 +700,7 @@ const PrepopulatedEngine* const engines_PA[] = { - &googleen, &google, - &bing, - &yahoo_es, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -710,7 +710,7 @@ const PrepopulatedEngine* const engines_PE[] = { - &bing, - &yahoo_pe, - &ecosia, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Philippines -@@ -719,7 +719,7 @@ const PrepopulatedEngine* const engines_PH[] = { - &bing, - &yahoo_ph, - &ecosia, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Pakistan -@@ -727,7 +727,7 @@ const PrepopulatedEngine* const engines_PK[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -736,7 +736,7 @@ const PrepopulatedEngine* const engines_PL[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -745,7 +745,7 @@ const PrepopulatedEngine* const engines_PR[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -754,7 +754,7 @@ const PrepopulatedEngine* const engines_PT[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -763,7 +763,7 @@ const PrepopulatedEngine* const engines_PY[] = { - &googleen, &google, - &bing, - &yahoo_es, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -772,7 +772,7 @@ const PrepopulatedEngine* const engines_QA[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_tr, - }; - -@@ -781,7 +781,7 @@ const PrepopulatedEngine* const engines_RO[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_tr, - }; - -@@ -790,7 +790,7 @@ const PrepopulatedEngine* const engines_RS[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -800,7 +800,7 @@ const PrepopulatedEngine* const engines_RU[] = { - &google, - &duckduckgo, - &bing, -- &mail_ru, -+ &mail_ru, &duckduckgo_light, - }; - - // Rwanda -@@ -808,7 +808,7 @@ const PrepopulatedEngine* const engines_RW[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -818,7 +818,7 @@ const PrepopulatedEngine* const engines_SA[] = { - &bing, - &yahoo, - &yandex_com, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Sweden -@@ -826,7 +826,7 @@ const PrepopulatedEngine* const engines_SE[] = { - &googleen, &google, - &bing, - &yahoo_se, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_ru, - }; - -@@ -835,7 +835,7 @@ const PrepopulatedEngine* const engines_SG[] = { - &googleen, &google, - &bing, - &yahoo_sg, -- &baidu, -+ &baidu, &duckduckgo_light, - &duckduckgo, - }; - -@@ -843,7 +843,7 @@ const PrepopulatedEngine* const engines_SG[] = { - const PrepopulatedEngine* const engines_SI[] = { - &googleen, &google, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yahoo, - &yandex_com, - }; -@@ -852,7 +852,7 @@ const PrepopulatedEngine* const engines_SI[] = { - const PrepopulatedEngine* const engines_SK[] = { - &googleen, &google, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yahoo, - &yandex_ru, - }; -@@ -862,7 +862,7 @@ const PrepopulatedEngine* const engines_SV[] = { - &googleen, &google, - &bing, - &yahoo_es, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -872,7 +872,7 @@ const PrepopulatedEngine* const engines_SY[] = { - &bing, - &yandex_ru, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Thailand -@@ -889,7 +889,7 @@ const PrepopulatedEngine* const engines_TN[] = { - &googleen, &google, - &bing, - &yahoo_fr, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -899,7 +899,7 @@ const PrepopulatedEngine* const engines_TR[] = { - &yandex_tr, - &yahoo_tr, - &bing, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - }; - - // Trinidad and Tobago -@@ -907,7 +907,7 @@ const PrepopulatedEngine* const engines_TT[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &yandex_com, - }; - -@@ -916,8 +916,8 @@ const PrepopulatedEngine* const engines_TW[] = { - &googleen, &google, - &yahoo_tw, - &bing, -- &baidu, -- &duckduckgo, -+ &baidu, &duckduckgo_light, -+ &duckduckgo, &duckduckgo_light, - }; - - // Tanzania -@@ -925,7 +925,7 @@ const PrepopulatedEngine* const engines_TZ[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -943,7 +943,7 @@ const PrepopulatedEngine* const engines_US[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -952,7 +952,7 @@ const PrepopulatedEngine* const engines_UY[] = { - &googleen, &google, - &bing, - &yahoo_es, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -979,8 +979,8 @@ const PrepopulatedEngine* const engines_YE[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -- &yandex_com, -+ &duckduckgo, &duckduckgo_light, -+ &yandex_com, &duckduckgo_light, - }; - - // South Africa -@@ -988,7 +988,7 @@ const PrepopulatedEngine* const engines_ZA[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; - -@@ -997,7 +997,7 @@ const PrepopulatedEngine* const engines_ZW[] = { - &googleen, &google, - &bing, - &yahoo, -- &duckduckgo, -+ &duckduckgo, &duckduckgo_light, - &ecosia, - }; +@@ -1837,4 +1837,5 @@ std::unique_ptr GetPrepopulatedDefaultSearch( + : nullptr; + } ++readd duckduckgo_light + } // namespace TemplateURLPrepopulateData -- 2.25.1 diff --git a/build/patches/Add-English-only-search-engine.patch b/build/patches/Add-English-only-search-engine.patch index 43aa2243..69f9850c 100644 --- a/build/patches/Add-English-only-search-engine.patch +++ b/build/patches/Add-English-only-search-engine.patch @@ -9,14 +9,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../search_engines/prepopulated_engines.json | 21 ++ .../search_engines/search_engine_type.h | 1 + - .../template_url_prepopulate_data.cc | 216 +++++++++--------- - 3 files changed, 130 insertions(+), 108 deletions(-) + .../template_url_prepopulate_data.cc | 215 +++++++++--------- + 3 files changed, 130 insertions(+), 107 deletions(-) diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json --- a/components/search_engines/prepopulated_engines.json +++ b/components/search_engines/prepopulated_engines.json -@@ -141,6 +141,27 @@ - "id": 1 +@@ -171,6 +171,27 @@ + "id": 111 }, + "googleen": { @@ -46,987 +46,986 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h --- a/components/search_engines/search_engine_type.h +++ b/components/search_engines/search_engine_type.h -@@ -78,6 +78,7 @@ enum SearchEngineType { - SEARCH_ENGINE_STARTER_PACK_BOOKMARKS = 61, - SEARCH_ENGINE_STARTER_PACK_HISTORY = 62, - SEARCH_ENGINE_STARTER_PACK_TABS = 63, -+ SEARCH_ENGINE_GOOGLE_EN = 64, +@@ -88,6 +88,7 @@ enum SearchEngineType { + SEARCH_ENGINE_QUENDU = 69, + SEARCH_ENGINE_BRAVE = 70, + SEARCH_ENGINE_KARMA = 71, ++ SEARCH_ENGINE_GOOGLE_EN = 72, SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro. }; diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc --- a/components/search_engines/template_url_prepopulate_data.cc +++ b/components/search_engines/template_url_prepopulate_data.cc -@@ -30,7 +30,7 @@ namespace { +@@ -56,6 +56,7 @@ struct EngineAndTier { // Default (for countries with no better engine set) - const PrepopulatedEngine* const engines_default[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - }; -@@ -40,7 +40,7 @@ const PrepopulatedEngine* const engines_default[] = { + constexpr EngineAndTier engines_default[] = { ++ {SearchEngineTier::kTopEngines, &googleen}, + {SearchEngineTier::kTopEngines, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -66,7 +67,7 @@ constexpr EngineAndTier engines_default[] = { // clang-format off // United Arab Emirates - const PrepopulatedEngine* const engines_AE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -49,7 +49,7 @@ const PrepopulatedEngine* const engines_AE[] = { + constexpr EngineAndTier engines_AE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_ru}, +@@ -75,7 +76,7 @@ constexpr EngineAndTier engines_AE[] = { // Albania - const PrepopulatedEngine* const engines_AL[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -58,7 +58,7 @@ const PrepopulatedEngine* const engines_AL[] = { + constexpr EngineAndTier engines_AL[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_tr}, +@@ -84,7 +85,7 @@ constexpr EngineAndTier engines_AL[] = { // Argentina - const PrepopulatedEngine* const engines_AR[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_ar, - &duckduckgo, -@@ -67,7 +67,7 @@ const PrepopulatedEngine* const engines_AR[] = { + constexpr EngineAndTier engines_AR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_ar}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -93,7 +94,7 @@ constexpr EngineAndTier engines_AR[] = { // Austria - const PrepopulatedEngine* const engines_AT[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_at, - &duckduckgo, -@@ -76,7 +76,7 @@ const PrepopulatedEngine* const engines_AT[] = { + constexpr EngineAndTier engines_AT[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yahoo_at}, +@@ -114,7 +115,7 @@ constexpr EngineAndTier engines_AT[] = { // Australia - const PrepopulatedEngine* const engines_AU[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_au, - &duckduckgo, -@@ -85,7 +85,7 @@ const PrepopulatedEngine* const engines_AU[] = { + constexpr EngineAndTier engines_AU[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_au}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -123,7 +124,7 @@ constexpr EngineAndTier engines_AU[] = { // Bosnia and Herzegovina - const PrepopulatedEngine* const engines_BA[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -94,7 +94,7 @@ const PrepopulatedEngine* const engines_BA[] = { + constexpr EngineAndTier engines_BA[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -132,7 +133,7 @@ constexpr EngineAndTier engines_BA[] = { // Belgium - const PrepopulatedEngine* const engines_BE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &ecosia, -@@ -103,7 +103,7 @@ const PrepopulatedEngine* const engines_BE[] = { + constexpr EngineAndTier engines_BE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &ecosia}, +@@ -148,7 +149,7 @@ constexpr EngineAndTier engines_BE[] = { // Bulgaria - const PrepopulatedEngine* const engines_BG[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -112,7 +112,7 @@ const PrepopulatedEngine* const engines_BG[] = { + constexpr EngineAndTier engines_BG[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -164,7 +165,7 @@ constexpr EngineAndTier engines_BG[] = { // Bahrain - const PrepopulatedEngine* const engines_BH[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -121,7 +121,7 @@ const PrepopulatedEngine* const engines_BH[] = { + constexpr EngineAndTier engines_BH[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -173,7 +174,7 @@ constexpr EngineAndTier engines_BH[] = { // Burundi - const PrepopulatedEngine* const engines_BI[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -130,7 +130,7 @@ const PrepopulatedEngine* const engines_BI[] = { + constexpr EngineAndTier engines_BI[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_ru}, +@@ -182,7 +183,7 @@ constexpr EngineAndTier engines_BI[] = { // Brunei - const PrepopulatedEngine* const engines_BN[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -139,7 +139,7 @@ const PrepopulatedEngine* const engines_BN[] = { + constexpr EngineAndTier engines_BN[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -191,7 +192,7 @@ constexpr EngineAndTier engines_BN[] = { // Bolivia - const PrepopulatedEngine* const engines_BO[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -148,7 +148,7 @@ const PrepopulatedEngine* const engines_BO[] = { + constexpr EngineAndTier engines_BO[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -200,7 +201,7 @@ constexpr EngineAndTier engines_BO[] = { // Brazil - const PrepopulatedEngine* const engines_BR[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_br, - &duckduckgo, -@@ -157,7 +157,7 @@ const PrepopulatedEngine* const engines_BR[] = { + constexpr EngineAndTier engines_BR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_br}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -209,7 +210,7 @@ constexpr EngineAndTier engines_BR[] = { // Belarus - const PrepopulatedEngine* const engines_BY[] = { -- &google, -+ &googleen, &google, - &yandex_by, - &mail_ru, - &bing, -@@ -166,7 +166,7 @@ const PrepopulatedEngine* const engines_BY[] = { + constexpr EngineAndTier engines_BY[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &yandex_by}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -218,7 +219,7 @@ constexpr EngineAndTier engines_BY[] = { // Belize - const PrepopulatedEngine* const engines_BZ[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -175,7 +175,7 @@ const PrepopulatedEngine* const engines_BZ[] = { + constexpr EngineAndTier engines_BZ[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -227,7 +228,7 @@ constexpr EngineAndTier engines_BZ[] = { // Canada - const PrepopulatedEngine* const engines_CA[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_ca, - &duckduckgo, -@@ -184,7 +184,7 @@ const PrepopulatedEngine* const engines_CA[] = { + constexpr EngineAndTier engines_CA[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_ca}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -236,7 +237,7 @@ constexpr EngineAndTier engines_CA[] = { // Switzerland - const PrepopulatedEngine* const engines_CH[] = { -- &google, -+ &googleen, &google, - &bing, - &duckduckgo, - &yahoo_ch, -@@ -193,7 +193,7 @@ const PrepopulatedEngine* const engines_CH[] = { + constexpr EngineAndTier engines_CH[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yahoo_ch}, +@@ -245,7 +246,7 @@ constexpr EngineAndTier engines_CH[] = { // Chile - const PrepopulatedEngine* const engines_CL[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_cl, - &duckduckgo, -@@ -204,14 +204,14 @@ const PrepopulatedEngine* const engines_CL[] = { - const PrepopulatedEngine* const engines_CN[] = { - &baidu, - &bing, -- &sogou, -+ &googleen, &sogou, - &so_360, - &google, + constexpr EngineAndTier engines_CL[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_cl}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -256,14 +257,14 @@ constexpr EngineAndTier engines_CL[] = { + constexpr EngineAndTier engines_CN[] = { + {SearchEngineTier::kTopEngines, &baidu}, + {SearchEngineTier::kTopEngines, &bing}, +- {SearchEngineTier::kTopEngines, &sogou}, ++ {SearchEngineTier::kTopEngines, &googleen, &sogou}, + {SearchEngineTier::kTopEngines, &so_360}, + {SearchEngineTier::kTopEngines, &google}, }; // Colombia - const PrepopulatedEngine* const engines_CO[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_co, - &duckduckgo, -@@ -220,7 +220,7 @@ const PrepopulatedEngine* const engines_CO[] = { + constexpr EngineAndTier engines_CO[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_co}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -272,7 +273,7 @@ constexpr EngineAndTier engines_CO[] = { // Costa Rica - const PrepopulatedEngine* const engines_CR[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -229,7 +229,7 @@ const PrepopulatedEngine* const engines_CR[] = { + constexpr EngineAndTier engines_CR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -296,7 +297,7 @@ constexpr EngineAndTier engines_CY[] = { // Czech Republic - const PrepopulatedEngine* const engines_CZ[] = { -- &google, -+ &googleen, &google, - &seznam_cz, - &bing, - &yahoo, -@@ -238,7 +238,7 @@ const PrepopulatedEngine* const engines_CZ[] = { + constexpr EngineAndTier engines_CZ[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &seznam_cz}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -313,7 +314,7 @@ constexpr EngineAndTier engines_CZ[] = { // Germany - const PrepopulatedEngine* const engines_DE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_de, - &duckduckgo, -@@ -247,7 +247,7 @@ const PrepopulatedEngine* const engines_DE[] = { + constexpr EngineAndTier engines_DE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_de}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -335,7 +336,7 @@ constexpr EngineAndTier engines_DE[] = { // Denmark - const PrepopulatedEngine* const engines_DK[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_dk, - &duckduckgo, -@@ -256,7 +256,7 @@ const PrepopulatedEngine* const engines_DK[] = { + constexpr EngineAndTier engines_DK[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_dk}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -352,7 +353,7 @@ constexpr EngineAndTier engines_DK[] = { // Dominican Republic - const PrepopulatedEngine* const engines_DO[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -265,7 +265,7 @@ const PrepopulatedEngine* const engines_DO[] = { + constexpr EngineAndTier engines_DO[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -361,7 +362,7 @@ constexpr EngineAndTier engines_DO[] = { // Algeria - const PrepopulatedEngine* const engines_DZ[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_fr, - &yandex_com, -@@ -274,7 +274,7 @@ const PrepopulatedEngine* const engines_DZ[] = { + constexpr EngineAndTier engines_DZ[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_fr}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -370,7 +371,7 @@ constexpr EngineAndTier engines_DZ[] = { // Ecuador - const PrepopulatedEngine* const engines_EC[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_es, - &ecosia, -@@ -283,7 +283,7 @@ const PrepopulatedEngine* const engines_EC[] = { + constexpr EngineAndTier engines_EC[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_es}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -379,7 +380,7 @@ constexpr EngineAndTier engines_EC[] = { // Estonia - const PrepopulatedEngine* const engines_EE[] = { -- &google, -+ &googleen, &google, - &bing, - &yandex_ru, - &duckduckgo, -@@ -292,7 +292,7 @@ const PrepopulatedEngine* const engines_EE[] = { + constexpr EngineAndTier engines_EE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_com}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -394,7 +395,7 @@ constexpr EngineAndTier engines_EE[] = { // Egypt - const PrepopulatedEngine* const engines_EG[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &yandex_com, -@@ -301,7 +301,7 @@ const PrepopulatedEngine* const engines_EG[] = { + constexpr EngineAndTier engines_EG[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -403,7 +404,7 @@ constexpr EngineAndTier engines_EG[] = { // Spain - const PrepopulatedEngine* const engines_ES[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_es, - &duckduckgo, -@@ -310,7 +310,7 @@ const PrepopulatedEngine* const engines_ES[] = { + constexpr EngineAndTier engines_ES[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_es}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -422,7 +423,7 @@ constexpr EngineAndTier engines_ES[] = { // Finland - const PrepopulatedEngine* const engines_FI[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_fi, - &duckduckgo, -@@ -319,7 +319,7 @@ const PrepopulatedEngine* const engines_FI[] = { + constexpr EngineAndTier engines_FI[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_com}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -439,7 +440,7 @@ constexpr EngineAndTier engines_FI[] = { // Faroe Islands - const PrepopulatedEngine* const engines_FO[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_uk, - &duckduckgo, -@@ -328,7 +328,7 @@ const PrepopulatedEngine* const engines_FO[] = { + constexpr EngineAndTier engines_FO[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_uk}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -448,7 +449,7 @@ constexpr EngineAndTier engines_FO[] = { // France - const PrepopulatedEngine* const engines_FR[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_fr, - &qwant, -@@ -337,7 +337,7 @@ const PrepopulatedEngine* const engines_FR[] = { + constexpr EngineAndTier engines_FR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_fr}, + {SearchEngineTier::kTopEngines, &ecosia}, +@@ -468,7 +469,7 @@ constexpr EngineAndTier engines_FR[] = { // United Kingdom - const PrepopulatedEngine* const engines_GB[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_uk, - &duckduckgo, -@@ -346,7 +346,7 @@ const PrepopulatedEngine* const engines_GB[] = { + constexpr EngineAndTier engines_GB[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_uk}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -477,7 +478,7 @@ constexpr EngineAndTier engines_GB[] = { // Greece - const PrepopulatedEngine* const engines_GR[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -355,7 +355,7 @@ const PrepopulatedEngine* const engines_GR[] = { + constexpr EngineAndTier engines_GR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -493,7 +494,7 @@ constexpr EngineAndTier engines_GR[] = { // Guatemala - const PrepopulatedEngine* const engines_GT[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -364,7 +364,7 @@ const PrepopulatedEngine* const engines_GT[] = { + constexpr EngineAndTier engines_GT[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -502,7 +503,7 @@ constexpr EngineAndTier engines_GT[] = { // Hong Kong - const PrepopulatedEngine* const engines_HK[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_hk, - &baidu, -@@ -373,7 +373,7 @@ const PrepopulatedEngine* const engines_HK[] = { + constexpr EngineAndTier engines_HK[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_hk}, + {SearchEngineTier::kTopEngines, &baidu}, +@@ -511,7 +512,7 @@ constexpr EngineAndTier engines_HK[] = { // Honduras - const PrepopulatedEngine* const engines_HN[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -382,7 +382,7 @@ const PrepopulatedEngine* const engines_HN[] = { + constexpr EngineAndTier engines_HN[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -520,7 +521,7 @@ constexpr EngineAndTier engines_HN[] = { // Croatia - const PrepopulatedEngine* const engines_HR[] = { -- &google, -+ &googleen, &google, - &bing, - &duckduckgo, - &yahoo, -@@ -391,7 +391,7 @@ const PrepopulatedEngine* const engines_HR[] = { + constexpr EngineAndTier engines_HR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -535,7 +536,7 @@ constexpr EngineAndTier engines_HR[] = { // Hungary - const PrepopulatedEngine* const engines_HU[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -400,7 +400,7 @@ const PrepopulatedEngine* const engines_HU[] = { + constexpr EngineAndTier engines_HU[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -551,7 +552,7 @@ constexpr EngineAndTier engines_HU[] = { // Indonesia - const PrepopulatedEngine* const engines_ID[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_id, - &duckduckgo, -@@ -409,7 +409,7 @@ const PrepopulatedEngine* const engines_ID[] = { + constexpr EngineAndTier engines_ID[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &yandex_com}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_id}, +@@ -560,7 +561,7 @@ constexpr EngineAndTier engines_ID[] = { // Ireland - const PrepopulatedEngine* const engines_IE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_uk, - &duckduckgo, -@@ -418,7 +418,7 @@ const PrepopulatedEngine* const engines_IE[] = { + constexpr EngineAndTier engines_IE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_uk}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -579,7 +580,7 @@ constexpr EngineAndTier engines_IE[] = { // Israel - const PrepopulatedEngine* const engines_IL[] = { -- &google, -+ &googleen, &google, - &bing, - &yandex_ru, - &yahoo, -@@ -427,7 +427,7 @@ const PrepopulatedEngine* const engines_IL[] = { + constexpr EngineAndTier engines_IL[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_ru}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -588,7 +589,7 @@ constexpr EngineAndTier engines_IL[] = { // India - const PrepopulatedEngine* const engines_IN[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_in, - &duckduckgo, -@@ -436,7 +436,7 @@ const PrepopulatedEngine* const engines_IN[] = { + constexpr EngineAndTier engines_IN[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_in}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -597,7 +598,7 @@ constexpr EngineAndTier engines_IN[] = { // Iraq - const PrepopulatedEngine* const engines_IQ[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &yandex_tr, -@@ -445,7 +445,7 @@ const PrepopulatedEngine* const engines_IQ[] = { + constexpr EngineAndTier engines_IQ[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_tr}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -606,7 +607,7 @@ constexpr EngineAndTier engines_IQ[] = { // Iran - const PrepopulatedEngine* const engines_IR[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -454,7 +454,7 @@ const PrepopulatedEngine* const engines_IR[] = { + constexpr EngineAndTier engines_IR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -615,7 +616,7 @@ constexpr EngineAndTier engines_IR[] = { // Iceland - const PrepopulatedEngine* const engines_IS[] = { -- &google, -+ &googleen, &google, - &bing, - &duckduckgo, - &yahoo, -@@ -463,7 +463,7 @@ const PrepopulatedEngine* const engines_IS[] = { + constexpr EngineAndTier engines_IS[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -630,7 +631,7 @@ constexpr EngineAndTier engines_IS[] = { // Italy - const PrepopulatedEngine* const engines_IT[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -472,7 +472,7 @@ const PrepopulatedEngine* const engines_IT[] = { + constexpr EngineAndTier engines_IT[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -648,7 +649,7 @@ constexpr EngineAndTier engines_IT[] = { // Jamaica - const PrepopulatedEngine* const engines_JM[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -481,7 +481,7 @@ const PrepopulatedEngine* const engines_JM[] = { + constexpr EngineAndTier engines_JM[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -657,7 +658,7 @@ constexpr EngineAndTier engines_JM[] = { // Jordan - const PrepopulatedEngine* const engines_JO[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &petal_search, -@@ -490,7 +490,7 @@ const PrepopulatedEngine* const engines_JO[] = { + constexpr EngineAndTier engines_JO[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -666,7 +667,7 @@ constexpr EngineAndTier engines_JO[] = { // Japan - const PrepopulatedEngine* const engines_JP[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_jp, - &duckduckgo, -@@ -499,7 +499,7 @@ const PrepopulatedEngine* const engines_JP[] = { + constexpr EngineAndTier engines_JP[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &yahoo_jp}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -675,7 +676,7 @@ constexpr EngineAndTier engines_JP[] = { // Kenya - const PrepopulatedEngine* const engines_KE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -508,7 +508,7 @@ const PrepopulatedEngine* const engines_KE[] = { + constexpr EngineAndTier engines_KE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -684,7 +685,7 @@ constexpr EngineAndTier engines_KE[] = { // South Korea - const PrepopulatedEngine* const engines_KR[] = { -- &google, -+ &googleen, &google, - &naver, - &bing, - &daum, -@@ -517,7 +517,7 @@ const PrepopulatedEngine* const engines_KR[] = { + constexpr EngineAndTier engines_KR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &naver}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &daum}, +@@ -693,7 +694,7 @@ constexpr EngineAndTier engines_KR[] = { // Kuwait - const PrepopulatedEngine* const engines_KW[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -526,7 +526,7 @@ const PrepopulatedEngine* const engines_KW[] = { + constexpr EngineAndTier engines_KW[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_tr}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -702,7 +703,7 @@ constexpr EngineAndTier engines_KW[] = { // Kazakhstan - const PrepopulatedEngine* const engines_KZ[] = { -- &google, -+ &googleen, &google, - &yandex_kz, - &mail_ru, - &bing, -@@ -535,7 +535,7 @@ const PrepopulatedEngine* const engines_KZ[] = { + constexpr EngineAndTier engines_KZ[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &yandex_kz}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &mail_ru}, +@@ -711,7 +712,7 @@ constexpr EngineAndTier engines_KZ[] = { // Lebanon - const PrepopulatedEngine* const engines_LB[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -544,7 +544,7 @@ const PrepopulatedEngine* const engines_LB[] = { + constexpr EngineAndTier engines_LB[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -720,7 +721,7 @@ constexpr EngineAndTier engines_LB[] = { // Liechtenstein - const PrepopulatedEngine* const engines_LI[] = { -- &google, -+ &googleen, &google, - &bing, - &duckduckgo, - &yahoo, -@@ -553,7 +553,7 @@ const PrepopulatedEngine* const engines_LI[] = { + constexpr EngineAndTier engines_LI[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -736,7 +737,7 @@ constexpr EngineAndTier engines_LI[] = { // Lithuania - const PrepopulatedEngine* const engines_LT[] = { -- &google, -+ &googleen, &google, - &bing, - &yandex_ru, - &duckduckgo, -@@ -562,7 +562,7 @@ const PrepopulatedEngine* const engines_LT[] = { + constexpr EngineAndTier engines_LT[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_com}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -751,7 +752,7 @@ constexpr EngineAndTier engines_LT[] = { // Luxembourg - const PrepopulatedEngine* const engines_LU[] = { -- &google, -+ &googleen, &google, - &bing, - &duckduckgo, - &yahoo, -@@ -571,7 +571,7 @@ const PrepopulatedEngine* const engines_LU[] = { + constexpr EngineAndTier engines_LU[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -767,7 +768,7 @@ constexpr EngineAndTier engines_LU[] = { // Latvia - const PrepopulatedEngine* const engines_LV[] = { -- &google, -+ &googleen, &google, - &bing, - &yandex_ru, - &yahoo, -@@ -580,7 +580,7 @@ const PrepopulatedEngine* const engines_LV[] = { + constexpr EngineAndTier engines_LV[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_com}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -783,7 +784,7 @@ constexpr EngineAndTier engines_LV[] = { // Libya - const PrepopulatedEngine* const engines_LY[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &yandex_tr, -@@ -589,7 +589,7 @@ const PrepopulatedEngine* const engines_LY[] = { + constexpr EngineAndTier engines_LY[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_tr}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -792,7 +793,7 @@ constexpr EngineAndTier engines_LY[] = { // Morocco - const PrepopulatedEngine* const engines_MA[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_fr, - &yandex_com, -@@ -598,7 +598,7 @@ const PrepopulatedEngine* const engines_MA[] = { + constexpr EngineAndTier engines_MA[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_fr}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -801,7 +802,7 @@ constexpr EngineAndTier engines_MA[] = { // Monaco - const PrepopulatedEngine* const engines_MC[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_fr, - &duckduckgo, -@@ -607,7 +607,7 @@ const PrepopulatedEngine* const engines_MC[] = { + constexpr EngineAndTier engines_MC[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_fr}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -810,7 +811,7 @@ constexpr EngineAndTier engines_MC[] = { // Moldova - const PrepopulatedEngine* const engines_MD[] = { -- &google, -+ &googleen, &google, - &yandex_ru, - &bing, - &mail_ru, -@@ -616,7 +616,7 @@ const PrepopulatedEngine* const engines_MD[] = { + constexpr EngineAndTier engines_MD[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &yandex_ru}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -819,7 +820,7 @@ constexpr EngineAndTier engines_MD[] = { // Montenegro - const PrepopulatedEngine* const engines_ME[] = { -- &google, -+ &googleen, &google, - &bing, - &yandex_ru, - &yahoo, -@@ -625,7 +625,7 @@ const PrepopulatedEngine* const engines_ME[] = { + constexpr EngineAndTier engines_ME[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_ru}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -828,7 +829,7 @@ constexpr EngineAndTier engines_ME[] = { // Macedonia - const PrepopulatedEngine* const engines_MK[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -634,7 +634,7 @@ const PrepopulatedEngine* const engines_MK[] = { + constexpr EngineAndTier engines_MK[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -854,7 +855,7 @@ constexpr EngineAndTier engines_MT[] = { // Mexico - const PrepopulatedEngine* const engines_MX[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_mx, - &duckduckgo, -@@ -643,7 +643,7 @@ const PrepopulatedEngine* const engines_MX[] = { + constexpr EngineAndTier engines_MX[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_mx}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -863,7 +864,7 @@ constexpr EngineAndTier engines_MX[] = { // Malaysia - const PrepopulatedEngine* const engines_MY[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_my, - &duckduckgo, -@@ -652,7 +652,7 @@ const PrepopulatedEngine* const engines_MY[] = { + constexpr EngineAndTier engines_MY[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_my}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -872,7 +873,7 @@ constexpr EngineAndTier engines_MY[] = { // Nicaragua - const PrepopulatedEngine* const engines_NI[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -661,7 +661,7 @@ const PrepopulatedEngine* const engines_NI[] = { + constexpr EngineAndTier engines_NI[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -881,7 +882,7 @@ constexpr EngineAndTier engines_NI[] = { // Netherlands - const PrepopulatedEngine* const engines_NL[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_nl, - &duckduckgo, -@@ -670,7 +670,7 @@ const PrepopulatedEngine* const engines_NL[] = { + constexpr EngineAndTier engines_NL[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yahoo_nl}, +@@ -898,7 +899,7 @@ constexpr EngineAndTier engines_NL[] = { // Norway - const PrepopulatedEngine* const engines_NO[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -679,7 +679,7 @@ const PrepopulatedEngine* const engines_NO[] = { + constexpr EngineAndTier engines_NO[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -915,7 +916,7 @@ constexpr EngineAndTier engines_NO[] = { // New Zealand - const PrepopulatedEngine* const engines_NZ[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_nz, - &duckduckgo, -@@ -688,7 +688,7 @@ const PrepopulatedEngine* const engines_NZ[] = { + constexpr EngineAndTier engines_NZ[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_nz}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -924,7 +925,7 @@ constexpr EngineAndTier engines_NZ[] = { // Oman - const PrepopulatedEngine* const engines_OM[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &petal_search, -@@ -697,7 +697,7 @@ const PrepopulatedEngine* const engines_OM[] = { + constexpr EngineAndTier engines_OM[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -933,7 +934,7 @@ constexpr EngineAndTier engines_OM[] = { // Panama - const PrepopulatedEngine* const engines_PA[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_es, - &duckduckgo, -@@ -706,7 +706,7 @@ const PrepopulatedEngine* const engines_PA[] = { + constexpr EngineAndTier engines_PA[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_es}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -942,7 +943,7 @@ constexpr EngineAndTier engines_PA[] = { // Peru - const PrepopulatedEngine* const engines_PE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_pe, - &ecosia, -@@ -715,7 +715,7 @@ const PrepopulatedEngine* const engines_PE[] = { + constexpr EngineAndTier engines_PE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_pe}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -951,7 +952,7 @@ constexpr EngineAndTier engines_PE[] = { // Philippines - const PrepopulatedEngine* const engines_PH[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_ph, - &ecosia, -@@ -724,7 +724,7 @@ const PrepopulatedEngine* const engines_PH[] = { + constexpr EngineAndTier engines_PH[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_ph}, + {SearchEngineTier::kTopEngines, &ecosia}, +@@ -960,7 +961,7 @@ constexpr EngineAndTier engines_PH[] = { // Pakistan - const PrepopulatedEngine* const engines_PK[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -733,7 +733,7 @@ const PrepopulatedEngine* const engines_PK[] = { + constexpr EngineAndTier engines_PK[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -969,7 +970,7 @@ constexpr EngineAndTier engines_PK[] = { // Poland - const PrepopulatedEngine* const engines_PL[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -742,7 +742,7 @@ const PrepopulatedEngine* const engines_PL[] = { + constexpr EngineAndTier engines_PL[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -985,7 +986,7 @@ constexpr EngineAndTier engines_PL[] = { // Puerto Rico - const PrepopulatedEngine* const engines_PR[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -751,7 +751,7 @@ const PrepopulatedEngine* const engines_PR[] = { + constexpr EngineAndTier engines_PR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -994,7 +995,7 @@ constexpr EngineAndTier engines_PR[] = { // Portugal - const PrepopulatedEngine* const engines_PT[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -760,7 +760,7 @@ const PrepopulatedEngine* const engines_PT[] = { + constexpr EngineAndTier engines_PT[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1011,7 +1012,7 @@ constexpr EngineAndTier engines_PT[] = { // Paraguay - const PrepopulatedEngine* const engines_PY[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_es, - &duckduckgo, -@@ -769,7 +769,7 @@ const PrepopulatedEngine* const engines_PY[] = { + constexpr EngineAndTier engines_PY[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_es}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1020,7 +1021,7 @@ constexpr EngineAndTier engines_PY[] = { // Qatar - const PrepopulatedEngine* const engines_QA[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -778,7 +778,7 @@ const PrepopulatedEngine* const engines_QA[] = { + constexpr EngineAndTier engines_QA[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1029,7 +1030,7 @@ constexpr EngineAndTier engines_QA[] = { // Romania - const PrepopulatedEngine* const engines_RO[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -787,7 +787,7 @@ const PrepopulatedEngine* const engines_RO[] = { + constexpr EngineAndTier engines_RO[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1044,7 +1045,7 @@ constexpr EngineAndTier engines_RO[] = { // Serbia - const PrepopulatedEngine* const engines_RS[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -796,7 +796,7 @@ const PrepopulatedEngine* const engines_RS[] = { + constexpr EngineAndTier engines_RS[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &yandex_ru}, +@@ -1053,7 +1054,7 @@ constexpr EngineAndTier engines_RS[] = { // Russia - const PrepopulatedEngine* const engines_RU[] = { -- &yandex_ru, -+ &googleen, &yandex_ru, - &google, - &duckduckgo, - &bing, -@@ -805,7 +805,7 @@ const PrepopulatedEngine* const engines_RU[] = { + constexpr EngineAndTier engines_RU[] = { +- {SearchEngineTier::kTopEngines, &yandex_ru}, ++ {SearchEngineTier::kTopEngines, &googleen, &yandex_ru}, + {SearchEngineTier::kTopEngines, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1062,7 +1063,7 @@ constexpr EngineAndTier engines_RU[] = { // Rwanda - const PrepopulatedEngine* const engines_RW[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -814,7 +814,7 @@ const PrepopulatedEngine* const engines_RW[] = { + constexpr EngineAndTier engines_RW[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1071,7 +1072,7 @@ constexpr EngineAndTier engines_RW[] = { // Saudi Arabia - const PrepopulatedEngine* const engines_SA[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &yandex_com, -@@ -823,7 +823,7 @@ const PrepopulatedEngine* const engines_SA[] = { + constexpr EngineAndTier engines_SA[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_com}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -1080,7 +1081,7 @@ constexpr EngineAndTier engines_SA[] = { // Sweden - const PrepopulatedEngine* const engines_SE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_se, - &duckduckgo, -@@ -832,7 +832,7 @@ const PrepopulatedEngine* const engines_SE[] = { + constexpr EngineAndTier engines_SE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_se}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1096,7 +1097,7 @@ constexpr EngineAndTier engines_SE[] = { // Singapore - const PrepopulatedEngine* const engines_SG[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_sg, - &baidu, -@@ -841,7 +841,7 @@ const PrepopulatedEngine* const engines_SG[] = { + constexpr EngineAndTier engines_SG[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_sg}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1105,7 +1106,7 @@ constexpr EngineAndTier engines_SG[] = { // Slovenia - const PrepopulatedEngine* const engines_SI[] = { -- &google, -+ &googleen, &google, - &bing, - &duckduckgo, - &yahoo, -@@ -850,7 +850,7 @@ const PrepopulatedEngine* const engines_SI[] = { + constexpr EngineAndTier engines_SI[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -1120,7 +1121,7 @@ constexpr EngineAndTier engines_SI[] = { // Slovakia - const PrepopulatedEngine* const engines_SK[] = { -- &google, -+ &googleen, &google, - &bing, - &duckduckgo, - &yahoo, -@@ -859,7 +859,7 @@ const PrepopulatedEngine* const engines_SK[] = { + constexpr EngineAndTier engines_SK[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &yandex_ru}, +@@ -1136,7 +1137,7 @@ constexpr EngineAndTier engines_SK[] = { // El Salvador - const PrepopulatedEngine* const engines_SV[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_es, - &duckduckgo, -@@ -868,7 +868,7 @@ const PrepopulatedEngine* const engines_SV[] = { + constexpr EngineAndTier engines_SV[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_es}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1145,7 +1146,7 @@ constexpr EngineAndTier engines_SV[] = { // Syria - const PrepopulatedEngine* const engines_SY[] = { -- &google, -+ &googleen, &google, - &bing, - &yandex_ru, - &yahoo, -@@ -877,7 +877,7 @@ const PrepopulatedEngine* const engines_SY[] = { + constexpr EngineAndTier engines_SY[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yandex_ru}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -1154,7 +1155,7 @@ constexpr EngineAndTier engines_SY[] = { // Thailand - const PrepopulatedEngine* const engines_TH[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_th, - &naver, -@@ -886,7 +886,7 @@ const PrepopulatedEngine* const engines_TH[] = { + constexpr EngineAndTier engines_TH[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_th}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -1163,7 +1164,7 @@ constexpr EngineAndTier engines_TH[] = { // Tunisia - const PrepopulatedEngine* const engines_TN[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_fr, - &duckduckgo, -@@ -895,7 +895,7 @@ const PrepopulatedEngine* const engines_TN[] = { + constexpr EngineAndTier engines_TN[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_fr}, + {SearchEngineTier::kTopEngines, &yandex_com}, +@@ -1172,7 +1173,7 @@ constexpr EngineAndTier engines_TN[] = { // Turkey - const PrepopulatedEngine* const engines_TR[] = { -- &google, -+ &googleen, &google, - &yandex_tr, - &yahoo_tr, - &bing, -@@ -904,7 +904,7 @@ const PrepopulatedEngine* const engines_TR[] = { + constexpr EngineAndTier engines_TR[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &yandex_tr}, + {SearchEngineTier::kTopEngines, &yahoo_tr}, + {SearchEngineTier::kTopEngines, &bing}, +@@ -1181,7 +1182,7 @@ constexpr EngineAndTier engines_TR[] = { // Trinidad and Tobago - const PrepopulatedEngine* const engines_TT[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -913,7 +913,7 @@ const PrepopulatedEngine* const engines_TT[] = { + constexpr EngineAndTier engines_TT[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1190,7 +1191,7 @@ constexpr EngineAndTier engines_TT[] = { // Taiwan - const PrepopulatedEngine* const engines_TW[] = { -- &google, -+ &googleen, &google, - &yahoo_tw, - &bing, - &baidu, -@@ -922,7 +922,7 @@ const PrepopulatedEngine* const engines_TW[] = { + constexpr EngineAndTier engines_TW[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &yahoo_tw}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &coccoc}, +@@ -1199,7 +1200,7 @@ constexpr EngineAndTier engines_TW[] = { // Tanzania - const PrepopulatedEngine* const engines_TZ[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -931,7 +931,7 @@ const PrepopulatedEngine* const engines_TZ[] = { + constexpr EngineAndTier engines_TZ[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, +@@ -1208,7 +1209,7 @@ constexpr EngineAndTier engines_TZ[] = { // Ukraine - const PrepopulatedEngine* const engines_UA[] = { -- &google, -+ &googleen, &google, - &yandex_ru, - &bing, - &duckduckgo, -@@ -940,7 +940,7 @@ const PrepopulatedEngine* const engines_UA[] = { + constexpr EngineAndTier engines_UA[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &yandex_ru}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1217,7 +1218,7 @@ constexpr EngineAndTier engines_UA[] = { // United States - const PrepopulatedEngine* const engines_US[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -949,7 +949,7 @@ const PrepopulatedEngine* const engines_US[] = { + constexpr EngineAndTier engines_US[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1226,7 +1227,7 @@ constexpr EngineAndTier engines_US[] = { // Uruguay - const PrepopulatedEngine* const engines_UY[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_es, - &duckduckgo, -@@ -958,7 +958,7 @@ const PrepopulatedEngine* const engines_UY[] = { + constexpr EngineAndTier engines_UY[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_es}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1235,7 +1236,7 @@ constexpr EngineAndTier engines_UY[] = { // Venezuela - const PrepopulatedEngine* const engines_VE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo_es, - &duckduckgo, -@@ -967,7 +967,7 @@ const PrepopulatedEngine* const engines_VE[] = { + constexpr EngineAndTier engines_VE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo_es}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1244,7 +1245,7 @@ constexpr EngineAndTier engines_VE[] = { // Vietnam - const PrepopulatedEngine* const engines_VN[] = { -- &google, -+ &googleen, &google, - &coccoc, - &bing, - &yahoo, -@@ -976,7 +976,7 @@ const PrepopulatedEngine* const engines_VN[] = { + constexpr EngineAndTier engines_VN[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &coccoc}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &bing}, +@@ -1253,7 +1254,7 @@ constexpr EngineAndTier engines_VN[] = { // Yemen - const PrepopulatedEngine* const engines_YE[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -985,7 +985,7 @@ const PrepopulatedEngine* const engines_YE[] = { + constexpr EngineAndTier engines_YE[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1262,7 +1263,7 @@ constexpr EngineAndTier engines_YE[] = { // South Africa - const PrepopulatedEngine* const engines_ZA[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, -@@ -994,7 +994,7 @@ const PrepopulatedEngine* const engines_ZA[] = { + constexpr EngineAndTier engines_ZA[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, +@@ -1271,7 +1272,7 @@ constexpr EngineAndTier engines_ZA[] = { // Zimbabwe - const PrepopulatedEngine* const engines_ZW[] = { -- &google, -+ &googleen, &google, - &bing, - &yahoo, - &duckduckgo, + constexpr EngineAndTier engines_ZW[] = { +- {SearchEngineTier::kTopEngines, &google}, ++ {SearchEngineTier::kTopEngines, &googleen, &google}, + {SearchEngineTier::kTopEngines, &bing}, + {SearchEngineTier::kTopEngines, &yahoo}, + {SearchEngineTier::kTopEngines, &duckduckgo}, -- 2.25.1 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 d6736f99..5e5071c1 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -8,7 +8,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/ChromeTabbedActivity.java | 24 ++++++++ .../browser/bookmarks/BookmarkBridge.java | 61 +++++++++++++++++++ .../browser/bookmarks/BookmarkUtils.java | 4 ++ - .../bookmarks/android/bookmark_bridge.cc | 19 +++++- + .../bookmarks/android/bookmark_bridge.cc | 16 +++++ .../bookmarks/android/bookmark_bridge.h | 4 ++ .../browser/bookmarks/bookmark_html_writer.cc | 8 ++- .../bookmarks/chrome_bookmark_client.cc | 2 + @@ -27,7 +27,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/bookmarks/browser/bookmark_uuids.h | 1 + components/bookmarks/browser/model_loader.cc | 3 +- .../bookmark_specifics_conversions.cc | 1 + - 23 files changed, 200 insertions(+), 11 deletions(-) + 23 files changed, 198 insertions(+), 10 deletions(-) diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml --- a/chrome/android/java/res/menu/main_menu.xml @@ -56,7 +56,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 -@@ -81,6 +81,7 @@ import org.chromium.chrome.browser.back_press.MinimizeAppAndCloseTabBackPressHan +@@ -84,6 +84,7 @@ import org.chromium.chrome.browser.back_press.MinimizeAppAndCloseTabBackPressHan import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.compositor.CompositorViewHolder; @@ -64,7 +64,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone; -@@ -2226,6 +2227,8 @@ public class ChromeTabbedActivity extends ChromeActivity getTabModelSelector().closeAllTabs()); RecordUserAction.record("MobileMenuCloseAllTabs"); @@ -73,7 +73,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct } else if (id == R.id.close_all_incognito_tabs_menu_id) { // Close only incognito tabs CloseAllTabsDialog.show(this, getModalDialogManagerSupplier(), -@@ -2291,6 +2294,27 @@ public class ChromeTabbedActivity extends ChromeActivity mObservers = new ObserverList<>(); + + private static final String TAG = "BookmarkBridge"; + private long mNativeBookmarkBridge; private boolean mIsDestroyed; private boolean mIsDoingExtensiveChanges; -@@ -377,6 +384,16 @@ class BookmarkBridge { - mNativeBookmarkBridge, BookmarkBridge.this); +@@ -375,6 +382,16 @@ class BookmarkBridge { + return mMobileFolderId; } + /** @@ -149,8 +149,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * @return Id representing the special "other" folder from bookmark model. */ -@@ -1012,6 +1029,49 @@ class BookmarkBridge { - mNativeBookmarkBridge, BookmarkBridge.this, title, url); +@@ -1008,6 +1025,49 @@ class BookmarkBridge { + return BookmarkBridgeJni.get().addToReadingList(mNativeBookmarkBridge, title, url); } + // Used to bookmark all tabs in a specific folder, created if not existing @@ -199,58 +199,50 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * @param url The URL of the reading list item. * @return The reading list item with the URL, or null if no such reading list item. -@@ -1232,6 +1292,7 @@ class BookmarkBridge { - void getAllFoldersWithDepths(long nativeBookmarkBridge, BookmarkBridge caller, - List folderList, List depthList); - BookmarkId getRootFolderId(long nativeBookmarkBridge, BookmarkBridge caller); +@@ -1227,6 +1287,7 @@ class BookmarkBridge { + void getAllFoldersWithDepths( + long nativeBookmarkBridge, List folderList, List depthList); + BookmarkId getRootFolderId(long nativeBookmarkBridge); + BookmarkId getTabsCollectionFolderId(long nativeBookmarkBridge, BookmarkBridge caller); - BookmarkId getMobileFolderId(long nativeBookmarkBridge, BookmarkBridge caller); - BookmarkId getOtherFolderId(long nativeBookmarkBridge, BookmarkBridge caller); - BookmarkId getDesktopFolderId(long nativeBookmarkBridge, BookmarkBridge caller); + BookmarkId getMobileFolderId(long nativeBookmarkBridge); + BookmarkId getOtherFolderId(long nativeBookmarkBridge); + BookmarkId getDesktopFolderId(long nativeBookmarkBridge); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java -@@ -615,6 +615,7 @@ public class BookmarkUtils { - List topLevelFolders = new ArrayList<>(); +@@ -782,6 +782,7 @@ public class BookmarkUtils { + BookmarkId rootNodeId = bookmarkModel.getRootFolderId(); BookmarkId desktopNodeId = bookmarkModel.getDesktopFolderId(); BookmarkId mobileNodeId = bookmarkModel.getMobileFolderId(); + BookmarkId tabsCollectionNodeId = bookmarkModel.getTabsCollectionFolderId(); BookmarkId othersNodeId = bookmarkModel.getOtherFolderId(); - List specialFoldersIds = -@@ -640,6 +641,9 @@ public class BookmarkUtils { - if (bookmarkModel.isFolderVisible(mobileNodeId)) { - topLevelFolders.add(mobileNodeId); - } + List specialFoldersIds = bookmarkModel.getTopLevelFolderIds(); +@@ -798,6 +799,9 @@ public class BookmarkUtils { + /** Return the background color for the given {@link BookmarkType}. */ + public static @ColorInt int getIconBackground( + Context context, BookmarkModel bookmarkModel, BookmarkItem item) { + if (bookmarkModel.isFolderVisible(tabsCollectionNodeId)) { + topLevelFolders.add(tabsCollectionNodeId); + } - if (bookmarkModel.isFolderVisible(desktopNodeId)) { - topLevelFolders.add(desktopNodeId); - } + if (isSpecialFolder(bookmarkModel, item)) { + return SemanticColorUtils.getColorPrimaryContainer(context); + } else { diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -470,12 +470,17 @@ void BookmarkBridge::GetTopLevelFolderIds( - std::size_t special_count = top_level_folders.size(); - - if (get_normal) { -- DCHECK_EQ(4u, bookmark_model_->root_node()->children().size()); -+ DCHECK_EQ(5u, bookmark_model_->root_node()->children().size()); - for (const auto& node : bookmark_model_->mobile_node()->children()) { - if (node->is_folder()) - top_level_folders.push_back(node.get()); +@@ -436,6 +436,10 @@ void BookmarkBridge::GetTopLevelFolderIds( } + top_level_folders.push_back(root_child.get()); + } ++ for (const auto& node : bookmark_model_->tabs_collection_node()->children()) { ++ if (node->is_folder()) ++ top_level_folders.push_back(node.get()); ++ } -+ for (const auto& node : bookmark_model_->tabs_collection_node()->children()) { -+ if (node->is_folder()) -+ top_level_folders.push_back(node.get()); -+ } -+ - for (const auto& node : bookmark_model_->bookmark_bar_node()->children()) { - if (node->is_folder()) - top_level_folders.push_back(node.get()); -@@ -523,6 +528,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( + if (managed_bookmark_service_->managed_node() && + !managed_bookmark_service_->managed_node()->children().empty()) { +@@ -479,6 +483,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( // Vector to temporarily contain all child bookmarks at same level for sorting std::vector bookmarks = { bookmark_model_->mobile_node(), @@ -258,8 +250,8 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse bookmark_model_->bookmark_bar_node(), bookmark_model_->other_node(), }; -@@ -575,6 +581,17 @@ ScopedJavaLocalRef BookmarkBridge::GetMobileFolderId( - return folder_id_obj; +@@ -1051,6 +1056,17 @@ void BookmarkBridge::GetBookmarksOfType( + } } +ScopedJavaLocalRef BookmarkBridge::GetTabsCollectionFolderId( @@ -273,23 +265,23 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return folder_id_obj; +} + - ScopedJavaLocalRef BookmarkBridge::GetOtherFolderId( + ScopedJavaLocalRef BookmarkBridge::AddFolder( JNIEnv* env, - const JavaParamRef& obj) { + const JavaParamRef& j_parent_id_obj, diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser/bookmarks/android/bookmark_bridge.h --- a/chrome/browser/bookmarks/android/bookmark_bridge.h +++ b/chrome/browser/bookmarks/android/bookmark_bridge.h -@@ -133,6 +133,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, - JNIEnv* env, - const base::android::JavaParamRef& obj); +@@ -205,6 +205,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, + const base::android::JavaParamRef& j_list, + jint type); + base::android::ScopedJavaLocalRef GetTabsCollectionFolderId( + JNIEnv* env, + const base::android::JavaParamRef& obj); + - base::android::ScopedJavaLocalRef GetOtherFolderId( + base::android::ScopedJavaLocalRef AddFolder( JNIEnv* env, - const base::android::JavaParamRef& obj); + const base::android::JavaParamRef& j_parent_id_obj, diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/bookmarks/bookmark_html_writer.cc --- a/chrome/browser/bookmarks/bookmark_html_writer.cc +++ b/chrome/browser/bookmarks/bookmark_html_writer.cc @@ -359,7 +351,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -3948,6 +3948,9 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

Select tabs @@ -571,30 +563,30 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/b BookmarkPermanentNode* other_folder_node() { return other_folder_node_; } + BookmarkPermanentNode* tabs_collection_folder_node() { return tabs_collection_folder_node_; } - TitledUrlIndex* index() { return index_.get(); } - std::unique_ptr owned_index() { return std::move(index_); } -@@ -112,6 +113,8 @@ class BookmarkLoadDetails { + std::unique_ptr owned_titled_url_index() { + return std::move(titled_url_index_); +@@ -119,6 +120,8 @@ class BookmarkLoadDetails { nullptr; raw_ptr mobile_folder_node_ = nullptr; + raw_ptr tabs_collection_folder_node_ = + nullptr; LoadManagedNodeCallback load_managed_node_callback_; - std::unique_ptr index_; - BookmarkNode::MetaInfoMap model_meta_info_map_; + std::unique_ptr titled_url_index_; + UuidIndex uuid_index_; 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 -@@ -826,7 +826,7 @@ bool BookmarkModel::HasBookmarks() { - bool BookmarkModel::HasNoUserCreatedBookmarksOrFolders() { +@@ -845,7 +845,7 @@ bool BookmarkModel::HasBookmarks() const { + bool BookmarkModel::HasNoUserCreatedBookmarksOrFolders() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return bookmark_bar_node_->children().empty() && - other_node_->children().empty() && mobile_node_->children().empty(); + other_node_->children().empty() && mobile_node_->children().empty() && tabs_collection_node_->children().empty(); } - bool BookmarkModel::IsBookmarked(const GURL& url) { -@@ -1132,6 +1132,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { + bool BookmarkModel::IsBookmarked(const GURL& url) const { +@@ -1155,6 +1155,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(); @@ -605,7 +597,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 -@@ -131,6 +131,12 @@ class BookmarkModel final : public BookmarkUndoProvider, +@@ -132,6 +132,12 @@ class BookmarkModel final : public BookmarkUndoProvider, return mobile_node_; } @@ -618,7 +610,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_; -@@ -489,6 +495,7 @@ class BookmarkModel final : public BookmarkUndoProvider, +@@ -495,6 +501,7 @@ class BookmarkModel final : public BookmarkUndoProvider, nullptr; raw_ptr mobile_node_ = nullptr; @@ -695,7 +687,7 @@ diff --git a/components/bookmarks/browser/bookmark_uuids.h b/components/bookmark 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 -@@ -60,7 +60,8 @@ void LoadBookmarks(const base::FilePath& path, +@@ -45,7 +45,8 @@ void LoadBookmarks(const base::FilePath& path, std::string sync_metadata_str; BookmarkCodec codec; codec.Decode(*root_dict, details->bb_node(), details->other_folder_node(), 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 7dda8c50..8ab673f1 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 @@ -31,7 +31,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabCreationState; import org.chromium.chrome.browser.tab.TabLaunchType; -@@ -565,9 +566,13 @@ public class TabGridDialogMediator +@@ -564,9 +565,13 @@ public class TabGridDialogMediator assert relatedTabs.size() > 0; @@ -89,7 +89,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -228,6 +228,22 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat +@@ -238,6 +238,22 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat notifyHomepageUpdated(); } @@ -110,29 +110,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa + } + /** - * @return User specified homepage custom URI string. + * @return User specified homepage custom GURL. */ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java -@@ -22,6 +22,7 @@ import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; - import org.chromium.components.browser_ui.settings.SettingsUtils; +@@ -22,6 +22,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.url_formatter.UrlFormatter; + import org.chromium.url.GURL; +import org.chromium.components.embedder_support.util.UrlConstants; /** * Fragment that allows the user to configure homepage related preferences. -@@ -32,6 +33,8 @@ public class HomepageSettings extends PreferenceFragmentCompat { +@@ -32,6 +33,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { @VisibleForTesting public static final String PREF_HOMEPAGE_RADIO_GROUP = "homepage_radio_group"; + private static final String PREF_NTP_HOMEPAGE_SWITCH = "ntp_is_homepage_switch"; + - /** - * Delegate used to mark that the homepage is being managed. - * Created for {@link org.chromium.chrome.browser.settings.HomepagePreferences} -@@ -72,6 +75,15 @@ public class HomepageSettings extends PreferenceFragmentCompat { + private HomepageManager mHomepageManager; + private RadioButtonGroupHomepagePreference mRadioButtons; + +@@ -65,6 +68,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { }); mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup()); @@ -152,25 +152,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchM --- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java @@ -103,7 +103,6 @@ public class LaunchMetrics { - boolean showHomeButton, boolean homepageIsNtp, String homepageUrl) { - if (homepageUrl == null) { - homepageUrl = ""; -- assert !showHomeButton : "Homepage should be disabled for a null URL"; + public static void recordHomePageLaunchMetrics( + boolean showHomeButton, boolean homepageIsNtp, GURL homepageGurl) { + if (homepageGurl.isEmpty()) { +- assert !showHomeButton : "Homepage should be disabled for an empty GURL"; } LaunchMetricsJni.get().recordHomePageLaunchMetrics( - showHomeButton, homepageIsNtp, homepageUrl); + showHomeButton, homepageIsNtp, homepageGurl); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -26,6 +26,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; - import org.chromium.chrome.browser.compositor.CompositorViewHolder; +@@ -27,6 +27,7 @@ import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.incognito.IncognitoUtils; + import org.chromium.chrome.browser.new_tab_url.DseNewTabUrlManager; +import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin; import org.chromium.chrome.browser.ntp.NewTabPageUtils; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge; -@@ -495,6 +496,12 @@ public class ChromeTabCreator extends TabCreator { +@@ -502,6 +503,12 @@ public class ChromeTabCreator extends TabCreator { * @return the created tab. */ public Tab launchUrl(String url, @TabLaunchType int type, Intent intent, long intentTimestamp) { @@ -186,9 +186,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -366,6 +366,7 @@ public final class ChromePreferenceKeys { - public static final String HOMEPAGE_PARTNER_CUSTOMIZED_DEFAULT_GURL = - "Chrome.Homepage.PartnerCustomizedDefaultGurl"; +@@ -367,6 +367,7 @@ public final class ChromePreferenceKeys { + public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP"; + public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled"; + public static final String HOMEPAGE_NTP_IS_HOMEPAGE = "newtabpage_is_homepage"; /** @@ -197,8 +197,8 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java -@@ -67,6 +67,7 @@ public class LegacyChromePreferenceKeys { - ChromePreferenceKeys.HOMEPAGE_CUSTOM_URI, +@@ -68,6 +68,7 @@ public class LegacyChromePreferenceKeys { + ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO, ChromePreferenceKeys.HOMEPAGE_ENABLED, ChromePreferenceKeys.HOMEPAGE_USE_DEFAULT_URI, + ChromePreferenceKeys.HOMEPAGE_NTP_IS_HOMEPAGE, @@ -208,7 +208,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 -@@ -1514,6 +1514,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1540,6 +1540,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour @@ -233,7 +233,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u 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 -@@ -1297,6 +1297,10 @@ inline constexpr char kUsedPolicyCertificates[] = +@@ -1283,6 +1283,10 @@ inline constexpr char kUsedPolicyCertificates[] = // visible on the toolbar. inline constexpr char kShowHomeButton[] = "browser.show_home_button"; diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index 3e85b65c..1a53c729 100644 --- a/build/patches/Add-site-engagement-flag.patch +++ b/build/patches/Add-site-engagement-flag.patch @@ -21,7 +21,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -147,6 +147,7 @@ +@@ -148,6 +148,7 @@ #include "components/segmentation_platform/public/features.h" #include "components/send_tab_to_self/features.h" #include "components/services/heap_profiling/public/cpp/switches.h" @@ -29,7 +29,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "components/shared_highlighting/core/common/shared_highlighting_features.h" #include "components/signin/core/browser/dice_account_reconcilor_delegate.h" #include "components/signin/public/base/signin_buildflags.h" -@@ -9619,6 +9620,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9910,6 +9911,11 @@ const FeatureEntry kFeatureEntries[] = { kLargeFaviconFromGoogleVariations, "LargeFaviconFromGoogle")}, @@ -44,7 +44,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -3774,6 +3774,11 @@ const char kSkipServiceWorkerFetchHandlerDescription[] = +@@ -3815,6 +3815,11 @@ const char kSkipServiceWorkerFetchHandlerDescription[] = "Skips starting the service worker and run the fetch handler if the fetch " "handler is recognized as skippable."; @@ -55,11 +55,11 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti + const char kWebSQLAccessName[] = "Allows access to WebSQL APIs"; const char kWebSQLAccessDescription[] = - "The WebSQL API is enabled by default, but can be disabled here."; + "The WebSQL API is disabled by default, but can be enabled here."; 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 -@@ -2206,6 +2206,9 @@ extern const char kReduceAcceptLanguageDescription[]; +@@ -2231,6 +2231,9 @@ extern const char kReduceAcceptLanguageDescription[]; extern const char kSkipServiceWorkerFetchHandlerName[]; extern const char kSkipServiceWorkerFetchHandlerDescription[]; diff --git a/build/patches/Always-use-new-tab-page-for-default-home-page.patch b/build/patches/Always-use-new-tab-page-for-default-home-page.patch index 5148a649..f76b374b 100644 --- a/build/patches/Always-use-new-tab-page-for-default-home-page.patch +++ b/build/patches/Always-use-new-tab-page-for-default-home-page.patch @@ -12,16 +12,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -152,10 +152,6 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat - * if the homepage button is force enabled via flag. +@@ -168,10 +168,6 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat + * tab page if the homepage button is force enabled via flag. */ - public static String getDefaultHomepageUri() { + public static GURL getDefaultHomepageGurl() { - if (PartnerBrowserCustomizations.getInstance().isHomepageProviderAvailableAndEnabled()) { -- return PartnerBrowserCustomizations.getInstance().getHomePageUrl().getSpec(); +- return PartnerBrowserCustomizations.getInstance().getHomePageUrl(); - } - - String homepagePartnerDefaultUri; String homepagePartnerDefaultGurlSerialized = SharedPreferencesManager.getInstance().readString( + ChromePreferenceKeys.HOMEPAGE_PARTNER_CUSTOMIZED_DEFAULT_GURL, ""); -- 2.25.1 diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 7ace04a1..0144f7be 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -40,7 +40,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/build/android/java/templates/BuildConfig.template b/build/android/java/templates/BuildConfig.template --- a/build/android/java/templates/BuildConfig.template +++ b/build/android/java/templates/BuildConfig.template -@@ -93,6 +93,8 @@ public class BuildConfig { +@@ -87,6 +87,8 @@ public class BuildConfig { public static MAYBE_FINAL boolean IS_FOR_TEST MAYBE_FALSE; #endif @@ -52,7 +52,7 @@ diff --git a/build/android/java/templates/BuildConfig.template b/build/android/j 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 -@@ -1966,6 +1966,9 @@ if (enable_java_templates && is_android) { +@@ -1894,6 +1894,9 @@ if (enable_java_templates && is_android) { sources = [ "//build/android/java/templates/BuildConfig.template" ] defines = [] @@ -65,7 +65,7 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -860,6 +860,9 @@ chrome_java_sources = [ +@@ -872,6 +872,9 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java", "java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java", "java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java", @@ -1101,7 +1101,7 @@ new file mode 100644 diff --git a/chrome/browser/endpoint_fetcher/BUILD.gn b/chrome/browser/endpoint_fetcher/BUILD.gn --- a/chrome/browser/endpoint_fetcher/BUILD.gn +++ b/chrome/browser/endpoint_fetcher/BUILD.gn -@@ -18,6 +18,7 @@ android_library("java") { +@@ -19,6 +19,7 @@ android_library("java") { sources = [ "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java", "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java", @@ -1109,7 +1109,7 @@ diff --git a/chrome/browser/endpoint_fetcher/BUILD.gn b/chrome/browser/endpoint_ ] } -@@ -25,5 +26,6 @@ generate_jni("jni_headers") { +@@ -26,5 +27,6 @@ generate_jni("jni_headers") { sources = [ "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java", "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java", @@ -1283,7 +1283,7 @@ new file mode 100644 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 -@@ -262,6 +262,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -271,6 +271,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNotificationPermissionBottomSheet, &kPageAnnotationsService, &kPreconnectOnTabCreation, @@ -1291,7 +1291,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kBookmarksImprovedSaveFlow, &kBookmarksRefresh, &kOmahaMinSdkVersionAndroid, -@@ -710,6 +711,10 @@ BASE_FEATURE(kContextMenuTranslateWithGoogleLens, +@@ -722,6 +723,10 @@ BASE_FEATURE(kContextMenuTranslateWithGoogleLens, "ContextMenuTranslateWithGoogleLens", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1305,8 +1305,8 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h -@@ -110,6 +110,7 @@ BASE_DECLARE_FEATURE(kFoldableJankFix); - BASE_DECLARE_FEATURE(kGridTabSwitcherLandscapeAspectRatioPhones); +@@ -118,6 +118,7 @@ BASE_DECLARE_FEATURE(kGridTabSwitcherLandscapeAspectRatioPhones); + BASE_DECLARE_FEATURE(kHideTabOnTabSwitcher); BASE_DECLARE_FEATURE(kImprovedIncognitoScreenshot); BASE_DECLARE_FEATURE(kIncognitoReauthenticationForAndroid); +BASE_DECLARE_FEATURE(kInlineUpdateFlow); @@ -1316,7 +1316,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -302,6 +302,7 @@ public abstract class ChromeFeatureList { +@@ -305,6 +305,7 @@ public abstract class ChromeFeatureList { "IncognitoReauthenticationForAndroid"; public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot"; public static final String INFOBAR_SCROLL_OPTIMIZATION = "InfobarScrollOptimization"; @@ -1327,7 +1327,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f 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 -@@ -2175,6 +2175,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2216,6 +2216,12 @@ Your Google account may have other forms of browsing history like searches and a Chrome updates are no longer supported for this version of Android @@ -1340,7 +1340,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -3799,7 +3805,10 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

@@ -1352,7 +1352,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -3810,6 +3819,18 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

Android version is unsupported @@ -1516,7 +1516,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi } void EndpointFetcher::OnResponseFetched( -@@ -336,3 +392,38 @@ void EndpointFetcher::OnSanitizationResult( +@@ -338,3 +394,38 @@ void EndpointFetcher::OnSanitizationResult( std::string EndpointFetcher::GetUrlForTesting() { return url_.spec(); } diff --git a/build/patches/Bromite-package-name.patch b/build/patches/Bromite-package-name.patch index 99c64f75..0c339f28 100644 --- a/build/patches/Bromite-package-name.patch +++ b/build/patches/Bromite-package-name.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni -@@ -27,7 +27,7 @@ declare_args() { +@@ -26,7 +26,7 @@ declare_args() { # WebView providers which declare one of a handful of package names. See # https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/build-instructions.md#Changing-package-name # for details. diff --git a/build/patches/Client-hints-overrides.patch b/build/patches/Client-hints-overrides.patch index fe6531a8..bebbcf1f 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/embedder_support/user_agent_utils.cc | 4 +--- content/browser/client_hints/client_hints.cc | 3 ++- content/browser/loader/navigation_url_loader_impl.cc | 5 +++++ - content/public/common/content_features.cc | 4 ++-- + content/common/features.cc | 4 ++-- net/http/http_network_transaction.cc | 1 + services/network/public/cpp/client_hints.cc | 1 + services/network/public/cpp/features.cc | 2 +- @@ -49,7 +49,7 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc -@@ -1088,6 +1088,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( +@@ -1067,6 +1067,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( return; } @@ -61,17 +61,17 @@ diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/brow LogAcceptCHFrameStatus(AcceptCHFrameRestart::kFramePresent); // Given that this is happening in the middle of navigation, there should -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 -@@ -273,8 +273,8 @@ BASE_FEATURE(kCrashReporting, +diff --git a/content/common/features.cc b/content/common/features.cc +--- a/content/common/features.cc ++++ b/content/common/features.cc +@@ -114,8 +114,8 @@ BASE_FEATURE(kConsolidatedMovementXY, // Enables support for the `Critical-CH` response header. // https://github.com/WICG/client-hints-infrastructure/blob/master/reliability.md#critical-ch BASE_FEATURE(kCriticalClientHint, - "CriticalClientHint", - base::FEATURE_ENABLED_BY_DEFAULT); -+ "CriticalClientHint", // disabled by default -+ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite ++ "CriticalClientHint", // disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // by default // Enable changing source dynamically for desktop capture. BASE_FEATURE(kDesktopCaptureChangeSource, @@ -100,7 +100,7 @@ diff --git a/services/network/public/cpp/client_hints.cc b/services/network/publ diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc -@@ -214,7 +214,7 @@ BASE_FEATURE(kWebSocketReassembleShortMessages, +@@ -207,7 +207,7 @@ BASE_FEATURE(kWebSocketReassembleShortMessages, // Enable support for ACCEPT_CH H2/3 frame as part of Client Hint Reliability. // See: // https://tools.ietf.org/html/draft-davidben-http-client-hint-reliability-02#section-4.3 @@ -151,7 +151,7 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi 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 -@@ -3844,8 +3844,8 @@ +@@ -3906,8 +3906,8 @@ public: true, }, { diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index b26c7aad..8aeac2eb 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -59,7 +59,7 @@ Require: bromite-build-utils.patch .../common/content_settings_mojom_traits.cc | 12 +- .../common/content_settings_mojom_traits.h | 24 ++ .../common/content_settings_param_traits.h | 2 +- - .../core/common/content_settings_types.h | 4 +- + .../core/common/content_settings_types.h | 8 + .../renderer/content_settings_agent_impl.cc | 33 ++ .../renderer/content_settings_agent_impl.h | 5 + .../PageInfoPermissionsController.java | 9 + @@ -71,8 +71,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 5 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - .../WebLayerSiteSettingsDelegate.java | 3 + - 61 files changed, 1188 insertions(+), 42 deletions(-) + 60 files changed, 1190 insertions(+), 41 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomTriStateSiteSettingsPreferenceImpl.java @@ -129,7 +128,7 @@ diff --git a/chrome/browser/installable/installed_webapp_bridge.cc b/chrome/brow diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1177,4 +1177,5 @@ +@@ -1358,4 +1358,5 @@ @@ -138,7 +137,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -68,7 +68,49 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -71,7 +71,49 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { } static get template() { @@ -200,7 +199,7 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc /** * Add all of the child routes that originate from the privacy route, -@@ -136,6 +137,7 @@ function addPrivacyChildRoutes(r: Partial) { +@@ -137,6 +138,7 @@ function addPrivacyChildRoutes(r: Partial) { r.SITE_SETTINGS_STORAGE_ACCESS = r.SITE_SETTINGS.createChild('storageAccess'); } @@ -211,7 +210,7 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts --- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts +++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -160,6 +160,13 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -161,6 +161,13 @@ export class SettingsCategoryDefaultRadioGroupElement extends // "Ask" vs "Blocked". return ContentSetting.ASK; default: @@ -263,19 +262,19 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/c diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts --- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts +++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -42,7 +42,7 @@ function getCategoryItemMap(): Map { +@@ -43,7 +43,7 @@ function getCategoryItemMap(): Map { } // The following list is ordered alphabetically by |id|. The order in which // these appear in the UI is determined elsewhere in this file. -- const categoryList = [ -+ let categoryList = [ +- const categoryList: CategoryListItem[] = [ ++ let categoryList: CategoryListItem[] = [ { route: routes.SITE_SETTINGS_ADS, id: Id.ADS, -@@ -357,10 +357,34 @@ function getCategoryItemMap(): Map { - }, - ]; - +@@ -367,10 +367,34 @@ function getCategoryItemMap(): Map { + disabledLabel: 'trackingProtectionLinkRowSubLabel', + }); + } + for (let index=0; index < loadTimeData.getInteger("br_cs_count"); index++) { + let obj = JSON.parse(loadTimeData.getString("br_cs_" + index)); + let name = obj["name"]; @@ -307,7 +306,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ function buildItemListFromIds(orderedIdList: ContentSettingsTypes[]): CategoryListItem[] { const map = getCategoryItemMap(); -@@ -450,7 +474,7 @@ export class SettingsSiteSettingsPageElement extends +@@ -460,7 +484,7 @@ export class SettingsSiteSettingsPageElement extends Id.IMAGES, Id.POPUPS, ]), @@ -374,7 +373,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ /** * Determine localization string for i18n for a given content settings type. * Sorted alphabetically by |ContentSettingsType|. -@@ -88,6 +136,13 @@ export function getLocalizationStringForContentType( +@@ -89,6 +137,13 @@ export function getLocalizationStringForContentType( case ContentSettingsTypes.SITE_DATA: return null; default: @@ -391,9 +390,9 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ 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 -@@ -1930,6 +1930,7 @@ static_library("ui") { - "//components/commerce/core/mojom:mojo_bindings", +@@ -1975,6 +1975,7 @@ static_library("ui") { "//components/commerce/core/webui", + "//components/compose/core/browser:features", "//components/endpoint_fetcher:endpoint_fetcher", + "//components/content_settings/core/browser:browser", "//components/enterprise/common:files_scan_data", @@ -411,7 +410,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom #include "components/page_info/core/features.h" #include "components/page_info/core/proto/about_this_site_metadata.pb.h" #include "components/page_info/page_info.h" -@@ -502,6 +504,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -508,6 +510,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( icon = &vector_icons::kSelectWindowIcon; break; default: @@ -449,7 +448,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" #include "components/password_manager/core/common/password_manager_features.h" -@@ -3534,6 +3537,42 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3631,6 +3634,42 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -504,7 +503,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_utils.h" -@@ -202,7 +204,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { +@@ -206,7 +208,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { static_assert(std::size(kContentSettingsTypeGroupNames) == // ContentSettingsType starts at -1, so add 1 here. @@ -513,7 +512,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b "kContentSettingsTypeGroupNames should have " "CONTENT_SETTINGS_NUM_TYPES elements"); -@@ -457,6 +459,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { +@@ -461,6 +463,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { return true; } } @@ -527,7 +526,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b return false; } -@@ -470,11 +479,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(base::StringPiece name) { +@@ -474,11 +483,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(base::StringPiece name) { return entry.type; } } @@ -553,7 +552,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b for (const auto& entry : kContentSettingsTypeGroupNames) { if (type == entry.type) { // Content setting types that aren't represented in the settings UI -@@ -489,7 +511,6 @@ base::StringPiece ContentSettingsTypeToGroupName(ContentSettingsType type) { +@@ -493,7 +515,6 @@ base::StringPiece ContentSettingsTypeToGroupName(ContentSettingsType type) { return entry.name ? entry.name : base::StringPiece(); } } @@ -561,8 +560,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED() << static_cast(type) << " is not a recognized content settings type."; return base::StringPiece(); -@@ -563,6 +584,13 @@ const std::vector& GetVisiblePermissionCategories() { - base_types->push_back(ContentSettingsType::AUTO_PICTURE_IN_PICTURE); +@@ -573,6 +594,13 @@ const std::vector& GetVisiblePermissionCategories() { + base_types->push_back(ContentSettingsType::MIDI_SYSEX); } + content_settings::WebsiteSettingsRegistry* website_settings = @@ -578,7 +577,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -147,6 +147,21 @@ android_library("java") { +@@ -149,6 +149,21 @@ android_library("java") { ":site_settings_jni_headers", "//components/content_settings/android:java_pref_names_srcjar", ] @@ -600,7 +599,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b } android_library("javatests") { -@@ -192,6 +207,7 @@ robolectric_library("junit") { +@@ -194,6 +209,7 @@ robolectric_library("junit") { } android_resources("java_resources") { @@ -1114,7 +1113,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c @ContentSettingValues @Nullable Integer defaultEnabledValue, @ContentSettingValues @Nullable Integer defaultDisabledValue, int enabledSummary, int disabledSummary) { -@@ -304,6 +304,8 @@ public class ContentSettingsResources { +@@ -309,6 +309,8 @@ public class ContentSettingsResources { ContentSettingValues.BLOCK, R.string.website_settings_category_vr_ask, R.string.website_settings_category_vr_blocked); } @@ -1123,7 +1122,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return null; } -@@ -469,6 +471,12 @@ public class ContentSettingsResources { +@@ -474,6 +476,12 @@ public class ContentSettingsResources { } } @@ -1136,7 +1135,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** * Returns the string resource id for a content type to show with a permission category. * @param enabled Whether the content type is enabled. -@@ -604,6 +612,8 @@ public class ContentSettingsResources { +@@ -609,6 +617,8 @@ public class ContentSettingsResources { * Blocked states, in that order. */ public static int[] getTriStateSettingDescriptionIDs(int contentType) { @@ -1148,7 +1147,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -310,6 +310,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -310,6 +310,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @ContentSettingValues Integer contentSetting = website.site().getContentSetting( browserContextHandle, mCategory.getContentSettingsType()); @@ -1159,7 +1158,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSetting != null) { return ContentSettingValues.BLOCK == contentSetting; } -@@ -469,6 +473,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -469,6 +473,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -1167,7 +1166,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureGlobalToggles(); if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) { RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered"); -@@ -493,7 +498,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -493,7 +498,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -1176,7 +1175,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, R.id.menu_id_site_settings_help, Menu.NONE, R.string.menu_help); help.setIcon(TraceEventVectorDrawableCompat.create( -@@ -504,6 +509,12 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -504,6 +509,12 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.menu_id_site_settings_help) { @@ -1189,7 +1188,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { getSiteSettingsDelegate().launchProtectedContentHelpAndFeedbackActivity( getActivity()); -@@ -577,6 +588,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -577,6 +588,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment BrowserContextHandle browserContextHandle = getSiteSettingsDelegate().getBrowserContextHandle(); PrefService prefService = UserPrefs.get(browserContextHandle); @@ -1201,7 +1200,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (BINARY_TOGGLE_KEY.equals(preference.getKey())) { assert !mCategory.isManaged(); boolean toggleValue = (boolean) newValue; -@@ -796,6 +812,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -796,6 +812,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment : R.string.website_settings_allowed_group_heading_request_desktop_site; break; } @@ -1210,7 +1209,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert resource > 0; return getString(resource); } -@@ -914,6 +932,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -914,6 +932,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment default: break; } @@ -1219,7 +1218,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (allowSpecifyingExceptions) { getPreferenceScreen().addPreference(new AddExceptionPreference(getStyledContext(), ADD_EXCEPTION_KEY, getAddExceptionDialogMessage(), mCategory, this)); -@@ -1085,8 +1105,16 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1085,8 +1105,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment private boolean isBlocked() { switch (mGlobalToggleLayout) { case GlobalToggleLayout.TRI_STATE_TOGGLE: @@ -1236,7 +1235,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); case GlobalToggleLayout.FOUR_STATE_COOKIE_TOGGLE: FourStateCookieSettingsPreference fourStateCookieToggle = -@@ -1165,7 +1193,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1165,7 +1193,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (mCategory.getType() == SiteSettingsCategory.Type.THIRD_PARTY_COOKIES) { infoText.setSummary(R.string.website_settings_third_party_cookies_page_description); } else { @@ -1249,7 +1248,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1189,6 +1221,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1189,6 +1221,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment screen.removePreference(antiAbuseThingsToConsiderHeader); screen.removePreference(antiAbuseThingsToConsiderSectionOne); } @@ -1257,7 +1256,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (permissionBlockedByOs) { maybeShowOsWarning(screen); -@@ -1352,7 +1385,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1352,7 +1385,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getSiteSettingsDelegate().getBrowserContextHandle(), contentType); int[] descriptionIds = ContentSettingsResources.getTriStateSettingDescriptionIDs(contentType); @@ -1266,7 +1265,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private void configureBinaryToggle(ChromeSwitchPreference binaryToggle, int contentType) { -@@ -1478,6 +1511,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1478,6 +1511,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); @@ -1284,15 +1283,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -45,6 +45,7 @@ import org.chromium.content_public.browser.BrowserContextHandle; - import java.util.Collection; +@@ -46,6 +46,7 @@ import java.util.Collection; import java.util.HashMap; + import java.util.List; import java.util.Map; +import java.util.List; /** * Shows the permissions and other settings for a particular website. -@@ -170,7 +171,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -171,7 +172,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment case ContentSettingsType.CLIPBOARD_READ_WRITE: return "clipboard_permission_list"; default: @@ -1301,7 +1300,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -520,7 +521,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -536,7 +537,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreferences() { mMaxPermissionOrder = findPreference(PREF_PERMISSIONS_HEADER).getOrder(); @@ -1311,7 +1310,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c Preference preference = new ChromeSwitchPreference(getStyledContext()); preference.setKey(getPreferenceKey(type)); -@@ -963,14 +965,22 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -1016,14 +1018,22 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreference(Preference preference, @ContentSettingValues @Nullable Integer value, boolean isEmbargoed) { @@ -1337,7 +1336,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c switchPreference.setOnPreferenceChangeListener(this); @ContentSettingsType int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey()); -@@ -1123,7 +1133,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -1176,7 +1186,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment public @ContentSettingsType int getContentSettingsTypeFromPreferenceKey(String preferenceKey) { if (mPreferenceMap == null) { mPreferenceMap = new HashMap<>(); @@ -1346,7 +1345,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c String key = getPreferenceKey(type); if (key != null) { mPreferenceMap.put(key, type); -@@ -1165,7 +1175,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -1218,7 +1228,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } mSite.setContentSetting(browserContextHandle, type, permission); @@ -1355,7 +1354,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c preference.setIcon(getContentSettingsIcon(type, permission)); if (mWebsiteSettingsObserver != null) { -@@ -1195,7 +1205,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -1248,7 +1258,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment // TODO(mvanouwerkerk): Refactor this class so that it does not depend on the screen state // for its logic. This class should maintain its own data model, and only update the screen // after a change is made. @@ -1367,7 +1366,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java -@@ -37,6 +37,7 @@ public class SiteSettings extends SiteSettingsPreferenceFragment +@@ -37,6 +37,7 @@ public class SiteSettings extends BaseSiteSettingsFragment : R.xml.site_settings_preferences); getActivity().setTitle(getContext().getString(R.string.prefs_site_settings)); @@ -1375,7 +1374,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configurePreferences(); updatePreferenceStates(); } -@@ -52,7 +53,7 @@ public class SiteSettings extends SiteSettingsPreferenceFragment +@@ -52,7 +53,7 @@ public class SiteSettings extends BaseSiteSettingsFragment private void configurePreferences() { // Remove unsupported settings categories. @@ -1384,7 +1383,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c type++) { if (!getSiteSettingsDelegate().isCategoryVisible(type)) { getPreferenceScreen().removePreference(findPreference(type)); -@@ -68,7 +69,7 @@ public class SiteSettings extends SiteSettingsPreferenceFragment +@@ -68,7 +69,7 @@ public class SiteSettings extends BaseSiteSettingsFragment @CookieControlsMode int cookieControlsMode = UserPrefs.get(browserContextHandle).getInteger(COOKIE_CONTROLS_MODE); @@ -1393,7 +1392,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c Preference p = findPreference(prefCategory); int contentType = SiteSettingsCategory.contentSettingsType(prefCategory); // p can be null if the Preference was removed in configurePreferences. -@@ -133,10 +134,13 @@ public class SiteSettings extends SiteSettingsPreferenceFragment +@@ -133,10 +134,13 @@ public class SiteSettings extends BaseSiteSettingsFragment } else if (Type.ZOOM == prefCategory) { // Don't want to set a summary for Zoom because we don't want any message to display // under the Zoom row on site settings. @@ -1541,7 +1540,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -246,6 +246,12 @@ public final class Website implements WebsiteEntry { +@@ -263,6 +263,12 @@ public final class Website implements WebsiteEntry { RecordUserAction.record("SoundContentSetting.UnmuteBy.SiteSettings"); } } @@ -1557,7 +1556,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java -@@ -98,7 +98,7 @@ public class WebsitePermissionsFetcher { +@@ -106,7 +106,7 @@ public class WebsitePermissionsFetcher { case ContentSettingsType.USB_GUARD: return WebsitePermissionsType.CHOSEN_OBJECT_INFO; default: @@ -1566,7 +1565,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -214,7 +214,7 @@ public class WebsitePermissionsFetcher { +@@ -220,7 +220,7 @@ public class WebsitePermissionsFetcher { if (SiteSettingsFeatureMap.isEnabled(SiteSettingsFeatureList.SITE_DATA_IMPROVEMENTS)) { queue.add(new CookiesInfoFetcher()); } @@ -1663,7 +1662,7 @@ new file mode 100644 diff --git a/components/content_settings/android/BUILD.gn b/components/content_settings/android/BUILD.gn --- a/components/content_settings/android/BUILD.gn +++ b/components/content_settings/android/BUILD.gn -@@ -52,6 +52,7 @@ android_library("content_settings_enums_java") { +@@ -53,6 +53,7 @@ android_library("content_settings_enums_java") { } java_cpp_enum("content_settings_enums_javagen") { @@ -1674,7 +1673,7 @@ diff --git a/components/content_settings/android/BUILD.gn b/components/content_s diff --git a/components/content_settings/core/browser/BUILD.gn b/components/content_settings/core/browser/BUILD.gn --- a/components/content_settings/core/browser/BUILD.gn +++ b/components/content_settings/core/browser/BUILD.gn -@@ -85,6 +85,13 @@ static_library("browser") { +@@ -87,6 +87,13 @@ static_library("browser") { } configs += [ "//build/config/compiler:wexit_time_destructors" ] @@ -1705,7 +1704,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. namespace content_settings { -@@ -629,6 +630,7 @@ void ContentSettingsRegistry::Init() { +@@ -630,6 +631,7 @@ void ContentSettingsRegistry::Init() { WebsiteSettingsRegistry::DESKTOP, ContentSettingsInfo::INHERIT_IF_LESS_PERMISSIVE, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); @@ -1716,7 +1715,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -175,8 +175,9 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -176,8 +176,9 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -1838,10 +1837,10 @@ diff --git a/components/content_settings/core/browser/website_settings_registry. diff --git a/components/content_settings/core/common/BUILD.gn b/components/content_settings/core/common/BUILD.gn --- a/components/content_settings/core/common/BUILD.gn +++ b/components/content_settings/core/common/BUILD.gn -@@ -52,6 +52,13 @@ static_library("common") { - if (use_blink) { - deps += [ "//components/privacy_sandbox:features" ] - } +@@ -49,6 +49,13 @@ static_library("common") { + "//net", + "//url", + ] + deps += [ ":bromite_content_settings" ] +} + @@ -2031,17 +2030,21 @@ diff --git a/components/content_settings/core/common/content_settings_param_trai diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h --- a/components/content_settings/core/common/content_settings_types.h +++ b/components/content_settings/core/common/content_settings_types.h -@@ -356,7 +356,9 @@ enum class ContentSettingsType : int32_t { - // `net::features::kTpcdMetadataGrants` is enabled. - TPCD_METADATA_GRANTS, +@@ -365,6 +365,14 @@ enum class ContentSettingsType : int32_t { + // request. + FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION, -- NUM_TYPES, + NUM_TYPES_CHROMIUM, +#include "components/content_settings/core/common/bromite_content_settings.inc" + NUM_TYPES_BROMITE, ++}; ++ ++struct ContentSettingsTypeHash { ++ FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION, ++ + NUM_TYPES, }; - struct ContentSettingsTypeHash { diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc --- a/components/content_settings/renderer/content_settings_agent_impl.cc +++ b/components/content_settings/renderer/content_settings_agent_impl.cc @@ -2133,16 +2136,16 @@ 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 -@@ -11,6 +11,7 @@ - #include "base/command_line.h" +@@ -12,6 +12,7 @@ #include "base/containers/contains.h" + #include "base/feature_list.h" #include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/page_info/android/jni_headers/PageInfoController_jni.h" -@@ -146,6 +147,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( - ContentSettingsType::FEDERATED_IDENTITY_API); +@@ -152,6 +153,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( + permissions_to_display.push_back(ContentSettingsType::STORAGE_ACCESS); } + content_settings::WebsiteSettingsRegistry* website_settings = @@ -2157,7 +2160,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp std::map user_specified_settings_to_display; std::map -@@ -205,6 +215,14 @@ absl::optional PageInfoControllerAndroid::GetSettingToDisplay( +@@ -211,6 +221,14 @@ absl::optional PageInfoControllerAndroid::GetSettingToDisplay( return permission.setting; } @@ -2183,7 +2186,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. #include "components/content_settings/browser/ui/cookie_controls_controller.h" #include "components/content_settings/core/browser/content_settings_registry.h" #include "components/content_settings/core/browser/content_settings_uma_util.h" -@@ -1239,6 +1240,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1246,6 +1247,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, // applies to permissions listed in |kPermissionType|. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { @@ -2198,7 +2201,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. // Note |ContentSettingsType::ADS| will show up regardless of its default // value when it has been activated on the current origin. if (info.type == ContentSettingsType::ADS) { -@@ -1339,7 +1348,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1346,7 +1355,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -2230,7 +2233,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" #include "components/page_info/page_info_ui_delegate.h" -@@ -597,6 +598,12 @@ PageInfoUI::~PageInfoUI() = default; +@@ -607,6 +608,12 @@ PageInfoUI::~PageInfoUI() = default; // static std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { @@ -2243,7 +2246,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id); -@@ -608,6 +615,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -618,6 +625,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { // static std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( ContentSettingsType type) { @@ -2256,7 +2259,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id_mid_sentence); -@@ -1034,6 +1047,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { +@@ -1052,6 +1065,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; } @@ -2348,18 +2351,5 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context enum ReasonForCallingCanExecuteScripts { kAboutToExecuteScript, -diff --git a/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java b/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java ---- a/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java -+++ b/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java -@@ -160,6 +160,9 @@ public class WebLayerSiteSettingsDelegate - @Override - public void dismissPrivacySandboxSnackbar() {} - -+ @Override -+ public void launchHelpAndFeedbackActivity(Activity currentActivity, String url) {} -+ - @Override - public boolean isFirstPartySetsDataAccessEnabled() { - return false; -- 2.25.1 diff --git a/build/patches/Keep-empty-tabs-between-sessions.patch b/build/patches/Keep-empty-tabs-between-sessions.patch index 4c8d43c2..f3415463 100644 --- a/build/patches/Keep-empty-tabs-between-sessions.patch +++ b/build/patches/Keep-empty-tabs-between-sessions.patch @@ -5,16 +5,27 @@ Subject: Keep empty tabs between sessions Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- + .../org/chromium/chrome/browser/ChromeTabbedActivity.java | 1 + .../chrome/browser/tabmodel/TabPersistentStore.java | 8 -------- - .../browser/tab/state/CriticalPersistedTabData.java | 3 --- - 2 files changed, 11 deletions(-) + 2 files changed, 1 insertion(+), 8 deletions(-) +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 +@@ -3255,6 +3255,7 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -788,6 +791,16 @@ public abstract class ChromeActivity int toolbarLayoutId = getToolbarLayoutId(); if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { controlContainer.initWithToolbar(toolbarLayoutId); @@ -770,7 +771,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java -@@ -41,6 +41,8 @@ import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.Sw +@@ -45,6 +45,8 @@ import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.Sw import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.resources.dynamics.DynamicResourceLoader; @@ -778,8 +779,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo +import org.chromium.chrome.browser.flags.CachedFeatureFlags; import java.util.List; - -@@ -256,7 +258,10 @@ public class LayoutManagerChrome + import java.util.concurrent.Callable; +@@ -347,7 +349,10 @@ public class LayoutManagerChrome @Override public SwipeHandler createToolbarSwipeHandler(boolean supportSwipeDown) { @@ -791,7 +792,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } @Override -@@ -459,9 +464,11 @@ public class LayoutManagerChrome +@@ -614,9 +619,11 @@ public class LayoutManagerChrome private static final float SWIPE_RANGE_DEG = 25; private final boolean mSupportSwipeDown; @@ -804,7 +805,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } @Override -@@ -493,6 +500,9 @@ public class LayoutManagerChrome +@@ -648,6 +655,9 @@ public class LayoutManagerChrome && mScrollDirection == ScrollDirection.DOWN) { RecordUserAction.record("MobileToolbarSwipeOpenStackView"); showLayout(LayoutType.TAB_SWITCHER, true); @@ -814,7 +815,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } else if (mScrollDirection == ScrollDirection.LEFT || mScrollDirection == ScrollDirection.RIGHT) { startShowing(mToolbarSwipeLayout, true); -@@ -539,6 +549,8 @@ public class LayoutManagerChrome +@@ -694,6 +704,8 @@ public class LayoutManagerChrome direction = ScrollDirection.RIGHT; } else if (swipeAngle < 270 + SWIPE_RANGE_DEG && swipeAngle > 270 - SWIPE_RANGE_DEG) { direction = ScrollDirection.DOWN; @@ -823,7 +824,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } return direction; -@@ -552,7 +564,7 @@ public class LayoutManagerChrome +@@ -707,7 +719,7 @@ public class LayoutManagerChrome return false; } @@ -835,7 +836,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java -@@ -29,6 +29,7 @@ import org.chromium.chrome.browser.toolbar.ControlContainer; +@@ -30,6 +30,7 @@ import org.chromium.chrome.browser.toolbar.ControlContainer; import org.chromium.chrome.features.start_surface.StartSurface; import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator; import org.chromium.ui.resources.dynamics.DynamicResourceLoader; @@ -843,16 +844,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo import java.util.concurrent.Callable; -@@ -100,7 +101,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { +@@ -91,7 +92,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { () -> mLayerTitleCache, tabModelStartupInfoSupplier, lifecycleDispatcher, multiInstanceManager, -- toolbarContainerView); -+ toolbarContainerView, +- toolbarContainerView, tabHoverCardViewStub, tabContentManagerSupplier); ++ toolbarContainerView, tabHoverCardViewStub, tabContentManagerSupplier, + /*browserControlsManagerSupplier*/ () -> getBrowserControlsManager()); - mScrimCoordinator = scrimCoordinator; - mCreateStartSurfaceCallable = delayedStartSurfaceCallable; addSceneOverlay(mTabStripLayoutHelperManager); + addObserver(mTabStripLayoutHelperManager.getTabSwitcherObserver()); + diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout.java @@ -895,7 +896,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java -@@ -520,7 +520,7 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate +@@ -531,7 +531,7 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate // position 0 is on the left. Account for that in the offset calculation. boolean isRtl = LocalizationUtils.isLayoutRtl(); boolean useUnadjustedScrollOffset = isRtl != isLeft; @@ -907,7 +908,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -62,6 +62,9 @@ import org.chromium.ui.base.LocalizationUtils; +@@ -67,6 +67,9 @@ import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.PageTransition; import org.chromium.ui.resources.ResourceManager; import org.chromium.url.GURL; @@ -917,7 +918,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.List; -@@ -166,9 +169,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -175,9 +178,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa private final String mDefaultTitle; private final Supplier mLayerTitleCacheSupplier; @@ -928,10 +929,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over @Override public void onDown(float x, float y, boolean fromMouse, int buttons) { + y -= mStripFilterArea.top; - if (mModelSelectorButton.onDown(x, y)) return; - getActiveStripLayoutHelper().onDown(time(), x, y, fromMouse, buttons); - } -@@ -186,12 +193,14 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa + // Clear any persisting tab strip hover state on a down event on the strip. Clearance is + // posted at a delay, as a best effort for the clearance to take effect after any + // animations triggered by the down event have ended. +@@ -201,12 +208,14 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa @Override public void drag(float x, float y, float dx, float dy, float tx, float ty) { @@ -946,7 +947,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over long time = time(); if (mModelSelectorButton.click(x, y)) { mModelSelectorButton.handleClick(time); -@@ -202,11 +211,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -217,11 +226,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa @Override public void fling(float x, float y, float velocityX, float velocityY) { @@ -960,26 +961,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onLongPress(time(), x, y); } -@@ -283,7 +294,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa - Supplier layerTitleCacheSupplier, - ObservableSupplier tabModelStartupInfoSupplier, +@@ -309,7 +320,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa ActivityLifecycleDispatcher lifecycleDispatcher, -- MultiInstanceManager multiInstanceManager, View toolbarContainerView) { -+ MultiInstanceManager multiInstanceManager, View toolbarContainerView, + MultiInstanceManager multiInstanceManager, View toolbarContainerView, + @NonNull ViewStub tabHoverCardViewStub, +- ObservableSupplier tabContentManagerSupplier) { ++ ObservableSupplier tabContentManagerSupplier, + Supplier browserControlsManagerSupplier) { mUpdateHost = updateHost; mLayerTitleCacheSupplier = layerTitleCacheSupplier; mTabStripTreeProvider = new TabStripSceneLayer(context); -@@ -382,6 +394,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -409,6 +421,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa mModelSelectorButton, multiInstanceManager, toolbarContainerView); mIncognitoHelper = new StripLayoutHelper(context, managerHost, updateHost, renderHost, true, mModelSelectorButton, multiInstanceManager, toolbarContainerView); + mBrowserControlsManagerSupplier = browserControlsManagerSupplier; + mDpToPx = context.getResources().getDisplayMetrics().density; - if (tabModelStartupInfoSupplier != null) { - if (tabModelStartupInfoSupplier.hasValue()) { -@@ -475,9 +489,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa + tabHoverCardViewStub.setOnInflateListener((viewStub, view) -> { + var hoverCardView = (StripTabHoverCardView) view; +@@ -512,9 +526,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa int hoveredTabId = getActiveStripLayoutHelper().getLastHoveredTab() == null ? TabModel.INVALID_TAB_INDEX : getActiveStripLayoutHelper().getLastHoveredTab().getId(); @@ -994,7 +995,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over return mTabStripTreeProvider; } -@@ -522,7 +540,17 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -559,7 +577,17 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa mIncognitoHelper.onSizeChanged( mWidth, mHeight, orientationChanged, LayoutManagerImpl.time()); @@ -1237,7 +1238,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -108,6 +108,8 @@ import org.chromium.content_public.browser.NavigationController; +@@ -110,6 +110,8 @@ import org.chromium.content_public.browser.NavigationController; import org.chromium.content_public.browser.NavigationEntry; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; @@ -1246,7 +1247,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. import java.util.List; -@@ -587,10 +589,15 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide +@@ -605,10 +607,15 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide // + topControlsDistanceToRest| will give the margin for the current animation frame. final int topControlsDistanceToRest = mBrowserControlsStateProvider.getContentOffset() - mBrowserControlsStateProvider.getTopControlsHeight(); @@ -1264,7 +1265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) { layoutParams.topMargin = topMargin; -@@ -610,7 +617,7 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide +@@ -628,7 +635,7 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide * strip. */ private int getToolbarExtraYOffset() { @@ -1369,7 +1370,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se updateAnchorViewLayout(); // Create status bar color controller and assign to search activity. -@@ -237,7 +248,7 @@ public class SearchActivity extends AsyncInitializationActivity +@@ -238,7 +249,7 @@ public class SearchActivity extends AsyncInitializationActivity getOnBackPressedDispatcher().addCallback(this, backPressManager.getCallback()); } // clang-format off @@ -1381,7 +1382,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se 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 -@@ -324,6 +324,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -330,6 +330,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity if (fragment instanceof INeedSnackbarManager) { ((INeedSnackbarManager)fragment).setSnackbarManager(mSnackbarManager); } @@ -1457,8 +1458,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar /** * Contains logic for managing the toolbar visual component. This class manages the interactions * with the rest of the application to ensure the toolbar is always visually up to date. -@@ -702,7 +705,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve - mIncognitoStateProvider.isIncognitoSelected())); +@@ -708,7 +711,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve + : null; // clang-format off LocationBarCoordinator locationBarCoordinator = new LocationBarCoordinator( - mActivity.findViewById(R.id.location_bar), toolbarLayout, profileSupplier, @@ -1466,7 +1467,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar PrivacyPreferencesManagerImpl.getInstance(), mLocationBarModel, mActionModeController.getActionModeCallback(), new WindowDelegate(mActivity.getWindow()), windowAndroid, mActivityTabProvider, -@@ -970,11 +973,13 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -976,11 +979,13 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve // the height won't be measured by the background image. if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1480,7 +1481,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mControlContainer.removeOnLayoutChangeListener(mLayoutChangeListener); mLayoutChangeListener = null; } -@@ -1397,13 +1402,25 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -1403,13 +1408,25 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve return ((LocationBarCoordinator) mLocationBar).getUrlBarTextWithoutAutocomplete(); } @@ -1508,7 +1509,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mIncognitoStateProvider, mScrimCoordinator, mOmniboxFocusStateSupplier, mBottomSheetController, mActivityLifecycleDispatcher, mIsWarmOnResumeSupplier, mTabModelSelector, mTabContentManager, mCompositorViewHolder, -@@ -1411,8 +1428,9 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -1417,8 +1434,9 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve mLayoutStateProviderSupplier, mSnackbarManager); var bottomControlsCoordinator = new BottomControlsCoordinator(mActivity, mWindowAndroid, mLayoutManager, mCompositorViewHolder.getResourceManager(), mBrowserControlsSizer, @@ -1520,7 +1521,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBottomControlsCoordinatorSupplier.set(bottomControlsCoordinator); bottomControlsCoordinator.getHandleBackPressChangedSupplier().addObserver( (x) -> { onBackPressStateChanged(); }); -@@ -2252,6 +2270,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -2261,6 +2279,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve private void setControlContainerTopMargin(int margin) { final ViewGroup.MarginLayoutParams layoutParams = ((ViewGroup.MarginLayoutParams) mControlContainer.getLayoutParams()); @@ -1594,7 +1595,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/Statu import org.chromium.base.CallbackController; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; -@@ -497,6 +501,12 @@ public class StatusBarColorController +@@ -500,6 +504,12 @@ public class StatusBarColorController boolean needsDarkStatusBarIcons = !ColorUtils.shouldUseLightForegroundOnBackground(color); UiUtils.setStatusBarIconColor(root, needsDarkStatusBarIcons); UiUtils.setStatusBarColor(window, color); @@ -1610,7 +1611,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/Statu 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 -@@ -8131,6 +8131,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -8391,6 +8391,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWindowsScrollingPersonalityDescription, kOsAll, FEATURE_VALUE_TYPE(features::kWindowsScrollingPersonality)}, @@ -1709,7 +1710,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom 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 -@@ -2006,6 +2006,10 @@ const char kImprovedKeyboardShortcutsDescription[] = +@@ -2038,6 +2038,10 @@ const char kImprovedKeyboardShortcutsDescription[] = "Ensure keyboard shortcuts work consistently with international keyboard " "layouts and deprecate legacy shortcuts."; @@ -1723,7 +1724,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 -@@ -1134,6 +1134,9 @@ extern const char kImprovedIncognitoScreenshotDescription[]; +@@ -1153,6 +1153,9 @@ extern const char kImprovedIncognitoScreenshotDescription[]; extern const char kImprovedKeyboardShortcutsName[]; extern const char kImprovedKeyboardShortcutsDescription[]; @@ -1736,15 +1737,15 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -10,6 +10,7 @@ - - #include "base/android/feature_map.h" +@@ -12,6 +12,7 @@ #include "base/feature_list.h" -+#include "cc/base/features.h" + #include "base/features.h" #include "base/no_destructor.h" ++#include "cc/base/features.h" #include "chrome/browser/browser_features.h" #include "chrome/browser/feature_guide/notifications/feature_notification_guide_service.h" -@@ -262,6 +263,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + #include "chrome/browser/flags/android/chrome_session_state.h" +@@ -271,6 +272,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kLensCameraAssistedSearch, &kLensOnQuickActionSearchWidget, &kNewTabSearchEngineUrlAndroid, @@ -1755,7 +1756,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java -@@ -117,6 +117,12 @@ public class CachedFlag extends Flag { +@@ -131,6 +131,12 @@ public class CachedFlag extends Flag { } } @@ -1771,7 +1772,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -327,6 +327,8 @@ public abstract class ChromeFeatureList { +@@ -328,6 +328,8 @@ public abstract class ChromeFeatureList { public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String METRICS_SETTINGS_ANDROID = "MetricsSettingsAndroid"; public static final String NEW_TAB_SEARCH_ENGINE_URL_ANDROID = "NewTabSearchEngineUrlAndroid"; @@ -1780,16 +1781,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant"; public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET = "NotificationPermissionBottomSheet"; -@@ -590,6 +592,8 @@ public abstract class ChromeFeatureList { +@@ -596,6 +598,8 @@ public abstract class ChromeFeatureList { new CachedFlag(PRIVACY_GUIDE_POST_MVP, false); public static final CachedFlag sOmniboxMatchToolbarAndStatusBarColor = new CachedFlag(OMNIBOX_MATCH_TOOLBAR_AND_STATUS_BAR_COLOR, false); + public static final CachedFlag sMoveTopToolbarToBottom = + new CachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); public static final CachedFlag sOmniboxModernizeVisualUpdate = - new CachedFlag(OMNIBOX_MODERNIZE_VISUAL_UPDATE, false); + new CachedFlag(OMNIBOX_MODERNIZE_VISUAL_UPDATE, true); public static final CachedFlag sOptimizationGuidePushNotifications = -@@ -678,6 +682,7 @@ public abstract class ChromeFeatureList { +@@ -695,6 +699,7 @@ public abstract class ChromeFeatureList { sPrivacyGuideAndroid3, sPrivacyGuidePreloadAndroid, sPrivacyGuidePostMVP, @@ -1800,7 +1801,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f 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 -@@ -1936,7 +1936,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2024,7 +2024,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault, @@ -1915,7 +1916,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -91,6 +91,7 @@ public class LocationBarCoordinator +@@ -92,6 +92,7 @@ public class LocationBarCoordinator private WindowDelegate mWindowDelegate; private WindowAndroid mWindowAndroid; private View mAutocompleteAnchorView; @@ -1923,7 +1924,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private LocationBarMediator mLocationBarMediator; private View mUrlBar; private View mDeleteButton; -@@ -146,7 +147,7 @@ public class LocationBarCoordinator +@@ -147,7 +148,7 @@ public class LocationBarCoordinator * @param backPressManager The {@link BackPressManager} for intercepting back press. * @param tabModelSelectorSupplier Supplier of the {@link TabModelSelector}. */ @@ -1932,7 +1933,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow ObservableSupplier profileObservableSupplier, PrivacyPreferencesManager privacyPreferencesManager, LocationBarDataProvider locationBarDataProvider, ActionMode.Callback actionModeCallback, -@@ -179,11 +180,12 @@ public class LocationBarCoordinator +@@ -180,11 +181,12 @@ public class LocationBarCoordinator mActivityLifecycleDispatcher = activityLifecycleDispatcher; mActivityLifecycleDispatcher.register(this); mAutocompleteAnchorView = autocompleteAnchorView; @@ -1990,7 +1991,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarCoordinator.java -@@ -25,6 +25,10 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +@@ -26,6 +26,10 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -2001,7 +2002,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /** * Coordinates the interactions with the UrlBar text component. */ -@@ -234,6 +238,11 @@ public class UrlBarCoordinator implements UrlBarEditingTextStateProvider, UrlFoc +@@ -239,6 +243,11 @@ public class UrlBarCoordinator implements UrlBarEditingTextStateProvider, UrlFoc // to show or hide keyboard anyway. This may happen when we schedule keyboard hide, and // receive a second request to hide the keyboard instantly. if (showKeyboard) { @@ -2152,7 +2153,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /** A widget for showing a list of omnibox suggestions. */ public class OmniboxSuggestionsDropdown extends RecyclerView { /** -@@ -188,7 +192,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -205,7 +209,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { * Constructs a new list designed for containing omnibox suggestions. * @param context Context used for contained views. */ @@ -2162,7 +2163,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow super(context, null, android.R.attr.dropDownListViewStyle); setFocusable(true); setFocusableInTouchMode(true); -@@ -199,13 +204,25 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -216,13 +221,25 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { setItemAnimator(null); mLayoutScrollListener = new SuggestionLayoutScrollListener(context); @@ -2189,9 +2190,9 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow ViewCompat.setPaddingRelative(this, 0, 0, 0, paddingBottom); mStandardBgColor = shouldShowModernizeVisualUpdate -@@ -340,8 +357,16 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { - try (TraceEvent tracing = TraceEvent.scoped("OmniboxSuggestionsList.Measure"); - TimingMetric metric = OmniboxMetrics.recordSuggestionListMeasureTime()) { +@@ -358,8 +375,16 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { + TimingMetric metric = OmniboxMetrics.recordSuggestionListMeasureTime(); + TimingMetric metric2 = OmniboxMetrics.recordSuggestionListMeasureWallTime()) { OmniboxAlignment omniboxAlignment = mEmbedder.getCurrentAlignment(); - maybeUpdateLayoutParams(omniboxAlignment.top); - int availableViewportHeight = omniboxAlignment.height; @@ -2208,7 +2209,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow int desiredWidth = omniboxAlignment.width; adjustHorizontalPosition(); notifyObserversIfViewportHeightChanged(availableViewportHeight); -@@ -353,6 +378,12 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -371,6 +396,12 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { } } @@ -2250,7 +2251,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 -@@ -1771,6 +1771,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1806,6 +1806,12 @@ Your Google account may have other forms of browsing history like searches and a Force Tablet Mode @@ -2266,7 +2267,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn --- a/chrome/browser/ui/android/toolbar/BUILD.gn +++ b/chrome/browser/ui/android/toolbar/BUILD.gn -@@ -174,6 +174,7 @@ android_library("java") { +@@ -175,6 +175,7 @@ android_library("java") { "//components/user_prefs/android:java", "//content/public/android:content_java", "//third_party/android_deps:material_design_java", @@ -2602,7 +2603,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml --- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml +++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml -@@ -45,4 +45,8 @@ found in the LICENSE file. +@@ -49,4 +49,8 @@ found in the LICENSE file. android:key="captions" android:title="@string/accessibility_captions_title"/> @@ -2641,7 +2642,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); -@@ -132,6 +138,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -128,6 +134,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat forceTabletUiPref.setChecked(mForceTabletUIDelegate.isEnabled()); forceTabletUiPref.setOnPreferenceChangeListener(this); @@ -2654,7 +2655,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener(preference -> { Intent intent = new Intent(Settings.ACTION_CAPTIONING_SETTINGS); -@@ -191,7 +203,11 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -198,7 +210,11 @@ public class AccessibilitySettings extends PreferenceFragmentCompat mDelegate.getBrowserContextHandle(), (Integer) newValue); } else if (PREF_PAGE_ZOOM_ALWAYS_SHOW.equals(preference.getKey())) { PageZoomUtils.setShouldAlwaysShowZoomMenuItem((Boolean) newValue); @@ -2669,17 +2670,17 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java --- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java +++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java -@@ -4,6 +4,8 @@ +@@ -6,6 +6,8 @@ package org.chromium.components.browser_ui.accessibility; - package org.chromium.components.browser_ui.accessibility; + import android.content.Context; +import android.app.Activity; + import androidx.annotation.NonNull; import androidx.preference.PreferenceFragmentCompat; -@@ -27,6 +29,10 @@ public interface AccessibilitySettingsDelegate { - void setEnabled(boolean value); +@@ -43,6 +45,10 @@ public interface AccessibilitySettingsDelegate { + void setValue(int value); } + void requestRestart(Activity activity); @@ -2700,7 +2701,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ #include "cc/base/math_util.h" #include "cc/slim/layer.h" #include "components/viz/common/features.h" -@@ -852,6 +853,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( +@@ -857,6 +858,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( // factor. Thus, |top_content_offset| in CSS pixels is also in DIPs. float top_content_offset = metadata.top_controls_height * metadata.top_controls_shown_ratio; diff --git a/build/patches/Override-Navigator-Language.patch b/build/patches/Override-Navigator-Language.patch index 0b2b9c00..3f238c8d 100644 --- a/build/patches/Override-Navigator-Language.patch +++ b/build/patches/Override-Navigator-Language.patch @@ -60,7 +60,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content #include "components/metrics/single_sample_metrics.h" #include "components/services/storage/privileged/mojom/indexed_db_control.mojom.h" #include "components/services/storage/public/cpp/buckets/bucket_id.h" -@@ -3220,8 +3221,11 @@ void RenderProcessHostImpl::AppendRendererCommandLine( +@@ -3217,8 +3218,11 @@ void RenderProcessHostImpl::AppendRendererCommandLine( PropagateBrowserCommandLineToRenderer(browser_command_line, command_line); // Pass on the browser locale. diff --git a/build/patches/Remove-help-menu-item.patch b/build/patches/Remove-help-menu-item.patch index 82d4a9a7..577edb17 100644 --- a/build/patches/Remove-help-menu-item.patch +++ b/build/patches/Remove-help-menu-item.patch @@ -40,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -2416,16 +2416,6 @@ public abstract class ChromeActivity +@@ -2398,16 +2398,6 @@ public abstract class ChromeActivity final Tab currentTab = getActivityTab(); @@ -60,7 +60,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java -@@ -569,7 +569,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity& cors_exempt_header_list, network::mojom::AttributionSupport attribution_support, blink::mojom::OriginTrialsSettingsPtr origin_trials_settings) { diff --git a/build/patches/Welcome-screen.patch b/build/patches/Welcome-screen.patch index 7ef4caba..8a8bd03d 100644 --- a/build/patches/Welcome-screen.patch +++ b/build/patches/Welcome-screen.patch @@ -27,7 +27,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -515,6 +515,7 @@ chrome_java_resources = [ +@@ -523,6 +523,7 @@ chrome_java_resources = [ "java/res/layout/find_in_page.xml", "java/res/layout/find_toolbar.xml", "java/res/layout/fre_tos_privacy_disclaimer.xml", @@ -38,7 +38,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -639,6 +639,8 @@ chrome_java_sources = [ +@@ -650,6 +650,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/firstrun/SyncConsentFirstRunFragment.java", "java/src/org/chromium/chrome/browser/firstrun/TabbedModeFirstRunActivity.java", "java/src/org/chromium/chrome/browser/firstrun/TosDialogBehaviorSharedPrefInvalidator.java", @@ -1234,7 +1234,7 @@ new file mode 100644 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 -@@ -3263,7 +3263,29 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

%1$sGoogle Maps will open in Chrome. By continuing, you agree to the <LINK1>Google Terms of Service</LINK1>, and the <LINK2>Google Chrome and ChromeOS Additional Terms of Service</LINK2>. The <LINK3>Privacy Policy</LINK3> also applies. diff --git a/build/patches/autofill-miscellaneous.patch b/build/patches/autofill-miscellaneous.patch index f14bf221..5fc50c89 100644 --- a/build/patches/autofill-miscellaneous.patch +++ b/build/patches/autofill-miscellaneous.patch @@ -16,14 +16,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/browser/autofill_download_manager.h | 2 - .../core/browser/browser_autofill_manager.h | 4 +- .../autofill/core/common/autofill_features.cc | 4 +- - .../autofill/core/common/autofill_prefs.cc | 8 ++-- + .../autofill/core/common/autofill_prefs.cc | 10 ++--- .../password_generation_frame_helper.cc | 4 -- - 8 files changed, 19 insertions(+), 59 deletions(-) + 8 files changed, 20 insertions(+), 60 deletions(-) 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 -@@ -1078,11 +1078,11 @@ void RegisterProfilePrefsForMigration( +@@ -1133,11 +1133,11 @@ void RegisterProfilePrefsForMigration( PrefRegistry::LOSSY_PREF); // Deprecated 11/2022. @@ -41,7 +41,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc -@@ -200,12 +200,7 @@ ChromeAutofillClient::GetURLLoaderFactory() { +@@ -215,12 +215,7 @@ ChromeAutofillClient::GetURLLoaderFactory() { } AutofillDownloadManager* ChromeAutofillClient::GetDownloadManager() { @@ -148,7 +148,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.h b/comp diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/components/autofill/core/browser/browser_autofill_manager.h --- a/components/autofill/core/browser/browser_autofill_manager.h +++ b/components/autofill/core/browser/browser_autofill_manager.h -@@ -740,9 +740,9 @@ class BrowserAutofillManager : public AutofillManager, +@@ -766,9 +766,9 @@ class BrowserAutofillManager : public AutofillManager, autocomplete_unrecognized_fallback_logger_; // Have we logged whether Autofill is enabled for this page load? @@ -163,7 +163,7 @@ diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/compo diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc -@@ -837,8 +837,8 @@ BASE_FEATURE(kAutofillLogToTerminal, +@@ -797,8 +797,8 @@ BASE_FEATURE(kAutofillLogToTerminal, // "upload" resources. // i.e., https://other.autofill.server:port/tbproxy/af/ BASE_FEATURE(kAutofillServerCommunication, @@ -177,7 +177,7 @@ diff --git a/components/autofill/core/common/autofill_features.cc b/components/a diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc --- a/components/autofill/core/common/autofill_prefs.cc +++ b/components/autofill/core/common/autofill_prefs.cc -@@ -140,7 +140,7 @@ const char kAutofillUsingVirtualViewStructure[] = +@@ -144,7 +144,7 @@ const char kAutofillUsingVirtualViewStructure[] = void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { // Synced prefs. Used for cross-device choices, e.g., credit card Autofill. registry->RegisterBooleanPref( @@ -186,7 +186,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterIntegerPref( prefs::kAutofillLastVersionDeduped, 0, -@@ -152,10 +152,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -156,10 +156,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { prefs::kAutofillLastVersionDisusedAddressesDeleted, 0, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref( @@ -194,24 +194,27 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto + prefs::kAutofillCreditCardEnabled, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref( -- prefs::kAutofillIbanEnabled, true, -+ prefs::kAutofillIbanEnabled, false, +- prefs::kAutofillPaymentCvcStorage, true, ++ prefs::kAutofillPaymentCvcStorage, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); - registry->RegisterBooleanPref( - prefs::kAutofillPaymentCvcStorage, true, -@@ -189,7 +189,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { + + // Non-synced prefs. Used for per-device choices, e.g., signin promo. +@@ -201,9 +201,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { + #endif // Deprecated prefs registered for migration. - registry->RegisterBooleanPref( -- prefs::kAutofillEnabledDeprecated, true, -+ prefs::kAutofillEnabledDeprecated, false, - user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); +- registry->RegisterBooleanPref(prefs::kAutofillEnabledDeprecated, true); ++ registry->RegisterBooleanPref(prefs::kAutofillEnabledDeprecated, false); registry->RegisterBooleanPref(prefs::kAutofillOrphanRowsRemoved, false); +- registry->RegisterBooleanPref(prefs::kAutofillIbanEnabled, true); ++ registry->RegisterBooleanPref(prefs::kAutofillIbanEnabled, false); + #if BUILDFLAG(IS_ANDROID) + registry->RegisterBooleanPref(prefs::kAutofillUsingVirtualViewStructure, diff --git a/components/password_manager/core/browser/password_generation_frame_helper.cc b/components/password_manager/core/browser/password_generation_frame_helper.cc --- a/components/password_manager/core/browser/password_generation_frame_helper.cc +++ b/components/password_manager/core/browser/password_generation_frame_helper.cc -@@ -101,7 +101,6 @@ void PasswordGenerationFrameHelper::ProcessPasswordRequirements( +@@ -95,7 +95,6 @@ void PasswordGenerationFrameHelper::ProcessPasswordRequirements( // In order for password generation to be enabled, we need to make sure: // (1) Password sync is enabled, and // (2) Password saving is enabled @@ -219,7 +222,7 @@ diff --git a/components/password_manager/core/browser/password_generation_frame_ bool PasswordGenerationFrameHelper::IsGenerationEnabled( bool log_debug_data) const { std::unique_ptr logger; -@@ -111,9 +110,6 @@ bool PasswordGenerationFrameHelper::IsGenerationEnabled( +@@ -105,9 +104,6 @@ bool PasswordGenerationFrameHelper::IsGenerationEnabled( } GURL url = driver_->GetLastCommittedURL();