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
Java JavaScript C++
Instance of a BrowserContextHandle required
Desktop OS (Windows, Linux, MacOS)
The SHA1 hash of your extension ID must be added to the allowlist in chrome/common/extensions/api/_permission_features.json
Instance of a BrowserContext required
API changes more frequently than the Java and JavaScript APIs
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:
Java JavaScript C++
Copy 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
Copy chrome . eyeoFilteringPrivate .isEnabled ( "adblock" ); // true
chrome . eyeoFilteringPrivate .setEnabled ( "adblock" , false );
chrome . eyeoFilteringPrivate .isEnabled ( "adblock" ); // false
Copy #include "components/adblock/content/browser/factories/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:
checks whether Acceptable Ads are enabled
verifies that Acceptable Ads are disabled
Java JavaScript C++
Copy 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
Copy 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
Copy #include "components/adblock/content/browser/factories/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 -> IsFilterListPresent ( AcceptableAdsUrl ()); // true
configuration -> RemoveFilterList ( AcceptableAdsUrl ());
configuration -> IsFilterListPresent ( AcceptableAdsUrl ()); // 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
:
Java JavaScript C++
Copy 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", ...]
Copy 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", ...]
Copy #include "components/adblock/content/browser/factories/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++
Copy 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 (); // []
Copy chrome . eyeoFilteringPrivate .addAllowedDomain ( "adblock" , "example.com" );
chrome . eyeoFilteringPrivate .getAllowedDomains ( "adblock" ); // ["example.com"]
chrome . eyeoFilteringPrivate .removeAllowedDomain ( "adblock" , "example.com" );
chrome . eyeoFilteringPrivate .getAllowedDomains ( "adblock" ); // []
Copy #include "components/adblock/content/browser/factories/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++
Copy 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 (); // []
Copy 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" ); // []
Copy #include "components/adblock/content/browser/factories/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 C++
Copy 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) {
// ...
}
});
Copy chrome . eyeoFilteringPrivate . onRequestAllowed .addListener ( function (info) {
// ...
});
chrome . eyeoFilteringPrivate . onRequestBlocked .addListener ( function (info) {
// ...
});
Copy #include "components/adblock/content/browser/factories/resource_classification_runner_factory.h"
#include "components/adblock/content/browser/resource_classification_runner.h"
class MyObserver : public adblock :: ResourceClassificationRunner :: Observer {
public :
void OnRequestMatched ( const GURL & url ,
adblock :: FilterMatchResult match_result ,
const std :: vector < GURL > & parent_frame_urls ,
adblock :: ContentType content_type ,
content :: RenderFrameHost * render_frame_host ,
const GURL & subscription ,
const std :: string & configuration_name) override {
// ...
}
void OnPageAllowed ( const GURL & url ,
content :: RenderFrameHost * render_frame_host ,
const GURL & subscription ,
const std :: string & configuration_name) override {
// ...
}
void OnPopupMatched ( const GURL & url ,
adblock :: FilterMatchResult match_result ,
const GURL & opener_url ,
content :: RenderFrameHost * render_frame_host ,
const GURL & subscription ,
const std :: string & configuration_name) override {
// ...
}
};
MyObserver observer;
adblock :: ResourceClassificationRunnerFactory :: GetForBrowserContext (context)
-> AddObserver ( & observer);
Last updated 9 months ago