WebProcessCache should keep track of processes being added
[WebKit-https.git] / LayoutTests / webaudio / audiocontext-restriction-audiobuffersourcenode-start.html
1 <!DOCTYPE html>
2
3 <html>
4 <head>
5 <script src="../resources/js-test.js"></script>
6 <script type="text/javascript" src="resources/audio-testing.js"></script>
7 </head>
8
9 <body>
10 <div id="description"></div>
11 <div id="console"></div>
12
13 <script>
14 description('Basic tests for AudioNode API.');
15
16 var context = null;
17 var node = null;
18 var calledResumeWithUserGesture = false;
19
20 function runTest() {
21     window.jsTestIsAsync = true;
22
23     context = new webkitAudioContext();
24
25     if (window.internals)
26         internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
27
28     shouldBe('context.state', '"suspended"');
29
30     node = context.createBufferSource();
31     evalAndLog('node.connect(context.destination)');
32
33     shouldBe('context.state', '"suspended"');
34
35     debug('Calling context.resume() without a user gesture');
36     context.resume().then(noUserGestureResumeSucceeded, noUserGestureResumeFailed);
37
38     debug('Wait for 100ms');
39     window.setTimeout(function() {
40         runWithKeyDown(function() {
41             debug('Calling node.start() with a user gesture');
42             node.start();
43         });
44     }, 100);
45 }
46
47 function noUserGestureResumeFailed() {
48     testFailed('context.resume() (without a user gesture) promise rejected');
49     finishJSTest();
50 }
51
52 function noUserGestureResumeSucceeded() {
53     testPassed('context.resume() (without a user gesture) promise resolved');
54     shouldBe('context.state', '"running"');
55     finishJSTest();
56 }
57
58 runTest();
59
60 </script>
61 </body>
62 </html>