Index: third_party/WebKit/LayoutTests/webaudio/OfflineAudioContext/offlineaudiocontext-suspend-resume-graph-manipulation.html |
diff --git a/third_party/WebKit/LayoutTests/webaudio/OfflineAudioContext/offlineaudiocontext-suspend-resume-graph-manipulation.html b/third_party/WebKit/LayoutTests/webaudio/OfflineAudioContext/offlineaudiocontext-suspend-resume-graph-manipulation.html |
index f9d34f899fa5039d6d1c35a5dce42e79c064c73a..b8d7d9a66c34cbb5b2f57ec41da43bd0e876347c 100644 |
--- a/third_party/WebKit/LayoutTests/webaudio/OfflineAudioContext/offlineaudiocontext-suspend-resume-graph-manipulation.html |
+++ b/third_party/WebKit/LayoutTests/webaudio/OfflineAudioContext/offlineaudiocontext-suspend-resume-graph-manipulation.html |
@@ -1,15 +1,15 @@ |
<!doctype html> |
<html> |
<head> |
- <script src="../../resources/js-test.js"></script> |
+ <script src="../../resources/testharness.js"></script> |
+ <script src="../../resources/testharnessreport.js"></script> |
<script src="../resources/audit-util.js"></script> |
- <script src="../resources/audio-testing.js"></script> |
+ <script src="../resources/audit.js"></script> |
</head> |
<body> |
<script> |
- description('Test synchronous graph manipulation with OfflineAudioContext.suspend() and OfflineAudioContext.resume().'); |
- window.jsTestIsAsync = true; |
+ var audit = Audit.createTaskRunner(); |
var context; |
var renderQuantum = 128; |
@@ -19,51 +19,64 @@ |
// times fall in to the render quantum boundary. |
var sampleRate = renderQuantum * 100; |
- context = new OfflineAudioContext(1, sampleRate * renderDuration, sampleRate); |
- |
- // Create a constant buffer of 1.0. |
- var constantBuffer = createConstantBuffer(context, 1, 1.0); |
- var constantSource = context.createBufferSource(); |
- constantSource.buffer = constantBuffer; |
- constantSource.loop = true; |
- |
- // The audio output from the beginning (0.0 second) to the first suspend |
- // time should be 0.0 because there is no connection to the destination. |
- |
// Suspend at 1 second and activate the source node. The audio output |
// should be 1.0 from |suspendTime1| to the next suspension. |
var suspendTime1 = 1; |
- context.suspend(suspendTime1).then(function () { |
- if (context.currentTime === suspendTime1) |
- testPassed('Context is suspended at ' + suspendTime1 * sampleRate + ' frame as expected.'); |
- |
- constantSource.connect(context.destination); |
- constantSource.start(); |
- testPassed('A constant buffer is connected to destination and started at ' + |
- suspendTime1 * sampleRate + ' frame.'); |
- |
- context.resume(); |
- }); |
// Suspend at 2 seconds and disconnect the node. The audio output should |
// be 0.0 from |suspendTime2| to the end. |
var suspendTime2 = 2; |
- context.suspend(suspendTime2).then(function () { |
- if (context.currentTime === suspendTime2) |
- testPassed('Context is suspended at ' + suspendTime2 * sampleRate + ' frame as expected.'); |
- |
- constantSource.disconnect(); |
- testPassed('A constant buffer is disconnected at ' + suspendTime2 * sampleRate + ' frame.'); |
- context.resume(); |
+ audit.define('test', (task, should) => { |
+ task.describe('Synchronous graph manipulation with suspend() and resume()'); |
+ context = new OfflineAudioContext(1, sampleRate * renderDuration, |
+ sampleRate); |
+ |
+ // Create a constant buffer of 1.0. |
+ var constantBuffer = createConstantBuffer(context, 1, 1.0); |
+ var constantSource = context.createBufferSource(); |
+ constantSource.buffer = constantBuffer; |
+ constantSource.loop = true; |
+ |
+ // The audio output from the beginning (0.0 second) to the first suspend |
+ // time should be 0.0 because there is no connection to the destination. |
+ |
+ context.suspend(suspendTime1).then(function () { |
+ if (context.currentTime === suspendTime1) { |
+ should(context.currentTime * sampleRate, |
+ 'Frame at which context is suspended') |
+ .beEqualTo(suspendTime1 * sampleRate) |
+ } |
+ should(() => { |
+ constantSource.connect(context.destination); |
+ constantSource.start() |
+ }, |
+ 'Connecting a constant buffer to destination and starting at ' + |
+ suspendTime1 * sampleRate + ' frame') |
+ .notThrow();; |
+ context.resume(); |
+ }); |
+ |
+ context.suspend(suspendTime2).then(function () { |
+ if (context.currentTime === suspendTime2) { |
+ should(context.currentTime * sampleRate, |
+ 'Context is suspended') |
+ .beEqualTo(suspendTime2 * sampleRate); |
+ } |
+ should(() => constantSource.disconnect(), |
+ 'Disconnecting a constant buffer at ' + suspendTime2 * |
+ sampleRate + ' frame') |
+ .notThrow(); |
+ |
+ context.resume(); |
+ }); |
+ |
+ context.startRendering().then(function (buffer) { |
+ verifyResult(should, buffer); |
+ }).then(() => task.done()); |
}); |
- context.startRendering().then(function (buffer) { |
- verifyResult(buffer); |
- finishJSTest(); |
- }); |
- |
- function verifyResult(buffer) { |
+ function verifyResult(should, buffer) { |
var data = buffer.getChannelData(0); |
var suspendIndex1 = suspendTime1 * sampleRate; |
@@ -79,14 +92,17 @@ |
// Each segment should contain a constant value of 0, 1 and 0 |
// respectively. |
- Should('Buffer frame [0, ' + suspendIndex1 + ')', subarray0).beConstantValueOf(0); |
- Should('Buffer frame [' + suspendIndex1 + ', ' + suspendIndex2 + ')', subarray1) |
+ should(subarray0, 'Buffer frame [0, ' + suspendIndex1 + ')') |
+ .beConstantValueOf(0); |
+ should(subarray1, 'Buffer frame [' + suspendIndex1 + ', ' + |
+ suspendIndex2 + ')') |
.beConstantValueOf(1); |
- Should('Buffer frame [' + suspendIndex2 + ', ' + endIndex + ')', subarray2) |
+ should(subarray2, 'Buffer frame [' + suspendIndex2 + ', ' + endIndex + |
+ ')') |
.beConstantValueOf(0); |
} |
- successfullyParsed = true; |
+ audit.run(); |
</script> |
</body> |