# IP Protection

This document describes the implementation of the IP Protection feature in Firefox.

The code is split across two directories:

- `toolkit/components/ipprotection` — platform-independent core: the state machine,
  the proxy/network stack, and all core helpers. This layer has no dependency on
  browser UI or chrome.
- `browser/components/ipprotection` — browser-specific UI layer: the panel, toolbar
  button, alert and infobar managers, and onboarding helpers.

Each layer is composed of three major areas:

- A finite-state machine managed by the main component: `IPProtectionService` (toolkit).
- The UI, controlled by `IPProtection` and `IPProtectionPanel` (browser).
- The proxy/network controller: `IPPProxyManager` and helper classes (toolkit).

The two layers are wired together by `IPProtectionActivator` (toolkit), which
assembles the full helper list and initialises the service.

See the following pages for details on components, preferences, and the state machine.

```{toctree}
Components
Constants
Preferences
StateMachine
BandwidthUsageDisplay
```
