Links
Comment on page

Configure Solution settings

Customization options for the Browser Ad-Filtering Solution.

Available settings

The example Android UI and the example Desktop Settings Extension come with the following settings that can be manipulated by your users.
Setting
Type
Description
Ad-blocking
Boolean
Enables or disables ad-filtering
Acceptable Ads
Boolean
Displays or hides Acceptable Ads
Subscriptions
List
Filter list subscriptions
Allowed domains
List
Domains on which no ads will be blocked, even if ad-filtering is enabled
Custom filters
List
Additional filters written in filter language

Custom implementation

You can implement user settings according to your needs via any of these entry points:
  • The C++ class FilteringConfiguration,
  • The Java class org.chromium.components.adblock.FilteringConfiguration
  • The Browser Extension API defined and documented in chrome/common/extensions/api/eyeo_filtering_private.idl

Toggle ad-filtering

To toggle ad-filtering use setEnabled with the appropriate bool value:
To query if ad-filtering is enabled use isEnabled.
The following example disables adblocking:
Java
JavaScript
C++
import org.chromium.components.adblock.FilteringConfiguration;
// Creates Java handle for "adblock" configuration
FilteringConfiguration adblockConfiguration = FilteringConfiguration.createConfiguration("adblock");
adblockConfiguration.isEnabled(); // true
adblockConfiguration.setEnabled(false);
adblockConfiguration.isEnabled(); // false
chrome.eyeoFilteringPrivate.isEnabled("adblock"); // true
chrome.eyeoFilteringPrivate.setEnabled("adblock", false);
chrome.eyeoFilteringPrivate.isEnabled("adblock"); // false
#include "chrome/browser/adblock/subscription_service_factory.h"
#include "components/adblock/core/subscription/subscription_config.h"
#include "components/adblock/core/subscription/subscription_service.h"
#include "components/adblock/core/configuration/filtering_configuration.h"
auto* subscription_service =
adblock::SubscriptionServiceFactory::GetForBrowserContext(context);
auto configuration = subscription_service->GetFilteringConfiguration("adblock");
configuration->isEnabled(); // true
configuration->SetEnabled(false);
configuration->isEnabled(); // false

Toggle Acceptable Ads

You can toggle Acceptable Ads by adding or removing a filter list with the Acceptable Ads URL. The following example:
  1. 1.
    checks whether Acceptable Ads are enabled
  2. 2.
    disables them
  3. 3.
    verifies that Acceptable Ads are disabled
