Refactoring: Pull all fullscreen code out of Document and into its own helper class
[WebKit-https.git] / LayoutTests / webaudio / audiocontext-restriction.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 context.resume() with a user gesture');
42             context.resume().then(resumeSucceeded, resumeFailed);
43             calledResumeWithUserGesture = true;
44         });
45     }, 100);
46 }
47
48 function noUserGestureResumeFailed() {
49     testFailed('context.resume() (without a user gesture) promise rejected');
50     finishJSTest();
51 }
52
53 function noUserGestureResumeSucceeded() {
54     if (!calledResumeWithUserGesture) {
55         testFailed('context.resume() (without a user gesture) suceeded incorrectly.');
56         finishJSTest();
57         return;
58     }
59     testPassed('context.resume() (without a user gesture) promise resolved');
60     shouldBe('context.state', '"running"');
61 }
62
63 function resumeFailed() {
64     testFailed('context.resume() (with a user gesture) promise rejected');
65     finishJSTest();
66 }
67
68 function resumeSucceeded() {
69     testPassed('context.resume() (with a user gesture) promise resolved');
70     shouldBe('context.state', '"running"');
71     finishJSTest();
72 }
73
74 runTest();
75
76 </script>
77 </body>
78 </html>