gitlabEdit

Services and classes

This page lists the services and classes important to the eyeo Browser Ad-Filtering Solution, as well as the role each plays in the Solution's implementation.

Services

The Solution consists of the following main KeyedService services:

  • FilteringConfiguration; allows the control of resource filtering settings

  • SubscriptionService; maintains a state of available subscriptions and synchronizes it with persistent storage.

  • ResourceClassificationRunner; decides whether to block or allow network requests.

  • ElementHider; applies element hiding scripts and stylesheets on web pages.

  • AdblockTelemetryService; reports anonymous usage statistics to eyeo.

  • SitekeyStorage; extracts, validates, and stores SiteKeys from response headers.

Important Chromium classes

The following Chromium classes play an important role in the Solution's implementation:

  • RenderFrameHost; allows finding the frame hierarchy and executes element hiding CSS and JavaScript.

  • WebContentsObserver; receives page load events and injects element hiding; extended by AdblockWebContentsObserver.

  • ChromeContentBrowserClient ; extended by AdblockChromeContentBrowserClient in order to set up an internal proxy for inspecting network requests.

Mapping to Chromium processes and threads

The Solution's logic executes primarily in the Browser processarrow-up-right. The only exception is code under third_party/blink/renderer/core/exported/web_document.cc that injects element hiding stylesheets into the website - this runs in a Renderer process.

In the Browser process, code that might take a long time to execute runs asynchronously in the ThreadPoolarrow-up-right. Examples of such code:

  • Classification of network requests

  • Preparing element hiding selectors

  • Conversion/serialization of filter lists

  • Loading installed filter lists from disk

Last updated