Only the first call to 'stop' method of AudioBufferSourceNode must be entertained.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Jul 2013 15:39:25 +0000 (15:39 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Jul 2013 15:39:25 +0000 (15:39 +0000)
https://bugs.webkit.org/show_bug.cgi?id=118776

Patch by Praveen R Jadhav <praveen.j@samsung.com> on 2013-07-18
Reviewed by Jer Noble.

Source/WebCore:

Subsequent calls to 'stop' for a AudioSourceBufferNode throws an exception.
End time set by first 'stop' method is used for processing.

No new tests. audiobuffersource-exception.html is updated.

* Modules/webaudio/AudioScheduledSourceNode.cpp:
(WebCore::AudioScheduledSourceNode::stop):

LayoutTests:

Test case updated to check subsequent calls to 'stop' for a given AudioBufferSourceNode.

* webaudio/audiobuffersource-exception-expected.txt:
* webaudio/audiobuffersource-exception.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@152846 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/webaudio/audiobuffersource-exception-expected.txt
LayoutTests/webaudio/audiobuffersource-exception.html
Source/WebCore/ChangeLog
Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp

index 5ba6aa1..8706bc0 100644 (file)
@@ -1,3 +1,15 @@
+2013-07-18  Praveen R Jadhav  <praveen.j@samsung.com>
+
+        Only the first call to 'stop' method of AudioBufferSourceNode must be entertained.
+        https://bugs.webkit.org/show_bug.cgi?id=118776
+
+        Reviewed by Jer Noble.
+
+        Test case updated to check subsequent calls to 'stop' for a given AudioBufferSourceNode.
+
+        * webaudio/audiobuffersource-exception-expected.txt:
+        * webaudio/audiobuffersource-exception.html:
+
 2013-07-18  Zalan Bujtas  <zalan@apple.com>
 
         Unskip mathml tests after r152840.
index e74cecd..d78577e 100644 (file)
@@ -4,6 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 PASS bufferSource.stop(0) threw exception Error: InvalidStateError: DOM Exception 11.
 PASS bufferSource.start(0) threw exception Error: InvalidStateError: DOM Exception 11.
+PASS bufferSource.stop(0) threw exception Error: InvalidStateError: DOM Exception 11.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 821716a..60f4694 100644 (file)
@@ -40,6 +40,9 @@ function runTest() {
     shouldThrow("bufferSource.start(0)", "'Error: InvalidStateError: DOM Exception 11'");
     bufferSource.stop(0);
 
+    // 'stop' should be called only once.
+    shouldThrow("bufferSource.stop(0)", "'Error: InvalidStateError: DOM Exception 11'");
+
     context.oncomplete = finishJSTest;
     context.startRendering();
 }
index 0647b91..bc62539 100644 (file)
@@ -1,3 +1,18 @@
+2013-07-18  Praveen R Jadhav  <praveen.j@samsung.com>
+
+        Only the first call to 'stop' method of AudioBufferSourceNode must be entertained.
+        https://bugs.webkit.org/show_bug.cgi?id=118776
+
+        Reviewed by Jer Noble.
+
+        Subsequent calls to 'stop' for a AudioSourceBufferNode throws an exception.
+        End time set by first 'stop' method is used for processing.
+
+        No new tests. audiobuffersource-exception.html is updated.
+
+        * Modules/webaudio/AudioScheduledSourceNode.cpp:
+        (WebCore::AudioScheduledSourceNode::stop):
+
 2013-07-18  Christophe Dumez  <ch.dumez@sisa.samsung.com>
 
         Simplify SVG animated type handling in the JSC bindings generator
index 4ebd59c..0361b8b 100644 (file)
@@ -154,7 +154,7 @@ void AudioScheduledSourceNode::start(double when, ExceptionCode& ec)
 void AudioScheduledSourceNode::stop(double when, ExceptionCode& ec)
 {
     ASSERT(isMainThread());
-    if (!(m_playbackState == SCHEDULED_STATE || m_playbackState == PLAYING_STATE)) {
+    if (!(m_playbackState == SCHEDULED_STATE || m_playbackState == PLAYING_STATE) || (m_endTime != UnknownTime)) {
         ec = INVALID_STATE_ERR;
         return;
     }