Diff
Modified: trunk/LayoutTests/ChangeLog (96269 => 96270)
--- trunk/LayoutTests/ChangeLog 2011-09-29 00:02:29 UTC (rev 96269)
+++ trunk/LayoutTests/ChangeLog 2011-09-29 00:06:06 UTC (rev 96270)
@@ -1,3 +1,18 @@
+2011-09-28 Chris Rogers <[email protected]>
+
+ DelayNode must set the context on delayTime AudioParam to support automation
+ https://bugs.webkit.org/show_bug.cgi?id=68828
+
+ Reviewed by Kenneth Russell.
+
+ * webaudio/delaynode-scheduling-expected.txt: Added.
+ * webaudio/delaynode-scheduling.html: Added.
+ * webaudio/delaynode.html:
+ * webaudio/resources/delay-testing.js: Added.
+ (createToneBuffer):
+ (checkDelayedResult.return.var):
+ (checkDelayedResult):
+
2011-09-28 Ryosuke Niwa <[email protected]>
More Mac rebaselines for r96257.
Added: trunk/LayoutTests/webaudio/delaynode-scheduling-expected.txt (0 => 96270)
--- trunk/LayoutTests/webaudio/delaynode-scheduling-expected.txt (rev 0)
+++ trunk/LayoutTests/webaudio/delaynode-scheduling-expected.txt 2011-09-29 00:06:06 UTC (rev 96270)
@@ -0,0 +1,9 @@
+Tests that DelayNode delayTime parameter can be scheduled at a given time.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS Test signal was correctly delayed.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/webaudio/delaynode-scheduling.html (0 => 96270)
--- trunk/LayoutTests/webaudio/delaynode-scheduling.html (rev 0)
+++ trunk/LayoutTests/webaudio/delaynode-scheduling.html 2011-09-29 00:06:06 UTC (rev 96270)
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+<script src=""
+</head>
+
+<body>
+
+<div id="description"></div>
+<div id="console"></div>
+
+<script>
+description("Tests that DelayNode delayTime parameter can be scheduled at a given time.");
+
+function runTest() {
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ window.jsTestIsAsync = true;
+
+ // Create offline audio context.
+ var context = new webkitAudioContext(1, sampleRate * renderLengthSeconds, sampleRate);
+ var toneBuffer = createToneBuffer(context, 20, 20 * toneLengthSeconds, sampleRate); // 20Hz tone
+
+ var bufferSource = context.createBufferSource();
+ bufferSource.buffer = toneBuffer;
+
+ var delay = context.createDelayNode();
+
+ // Schedule delay time at time zero.
+ delay.delayTime.setValueAtTime(delayTimeSeconds, 0);
+
+ bufferSource.connect(delay);
+ delay.connect(context.destination);
+ bufferSource.noteOn(0);
+
+ context._oncomplete_ = checkDelayedResult(toneBuffer);
+ context.startRendering();
+}
+
+runTest();
+successfullyParsed = true;
+
+</script>
+
+<script src=""
+</body>
+</html>
Modified: trunk/LayoutTests/webaudio/delaynode.html (96269 => 96270)
--- trunk/LayoutTests/webaudio/delaynode.html 2011-09-29 00:02:29 UTC (rev 96269)
+++ trunk/LayoutTests/webaudio/delaynode.html 2011-09-29 00:06:06 UTC (rev 96270)
@@ -4,6 +4,7 @@
<head>
<link rel="stylesheet" href=""
<script src=""
+<script src=""
</head>
<body>
@@ -14,75 +15,6 @@
<script>
description("Tests basic functionality of DelayNode.");
-var sampleRate = 44100.0;
-
-var context;
-var toneBuffer;
-
-var renderLengthSeconds = 4;
-var delayTimeSeconds = 0.5;
-var toneLengthSeconds = 2;
-
-function createToneBuffer(frequency, numberOfCycles, sampleRate) {
- var duration = numberOfCycles / frequency;
- var sampleFrameLength = duration * sampleRate;
-
- var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate);
-
- var n = audioBuffer.length;
- var data = ""
-
- for (var i = 0; i < n; ++i)
- data[i] = Math.sin(frequency * 2.0*Math.PI * i / sampleRate);
-
- return audioBuffer;
-}
-
-function checkDelayedResult(event) {
- var renderedBuffer = event.renderedBuffer;
-
- var sourceData = toneBuffer.getChannelData(0);
- var renderedData = renderedBuffer.getChannelData(0);
-
- var delayTimeFrames = delayTimeSeconds * sampleRate;
- var toneLengthFrames = toneLengthSeconds * sampleRate;
-
- var success = true;
-
- var n = renderedBuffer.length;
-
- for (var i = 0; i < n; ++i) {
- if (i < delayTimeFrames) {
- // Check that initial portion is 0 (since signal is delayed).
- if (renderedData[i] != 0) {
- success = false;
- break;
- }
- } else if (i >= delayTimeFrames && i < delayTimeFrames + toneLengthFrames) {
- // Make sure that the tone data is delayed by exactly the expected number of frames.
- var j = i - delayTimeFrames;
- if (renderedData[i] != sourceData[j]) {
- success = false;
- break;
- }
- } else {
- // Make sure we have silence after the delayed tone.
- if (renderedData[i] != 0) {
- success = false;
- break;
- }
- }
- }
-
- if (success) {
- testPassed("Test signal was correctly delayed.");
- } else {
- testFailed("Test signal was not correctly delayed.");
- }
-
- finishJSTest();
-}
-
function runTest() {
if (window.layoutTestController) {
layoutTestController.dumpAsText();
@@ -92,8 +24,8 @@
window.jsTestIsAsync = true;
// Create offline audio context.
- context = new webkitAudioContext(1, sampleRate * renderLengthSeconds, sampleRate);
- toneBuffer = createToneBuffer(20, 20 * toneLengthSeconds, sampleRate); // 20Hz tone
+ var context = new webkitAudioContext(1, sampleRate * renderLengthSeconds, sampleRate);
+ var toneBuffer = createToneBuffer(context, 20, 20 * toneLengthSeconds, sampleRate); // 20Hz tone
var bufferSource = context.createBufferSource();
bufferSource.buffer = toneBuffer;
@@ -105,7 +37,7 @@
delay.connect(context.destination);
bufferSource.noteOn(0);
- context._oncomplete_ = checkDelayedResult;
+ context._oncomplete_ = checkDelayedResult(toneBuffer);
context.startRendering();
}
Added: trunk/LayoutTests/webaudio/resources/delay-testing.js (0 => 96270)
--- trunk/LayoutTests/webaudio/resources/delay-testing.js (rev 0)
+++ trunk/LayoutTests/webaudio/resources/delay-testing.js 2011-09-29 00:06:06 UTC (rev 96270)
@@ -0,0 +1,67 @@
+var sampleRate = 44100.0;
+
+var renderLengthSeconds = 4;
+var delayTimeSeconds = 0.5;
+var toneLengthSeconds = 2;
+
+function createToneBuffer(context, frequency, numberOfCycles, sampleRate) {
+ var duration = numberOfCycles / frequency;
+ var sampleFrameLength = duration * sampleRate;
+
+ var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate);
+
+ var n = audioBuffer.length;
+ var data = ""
+
+ for (var i = 0; i < n; ++i)
+ data[i] = Math.sin(frequency * 2.0*Math.PI * i / sampleRate);
+
+ return audioBuffer;
+}
+
+function checkDelayedResult(toneBuffer) {
+ return function(event) {
+ var renderedBuffer = event.renderedBuffer;
+
+ var sourceData = toneBuffer.getChannelData(0);
+ var renderedData = renderedBuffer.getChannelData(0);
+
+ var delayTimeFrames = delayTimeSeconds * sampleRate;
+ var toneLengthFrames = toneLengthSeconds * sampleRate;
+
+ var success = true;
+
+ var n = renderedBuffer.length;
+
+ for (var i = 0; i < n; ++i) {
+ if (i < delayTimeFrames) {
+ // Check that initial portion is 0 (since signal is delayed).
+ if (renderedData[i] != 0) {
+ success = false;
+ break;
+ }
+ } else if (i >= delayTimeFrames && i < delayTimeFrames + toneLengthFrames) {
+ // Make sure that the tone data is delayed by exactly the expected number of frames.
+ var j = i - delayTimeFrames;
+ if (renderedData[i] != sourceData[j]) {
+ success = false;
+ break;
+ }
+ } else {
+ // Make sure we have silence after the delayed tone.
+ if (renderedData[i] != 0) {
+ success = false;
+ break;
+ }
+ }
+ }
+
+ if (success) {
+ testPassed("Test signal was correctly delayed.");
+ } else {
+ testFailed("Test signal was not correctly delayed.");
+ }
+
+ finishJSTest();
+ }
+}
Modified: trunk/Source/WebCore/ChangeLog (96269 => 96270)
--- trunk/Source/WebCore/ChangeLog 2011-09-29 00:02:29 UTC (rev 96269)
+++ trunk/Source/WebCore/ChangeLog 2011-09-29 00:06:06 UTC (rev 96270)
@@ -1,3 +1,15 @@
+2011-09-28 Chris Rogers <[email protected]>
+
+ DelayNode must set the context on delayTime AudioParam to support automation
+ https://bugs.webkit.org/show_bug.cgi?id=68828
+
+ Reviewed by Kenneth Russell.
+
+ Test: webaudio/delaynode-scheduling.html
+
+ * webaudio/DelayNode.cpp:
+ (WebCore::DelayNode::DelayNode):
+
2011-09-28 Sergey Glazunov <[email protected]>
_javascript_ generated documents don't inherit the cookie URL
Modified: trunk/Source/WebCore/webaudio/DelayNode.cpp (96269 => 96270)
--- trunk/Source/WebCore/webaudio/DelayNode.cpp 2011-09-29 00:02:29 UTC (rev 96269)
+++ trunk/Source/WebCore/webaudio/DelayNode.cpp 2011-09-29 00:06:06 UTC (rev 96270)
@@ -34,6 +34,7 @@
: AudioBasicProcessorNode(context, sampleRate)
{
m_processor = adoptPtr(new DelayProcessor(sampleRate, 1));
+ delayTime()->setContext(context);
setType(NodeTypeDelay);
}