Integrate the Solution

Integrate the Solution

Overview

This guide explains how to incorporate eyeo's Browser Ad-Filtering Solution into Chromium-based browser projects through various integration approaches.

Integration Strategies

Four distinct methods are available for integrating eyeo's ad-filtering capabilities:

Strategy 1: Base Your Product on eyeo's Changes

Recommended approach by eyeo.

Process: Fork eyeo's Chromium repository and build development on the release tag.

Advantages:

  • It's the safest and most reliable way to integrate eyeo's Browser Ad-Filtering Solution

  • Full support from eyeo

  • Users receive email notifications when new versions release

  • eyeo targets beta releases one week before Chromium stable cut and official releases within ten business days

Requirements:

  • Use eyeo's tagged release commit as parent of your changes

  • Clone eyeo's Chromium fork and add your modifications

  • Reference the quickstart guide for detailed instructions

  • Ensure users understand ad blocking and Acceptable Ads features

Strategy 2: Download Modules and Apply Them

Process: Select and apply specific modules to your existing source code.

Advantages:

  • Access major Solution functionalities

  • Import only relevant code without internal eyeo testing files

  • Granular implementation of needed features

Tradeoffs:

  • More complex than Strategy 1

  • Requires Chromium version matching the Solution version

Module Location and Retrieval:

Modules stored in src/eyeo-modules directory, identified by -modules suffix tags:

Bash
git checkout eyeo-release-113.0.5672.76-v1-modules

Or download via wget:

Bash
wget "https://gitlab.com/eyeo/adblockplus/chromium-sdk/-/archive/eyeo-release-113.0.5672.76-v1-modules/chromium-sdk-eyeo-release-113.0.5672.76-v1-modules.zip?path=eyeo_modules" -O chromium-sdk-eyeo-release-113.0.5672.76-v1-modules.zip

Module Dependencies:

  • base.patch (apply first) - Provides core ad-filtering engine with latest features. Requires separate UI and settings implementation.

  • chrome_integration.patch - Enables Chromium browser integration. Requires: base.patch

  • webview_integration.patch - Enables Chromium WebView component integration. Requires: base.patch

  • android_api.patch - Provides Android Java API for engine interaction. Compatible with: chrome_integration.patch or webview_integration.patch

  • android_settings.patch - Introduces Android Settings UI as Chromium settings page. Supports multi-language translations. Requires: android_api.patch + chrome_integration.patch

  • extension_api.patch - Enables extension-based settings management. No extension included. Requires: chrome_integration.patch

  • content_shell.patch - Adds content layer integration for specific build targets. Requires: base.patch

Application:

Bash
git am eyeo_modules/base.patch

Strategy 3: Create and Apply Patch File

Process: Generate a diff between standard Chromium and eyeo's modified version, then apply it.

Advantages:

  • Access to major Solution functionalities

Tradeoffs:

  • Higher conflict risk between eyeo and partner changes

  • More complex than Strategy 1

  • Potential information loss reducing support capability

  • Complicated conflict resolution required

Generating patch:

Bash
git diff 113.0.5672.76 eyeo-release-113.0.5672.76-v1 > ../eyeo-release-113.0.5672.76-v1.diff

Applying patch:

Bash
git apply ../eyeo-release-113.0.5672.76-v1.diff

Strategy 4: Copy Functionality Into Your Adaptation

Process: Manually copy eyeo's code into your project.

Advantages:

  • Access to major Solution functionalities

Tradeoffs:

  • Highest conflict risk between eyeo and partner changes

  • Most complex approach (tied with Strategy 3)

  • Additional information gets lost, which reduces eyeo's ability to provide support

  • Manual, error-prone implementation

Requirements:

  • Track all changed files individually

  • Apply changes sequentially

  • Ensure filter options, UI elements, and user counting features match contract terms

  • Verify user counting and ad filtering/whitelisting functionality

Automation Considerations

When automating implementation steps:

  • Create scripts automating the process

  • Update scripts when branch/tag naming or release flow changes

  • Evaluate whether time savings justify script development and testing efforts

  • Contact eyeo for guidance on automation feasibility

Versioning Scheme

eyeo follows this tag format: eyeo-release-[CHROMIUM_VERSION]-v[PATCH]

Example: Chromium 113.0.5672.76 corresponds to eyeo tag eyeo-release-113.0.5672.76-v1

Release Availability:

Typically one release tag per major Chromium version. Patch releases available for critical bugs.

Finding Solution releases:

Bash
git ls-remote --tags https://gitlab.com/eyeo/adblockplus/chromium-sdk
git tag | grep release-103
eyeo-release-113.0.5672.76-v1

Source: Integrate the Solution