Changeset 113460 in webkit
- Timestamp:
- Apr 6, 2012 11:07:10 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r113457 r113460 1 2012-04-06 Tommy Widenflycht <tommyw@google.com> 2 3 MediaStream API: MediaStreams stops proper cleanup to take place during a page reload. 4 https://bugs.webkit.org/show_bug.cgi?id=83143 5 6 Reviewed by Adam Barth. 7 8 To fix this I have converted MediaStream and LocalMediaStream to be ActiveDOMObjects. 9 10 Have no idea how to write a test that succesfully verifies this. I have done manual testing 11 to verify that proper tear-down now takes place. 12 13 * Modules/mediastream/LocalMediaStream.cpp: 14 (WebCore::LocalMediaStream::create): 15 (WebCore::LocalMediaStream::stopFunction): 16 (WebCore): 17 * Modules/mediastream/LocalMediaStream.h: 18 (LocalMediaStream): 19 * Modules/mediastream/LocalMediaStream.idl: 20 * Modules/mediastream/MediaStream.cpp: 21 (WebCore::MediaStream::create): 22 (WebCore::MediaStream::MediaStream): 23 (WebCore::MediaStream::scriptExecutionContext): 24 * Modules/mediastream/MediaStream.h: 25 (MediaStream): 26 1 27 2012-04-06 Dan Bernstein <mitz@apple.com> 2 28 -
trunk/Source/WebCore/Modules/mediastream/LocalMediaStream.cpp
r105774 r113460 36 36 PassRefPtr<LocalMediaStream> LocalMediaStream::create(ScriptExecutionContext* context, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 37 37 { 38 return adoptRef(new LocalMediaStream(context, audioSources, videoSources)); 38 RefPtr<LocalMediaStream> stream = adoptRef(new LocalMediaStream(context, audioSources, videoSources)); 39 stream->suspendIfNeeded(); 40 return stream.release(); 39 41 } 40 42 … … 43 45 , m_stopTimer(this, &LocalMediaStream::stopTimerFired) 44 46 { 47 } 48 49 void LocalMediaStream::stopFunction() 50 { 51 stop(); 45 52 } 46 53 -
trunk/Source/WebCore/Modules/mediastream/LocalMediaStream.h
r105774 r113460 39 39 virtual ~LocalMediaStream(); 40 40 41 void stop(); 41 void stopFunction(); 42 43 // ActiveDOMObject 44 virtual void stop() OVERRIDE; 42 45 43 46 // EventTarget 44 virtual const AtomicString& interfaceName() const ;47 virtual const AtomicString& interfaceName() const OVERRIDE; 45 48 46 49 private: -
trunk/Source/WebCore/Modules/mediastream/LocalMediaStream.idl
r107768 r113460 31 31 JSGenerateToJSObject 32 32 ] LocalMediaStream : MediaStream { 33 void stop();33 [ImplementedAs=stopFunction] void stop(); 34 34 }; 35 35 -
trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp
r105774 r113460 77 77 RefPtr<MediaStreamDescriptor> descriptor = MediaStreamDescriptor::create(createCanonicalUUIDString(), audioSources, videoSources); 78 78 MediaStreamCenter::instance().didConstructMediaStream(descriptor.get()); 79 return adoptRef(new MediaStream(context, descriptor.release())); 79 80 RefPtr<MediaStream> stream = adoptRef(new MediaStream(context, descriptor.release())); 81 stream->suspendIfNeeded(); 82 return stream.release(); 80 83 } 81 84 82 85 PassRefPtr<MediaStream> MediaStream::create(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor) 83 86 { 84 return adoptRef(new MediaStream(context, streamDescriptor)); 87 RefPtr<MediaStream> stream = adoptRef(new MediaStream(context, streamDescriptor)); 88 stream->suspendIfNeeded(); 89 return stream.release(); 85 90 } 86 91 87 92 MediaStream::MediaStream(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor) 88 : m_scriptExecutionContext(context)93 : ActiveDOMObject(context, this) 89 94 , m_descriptor(streamDescriptor) 90 95 { … … 133 138 ScriptExecutionContext* MediaStream::scriptExecutionContext() const 134 139 { 135 return m_scriptExecutionContext.get();140 return ActiveDOMObject::scriptExecutionContext(); 136 141 } 137 142 -
trunk/Source/WebCore/Modules/mediastream/MediaStream.h
r105774 r113460 29 29 #if ENABLE(MEDIA_STREAM) 30 30 31 #include "ActiveDOMObject.h" 31 32 #include "EventTarget.h" 32 33 #include "MediaStreamDescriptor.h" … … 39 40 class ScriptExecutionContext; 40 41 41 class MediaStream : public RefCounted<MediaStream>, public MediaStreamDescriptorOwner, public EventTarget {42 class MediaStream : public RefCounted<MediaStream>, public MediaStreamDescriptorOwner, public EventTarget, public ActiveDOMObject { 42 43 public: 43 44 // Must match the constants in the .idl file. … … 64 65 65 66 // EventTarget 66 virtual const AtomicString& interfaceName() const ;67 virtual ScriptExecutionContext* scriptExecutionContext() const ;67 virtual const AtomicString& interfaceName() const OVERRIDE; 68 virtual ScriptExecutionContext* scriptExecutionContext() const OVERRIDE; 68 69 69 70 using RefCounted<MediaStream>::ref; … … 73 74 MediaStream(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>); 74 75 75 // EventTarget implementation.76 virtual EventTargetData* eventTargetData() ;77 virtual EventTargetData* ensureEventTargetData() ;76 // EventTarget 77 virtual EventTargetData* eventTargetData() OVERRIDE; 78 virtual EventTargetData* ensureEventTargetData() OVERRIDE; 78 79 79 80 private: 80 // EventTarget implementation.81 virtual void refEventTarget() { ref(); }82 virtual void derefEventTarget() { deref(); }81 // EventTarget 82 virtual void refEventTarget() OVERRIDE { ref(); } 83 virtual void derefEventTarget() OVERRIDE { deref(); } 83 84 84 85 EventTargetData m_eventTargetData; 85 86 RefPtr<ScriptExecutionContext> m_scriptExecutionContext;87 86 88 87 RefPtr<MediaStreamTrackList> m_audioTracks;
Note: See TracChangeset
for help on using the changeset viewer.