From 5ffb665f31c33b5c5821f76309d4ff563ca4ee54 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Sun, 9 Jul 2023 15:51:35 +0200 Subject: [PATCH] Eyeo Adblock for Bromite final version --- ...00Eyeo-Adblock-Remove-Privacy-Issues.patch | 2905 +++++++++++++++-- 1 file changed, 2555 insertions(+), 350 deletions(-) diff --git a/build/patches/00Eyeo-Adblock-Remove-Privacy-Issues.patch b/build/patches/00Eyeo-Adblock-Remove-Privacy-Issues.patch index 4385d9da..5a20af47 100644 --- a/build/patches/00Eyeo-Adblock-Remove-Privacy-Issues.patch +++ b/build/patches/00Eyeo-Adblock-Remove-Privacy-Issues.patch @@ -1,21 +1,26 @@ From: uazo Date: Thu, 29 Sep 2022 11:27:35 +0000 -Subject: Eyeo Adblock Remove +Subject: Eyeo Adblock for Bromite -Removes some functions from AdBlock Plus and adds -settings ui in Windows +Change the normal behaviour of Eyeo Chromium SDK to +suit Bromite logic --- .../android/java/res/xml/main_preferences.xml | 11 +- chrome/browser/BUILD.gn | 2 - - .../adblock/adblock_content_browser_client.cc | 17 - + .../adblock/adblock_content_browser_client.cc | 26 +- .../adblock/adblock_controller_factory.cc | 3 +- .../adblock_telemetry_service_factory.cc | 127 - .../adblock_telemetry_service_factory.h | 56 - - .../adblock/subscription_service_factory.cc | 2 +- + .../adblock/subscription_service_factory.cc | 11 +- + .../adblock/subscription_service_factory.h | 1 + + chrome/browser/android/adblock/adblock_jni.cc | 50 +- + .../adblock_private/adblock_private_api.cc | 70 +- + .../api/adblock_private/adblock_private_api.h | 49 + + .../eyeo_filtering_private_api.cc | 20 +- ...hrome_browser_main_extra_parts_profiles.cc | 2 - chrome/browser/resources/settings/BUILD.gn | 2 + - .../settings/adblock_page/adblock_page.html | 185 + - .../settings/adblock_page/adblock_page.ts | 210 ++ + .../settings/adblock_page/adblock_page.html | 207 + + .../settings/adblock_page/adblock_page.ts | 289 ++ .../settings/basic_page/basic_page.html | 7 + .../settings/basic_page/basic_page.ts | 1 + .../resources/settings/page_visibility.ts | 1 + @@ -23,18 +28,31 @@ settings ui in Windows chrome/browser/resources/settings/router.ts | 1 + chrome/browser/resources/settings/settings.ts | 1 + .../settings/settings_menu/settings_menu.html | 5 + - chrome/browser/ui/tab_helpers.cc | 2 + + chrome/browser/ui/tab_helpers.cc | 5 +- + .../extensions/api/_permission_features.json | 8 - + .../common/extensions/api/adblock_private.idl | 8 + chrome/test/BUILD.gn | 5 - components/adblock/android/BUILD.gn | 2 +- - .../layout/adblock_filter_lists_list_item.xml | 10 + - ...ences.xml => eyeo_adblock_preferences.xml} | 0 - .../settings/AdblockFilterListsAdapter.java | 3 + - .../settings/AdblockSettingsFragment.java | 2 +- - components/adblock/content/browser/BUILD.gn | 14 - + .../adblock/android/adblock_strings.grd | 48 +- + .../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 +- + .../AdblockAllowedDomainsFragment.java | 7 +- + .../AdblockCustomFilterListsFragment.java | 32 +- + .../AdblockCustomFiltersFragment.java | 7 +- + .../settings/AdblockCustomItemFragment.java | 20 +- + .../settings/AdblockFilterListsAdapter.java | 6 + + .../settings/AdblockSettingsFragment.java | 45 +- + components/adblock/content/browser/BUILD.gn | 16 +- + .../browser/adblock_webcontents_observer.cc | 25 +- + .../browser/adblock_webcontents_observer.h | 5 +- components/adblock/core/BUILD.gn | 39 - .../activeping_telemetry_topic_provider.cc | 242 -- .../activeping_telemetry_topic_provider.h | 84 - - .../adblock/core/adblock_controller_impl.cc | 7 +- + components/adblock/core/adblock_controller.h | 6 + + .../adblock/core/adblock_controller_impl.cc | 35 +- + .../adblock/core/adblock_controller_impl.h | 5 + components/adblock/core/adblock_switches.cc | 1 - components/adblock/core/adblock_switches.h | 1 - .../adblock/core/adblock_telemetry_service.cc | 244 -- @@ -42,19 +60,34 @@ settings ui in Windows components/adblock/core/common/BUILD.gn | 10 - .../adblock/core/common/adblock_constants.cc | 2 - .../adblock/core/common/adblock_constants.h | 1 - - .../adblock/core/common/adblock_prefs.cc | 44 +- + .../adblock/core/common/adblock_prefs.cc | 47 +- + .../adblock/core/common/adblock_prefs.h | 1 + .../adblock/core/common/adblock_utils.cc | 23 - - .../adblock/core/converter/parser/metadata.cc | 7 +- + .../configuration/filtering_configuration.h | 3 + + .../persistent_filtering_configuration.cc | 10 + + .../persistent_filtering_configuration.h | 3 + + .../adblock/core/converter/parser/metadata.cc | 10 +- .../core/converter/parser/url_filter.cc | 4 + + .../serializer/flatbuffer_serializer.cc | 4 +- .../adblock/core/sitekey_storage_impl.cc | 6 + - ...filtering_configuration_maintainer_impl.cc | 10 - - .../filtering_configuration_maintainer_impl.h | 1 - + .../core/subscription/conversion_executors.h | 1 + + .../filtering_configuration_maintainer.h | 4 + + ...filtering_configuration_maintainer_impl.cc | 31 +- + .../filtering_configuration_maintainer_impl.h | 4 +- .../ongoing_subscription_request_impl.cc | 33 +- .../preloaded_subscription_provider_impl.cc | 4 +- - .../core/subscription/subscription_config.cc | 8 +- - .../subscription_downloader_impl.cc | 17 +- + .../adblock/core/subscription/subscription.cc | 19 + + .../adblock/core/subscription/subscription.h | 3 + + .../core/subscription/subscription_config.cc | 16 +- + .../core/subscription/subscription_config.h | 4 +- + .../subscription_downloader_impl.cc | 21 +- + .../subscription_persistent_metadata.h | 1 + + .../subscription_persistent_metadata_impl.cc | 7 + + .../subscription_persistent_metadata_impl.h | 1 + .../subscription_persistent_storage_impl.cc | 11 +- - .../subscription/subscription_service_impl.cc | 2 +- + .../core/subscription/subscription_service.h | 3 + + .../subscription/subscription_service_impl.cc | 23 +- + .../subscription/subscription_service_impl.h | 3 + .../subscription/subscription_updater_impl.cc | 8 +- .../subscription_validator_impl.cc | 4 +- components/adblock/features.gni | 44 - @@ -64,17 +97,18 @@ settings ui in Windows components/resources/adblocking/BUILD.gn | 30 +- .../adblocking/elemhide_for_selector.jst | 2 +- .../resources/adblocking/elemhideemu.jst | 2 + - .../snippets/dist/isolated-first.jst | 62 + - .../snippets/dist/isolated-first.source.jst | 3126 +++++++++++++++++ + .../snippets/dist/isolated-first.jst | 65 + + .../snippets/dist/isolated-first.source.jst | 3624 +++++++++++++++++ .../blink/renderer/core/css/style_engine.cc | 8 + .../blink/renderer/core/css/style_engine.h | 1 + .../renderer/core/exported/web_document.cc | 13 +- - 64 files changed, 3723 insertions(+), 1166 deletions(-) + .../definitions/adblock_private.d.ts | 14 + + 98 files changed, 4930 insertions(+), 1277 deletions(-) delete mode 100644 chrome/browser/adblock/adblock_telemetry_service_factory.cc delete mode 100644 chrome/browser/adblock/adblock_telemetry_service_factory.h 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} (100%) + rename components/adblock/android/java/res/xml/{adblock_preferences.xml => eyeo_adblock_preferences.xml} (56%) delete mode 100644 components/adblock/core/activeping_telemetry_topic_provider.cc delete mode 100644 components/adblock/core/activeping_telemetry_topic_provider.h delete mode 100644 components/adblock/core/adblock_telemetry_service.cc @@ -124,7 +158,30 @@ 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 -@@ -104,23 +104,6 @@ class AdblockContextData : public base::SupportsUserData::Data { +@@ -25,6 +25,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" ++#include "chrome/browser/content_settings/host_content_settings_map_factory.h" ++#include "components/content_settings/core/browser/host_content_settings_map.h" + #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) { + auto* profile = + Profile::FromBrowserContext(frame->GetProcess()->GetBrowserContext()); + if (profile) { ++ content::RenderFrameHost* embedder = frame->GetOutermostMainFrameOrEmbedder(); ++ const auto& embedder_url = embedder->GetLastCommittedURL(); ++ HostContentSettingsMap* settings_map = HostContentSettingsMapFactory::GetForProfile(profile); ++ if (settings_map->GetContentSetting(embedder_url, GURL(), ContentSettingsType::ADS) ++ == CONTENT_SETTING_ALLOW) { ++ return false; ++ } + // 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 { adblock::SitekeyStorageFactory::GetForBrowserContext(browser_context), adblock::ContentSecurityPolicyInjectorFactory::GetForBrowserContext( browser_context)}; @@ -357,15 +414,390 @@ deleted file mode 100644 diff --git a/chrome/browser/adblock/subscription_service_factory.cc b/chrome/browser/adblock/subscription_service_factory.cc --- a/chrome/browser/adblock/subscription_service_factory.cc +++ b/chrome/browser/adblock/subscription_service_factory.cc -@@ -66,7 +66,7 @@ base::TimeDelta GetUpdateCheckInterval() { +@@ -25,6 +25,7 @@ + #include "base/functional/bind.h" + #include "base/task/thread_pool.h" + #include "base/trace_event/trace_event.h" ++#include "base/rand_util.h" + #include "chrome/browser/adblock/subscription_persistent_metadata_factory.h" + #include "chrome/browser/profiles/incognito_helpers.h" + #include "chrome/browser/profiles/profile.h" +@@ -66,7 +67,7 @@ base::TimeDelta GetUpdateCheckInterval() { static base::TimeDelta kCheckInterval = g_update_check_interval_for_testing ? g_update_check_interval_for_testing.value() - : base::Hours(1); -+ : base::Hours(24); ++ : base::Hours(24) + base::Minutes(base::RandInt(-60,60)); return kCheckInterval; } +@@ -87,7 +88,8 @@ std::unique_ptr MakeOngoingSubscriptionRequest( + } + + ConversionResult ConvertFilterFile(const GURL& subscription_url, +- const base::FilePath& path) { ++ const base::FilePath& path, ++ bool allow_privileged_filter) { + TRACE_EVENT1("eyeo", "ConvertFileToFlatbuffer", "url", + subscription_url.spec()); + ConversionResult result; +@@ -97,7 +99,7 @@ ConversionResult ConvertFilterFile(const GURL& subscription_url, + } else { + result = FlatbufferConverter::Convert( + input_stream, subscription_url, +- config::AllowPrivilegedFilters(subscription_url)); ++ allow_privileged_filter && config::AllowPrivilegedFilters(subscription_url)); + } + base::DeleteFile(path); + return result; +@@ -162,10 +164,11 @@ SubscriptionServiceFactory::ConvertCustomFilters( + void SubscriptionServiceFactory::ConvertFilterListFile( + const GURL& subscription_url, + const base::FilePath& path, ++ bool allow_privileged_filter, + base::OnceCallback result_callback) const { + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, {base::MayBlock()}, +- base::BindOnce(&ConvertFilterFile, subscription_url, path), ++ base::BindOnce(&ConvertFilterFile, subscription_url, path, allow_privileged_filter), + std::move(result_callback)); + } + +diff --git a/chrome/browser/adblock/subscription_service_factory.h b/chrome/browser/adblock/subscription_service_factory.h +--- a/chrome/browser/adblock/subscription_service_factory.h ++++ b/chrome/browser/adblock/subscription_service_factory.h +@@ -42,6 +42,7 @@ class SubscriptionServiceFactory : public BrowserContextKeyedServiceFactory, + void ConvertFilterListFile( + const GURL& subscription_url, + const base::FilePath& path, ++ bool allow_privileged_filter, + base::OnceCallback) const override; + + private: +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 +@@ -137,26 +137,12 @@ std::vector CopySessionsStats( + return result; + } + +-std::string SubscriptionInstallationStateToString( +- adblock::Subscription::InstallationState state) { +- using State = adblock::Subscription::InstallationState; +- switch (state) { +- case State::Installed: +- return "Installed"; +- case State::Installing: +- return "Installing"; +- case State::Preloaded: +- return "Preloaded"; +- case State::Unknown: +- return "Unknown"; +- } +- NOTREACHED(); +- return ""; +-} +- + std::vector CopySubscriptions( ++ raw_ptr controller, + const std::vector> + current_subscriptions) { ++ raw_ptr metadata = ++ controller->GetMetadata(); + std::vector result; + for (auto& sub : current_subscriptions) { + api::adblock_private::Subscription js_sub; +@@ -164,9 +150,13 @@ std::vector CopySubscriptions( + js_sub.title = sub->GetTitle(); + js_sub.current_version = sub->GetCurrentVersion(); + js_sub.installation_state = +- SubscriptionInstallationStateToString(sub->GetInstallationState()); ++ adblock::Subscription::SubscriptionInstallationStateToString(sub->GetInstallationState()); + js_sub.last_installation_time = + base::TimeToISO8601(sub->GetInstallationTime()); ++ if (metadata) { ++ js_sub.download_success_count = metadata->GetDownloadSuccessCount(sub->GetSourceUrl()); ++ js_sub.download_error_count = metadata->GetDownloadErrorCount(sub->GetSourceUrl()); ++ } + result.emplace_back(std::move(js_sub)); + } + return result; +@@ -402,6 +392,44 @@ void AdblockPrivateAPI::OnListenerAdded( + + namespace api { + ++AdblockPrivateStartUpdateFunction::AdblockPrivateStartUpdateFunction() {} ++ ++AdblockPrivateStartUpdateFunction::~AdblockPrivateStartUpdateFunction() {} ++ ++ExtensionFunction::ResponseAction AdblockPrivateStartUpdateFunction::Run() { ++ auto* controller = adblock::AdblockControllerFactory::GetForBrowserContext( ++ browser_context()); ++ controller->StartUpdate(); ++ return RespondNow(NoArguments()); ++} ++ ++AdblockPrivateSetPrivilegedFiltersEnabledFunction::AdblockPrivateSetPrivilegedFiltersEnabledFunction() {} ++ ++AdblockPrivateSetPrivilegedFiltersEnabledFunction::~AdblockPrivateSetPrivilegedFiltersEnabledFunction() {} ++ ++ExtensionFunction::ResponseAction AdblockPrivateSetPrivilegedFiltersEnabledFunction::Run() { ++ absl::optional params = ++ api::adblock_private::SetEnabled::Params::Create(args()); ++ EXTENSION_FUNCTION_VALIDATE(params); ++ ++ auto* controller = adblock::AdblockControllerFactory::GetForBrowserContext( ++ browser_context()); ++ controller->SetPrivilegedFiltersEnabled(params->enabled); ++ return RespondNow(NoArguments()); ++} ++ ++AdblockPrivateIsPrivilegedFiltersEnabledFunction::AdblockPrivateIsPrivilegedFiltersEnabledFunction() {} ++ ++AdblockPrivateIsPrivilegedFiltersEnabledFunction::~AdblockPrivateIsPrivilegedFiltersEnabledFunction() {} ++ ++ExtensionFunction::ResponseAction AdblockPrivateIsPrivilegedFiltersEnabledFunction::Run() { ++ auto* controller = adblock::AdblockControllerFactory::GetForBrowserContext( ++ browser_context()); ++ return RespondNow( ++ ArgumentList(api::adblock_private::IsEnabled::Results::Create( ++ controller->IsPrivilegedFiltersEnabled()))); ++} ++ + AdblockPrivateSetEnabledFunction::AdblockPrivateSetEnabledFunction() {} + + AdblockPrivateSetEnabledFunction::~AdblockPrivateSetEnabledFunction() {} +@@ -547,7 +575,7 @@ AdblockPrivateGetSelectedBuiltInSubscriptionsFunction::Run() { + + return RespondNow(ArgumentList( + api::adblock_private::GetSelectedBuiltInSubscriptions::Results::Create( +- CopySubscriptions(controller->GetSelectedBuiltInSubscriptions())))); ++ CopySubscriptions(controller, controller->GetSelectedBuiltInSubscriptions())))); + } + + AdblockPrivateAddCustomSubscriptionFunction:: +@@ -605,7 +633,7 @@ AdblockPrivateGetCustomSubscriptionsFunction::Run() { + browser_context()); + return RespondNow(ArgumentList( + api::adblock_private::GetCustomSubscriptions::Results::Create( +- CopySubscriptions(controller->GetCustomSubscriptions())))); ++ CopySubscriptions(controller, controller->GetCustomSubscriptions())))); + } + + AdblockPrivateInstallSubscriptionFunction:: +@@ -662,7 +690,7 @@ AdblockPrivateGetInstalledSubscriptionsFunction::Run() { + browser_context()); + return RespondNow(ArgumentList( + api::adblock_private::GetInstalledSubscriptions::Results::Create( +- CopySubscriptions(controller->GetInstalledSubscriptions())))); ++ CopySubscriptions(controller, controller->GetInstalledSubscriptions())))); + } + + 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 +@@ -58,6 +58,55 @@ void BrowserContextKeyedAPIFactory< + + namespace api { + ++class AdblockPrivateStartUpdateFunction : public ExtensionFunction { ++ public: ++ DECLARE_EXTENSION_FUNCTION("adblockPrivate.startUpdate", UNKNOWN) ++ AdblockPrivateStartUpdateFunction(); ++ ++ private: ++ ~AdblockPrivateStartUpdateFunction() override; ++ ++ ResponseAction Run() override; ++ ++ AdblockPrivateStartUpdateFunction(const AdblockPrivateStartUpdateFunction&) = ++ delete; ++ AdblockPrivateStartUpdateFunction& operator=( ++ const AdblockPrivateStartUpdateFunction&) = delete; ++}; ++ ++ ++class AdblockPrivateSetPrivilegedFiltersEnabledFunction : public ExtensionFunction { ++ public: ++ DECLARE_EXTENSION_FUNCTION("adblockPrivate.setPrivilegedFiltersEnabled", UNKNOWN) ++ AdblockPrivateSetPrivilegedFiltersEnabledFunction(); ++ ++ private: ++ ~AdblockPrivateSetPrivilegedFiltersEnabledFunction() override; ++ ++ ResponseAction Run() override; ++ ++ AdblockPrivateSetPrivilegedFiltersEnabledFunction(const AdblockPrivateSetPrivilegedFiltersEnabledFunction&) = ++ delete; ++ AdblockPrivateSetPrivilegedFiltersEnabledFunction& operator=( ++ const AdblockPrivateSetPrivilegedFiltersEnabledFunction&) = delete; ++}; ++ ++class AdblockPrivateIsPrivilegedFiltersEnabledFunction : public ExtensionFunction { ++ public: ++ DECLARE_EXTENSION_FUNCTION("adblockPrivate.isPrivilegedFiltersEnabled", UNKNOWN) ++ AdblockPrivateIsPrivilegedFiltersEnabledFunction(); ++ ++ private: ++ ~AdblockPrivateIsPrivilegedFiltersEnabledFunction() override; ++ ++ ResponseAction Run() override; ++ ++ AdblockPrivateIsPrivilegedFiltersEnabledFunction(const AdblockPrivateIsPrivilegedFiltersEnabledFunction&) = ++ delete; ++ AdblockPrivateIsPrivilegedFiltersEnabledFunction& operator=( ++ const AdblockPrivateIsPrivilegedFiltersEnabledFunction&) = delete; ++}; ++ + class AdblockPrivateSetEnabledFunction : public ExtensionFunction { + public: + DECLARE_EXTENSION_FUNCTION("adblockPrivate.setEnabled", UNKNOWN) +diff --git a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc b/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc +--- a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc ++++ b/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc +@@ -29,6 +29,7 @@ + #include "components/adblock/content/browser/resource_classification_runner.h" + #include "components/adblock/core/common/adblock_utils.h" + #include "components/adblock/core/common/content_type.h" ++#include "components/adblock/core/subscription/subscription.h" + #include "components/adblock/core/configuration/filtering_configuration.h" + #include "components/adblock/core/configuration/persistent_filtering_configuration.h" + #include "components/adblock/core/session_stats.h" +@@ -94,23 +95,6 @@ std::vector CopySessionsStats( + return result; + } + +-std::string SubscriptionInstallationStateToString( +- adblock::Subscription::InstallationState state) { +- using State = adblock::Subscription::InstallationState; +- switch (state) { +- case State::Installed: +- return "Installed"; +- case State::Installing: +- return "Installing"; +- case State::Preloaded: +- return "Preloaded"; +- case State::Unknown: +- return "Unknown"; +- } +- NOTREACHED(); +- return ""; +-} +- + std::vector CopySubscriptions( + const std::vector> + current_subscriptions) { +@@ -121,7 +105,7 @@ std::vector CopySubscriptions( + js_sub.title = sub->GetTitle(); + js_sub.current_version = sub->GetCurrentVersion(); + js_sub.installation_state = +- SubscriptionInstallationStateToString(sub->GetInstallationState()); ++ adblock::Subscription::SubscriptionInstallationStateToString(sub->GetInstallationState()); + js_sub.last_installation_time = + base::TimeToISO8601(sub->GetInstallationTime()); + result.emplace_back(std::move(js_sub)); diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc @@ -408,7 +840,7 @@ diff --git a/chrome/browser/resources/settings/adblock_page/adblock_page.html b/ new file mode 100644 --- /dev/null +++ b/chrome/browser/resources/settings/adblock_page/adblock_page.html -@@ -0,0 +1,185 @@ +@@ -0,0 +1,207 @@ + -+ +
+ @@ -472,19 +937,13 @@ new file mode 100644 +
+ +
-+ Allowed Domains ++ Allowed Domains ([[allowedDomainsCount]] added) ++
++
++ Support your favorite websites by adding them to this list. You might see ads on them. +
+
+ -+
-+ -+
+
+