Constants

Shared constants for the IP Protection feature live in content/ipprotection-constants.mjs and are imported by both the chrome-side modules and the content-side UI components.

Error Codes

The ERRORS object collects all error string constants used across the feature. Each value is a stable identifier that travels as a rejection reason or a state payload through the proxy activation pipeline and into the UI layer.

ERRORS.GENERIC

Catch-all fallback used when no more-specific code is available. The UI surfaces a generic error message.

ERRORS.NETWORK

The device is offline at activation time. The UI renders a dedicated network error message distinct from the generic one.

ERRORS.TIMEOUT

Activation exceeded the 30-second deadline. The activation is aborted and the proxy moves to the ERROR state.

ERRORS.PASS_UNAVAILABLE

The server did not return a valid proxy pass during activation.

ERRORS.SERVER_NOT_FOUND

No proxy server is available for the default location.

ERRORS.MISSING_PROMISE

Internal consistency guard: the activation promise was unexpectedly absent while the proxy was in the ACTIVATING state. Should never occur in normal operation.

ERRORS.MISSING_ABORT

Internal consistency guard: the abort controller was unexpectedly absent while stopping an in-progress activation. Should never occur in normal operation.

Error propagation

Errors thrown inside IPPProxyManager.start() are caught by the activation promise. The proxy reverts to its previous state (typically READY) and the promise resolves with { started: false, error }. The panel reads the error code from this result to determine which message to show.

Errors that occur while the proxy is already ACTIVE (such as a pass rotation failure) move the state machine to IPPProxyStates.ERROR; in that case the panel always surfaces them as a generic error.

ERRORS.NETWORK is the only code that maps to a dedicated network error message in the UI; all other codes surface as a generic error.

ERRORS.MISSING_PROMISE and ERRORS.MISSING_ABORT are thrown directly from start() or stop() as Error objects and bypass the activation promise; they represent internal consistency violations and do not affect proxy state.