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:
git checkout eyeo-release-113.0.5672.76-v1-modules
Or download via wget:
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:
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:
git diff 113.0.5672.76 eyeo-release-113.0.5672.76-v1 > ../eyeo-release-113.0.5672.76-v1.diff
Applying patch:
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:
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