forked from webrtcHacks/adapter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetusermedia-mocha.js
57 lines (53 loc) · 1.54 KB
/
getusermedia-mocha.js
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
/*
* 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 */
'use strict';
/* wrap navigator.getUserMedia and navigator.mediaDevices.getUserMedia
* so that any streams acquired are released after each test.
*/
beforeEach(() => {
let streams = [];
let release = () => {
streams.forEach((stream) => {
stream.getTracks().forEach((track) => {
track.stop();
});
});
streams = [];
};
let 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();
};
let origMediaDevicesGetUserMedia =
navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);
navigator.mediaDevices.getUserMedia = (constraints) => {
return origMediaDevicesGetUserMedia(constraints, (stream) => {
streams.push(stream);
return stream;
});
};
navigator.mediaDevices.getUserMedia.restore = () => {
navigator.mediaDevices.getUserMedia = origMediaDevicesGetUserMedia;
release();
};
});
afterEach(() => {
navigator.getUserMedia.restore();
navigator.mediaDevices.getUserMedia.restore();
});