Index: Source/modules/webaudio/AudioBufferSourceNode.cpp |
diff --git a/Source/modules/webaudio/AudioBufferSourceNode.cpp b/Source/modules/webaudio/AudioBufferSourceNode.cpp |
index 19aa3e6816aa3fe60e7acc8903a4862976a52c31..e5a4791d8250a8e8f88f87be7e75210b4a83110a 100644 |
--- a/Source/modules/webaudio/AudioBufferSourceNode.cpp |
+++ b/Source/modules/webaudio/AudioBufferSourceNode.cpp |
@@ -28,6 +28,7 @@ |
#include "modules/webaudio/AudioBufferSourceNode.h" |
+#include "bindings/v8/ExceptionState.h" |
#include "core/page/PageConsole.h" |
#include "platform/audio/AudioUtilities.h" |
#include "modules/webaudio/AudioContext.h" |
@@ -335,9 +336,15 @@ void AudioBufferSourceNode::reset() |
m_lastGain = gain()->value(); |
} |
-bool AudioBufferSourceNode::setBuffer(AudioBuffer* buffer) |
+void AudioBufferSourceNode::setBuffer(AudioBuffer* buffer, ExceptionState& es) |
{ |
ASSERT(isMainThread()); |
+ // FIXME: It does not look like we should throw if the buffer is null as |
+ // the attribute is nullable in the specification. |
+ if (!buffer) { |
+ es.throwTypeError("buffer cannot be null"); |
+ return; |
+ } |
// The context must be locked since changing the buffer can re-configure the number of channels that are output. |
AudioContext::AutoLocker contextLocker(context()); |
@@ -349,8 +356,10 @@ bool AudioBufferSourceNode::setBuffer(AudioBuffer* buffer) |
// Do any necesssary re-configuration to the buffer's number of channels. |
unsigned numberOfChannels = buffer->numberOfChannels(); |
- if (numberOfChannels > AudioContext::maxNumberOfChannels()) |
- return false; |
+ if (numberOfChannels > AudioContext::maxNumberOfChannels()) { |
+ es.throwTypeError("AudioBuffer unsupported number of channels"); |
Raymond Toy (Google)
2013/10/10 22:40:57
Should this be a DOMException? And if so, can we
|
+ return; |
+ } |
output(0)->setNumberOfChannels(numberOfChannels); |
@@ -363,8 +372,6 @@ bool AudioBufferSourceNode::setBuffer(AudioBuffer* buffer) |
m_virtualReadIndex = 0; |
m_buffer = buffer; |
- |
- return true; |
} |
unsigned AudioBufferSourceNode::numberOfChannels() |