15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Custom binding for the Tab Capture API. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)var binding = require('binding').Binding.create('tabCapture'); 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)binding.registerCustomHook(function(bindingsAPI, extensionId) { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var apiFunctions = bindingsAPI.apiFunctions; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) apiFunctions.setCustomCallback('capture', function(name, request, response) { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (response && request.callback) { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var callback = request.callback; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var options = {}; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (response.audioConstraints) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) options.audio = response.audioConstraints; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (response.videoConstraints) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) options.video = response.videoConstraints; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) try { 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) navigator.webkitGetUserMedia(options, 231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) function(stream) { callback(stream); }, 241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) function() { callback(null); }); 251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } catch (e) { 261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) callback(null); 271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) request.callback(null); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.callback = null; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)exports.binding = binding.generate(); 36