| Index: third_party/WebKit/Source/modules/webaudio/ChannelSplitterNode.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webaudio/ChannelSplitterNode.cpp b/third_party/WebKit/Source/modules/webaudio/ChannelSplitterNode.cpp
|
| index 046aa7c1b406909ca6236ea9419d67fa9d897e65..0b6d7157376bfc4e68ad7b37dc4f3216448d5de8 100644
|
| --- a/third_party/WebKit/Source/modules/webaudio/ChannelSplitterNode.cpp
|
| +++ b/third_party/WebKit/Source/modules/webaudio/ChannelSplitterNode.cpp
|
| @@ -23,6 +23,9 @@
|
| */
|
|
|
| #include "modules/webaudio/ChannelSplitterNode.h"
|
| +#include "bindings/core/v8/ExceptionMessages.h"
|
| +#include "bindings/core/v8/ExceptionState.h"
|
| +#include "core/dom/ExceptionCode.h"
|
| #include "modules/webaudio/AbstractAudioContext.h"
|
| #include "modules/webaudio/AudioNodeInput.h"
|
| #include "modules/webaudio/AudioNodeOutput.h"
|
| @@ -71,17 +74,43 @@ void ChannelSplitterHandler::process(size_t framesToProcess)
|
|
|
| // ----------------------------------------------------------------
|
|
|
| -ChannelSplitterNode::ChannelSplitterNode(AbstractAudioContext& context, float sampleRate, unsigned numberOfOutputs)
|
| +ChannelSplitterNode::ChannelSplitterNode(AbstractAudioContext& context, unsigned numberOfOutputs)
|
| : AudioNode(context)
|
| {
|
| - setHandler(ChannelSplitterHandler::create(*this, sampleRate, numberOfOutputs));
|
| + setHandler(ChannelSplitterHandler::create(*this, context.sampleRate(), numberOfOutputs));
|
| }
|
|
|
| -ChannelSplitterNode* ChannelSplitterNode::create(AbstractAudioContext& context, float sampleRate, unsigned numberOfOutputs)
|
| +ChannelSplitterNode* ChannelSplitterNode::create(AbstractAudioContext& context, ExceptionState& exceptionState)
|
| {
|
| - if (!numberOfOutputs || numberOfOutputs > AbstractAudioContext::maxNumberOfChannels())
|
| + DCHECK(isMainThread());
|
| +
|
| + // Default number of outputs for the splitter node is 6.
|
| + return create(context, 6, exceptionState);
|
| +}
|
| +
|
| +ChannelSplitterNode* ChannelSplitterNode::create(AbstractAudioContext& context, unsigned numberOfOutputs, ExceptionState& exceptionState)
|
| +{
|
| + DCHECK(isMainThread());
|
| +
|
| + if (context.isContextClosed()) {
|
| + context.throwExceptionForClosedState(exceptionState);
|
| return nullptr;
|
| - return new ChannelSplitterNode(context, sampleRate, numberOfOutputs);
|
| + }
|
| +
|
| + if (!numberOfOutputs || numberOfOutputs > AbstractAudioContext::maxNumberOfChannels()) {
|
| + exceptionState.throwDOMException(
|
| + IndexSizeError,
|
| + ExceptionMessages::indexOutsideRange<size_t>(
|
| + "number of outputs",
|
| + numberOfOutputs,
|
| + 1,
|
| + ExceptionMessages::InclusiveBound,
|
| + AbstractAudioContext::maxNumberOfChannels(),
|
| + ExceptionMessages::InclusiveBound));
|
| + return nullptr;
|
| + }
|
| +
|
| + return new ChannelSplitterNode(context, numberOfOutputs);
|
| }
|
|
|
| } // namespace blink
|
|
|