Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1481)

Unified Diff: Source/modules/webaudio/AudioBuffer.cpp

Issue 19019002: Ensure that ArrayBuffers actively being used by the Web Audio API cannot be neutered (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase for re-landing Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/webaudio/AudioBuffer.h ('k') | Source/wtf/ArrayBuffer.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/webaudio/AudioBuffer.cpp
diff --git a/Source/modules/webaudio/AudioBuffer.cpp b/Source/modules/webaudio/AudioBuffer.cpp
index d01c8c6d812b672dd146005e749bcce25996636c..0ab62ca1c1b27e2b9c1f64f87f2b5fc138e87c18 100644
--- a/Source/modules/webaudio/AudioBuffer.cpp
+++ b/Source/modules/webaudio/AudioBuffer.cpp
@@ -67,6 +67,7 @@ AudioBuffer::AudioBuffer(unsigned numberOfChannels, size_t numberOfFrames, float
for (unsigned i = 0; i < numberOfChannels; ++i) {
RefPtr<Float32Array> channelDataArray = Float32Array::create(m_length);
+ channelDataArray->setNeuterable(false);
m_channels.append(channelDataArray);
}
}
@@ -82,6 +83,7 @@ AudioBuffer::AudioBuffer(AudioBus* bus)
m_channels.reserveCapacity(numberOfChannels);
for (unsigned i = 0; i < numberOfChannels; ++i) {
RefPtr<Float32Array> channelDataArray = Float32Array::create(m_length);
+ channelDataArray->setNeuterable(false);
channelDataArray->setRange(bus->channel(i)->data(), m_length, 0);
m_channels.append(channelDataArray);
}
@@ -92,14 +94,15 @@ void AudioBuffer::releaseMemory()
m_channels.clear();
}
-Float32Array* AudioBuffer::getChannelData(unsigned channelIndex, ExceptionState& es)
+PassRefPtr<Float32Array> AudioBuffer::getChannelData(unsigned channelIndex, ExceptionState& es)
{
if (channelIndex >= m_channels.size()) {
es.throwDOMException(SyntaxError);
return 0;
}
- return m_channels[channelIndex].get();
+ Float32Array* channelData = m_channels[channelIndex].get();
+ return Float32Array::create(channelData->buffer(), channelData->byteOffset(), channelData->length());
}
Float32Array* AudioBuffer::getChannelData(unsigned channelIndex)
« no previous file with comments | « Source/modules/webaudio/AudioBuffer.h ('k') | Source/wtf/ArrayBuffer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698