| // 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 binding for the Tab Capture API. |
| |
| var binding = require('binding').Binding.create('tabCapture'); |
| |
| binding.registerCustomHook(function(bindingsAPI, extensionId) { |
| var apiFunctions = bindingsAPI.apiFunctions; |
| |
| apiFunctions.setCustomCallback('capture', function(name, request, response) { |
| if (response && request.callback) { |
| var callback = request.callback; |
| var options = {}; |
| if (response.audioConstraints) |
| options.audio = response.audioConstraints; |
| if (response.videoConstraints) |
| options.video = response.videoConstraints; |
| |
| try { |
| navigator.webkitGetUserMedia(options, |
| function(stream) { callback(stream); }, |
| function() { callback(null); }); |
| } catch (e) { |
| callback(null); |
| } |
| } else { |
| request.callback(null); |
| } |
| request.callback = null; |
| }); |
| }); |
| |
| exports.binding = binding.generate(); |