LibWebRTCRtpReceiverBackend::getSynchronizationSources should use Vector::append
[WebKit-https.git] / LayoutTests / webrtc / getUserMedia-webaudio-autoplay.html
1 <!doctype html>
2 <html>
3     <head>
4         <meta charset="utf-8">
5         <title>Testing webaudio autoplay in case of camera capture</title>
6         <script src="../resources/testharness.js"></script>
7         <script src="../resources/testharnessreport.js"></script>
8     </head>
9     <body>
10         <script>
11 test(() => {
12     assert_true(!!window.internals, "Test requires internals API");
13
14     var context = new webkitAudioContext();
15     internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
16
17     var node = context.createBufferSource();
18     node.connect(context.destination);
19     node.start();
20 }, "Ensuring autoplay does not work when starting an audio node and getUserMedia is off");
21
22 promise_test((test) => {
23     if (!window.internals)
24         return Promise.reject("Test requires internals API");
25
26     var context = new webkitAudioContext();
27     internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
28
29     var node = context.createBufferSource();
30     node.connect(context.destination);
31
32     var resolve, reject;
33     var promise = new Promise((res, rej) => {
34         resolve = res;
35         reject = rej;
36     });
37     context.resume().then(() => {
38         reject("context should not have resumed");
39     });
40     setTimeout(() => {
41         resolve();
42     }, 50);
43     return promise;
44 }, "Ensuring autoplay works when resuming audio context and getUserMedia is off");
45
46 promise_test((test) => {
47     if (!window.internals)
48         return Promise.reject("Test requires internals API");
49     return navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => {
50         var context = new webkitAudioContext();
51         internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
52
53         var node = context.createBufferSource();
54         node.connect(context.destination);
55         node.start();
56     });
57 }, "Ensuring autoplay works when starting an audio node and getUserMedia is on");
58
59 promise_test((test) => {
60     if (!window.internals)
61         return Promise.reject("Test requires internals API");
62     return navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => {
63         var context = new webkitAudioContext();
64         internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
65
66         var node = context.createBufferSource();
67         node.connect(context.destination);
68         return context.resume();
69     });
70 }, "Ensuring autoplay works when resuming audio context and getUserMedia is on");
71         </script>
72     </body>
73 </html>