Changeset 150905 in webkit
- Timestamp:
- May 29, 2013 10:11:53 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r150904 r150905 1 2013-05-26 Jer Noble <jer.noble@apple.com> 2 3 Support the 'onended' EventListener property for AudioBufferSourceNode and OscillatorNode. 4 https://bugs.webkit.org/show_bug.cgi?id=116798 5 6 Reviewed by Eric Carlson. 7 8 * webaudio/audiobuffersource-ended-expected.txt: Added. 9 * webaudio/audiobuffersource-ended.html: Added. 10 * webaudio/oscillator-ended-expected.txt: Added. 11 * webaudio/oscillator-ended.html: Added. 12 1 13 2013-05-29 Bem Jones-Bey <bjonesbe@adobe.com> 2 14 -
trunk/Source/WebCore/ChangeLog
r150904 r150905 1 2013-05-28 Jer Noble <jer.noble@apple.com> 2 3 Support the 'onended' EventListener property for AudioBufferSourceNode and OscillatorNode. 4 https://bugs.webkit.org/show_bug.cgi?id=116798 5 6 Reviewed by Eric Carlson. 7 8 Tests: webaudio/audiobuffersource-ended.html 9 webaudio/oscillator-ended.html 10 11 * Modules/webaudio/AudioScheduledSourceNode.cpp: 12 (WebCore::AudioScheduledSourceNode::AudioScheduledSourceNode): 13 (WebCore::AudioScheduledSourceNode::setOnended): Set m_hasEndedListener. 14 (WebCore::AudioScheduledSourceNode::finish): Call notifyEndedDispatch on the main thread. 15 (WebCore::AudioScheduledSourceNode::notifyEndedDispatch): Call notifyEnded(). 16 (WebCore::AudioScheduledSourceNode::notifyEnded): Call the onended event listener. 17 * Modules/webaudio/AudioScheduledSourceNode.h: 18 (WebCore::AudioScheduledSourceNode::onended): Added boilerplate. 19 * Modules/webaudio/AudioBufferSourceNode.idl: Added the onerror attribute. 20 * Modules/webaudio/OscillatorNode.idl: Ditto. 21 1 22 2013-05-29 Bem Jones-Bey <bjonesbe@adobe.com> 2 23 -
trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl
r149920 r150905 56 56 [Conditional=LEGACY_WEB_AUDIO] void noteGrainOn(double when, double grainOffset, double grainDuration); 57 57 [Conditional=LEGACY_WEB_AUDIO] void noteOff(double when); 58 59 attribute EventListener onended; 58 60 }; -
trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp
r140879 r150905 31 31 #include "AudioContext.h" 32 32 #include "AudioUtilities.h" 33 #include "Event.h" 33 34 #include <algorithm> 34 35 #include <wtf/MathExtras.h> … … 45 46 , m_startTime(0) 46 47 , m_endTime(UnknownTime) 48 , m_hasEndedListener(false) 47 49 { 48 50 } … … 165 167 #endif 166 168 169 void AudioScheduledSourceNode::setOnended(PassRefPtr<EventListener> listener) 170 { 171 setAttributeEventListener(eventNames().endedEvent, listener); 172 m_hasEndedListener = listener; 173 } 174 167 175 void AudioScheduledSourceNode::finish() 168 176 { … … 173 181 context()->decrementActiveSourceCount(); 174 182 } 183 184 if (m_hasEndedListener); 185 callOnMainThread(&AudioScheduledSourceNode::notifyEndedDispatch, this); 186 } 187 188 void AudioScheduledSourceNode::notifyEndedDispatch(void* userData) 189 { 190 static_cast<AudioScheduledSourceNode*>(userData)->notifyEnded(); 191 } 192 193 void AudioScheduledSourceNode::notifyEnded() 194 { 195 EventListener* listener = onended(); 196 if (!listener) 197 return; 198 199 RefPtr<Event> event = Event::create(eventNames().endedEvent, FALSE, FALSE); 200 event->setTarget(this); 201 listener->handleEvent(context()->scriptExecutionContext(), event.get()); 175 202 } 176 203 -
trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.h
r146040 r150905 70 70 bool hasFinished() const { return m_playbackState == FINISHED_STATE; } 71 71 72 EventListener* onended() { return getAttributeEventListener(eventNames().endedEvent); } 73 void setOnended(PassRefPtr<EventListener> listener); 74 72 75 protected: 73 76 // Get frame information for the current time quantum. … … 86 89 virtual void finish(); 87 90 91 static void notifyEndedDispatch(void*); 92 void notifyEnded(); 93 88 94 PlaybackState m_playbackState; 89 95 … … 96 102 double m_endTime; // in seconds 97 103 104 bool m_hasEndedListener; 105 98 106 static const double UnknownTime; 99 107 }; -
trunk/Source/WebCore/Modules/webaudio/OscillatorNode.idl
r149920 r150905 57 57 void setWaveTable(WaveTable waveTable); 58 58 59 attribute EventListener onended; 59 60 };
Note: See TracChangeset
for help on using the changeset viewer.