File: getusermedia-mocha.js

package info (click to toggle)
libjs-webrtc-adapter 8.2.3~ds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 528 kB
  • sloc: javascript: 4,674; makefile: 38; sh: 1
file content (60 lines) | stat: -rw-r--r-- 1,677 bytes parent folder | download
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
 *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree.
 */
/* eslint-env node */
/* global beforeEach, afterEach */

/* wrap navigator.getUserMedia and navigator.mediaDevices.getUserMedia
 * so that any streams acquired are released after each test.
 */
beforeEach(() => {
  const streams = [];
  const release = () => {
    streams.forEach((stream) => {
      stream.getTracks().forEach((track) => track.stop());
    });
    streams.length = 0;
  };

  if (navigator.getUserMedia) {
    const origGetUserMedia = navigator.getUserMedia.bind(navigator);
    navigator.getUserMedia = (constraints, cb, eb) => {
      origGetUserMedia(constraints, (stream) => {
        streams.push(stream);
        if (cb) {
          cb.apply(null, [stream]);
        }
      }, eb);
    };
    navigator.getUserMedia.restore = () => {
      navigator.getUserMedia = origGetUserMedia;
      release();
    };
  }

  const origMediaDevicesGetUserMedia =
      navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);
  navigator.mediaDevices.getUserMedia = (constraints) => {
    return origMediaDevicesGetUserMedia(constraints)
      .then((stream) => {
        streams.push(stream);
        return stream;
      });
  };
  navigator.mediaDevices.getUserMedia.restore = () => {
    navigator.mediaDevices.getUserMedia = origMediaDevicesGetUserMedia;
    release();
  };
});

afterEach(() => {
  if (navigator.getUserMedia) {
    navigator.getUserMedia.restore();
  }
  navigator.mediaDevices.getUserMedia.restore();
});