Refactoring: Pull all fullscreen code out of Document and into its own helper class
[WebKit-https.git] / LayoutTests / webaudio / audiocontext-state.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
19 function runTest() {
20     window.jsTestIsAsync = true;
21
22     context = new webkitAudioContext();
23
24     shouldBe('context.state', '"suspended"');
25
26     node = context.createBufferSource();
27     evalAndLog('node.connect(context.destination)');
28
29     shouldBe('context.state', '"running"');
30
31     debug('Calling context.suspend()');
32     context.suspend().then(suspendSucceeded, suspendFailed);
33 }
34
35 function suspendFailed() {
36     testFailed('context.suspend() promise rejected');
37     finishJSTest();
38 }
39
40 function suspendSucceeded(value) {
41     if (typeof value != 'undefined') {
42         testFailed('context.suspend() promise should not resolve with a value.');
43         finishJSTest();
44         return;
45     }
46     testPassed('context.suspend() promise resolved');
47     shouldBe('context.state', '"suspended"');
48
49     debug('Calling context.resume()');
50     context.resume().then(resumeSucceeded, resumeFailed);
51 }
52
53 function resumeFailed() {
54     testFailed('context.resume() promise rejected');
55     finishJSTest();
56 }
57
58 function resumeSucceeded(value) {
59     if (typeof value != 'undefined') {
60         testFailed('context.resume() promise should not resolve with a value.');
61         finishJSTest();
62         return;
63     }
64     testPassed('context.resume() promise resolved');
65     shouldBe('context.state', '"running"');
66
67     debug('Calling context.close()');
68     context.close().then(closeSucceeded, closeFailed);
69 }
70
71 function closeFailed() { 
72     testFailed('context.close() promise rejected');
73     finishJSTest();
74 }
75
76 function closeSucceeded(value) {
77     if (typeof value != 'undefined') {
78         testFailed('context.closed() promise should not resolve with a value.');
79         finishJSTest();
80         return;
81     }
82     testPassed('context.close() promise resolved');
83     shouldBe('context.state', '"closed"');
84
85     debug('Calling context.resume() (should fail)');
86     context.resume().then(resumeSucceededIncorrectly, resumeFailedCorrectly);
87 }
88
89 function resumeSucceededIncorrectly() {
90     testFailed('context.resume() promise resolved (should have rejected)');
91     finishJSTest();
92 }
93
94 function resumeFailedCorrectly(value) {
95     testPassed('context.resume() promise rejected (correctly)');
96     if (typeof value != 'undefined')
97         testFailed('No value should be passed to the context.resume() promise rejected callback');
98     shouldBe('context.state', '"closed"');
99
100     debug('Calling context.suspend() (should fail)');
101     context.suspend().then(suspendSucceededIncorrectly, suspendFailedCorrectly);
102 }
103
104 function suspendSucceededIncorrectly() {
105     testFailed('context.suspend() promise resolved (should have rejected)');
106     finishJSTest();
107 }
108
109 function suspendFailedCorrectly() {
110     testPassed('context.suspend() promise rejected (correctly)');
111     if (typeof value != 'undefined')
112         testFailed('No value should be passed to the context.suspend() promise rejected callback');
113     shouldBe('context.state', '"closed"');
114     finishJSTest();
115 }
116
117 runTest();
118
119 </script>
120 </body>
121 </html>