Index: third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp |
diff --git a/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp b/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp |
index 5b5bb1d158d89531484677ff0645e9f969fb2124..403b79259813480383561d550d0274555bbec3d4 100644 |
--- a/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp |
+++ b/third_party/WebKit/Source/modules/webaudio/BiquadFilterNode.cpp |
@@ -171,12 +171,23 @@ bool BiquadFilterNode::setType(unsigned type) { |
return true; |
} |
-void BiquadFilterNode::getFrequencyResponse(const DOMFloat32Array* frequencyHz, |
- DOMFloat32Array* magResponse, |
- DOMFloat32Array* phaseResponse) { |
- DCHECK(frequencyHz); |
- DCHECK(magResponse); |
- DCHECK(phaseResponse); |
+void BiquadFilterNode::getFrequencyResponse( |
+ const MaybeShared<const DOMFloat32Array>& maybeSharedFrequencyHz, |
+ const MaybeShared<DOMFloat32Array>& maybeSharedMagResponse, |
+ const MaybeShared<DOMFloat32Array>& maybeSharedPhaseResponse) { |
+ DCHECK(maybeSharedFrequencyHz); |
+ DCHECK(maybeSharedMagResponse); |
+ DCHECK(maybeSharedPhaseResponse); |
+ |
+ if (maybeSharedFrequencyHz.isShared() || maybeSharedMagResponse.isShared() || |
+ maybeSharedPhaseResponse.isShared()) { |
+ // TODO(binji): Throw exception? |
+ return; |
+ } |
+ |
+ const DOMFloat32Array* frequencyHz = maybeSharedFrequencyHz.viewNotShared(); |
+ DOMFloat32Array* magResponse = maybeSharedMagResponse.viewNotShared(); |
+ DOMFloat32Array* phaseResponse = maybeSharedPhaseResponse.viewNotShared(); |
int n = std::min(frequencyHz->length(), |
std::min(magResponse->length(), phaseResponse->length())); |