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
- Captured Surface Control — feature index
- ChromeStatus entry
- CSC spec draft