Chromium Code Reviews| 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; |
| + }); |
| +}); |