Index: third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp |
diff --git a/third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp b/third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp |
index d8e5c2ed20de0550fcad33431d9c66c1cbb30e42..9aa79ff3d28e4348b354a7a73192aaac7737560a 100644 |
--- a/third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp |
+++ b/third_party/WebKit/Source/modules/webaudio/IIRFilterNode.cpp |
@@ -149,28 +149,40 @@ IIRProcessor* IIRFilterNode::iirProcessor() const { |
static_cast<AudioBasicProcessorHandler&>(handler()).processor()); |
} |
-void IIRFilterNode::getFrequencyResponse(const DOMFloat32Array* frequencyHz, |
- DOMFloat32Array* magResponse, |
- DOMFloat32Array* phaseResponse, |
- ExceptionState& exceptionState) { |
- if (!frequencyHz) { |
+void IIRFilterNode::getFrequencyResponse( |
+ const MaybeShared<const DOMFloat32Array>& maybeSharedFrequencyHz, |
+ const MaybeShared<DOMFloat32Array>& maybeSharedMagResponse, |
+ const MaybeShared<DOMFloat32Array>& maybeSharedPhaseResponse, |
+ ExceptionState& exceptionState) { |
+ if (!maybeSharedFrequencyHz) { |
exceptionState.throwDOMException(NotSupportedError, |
"frequencyHz array cannot be null"); |
return; |
} |
- if (!magResponse) { |
+ if (!maybeSharedMagResponse) { |
exceptionState.throwDOMException(NotSupportedError, |
"magResponse array cannot be null"); |
return; |
} |
- if (!phaseResponse) { |
+ if (!maybeSharedPhaseResponse) { |
exceptionState.throwDOMException(NotSupportedError, |
"phaseResponse array cannot be null"); |
return; |
} |
+ if (maybeSharedFrequencyHz.isShared() || maybeSharedMagResponse.isShared() || |
+ maybeSharedPhaseResponse.isShared()) { |
+ exceptionState.throwTypeError( |
+ "arrays cannot be backed by SharedArrayBuffer"); |
+ return; |
+ } |
+ |
+ const DOMFloat32Array* frequencyHz = maybeSharedFrequencyHz.viewNotShared(); |
+ DOMFloat32Array* magResponse = maybeSharedMagResponse.viewNotShared(); |
+ DOMFloat32Array* phaseResponse = maybeSharedPhaseResponse.viewNotShared(); |
+ |
unsigned frequencyHzLength = frequencyHz->length(); |
if (magResponse->length() < frequencyHzLength) { |