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

Unified Diff: third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp

Issue 2842003003: Make AudioBufferSourceNode.buffer setter conforming (Closed)
Patch Set: Update expected result Created 3 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
Index: third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp b/third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp
index a9ee5414ee4122ee94c343cb0b9e4ad1d30a6ffb..2289766570e55e79233810b588314585c81ac9e3 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioBufferSourceNode.cpp
@@ -72,7 +72,8 @@ AudioBufferSourceHandler::AudioBufferSourceHandler(
is_grain_(false),
grain_offset_(0.0),
grain_duration_(kDefaultGrainDuration),
- min_playback_rate_(1.0) {
+ min_playback_rate_(1.0),
+ buffer_has_been_set_(false) {
// Default to mono. A call to setBuffer() will set the number of output
// channels to that of the buffer.
AddOutput(1);
@@ -388,10 +389,11 @@ void AudioBufferSourceHandler::SetBuffer(AudioBuffer* buffer,
ExceptionState& exception_state) {
DCHECK(IsMainThread());
- if (buffer_) {
- exception_state.ThrowDOMException(
- kInvalidStateError,
- "Cannot set buffer after it has been already been set");
+ if (buffer && buffer_has_been_set_) {
+ exception_state.ThrowDOMException(kInvalidStateError,
+ "Cannot set buffer to non-null after it "
+ "has been already been set to a non-null "
+ "buffer");
hongchan 2017/07/28 18:45:32 I am not so sure about the term "a non-null buffer
Raymond Toy 2017/07/28 19:16:55 This is the absn.buffer attribute, so you can set
return;
}
@@ -403,6 +405,8 @@ void AudioBufferSourceHandler::SetBuffer(AudioBuffer* buffer,
MutexLocker process_locker(process_lock_);
if (buffer) {
+ buffer_has_been_set_ = true;
+
// Do any necesssary re-configuration to the buffer's number of channels.
unsigned number_of_channels = buffer->numberOfChannels();

Powered by Google App Engine
This is Rietveld 408576698