| // 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); |
| }; |
| |
| }; |