Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / ManualTests / webaudio / suspend-resume-2.html
blob6a2cd6136f2408ba92b5dbdbc20019a5a5a7132a
1 <!doctype html>
2 <html>
3 <head>
4 <title>Test suspend()resume()</title>
5 <style type="text/css">
6 header {
7 margin: 20px 0;
9 #results {
10 white-space: pre;
11 font-family: monospace;
13 </style>
14 </head>
16 <body>
17 <h1>Test suspend()/resume()</h1>
19 <p>
20 The functionality of suspend()/resume() can't currently be tested with an OfflineAudioContext,
21 so they need to be tested manually here.
22 </p>
23 <p>
24 You may want to open up a console window to see the messages, in addition to viewing the
25 messages in the Results area below.
26 </p>
28 <h2>Test 1</h2>
29 <p>
30 Test for <a href="crbug.com/483002">issue 483002</a>
31 </p>
32 <p>
33 Perform the following steps
34 <ol>
35 <li>
36 Start Test: you should hear a tone.
37 </li>
38 <li>
39 Run Test: This runs the test. You may press this multiple times. Each press should cause
40 "suspended" and "running" to be printed out in the Results section below and in the
41 console.
42 </li>
43 <li>
44 End Test: Press this to end the test and stop the audio.
45 </li>
46 </ol>
47 </p>
48 <button onclick="test1Start()">Test 1: Start Test</button>
49 <button onclick="test1Run()">Test 1: Run Test</button>
50 <button onclick="test1End()">Test 1: End Test</button>
51 <br></br>
53 <h2>Test 2</h2>
54 <p>
55 Test for <a href="crbug.com/483269">issue 483269</a>
56 </p>
57 <p>
58 Perform the following steps
59 <ol>
60 <li>
61 Start Test: you should hear a tone. Wait a little bit before proceeding.
62 </li>
63 <li>
64 Run Test: You may press this multiple times. This calls suspend()/resume() multiple times.
65 The tone should stop momentarily, but restart very quickly. You should still hear the
66 tone.
67 </li>
68 <li>
69 End Test: Stops the tone.
70 </li>
71 </ol>
72 </p>
73 <p>
74 If you do not hear a tone after running the test (but before ending), the test has failed.
75 </p>
76 <button onclick="test2Start()">Test 2: Start Test</button>
77 <button onclick="test2Run()">Test 2: Run Test </button>
78 <button onclick="test2End()">Test 2: End Test </button>
80 <header>Results</header>
81 <div id="results"></div>
83 <script>
84 var context = new AudioContext();
85 var testCount = 0;
86 var oscillator;
88 function test1Start() {
89 oscillator = context.createOscillator();
90 oscillator.connect(context.destination);
91 oscillator.start();
92 log("Test 1 Start");
95 function test1Run() {
96 testCount += 1;
97 context.suspend().then(function () {
98 log(context.state, testCount);
99 return context.resume().then(function () {
100 log(context.state, testCount);
101 }, function (e) {
102 log("Failed to resume context: " + e, testCount);
104 }, function (e) {
105 log("Failed to suspend context: " + e, testCount);
106 }).then(function () {;
107 log("Test 1 Run: should should be audible");
111 function test1End() {
112 oscillator.stop();
113 log("Test 1 End");
116 function test2Start() {
117 if (context.state === "suspended") {
118 context.resume().then(function () {},
119 function (e) { log("Failed to resume context: " + e); })
122 oscillator = context.createOscillator();
123 oscillator.connect(context.destination);
124 oscillator.start();
125 log("Test 2 Start");
128 function test2Run() {
129 context.suspend();
130 context.resume();
131 context.suspend();
132 context.suspend();
133 context.resume().then(function () {
134 if (context.state === "running") {
135 log("Test 2 Run: sound should be audible");
136 } else {
137 log("Test 2 Run: FAIL: context not running!");
142 function test2End() {
143 oscillator.stop();
144 log("Test 2 End");
147 function log(message, count) {
148 var prefix = count + ": ";
150 if (count === undefined)
151 prefix = "";
152 else
153 prefix = count + ": ";
154 console.log(prefix + message);
155 var results = document.querySelector("#results");
156 results.textContent += prefix + message + "\n";
158 </script>
160 </body>
161 </html>