Changeset 94878 in webkit
- Timestamp:
- Sep 9, 2011 3:15:37 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 7 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r94873 r94878 1 2011-09-09 Chris Rogers <crogers@google.com> 2 3 AudioBufferSourceNode must validate AudioBuffer in .buffer attribute setter 4 https://bugs.webkit.org/show_bug.cgi?id=67749 5 6 Reviewed by Kenneth Russell. 7 8 * webaudio/audiobuffersource-channels-expected.txt: Added. 9 * webaudio/audiobuffersource-channels.html: Added. 10 1 11 2011-09-09 Ryosuke Niwa <rniwa@webkit.org> 2 12 -
trunk/Source/WebCore/ChangeLog
r94877 r94878 1 2011-09-09 Chris Rogers <crogers@google.com> 2 3 AudioBufferSourceNode must validate AudioBuffer in .buffer attribute setter 4 https://bugs.webkit.org/show_bug.cgi?id=67749 5 6 Reviewed by Kenneth Russell. 7 8 Test: webaudio/audiobuffersource-channels.html 9 10 * WebCore.gypi: 11 * bindings/js/JSAudioBufferSourceNodeCustom.cpp: 12 (WebCore::JSAudioBufferSourceNode::setBuffer): 13 * bindings/v8/custom/V8AudioBufferSourceNodeCustom.cpp: Copied from Source/WebCore/bindings/js/JSAudioBufferSourceNodeCustom.cpp. 14 (WebCore::V8AudioBufferSourceNode::bufferAccessorSetter): 15 * webaudio/AudioBufferSourceNode.cpp: 16 (WebCore::AudioBufferSourceNode::setBuffer): 17 * webaudio/AudioBufferSourceNode.h: 18 * webaudio/AudioBufferSourceNode.idl: 19 1 20 2011-09-09 Dan Bernstein <mitz@apple.com> 2 21 -
trunk/Source/WebCore/WebCore.gypi
r94855 r94878 2118 2118 'bindings/v8/custom/V8ArrayBufferCustom.cpp', 2119 2119 'bindings/v8/custom/V8ArrayBufferViewCustom.h', 2120 'bindings/v8/custom/V8AudioBufferSourceNodeCustom.cpp', 2120 2121 'bindings/v8/custom/V8AudioContextCustom.cpp', 2121 2122 'bindings/v8/custom/V8AudioNodeCustom.cpp', -
trunk/Source/WebCore/bindings/js/JSAudioBufferSourceNodeCustom.cpp
r72838 r94878 27 27 #if ENABLE(WEB_AUDIO) 28 28 29 #include " AudioBufferSourceNode.h"29 #include "JSAudioBufferSourceNode.h" 30 30 31 31 #include "AudioBuffer.h" 32 #include "AudioBufferSourceNode.h" 32 33 #include "JSAudioBuffer.h" 33 #include "JSAudioBufferSourceNode.h"34 #include <runtime/Error.h> 34 35 35 36 using namespace JSC; … … 37 38 namespace WebCore { 38 39 39 void JSAudioBufferSourceNode::setBuffer(ExecState* , JSValue value)40 void JSAudioBufferSourceNode::setBuffer(ExecState* exec, JSValue value) 40 41 { 41 42 AudioBufferSourceNode* imp = static_cast<AudioBufferSourceNode*>(impl()); 42 imp->setBuffer(toAudioBuffer(value)); 43 AudioBuffer* buffer = toAudioBuffer(value); 44 if (!buffer) { 45 throwError(exec, createSyntaxError(exec, "Value is not of type AudioBuffer")); 46 return; 47 } 48 49 if (!imp->setBuffer(buffer)) 50 throwError(exec, createSyntaxError(exec, "AudioBuffer unsupported number of channels")); 43 51 } 44 52 -
trunk/Source/WebCore/bindings/v8/custom/V8AudioBufferSourceNodeCustom.cpp
r94877 r94878 1 1 /* 2 * Copyright (C) 201 0, Google Inc. All rights reserved.2 * Copyright (C) 2011, Google Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 27 27 #if ENABLE(WEB_AUDIO) 28 28 29 #include " AudioBufferSourceNode.h"29 #include "V8AudioBufferSourceNode.h" 30 30 31 31 #include "AudioBuffer.h" 32 #include "JSAudioBuffer.h" 33 #include "JSAudioBufferSourceNode.h" 34 35 using namespace JSC; 32 #include "AudioBufferSourceNode.h" 33 #include "ExceptionCode.h" 34 #include "V8AudioBuffer.h" 35 #include "V8Binding.h" 36 #include "V8Proxy.h" 36 37 37 38 namespace WebCore { 38 39 39 void JSAudioBufferSourceNode::setBuffer(ExecState*, JSValue value)40 void V8AudioBufferSourceNode::bufferAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) 40 41 { 41 AudioBufferSourceNode* imp = static_cast<AudioBufferSourceNode*>(impl()); 42 imp->setBuffer(toAudioBuffer(value)); 42 INC_STATS("DOM.AudioBufferSourceNode.buffer._set"); 43 v8::Handle<v8::Object> holder = info.Holder(); 44 AudioBufferSourceNode* imp = V8AudioBufferSourceNode::toNative(holder); 45 46 AudioBuffer* buffer = 0; 47 if (V8AudioBuffer::HasInstance(value)) { 48 buffer = V8AudioBuffer::toNative(value->ToObject()); 49 if (buffer && !imp->setBuffer(buffer)) { 50 throwError("AudioBuffer unsupported number of channels"); 51 return; 52 } 53 } 54 55 if (!buffer) { 56 throwError("Value is not of type AudioBuffer"); 57 return; 58 } 43 59 } 44 60 -
trunk/Source/WebCore/webaudio/AudioBufferSourceNode.cpp
r94265 r94878 325 325 } 326 326 327 voidAudioBufferSourceNode::setBuffer(AudioBuffer* buffer)327 bool AudioBufferSourceNode::setBuffer(AudioBuffer* buffer) 328 328 { 329 329 ASSERT(isMainThread()); … … 338 338 // Do any necesssary re-configuration to the buffer's number of channels. 339 339 unsigned numberOfChannels = buffer->numberOfChannels(); 340 if (!numberOfChannels || numberOfChannels > 2) { 341 // FIXME: implement multi-channel greater than stereo. 342 return false; 343 } 340 344 output(0)->setNumberOfChannels(numberOfChannels); 341 345 } … … 343 347 m_virtualReadIndex = 0; 344 348 m_buffer = buffer; 349 350 return true; 345 351 } 346 352 -
trunk/Source/WebCore/webaudio/AudioBufferSourceNode.h
r91723 r94878 53 53 54 54 // setBuffer() is called on the main thread. This is the buffer we use for playback. 55 void setBuffer(AudioBuffer*); 55 // returns true on success. 56 bool setBuffer(AudioBuffer*); 56 57 AudioBuffer* buffer() { return m_buffer.get(); } 57 58 -
trunk/Source/WebCore/webaudio/AudioBufferSourceNode.idl
r92459 r94878 29 29 GenerateToJS 30 30 ] AudioBufferSourceNode : AudioSourceNode { 31 attribute [JSCCustomSetter] AudioBuffer buffer; 31 attribute [CustomSetter] AudioBuffer buffer 32 setter raises (DOMException); 32 33 33 34 readonly attribute AudioGain gain;
Note: See TracChangeset
for help on using the changeset viewer.