Configure Solution settings

Customization options for the Browser Ad-Filtering Solution.

Available APIs

You can control the ad-filtering behavior 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

API requirements

  • Android OS

  • Instance of a BrowserContextHandle required

Capabilities

Toggle ad filtering

To toggle ad filtering call setEnabled with the appropriate bool value:

To query if ad filtering is enabled call isEnabled.

The following example disables ad filtering:

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

Toggle Acceptable Ads

You can toggle Acceptable Ads by adding or removing a filter list with the Acceptable Ads URL. The following example:

  1. checks whether Acceptable Ads are enabled

  2. disables them

  3. verifies that Acceptable Ads are disabled

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

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 http://example.com/example_list.txt:

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", ...]

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.

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();  // []

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:

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();  // []

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.

import org.chromium.components.adblock.ResourceClassificationNotifier;

ResourceClassificationNotifier.getInstance().addOnAdBlockedObserver(new ResourceClassificationNotifier.ResourceFilteringObserver{
    @Override
    public void onRequestAllowed(ResourceFilteringCounters.ResourceInfo info) {
        // ...
    }
    @Override
    public void onRequestBlocked(ResourceFilteringCounters.ResourceInfo info) {
        // ...
    }
    @Override
    public void onPageAllowed(ResourceFilteringCounters.ResourceInfo info) {
        // ...
    }
    @Override
    public void onPopupAllowed(ResourceFilteringCounters.ResourceInfo info) {
        // ...
    }
    @Override
    public void onPopupBlocked(ResourceFilteringCounters.ResourceInfo info) {
        // ...
    }
});

Last updated