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:
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 process. 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 ThreadPool. Examples of such code: