| OLD | NEW |
| 1 <!doctype html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <title> |
| 5 offlineaudiocontext-suspend-resume-promise.html |
| 6 </title> |
| 4 <script src="../../resources/testharness.js"></script> | 7 <script src="../../resources/testharness.js"></script> |
| 5 <script src="../../resources/testharnessreport.js"></script> | 8 <script src="../../resources/testharnessreport.js"></script> |
| 6 <script src="../resources/audit-util.js"></script> | 9 <script src="../resources/audit-util.js"></script> |
| 7 <script src="../resources/audit.js"></script> | 10 <script src="../resources/audit.js"></script> |
| 8 </head> | 11 </head> |
| 9 | |
| 10 <body> | 12 <body> |
| 11 <script> | 13 <script id="layout-test-code"> |
| 12 var audit = Audit.createTaskRunner(); | 14 let audit = Audit.createTaskRunner(); |
| 13 var context; | 15 let context; |
| 14 | 16 |
| 15 // The sample rate is multiple of the rendering quantum, so suspension | 17 // The sample rate is multiple of the rendering quantum, so suspension |
| 16 // times fall in to the render quantum boundary. | 18 // times fall in to the render quantum boundary. |
| 17 var renderQuantum = 128; | 19 let renderQuantum = 128; |
| 18 | 20 |
| 19 var sampleRate = renderQuantum * 100; | 21 let sampleRate = renderQuantum * 100; |
| 20 var renderDuration = 2; | 22 let renderDuration = 2; |
| 21 var scheduledSuspendTime = 0; | 23 let scheduledSuspendTime = 0; |
| 22 | 24 |
| 23 // With the sample rate setting above, this ensures suspension time fall | 25 // With the sample rate setting above, this ensures suspension time fall |
| 24 // in to the render quantum boundary. | 26 // in to the render quantum boundary. |
| 25 var suspendInterval = 0.25; | 27 let suspendInterval = 0.25; |
| 26 | 28 |
| 27 function onSuspended(should) { | 29 function onSuspended(should) { |
| 28 if (context.state === 'suspended' && | 30 if (context.state === 'suspended' && |
| 29 context.currentTime === scheduledSuspendTime) { | 31 context.currentTime === scheduledSuspendTime) { |
| 30 should( | 32 should( |
| 31 context.state === 'suspended' && | 33 context.state === 'suspended' && |
| 32 context.currentTime === scheduledSuspendTime, | 34 context.currentTime === scheduledSuspendTime, |
| 33 'Context suspended at ' + scheduledSuspendTime + ' second(s)') | 35 'Context suspended at ' + scheduledSuspendTime + ' second(s)') |
| 34 .beTrue(); | 36 .beTrue(); |
| 35 | 37 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 51 should( | 53 should( |
| 52 context.suspend(scheduledSuspendTime), | 54 context.suspend(scheduledSuspendTime), |
| 53 'Scheduling at ' + renderDuration + ' seconds') | 55 'Scheduling at ' + renderDuration + ' seconds') |
| 54 .beRejected(); | 56 .beRejected(); |
| 55 } | 57 } |
| 56 | 58 |
| 57 context.resume(); | 59 context.resume(); |
| 58 } | 60 } |
| 59 } | 61 } |
| 60 | 62 |
| 61 audit.define({ | 63 audit.define( |
| 62 label: 'test', | 64 { |
| 63 description: 'Promise resolution of resume() and suspend()' | 65 label: 'test', |
| 64 }, (task, should) => { | 66 description: 'Promise resolution of resume() and suspend()' |
| 65 context = new OfflineAudioContext(1, sampleRate * renderDuration, | 67 }, |
| 66 sampleRate); | 68 (task, should) => { |
| 69 context = new OfflineAudioContext( |
| 70 1, sampleRate * renderDuration, sampleRate); |
| 67 | 71 |
| 68 // Schedule the first suspension. | 72 // Schedule the first suspension. |
| 69 should(() => context.suspend(scheduledSuspendTime) | 73 should( |
| 70 .then(() => | 74 () => context.suspend(scheduledSuspendTime) |
| 71 onSuspended(should)), | 75 .then(() => onSuspended(should)), |
| 72 'Scheduling a new suspend at ' + scheduledSuspendTime + | 76 'Scheduling a new suspend at ' + scheduledSuspendTime + |
| 73 ' second(s)') | 77 ' second(s)') |
| 74 .notThrow(); | 78 .notThrow(); |
| 75 | 79 |
| 76 context.startRendering().then(function () { | 80 context.startRendering() |
| 77 should(context.state, 'Promise context.state') | 81 .then(function() { |
| 78 .beEqualTo('closed'); | 82 should(context.state, 'Promise context.state') |
| 79 }).then(() => task.done()); | 83 .beEqualTo('closed'); |
| 80 }); | 84 }) |
| 85 .then(() => task.done()); |
| 86 }); |
| 81 | 87 |
| 82 audit.run(); | 88 audit.run(); |
| 83 </script> | 89 </script> |
| 84 | |
| 85 </body> | 90 </body> |
| 86 </html> | 91 </html> |
| OLD | NEW |