 Chromium Code Reviews
 Chromium Code Reviews Issue 11038021:
  Implement Chrome Extension TabCapture API.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 11038021:
  Implement Chrome Extension TabCapture API.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| Index: chrome/renderer/resources/extensions/experimental.tab_capture_custom_bindings.js | 
| diff --git a/chrome/renderer/resources/extensions/experimental.tab_capture_custom_bindings.js b/chrome/renderer/resources/extensions/experimental.tab_capture_custom_bindings.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..c0df1e6484507ec1245aa728b512628f0c3cdaf6 | 
| --- /dev/null | 
| +++ b/chrome/renderer/resources/extensions/experimental.tab_capture_custom_bindings.js | 
| @@ -0,0 +1,54 @@ | 
| +// 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. | 
| + | 
| +// Custom bindings for the Tab Capture API. | 
| + | 
| +var tabCaptureNatives = requireNative('experimental_tabCapture'); | 
| +var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 
| + | 
| +chromeHidden.registerCustomHook('experimental.tabCapture', | 
| + function(bindingsAPI, extensionId) { | 
| + var apiFunctions = bindingsAPI.apiFunctions; | 
| + | 
| + apiFunctions.setCustomCallback('getTabMedia', | 
| + function(name, request, response) { | 
| + if (response && request.callback) { | 
| + var callback = request.callback; | 
| + var successFunc = function(stream) { | 
| + callback(stream); | 
| + }; | 
| + var errorFunc = function() { | 
| + callback(null); | 
| + }; | 
| + var videoConstraints = false; | 
| + var audioConstraints = false; | 
| + | 
| + // TODO(justinlin): Merge with other constraints when they land. | 
| + if (response.options.video) { | 
| + videoConstraints = { | 
| + mandatory: { | 
| + chromeMediaSource: 'tab', | 
| + chromeMediaSourceId: response.deviceId | 
| + } | 
| + }; | 
| + } | 
| + | 
| + if (response.options.audio) { | 
| + audioConstraints = { | 
| + mandatory: { | 
| + chromeMediaSource: 'tab', | 
| + chromeMediaSourceId: response.deviceId | 
| + } | 
| + }; | 
| + } | 
| + | 
| + var options = {}; | 
| + options.video = videoConstraints; | 
| + options.audio = audioConstraints; | 
| + | 
| + navigator.webkitGetUserMedia(options, successFunc, errorFunc); | 
| 
Aaron Boodman
2012/10/04 07:21:43
What prevents bad extensions from just calling thi
 
justinlin
2012/10/08 09:58:31
Do you mean what prevents any normal page calling
 | 
| + } | 
| + request.callback = null; | 
| + }); | 
| +}); |