summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/resources/extensions/tab_capture_custom_bindings.js
blob: 0e285d2508c93bffba99247ac313960b0c816a0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 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();