| OLD | NEW |
| 1 <!doctype html> | 1 <!doctype html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <title>Test AudioContext.suspend() and AudioContext.resume()</title> | 4 <title>Test AudioContext.suspend() and AudioContext.resume()</title> |
| 5 <script src="../../resources/testharness.js"></script> | 5 <script src="../../resources/testharness.js"></script> |
| 6 <script src="../../resources/testharnessreport.js"></script> | 6 <script src="../../resources/testharnessreport.js"></script> |
| 7 <script src="../resources/audit-util.js"></script> | 7 <script src="../resources/audit-util.js"></script> |
| 8 <script src="../resources/audit.js"></script> | 8 <script src="../resources/audit.js"></script> |
| 9 </head> | 9 </head> |
| 10 | 10 |
| 11 <body> | 11 <body> |
| 12 <script> | 12 <script> |
| 13 let offlineContext; | 13 let offlineContext; |
| 14 let osc; | 14 let osc; |
| 15 let p1; | 15 let p1; |
| 16 let p2; | 16 let p2; |
| 17 let p3; | 17 let p3; |
| 18 | 18 |
| 19 let sampleRate = 44100; | 19 let sampleRate = 44100; |
| 20 let durationInSeconds = 1; | 20 let durationInSeconds = 1; |
| 21 | 21 |
| 22 let audit = Audit.createTaskRunner(); | 22 let audit = Audit.createTaskRunner(); |
| 23 | 23 |
| 24 // Task: test suspend(). | 24 // Task: test suspend(). |
| 25 audit.define('test-suspend', function (task, should) { | 25 audit.define({ |
| 26 task.describe("Test suspend() for offline context"); | 26 label: 'test-suspend', |
| 27 description: "Test suspend() for offline context" |
| 28 }, function (task, should) { |
| 27 // Test suspend/resume. Ideally this test is best with a online | 29 // Test suspend/resume. Ideally this test is best with a online |
| 28 // AudioContext, but content shell doesn't really have a working online | 30 // AudioContext, but content shell doesn't really have a working online |
| 29 // AudioContext. Hence, use an OfflineAudioContext. Not all possible | 31 // AudioContext. Hence, use an OfflineAudioContext. Not all possible |
| 30 // scenarios can be easily checked with an offline context instead of an | 32 // scenarios can be easily checked with an offline context instead of an |
| 31 // online context. | 33 // online context. |
| 32 | 34 |
| 33 // Create an audio context with an oscillator. | 35 // Create an audio context with an oscillator. |
| 34 should(() => { | 36 should(() => { |
| 35 offlineContext = new OfflineAudioContext(1, durationInSeconds * | 37 offlineContext = new OfflineAudioContext(1, durationInSeconds * |
| 36 sampleRate, sampleRate); | 38 sampleRate, sampleRate); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 56 should(p1 instanceof Promise, "p1 instanceof Promise") | 58 should(p1 instanceof Promise, "p1 instanceof Promise") |
| 57 .beTrue(); | 59 .beTrue(); |
| 58 | 60 |
| 59 should(p1, "p1") | 61 should(p1, "p1") |
| 60 .beRejected() | 62 .beRejected() |
| 61 .then(task.done.bind(task)); | 63 .then(task.done.bind(task)); |
| 62 }); | 64 }); |
| 63 | 65 |
| 64 | 66 |
| 65 // Task: test resume(). | 67 // Task: test resume(). |
| 66 audit.define('test-resume', function (task, should) { | 68 audit.define({ |
| 67 task.describe("Test resume() for offline context"); | 69 label: 'test-resume', |
| 70 description: "Test resume() for offline context" |
| 71 }, function (task, should) { |
| 68 // Multiple calls to resume should not be a problem. But we can't test | 72 // Multiple calls to resume should not be a problem. But we can't test |
| 69 // that on an offline context. Thus, check that resume() on an | 73 // that on an offline context. Thus, check that resume() on an |
| 70 // OfflineAudioContext rejects the promise. | 74 // OfflineAudioContext rejects the promise. |
| 71 should(() => p2 = offlineContext.resume(), | 75 should(() => p2 = offlineContext.resume(), |
| 72 "p2 = offlineContext.resume()") | 76 "p2 = offlineContext.resume()") |
| 73 .notThrow(); | 77 .notThrow(); |
| 74 should(p2 instanceof Promise, "p2 instanceof Promise") | 78 should(p2 instanceof Promise, "p2 instanceof Promise") |
| 75 .beTrue(); | 79 .beTrue(); |
| 76 | 80 |
| 77 // Resume doesn't actually resume an offline context | 81 // Resume doesn't actually resume an offline context |
| 78 should(offlineContext.state, "offlineContext.state") | 82 should(offlineContext.state, "offlineContext.state") |
| 79 .beEqualTo("suspended"); | 83 .beEqualTo("suspended"); |
| 80 should(p2, "p2") | 84 should(p2, "p2") |
| 81 .beRejected() | 85 .beRejected() |
| 82 .then(task.done.bind(task)); | 86 .then(task.done.bind(task)); |
| 83 }); | 87 }); |
| 84 | 88 |
| 85 // Task: test the state after context closed. | 89 // Task: test the state after context closed. |
| 86 audit.define('test-after-close', function (task, should) { | 90 audit.define({ |
| 87 task.describe("Test state after context closed"); | 91 label: 'test-after-close', |
| 92 description: "Test state after context closed" |
| 93 }, function (task, should) { |
| 88 // Render the offline context. | 94 // Render the offline context. |
| 89 osc.start(); | 95 osc.start(); |
| 90 | 96 |
| 91 // Test suspend/resume in tested promise pattern. We don't care about the | 97 // Test suspend/resume in tested promise pattern. We don't care about the |
| 92 // actual result of the offline rendering. | 98 // actual result of the offline rendering. |
| 93 should(() => p3 = offlineContext.startRendering(), | 99 should(() => p3 = offlineContext.startRendering(), |
| 94 "p3 = offlineContext.startRendering()") | 100 "p3 = offlineContext.startRendering()") |
| 95 .notThrow(); | 101 .notThrow(); |
| 96 | 102 |
| 97 p3.then(() => { | 103 p3.then(() => { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 108 .beRejected() | 114 .beRejected() |
| 109 .then(task.done.bind(task)); | 115 .then(task.done.bind(task)); |
| 110 }) | 116 }) |
| 111 }); | 117 }); |
| 112 }); | 118 }); |
| 113 | 119 |
| 114 audit.run(); | 120 audit.run(); |
| 115 </script> | 121 </script> |
| 116 </body> | 122 </body> |
| 117 </html> | 123 </html> |
| OLD | NEW |