blob: 7e3e2a2567f560f3dcc4939ebe1eb080e538d149 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Use the <code>chrome.tabCapture</code> API to interact with tab media
// streams.
namespace tabCapture {
enum TabCaptureState {
pending,
active,
stopped,
error
};
dictionary CaptureInfo {
// The id of the tab whose status changed.
long tabId;
// The new capture status of the tab.
TabCaptureState status;
// Whether an element in the tab being captured is in fullscreen mode.
boolean fullscreen;
};
// MediaTrackConstraints for the media streams that will be passed to WebRTC.
// See section on MediaTrackConstraints:
// http://dev.w3.org/2011/webrtc/editor/getusermedia.html
dictionary MediaStreamConstraint {
object mandatory;
object? _optional;
};
// Whether we are requesting tab video and/or audio and the
// MediaTrackConstraints that should be set for these streams.
dictionary CaptureOptions {
boolean? audio;
boolean? video;
MediaStreamConstraint? audioConstraints;
MediaStreamConstraint? videoConstraints;
};
callback GetTabMediaCallback =
void ([instanceOf=LocalMediaStream] object stream);
callback GetCapturedTabsCallback = void (CaptureInfo[] result);
interface Functions {
// Captures the visible area of the currently active tab.
// This method can only be used on the currently active page after the
// extension has been <em>invoked</em>, similar to the way that
// <a href="activeTab.html">activeTab</a> works.
// |options| : Configures the returned media stream.
// |callback| : Callback with either the stream returned or null.
static void capture(CaptureOptions options,
GetTabMediaCallback callback);
// Returns a list of tabs that have requested capture or are being
// captured, i.e. status != stopped and status != error.
// This allows extensions to inform the user that there is an existing
// tab capture that would prevent a new tab capture from succeeding (or
// to prevent redundant requests for the same tab).
static void getCapturedTabs(GetCapturedTabsCallback callback);
};
interface Events {
// Event fired when the capture status of a tab changes.
// This allows extension authors to keep track of the capture status of
// tabs to keep UI elements like page actions and infobars in sync.
static void onStatusChanged(CaptureInfo info);
};
};