Java
JavaScript
import org.chromium.components.adblock.FilteringConfiguration;
// Creates Java handle for "adblock" configuration
FilteringConfiguration adblockConfiguration = FilteringConfiguration.createConfiguration("adblock");
adblockConfiguration.getFilterLists().contains(FilteringConfiguration.getAcceptableAdsUrl()); // true
adblockConfiguration.removeFilterList(FilteringConfiguration.getAcceptableAdsUrl());
adblockConfiguration.getFilterLists().contains(FilteringConfiguration.getAcceptableAdsUrl()); // false
let aa_url; chrome.eyeoFilteringPrivate.getAcceptableAdsUrl() .then(url => aa_url = url) .then(() => chrome.eyeoFilteringPrivate.getFilterLists("adblock")) .then(list => list.includes(aa_url)) // true .then(() => chrome.eyeoFilteringPrivate.removeFilterList("adblock", aa_url)) .then(() => chrome.eyeoFilteringPrivate.getFilterLists("adblock")) .then(list => list.includes(aa_url)); // false
</div>
<div data-gb-custom-block data-tag="tab" data-title='C++'>
```cpp
#include "chrome/browser/adblock/subscription_service_factory.h"
#include "components/adblock/core/subscription/subscription_config.h"
#include "components/adblock/core/subscription/subscription_service.h"
#include "components/adblock/core/configuration/filtering_configuration.h"
auto* subscription_service =
adblock::SubscriptionServiceFactory::GetForBrowserContext(context);
auto configuration = subscription_service->GetFilteringConfiguration("adblock");
base::ranges::find(configuration->GetFilterLists(), AcceptableAdsUrl()) != configuration->GetFilterLists().end(); // true
configuration->RemoveFilterList(AcceptableAdsUrl());
base::ranges::find(configuration->GetFilterLists(), AcceptableAdsUrl()) != configuration->GetFilterLists().end(); // false

Add/Remove filter lists

Filter lists are uniquely identified by URLs from which they're downloaded.
Use addFilterList to add and removeFilterList to remove a filter list.
To get the list of installed subscriptions use getFilterLists.
The following code snippet installs example_list:
Java
JavaScript
C++
import org.chromium.components.adblock.FilteringConfiguration;
// Creates Java handle for "adblock" configuration
FilteringConfiguration adblockConfiguration = FilteringConfiguration.createConfiguration("adblock");
URL exampleFilterList = new URL("http://example.com/example_list.txt");
adblockConfiguration.addFilterList(exampleFilterList);
adblockConfiguration.getFilterLists(); // ["http://example.com/example_list.txt", ...]
var exampleFilterList = new URL("http://example.com/example_list.txt");
chrome.eyeoFilteringPrivate.addFilterList("adblock", exampleFilterList.href);
chrome.eyeoFilteringPrivate.getFilterLists("adblock"); // ["http://example.com/example_list.txt", ...]
#include "chrome/browser/adblock/subscription_service_factory.h"
#include "components/adblock/core/subscription/subscription_config.h"
#include "components/adblock/core/subscription/subscription_service.h"
#include "components/adblock/core/configuration/filtering_configuration.h"
const GURL example_filter_list("http://example.com/example_list.txt");
auto* subscription_service =
adblock::SubscriptionServiceFactory::GetForBrowserContext(context);
auto configuration = subscription_service->GetFilteringConfiguration("adblock");
configuration->AddFilterList(example_filter_list);
configuration->GetFilterLists(); // ["http://example.com/example_list.txt", ...]

Enable/Disable ad-filtering on a specific domain

Use addAllowedDomain to stop filtering ads on a specific domain, and removeAllowedDomain to resume.
getAllowedDomains returns a list of allowed domains.
Java
JavaScript
C++
import org.chromium.components.adblock.FilteringConfiguration;
// Creates Java handle for "adblock" configuration
FilteringConfiguration adblockConfiguration = FilteringConfiguration.createConfiguration("adblock");
adblockConfiguration.addAllowedDomain("example.com");
adblockConfiguration.getAllowedDomains(); // ["example.com"]
adblockConfiguration.removeAllowedDomain("example.com");
adblockConfiguration.getAllowedDomains(); // []
chrome.eyeoFilteringPrivate.addAllowedDomain("adblock", "example.com");
chrome.eyeoFilteringPrivate.getAllowedDomains("adblock"); // ["example.com"]
chrome.eyeoFilteringPrivate.removeAllowedDomain("adblock", "example.com");
chrome.eyeoFilteringPrivate.getAllowedDomains("adblock"); // []
#include "chrome/browser/adblock/subscription_service_factory.h"
#include "components/adblock/core/subscription/subscription_config.h"
#include "components/adblock/core/subscription/subscription_service.h"
#include "components/adblock/core/configuration/filtering_configuration.h"
const GURL example_filter_list("http://example.com/example_list.txt");
auto* subscription_service =
adblock::SubscriptionServiceFactory::GetForBrowserContext(context);
auto configuration = subscription_service->GetFilteringConfiguration("adblock");
configuration->AddAllowedDomain("example.com");
configuration->GetAllowedDomains(); // ["example.com"]
configuration->RemoveAllowedDomain("example.com");
configuration->GetAllowedDomains(); // []
Note: Pass a domain ('example.com') as an argument, not a URL ('http://www.example.com/page.html').

Add/Remove custom filters

Use addCustomFilter to add and removeCustomFilter to remove a single filter.
To get the list of custom filters added use getCustomFilters.
The following code snippet installs a new filter:
Java
JavaScript
C++
import org.chromium.components.adblock.FilteringConfiguration;
// Creates Java handle for "adblock" configuration
FilteringConfiguration adblockConfiguration = FilteringConfiguration.createConfiguration("adblock");
adblockConfiguration.addCustomFilter("example_domain##.example_selector");
adblockConfiguration.getCustomFilters(); // ["example_domain##.example_selector"]
adblockConfiguration.removeCustomFilter("example_domain##.example_selector");
adblockConfiguration.getCustomFilters(); // []
chrome.eyeoFilteringPrivate.addCustomFilter("adblock", "example_domain##.example_selector");
chrome.eyeoFilteringPrivate.getCustomFilters("adblock"); // ["example_domain##.example_selector"]
chrome.eyeoFilteringPrivate.removeCustomFilter("adblock", "example_domain##.example_selector");
chrome.eyeoFilteringPrivate.getCustomFilters("adblock"); // []
#include "chrome/browser/adblock/subscription_service_factory.h"
#include "components/adblock/core/subscription/subscription_config.h"
#include "components/adblock/core/subscription/subscription_service.h"
#include "components/adblock/core/configuration/filtering_configuration.h"
const GURL example_filter_list("http://example.com/example_list.txt");
auto* subscription_service =
adblock::SubscriptionServiceFactory::GetForBrowserContext(context);
auto configuration = subscription_service->GetFilteringConfiguration("adblock");
configuration->AddCustomFilter("example_domain##.example_selector");
configuration->GetCustomFilters(); // ["example_domain##.example_selector"]
configuration->RemoveCustomFilter("example_domain##.example_selector");
configuration->GetCustomFilters(); // []

Subscribe for resource blocked or allowed events

There is an option to receive events when some resource is blocked or allowed. Typically, this is needed to implement a counter in the UI. Please do not subscribe if you are not going to consume these notifications, as it has a small performance penalty.
Java
JavaScript
import org.chromium.components.adblock.ResourceClassificationNotifier;
ResourceClassificationNotifier.getInstance().addOnAdBlockedObserver(new ResourceClassificationNotifier.AdBlockedObserver{
@Override
public void onAdAllowed(AdblockCounters.ResourceInfo info) {
// ...
}
@Override
public void onAdBlocked(AdblockCounters.ResourceInfo info) {
// ...
}
});
chrome.eyeoFilteringPrivate.onRequestAllowed.addListener(function(info) {
// ...
});
chrome.eyeoFilteringPrivate.onRequestBlocked.addListener(function(info) {
// ...
});
Last modified 1mo ago