Index: chrome/common/extensions/api/tab_capture.idl |
diff --git a/chrome/common/extensions/api/tab_capture.idl b/chrome/common/extensions/api/tab_capture.idl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4771fefe1d72f75a0bcf6eeecf94b1f7fff1a680 |
--- /dev/null |
+++ b/chrome/common/extensions/api/tab_capture.idl |
@@ -0,0 +1,62 @@ |
+// 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. |
+ |
+// An API for tab media streams. |
+ |
+namespace tabCapture { |
+ |
+ enum TabCaptureState { |
+ requested, |
+ 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; |
+ }; |
+ |
+ dictionary CaptureOptions { |
+ boolean? audio; |
+ boolean? video; |
+ }; |
+ |
+ callback GetTabMediaCallback = |
+ void ([instanceOf=LocalMediaStream] optional object stream); |
+ |
+ callback GetCapturedTabsCallback = |
+ void (CaptureInfo[] result); |
+ |
+ interface Functions { |
+ // Captures the visible area of the tab with the given tabId. |
+ // Extensions must have the "tabCapture" permission to use this method. |
+ // |tabId| : The tabId of the tab to capture. Defaults to the active tab. |
+ // |options| : Configures the returned media stream. |
+ // |callback| : Callback with either the stream returned or null. |
+ static void capture(optional long tabId, |
+ optional 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); |
+ }; |
+ |
+}; |