Testing (Browser Ad-Filtering Solution)

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

  1. Select "Custom Filter Lists" in More Blocking Options

  2. Enter https://abptestpages.org/en/abp-testcase-subscription.txt

  3. Navigate to the Blocking test page

  4. Verify green boxes appear per test descriptions

Custom Filters Approach

  1. Visit ABP Test Pages and select a test page

  2. Copy the filter code from the testpage

  3. Paste into "Custom Filters" field

  4. 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

eyeo-chromium-sdk

addonVersion

1.0

application

Product name

applicationVersion

Chromium version or custom override

platform

Windows, MacOSX, Linux, or Android

platformVersion

1.0

lastVersion

Filter list version (e.g., 202111101251), or 0 for new downloads

disabled

true if Acceptable Ads disabled; false if enabled

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:

  1. Allow default lists to download completely

  2. Force stop the app (Android)

  3. Advance device time by 25 hours

  4. Relaunch the app

  5. Observe increased downloadCount in requests

  6. 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:

  1. LOG(INFO/WARNING/ERROR) – appears in all builds; emitted infrequently

  2. DLOG(INFO/WARNING/ERROR) – debug builds only

  3. VLOG(1/2/3/...) – all builds with vmodule flag set

  4. 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:

Bash
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:

Bash
--enable-logging=stderr --vmodule="*subscription*=1,*activeping*=1,*adblock*=1,*converter*=1,*filtering_configuration*=1"