Testing (Browser Ad-Filtering Solution)
Controlling ad filtering
Developers can leverage the example UI to manage ad filtering preferences within the solution.
Smoke testing
Four scenarios help verify core ad-filtering functionality:
Scenario 1: Verify ads are blocked when ad filtering is ON and Acceptable Ads are OFF.
-
Opens Ask.com, searches for "laptops"
-
Expects no ads displayed
Scenario 2: Verify ads are blocked when ad filtering is ON and Acceptable Ads are ON.
-
Same navigation as Scenario 1
-
Expects ads to appear
Scenario 3: Verify ads are displayed when ad filtering is OFF.
-
Disables ad filtering, repeats search
-
Expects ads visible
Scenario 4: Verify allowlisting feature is working properly.
-
Adds wikihow.com to allowlist
-
Navigates to subpage
-
Expects ads displayed
Testing on ABP testpages
The solution supports testing against controlled HTML elements. Users must enable "More Blocking Options" to run these tests.
Custom Filter Lists Approach
-
Select "Custom Filter Lists" in More Blocking Options
-
Enter
https://abptestpages.org/en/abp-testcase-subscription.txt -
Navigate to the Blocking test page
-
Verify green boxes appear per test descriptions
Custom Filters Approach
-
Visit ABP Test Pages and select a test page
-
Copy the filter code from the testpage
-
Paste into "Custom Filters" field
-
Refresh and verify results match test descriptions
Filter lists
Default filter lists
On first launch, the browser installs:
-
Easylist
-
Acceptable Ads (if enabled by default)
-
Anti-Circumvention
Language-specific variants download when available (e.g., Easylist+Spanish). Downloads occur while browsing; preloaded variants provide interim filtering.
Downloading filter lists
Downloads trigger when:
-
Browser starts initially
-
User selects new language filters
-
User adds custom filter lists
-
Filter list expiration requires updates
GET parameters
Each filter list request includes parameters to preserve anonymity while collecting usage metrics:
|
Parameter |
Value |
|---|---|
|
addonName |
|
|
addonVersion |
|
|
application |
Product name |
|
applicationVersion |
Chromium version or custom override |
|
platform |
Windows, MacOSX, Linux, or Android |
|
platformVersion |
|
|
lastVersion |
Filter list version (e.g., |
|
disabled |
|
|
downloadCount |
Successful update count (clamped between 0-4+) |
Example request:
https://easylist-downloads.adblockplus.org/exceptionrules.txt?addonName=eyeo-chromium-sdk&addonVersion=1.0&application=Chromium&applicationVersion=110.0.5476.3&platform=Linux&platformVersion=1.0&lastVersion=202301021041&disabled=false&downloadCount=3
Periodic pings for Acceptable Ads
When Acceptable Ads is disabled, the SDK sends HEAD-type requests every 24 hours to maintain user awareness. These ping requests omit filter list content:
https://easylist-downloads.adblockplus.org/exceptionrules.txt?addonName=eyeo-chromium-sdk&...&disabled=true
Periodic updates
To verify filter list expiration handling:
-
Allow default lists to download completely
-
Force stop the app (Android)
-
Advance device time by 25 hours
-
Relaunch the app
-
Observe increased
downloadCountin requests -
Check system logs for update confirmations
Sample log output:
... [eyeo] Running update check
... [eyeo] Updating expired subscription https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt
... [eyeo] Downloading https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt?...&downloadCount=4+
... [eyeo] Finished downloading ... successfully
Verifying Eyeometry
Eyeometry tracks active users. The browser sends pings every 12 hours:
... [eyeo] Telemetry request for https://eyeo-chromium.telemetry.eyeo.com/topic/eyeochromium_activeping/version/1 is due
... [eyeo] Sending request to: https://eyeo-chromium.telemetry.eyeo.com/topic/eyeochromium_activeping/version/1
... [eyeo] Telemetry ping succeeded
Missing configuration warnings:
-
Without a valid client ID: "Users will not be counted correctly by eyeo"
-
Without auth token: "Users will not be counted correctly by eyeo"
Set these via GN build arguments: eyeo_telemetry_client_id and eyeo_telemetry_activeping_auth_token
Logging
Four logging levels exist:
-
LOG(INFO/WARNING/ERROR) – appears in all builds; emitted infrequently
-
DLOG(INFO/WARNING/ERROR) – debug builds only
-
VLOG(1/2/3/...) – all builds with vmodule flag set
-
DVLOG(1/2/3/...) – VLOG equivalent for debug builds only
Logs output to system console (standard output), not Developer Tools console.
Enabling VLOG/DVLOG
Android:
adb shell 'echo _ --enable-logging=stderr --vmodule="*subscription*=1,*activeping*=1,*adblock*=1,*converter*=1,*filtering_configuration*=1" > /data/local/tmp/chrome-command-line'
Then launch the app and run adb logcat to view logs.
Check flags: adb shell 'cat /data/local/tmp/chrome-command-line'
Clear flags: adb shell 'rm /data/local/tmp/chrome-command-line'
Desktop:
--enable-logging=stderr --vmodule="*subscription*=1,*activeping*=1,*adblock*=1,*converter*=1,*filtering_configuration*=1"