001Notes
Where a Website Meets Chromium
On this page13
A process-by-process map of Chromium, the hardened fork's hook points, and how website-visible decisions cross Blink, Content, Chrome, services, and local automation.
Article details
- Status
- Building Publicly
- Subcategory
- Hardened Chromium
- Last reviewed
- 7 Sept 2026
13 sections
The short version
flowchart LR
Site[Website JavaScript] --> Blink[Blink DOM and Web APIs]
Blink --> Renderer[Sandboxed renderer process]
Renderer <-->|Mojo IPC| Content[Content browser layer]
Content --> Chrome[Chrome UI, profiles, permissions]
Content --> Utility[Audio/video/utility processes]
Utility --> Device[OS or private media source]
Content --> PM[Performance Manager]
The layers we changed
| Layer | What it normally owns | Hardened work in this layer |
|---|---|---|
| Blink Core | Documents, focus, events, selection, input, windows, screens | Visibility and focus values, event suppression, user selection, native defaults, current-screen view |
| Blink Modules | Self-contained Web APIs | Private Async Clipboard behavior, idle changes, API exposure |
| Content | Browser-side embedding and renderer coordination | Page lifecycle, geolocation policy, media enumeration, command-line propagation |
| Chrome | Product UI and profile behavior | Permission source selectors, colored browser boundaries, Website View settings |
| Media and services | Physical and synthetic capture implementations | Combined real/private camera and microphone factories |
| Performance Manager | Freezing, discarding, resource policy | Foreground-style treatment and automatic-discard prevention |
| Local tools | Launch, automation, application integration | Profile launcher, authenticated broker, service ownership, feeds, diagnostics |
Renderer-side facts
Browser-side authority
Chrome UI is a separate policy surface
sequenceDiagram
participant U as User
participant S as chrome://settings
participant H as WebsiteViewHandler
participant P as Profile JSON
participant C as Content policy cache
participant W as Website
U->>S: Edit and save policy
S->>H: WebUI message
H->>P: Atomic write
C->>P: Asynchronous refresh
W->>C: Request camera/mic/location
C-->>W: Exact-origin or profile-default source
Media crosses another boundary
Runtime flags and process launch
A second architecture: applications around the browser
flowchart LR
AppA[Local app A] --> Service[hardened-chromium-service]
AppB[Local app B] --> Service
Service --> Broker[Authenticated loopback broker]
Broker -->|private CDP| Browser[One visible Chromium process]
Browser --> TabA[App A tab]
Browser --> TabB[App B tab]
Broker --> Output[JSON, CSV, RSS, Atom, HTML]