• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Custom binding for the Tab Capture API.
6
7var binding = require('binding').Binding.create('tabCapture');
8
9binding.registerCustomHook(function(bindingsAPI, extensionId) {
10  var apiFunctions = bindingsAPI.apiFunctions;
11
12  apiFunctions.setCustomCallback('capture', function(name, request, response) {
13    if (response && request.callback) {
14      var callback = request.callback;
15      var options = {};
16      if (response.audioConstraints)
17        options.audio = response.audioConstraints;
18      if (response.videoConstraints)
19        options.video = response.videoConstraints;
20
21      try {
22        navigator.webkitGetUserMedia(options,
23                                     function(stream) { callback(stream); },
24                                     function() { callback(null); });
25      } catch (e) {
26        callback(null);
27      }
28    } else {
29      request.callback(null);
30    }
31    request.callback = null;
32  });
33});
34
35exports.binding = binding.generate();
36