demo · v136

Captured Surface Control

Start a tab capture, then send synthetic scroll and zoom commands into the captured tab from the capturer. Every call returns whether the underlying surface accepted it.

Probing…
Origin trial / flag — Captured Surface Control shipped in Chrome 136 as an origin-trial and flag-gated API. To actually run this, enable chrome://flags/#captured-surface-control or join the origin trial. The capability probe and action log still show the graceful fallback when the API is unavailable.
Permission — on first call, the captured tab's user must grant the "control capture" permission prompt. Picking your own tab while testing tends to be rejected by Chrome; pick another open tab.

Control

controllernone
getSupportedZoomLevels()
getZoomLevel()

action log

the code

const stream = await navigator.mediaDevices.getDisplayMedia();
const [track] = stream.getVideoTracks();

const ctrl = new CaptureController();
await navigator.mediaDevices.getDisplayMedia({ controller: ctrl });

// Scroll the captured surface
await ctrl.forwardWheel({ deltaY: 200 });

// Zoom
const levels = ctrl.getSupportedZoomLevels(); // [100, 110, 125, 150, ...]
await ctrl.setZoomLevel(125);

see also