Chromium Code Reviews| Index: Source/modules/mediastream/MediaStreamTrack.h |
| diff --git a/Source/modules/mediastream/MediaStreamTrack.h b/Source/modules/mediastream/MediaStreamTrack.h |
| index 40347d006b4b56b2f069956f833a9f2cee161ea7..7e32fe78ff9ee96b5d037fc8c8789a1c7f1461bd 100644 |
| --- a/Source/modules/mediastream/MediaStreamTrack.h |
| +++ b/Source/modules/mediastream/MediaStreamTrack.h |
| @@ -45,16 +45,10 @@ class ExceptionState; |
| class MediaStreamComponent; |
| class MediaStreamTrackSourcesCallback; |
| -class MediaStreamTrack FINAL : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamSource::Observer { |
| - REFCOUNTED_EVENT_TARGET(MediaStreamTrack); |
| +class MediaStreamTrack FINAL : public RefCountedWillBeRefCountedGarbageCollected<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamSource::Observer { |
| + DEFINE_EVENT_TARGET_REFCOUNTING(RefCountedWillBeRefCountedGarbageCollected<MediaStreamTrack>); |
| public: |
| - class Observer { |
| - public: |
| - virtual ~Observer() { } |
| - virtual void trackEnded() = 0; |
| - }; |
| - |
| - static PassRefPtr<MediaStreamTrack> create(ExecutionContext*, MediaStreamComponent*); |
| + static PassRefPtrWillBeRawPtr<MediaStreamTrack> create(ExecutionContext*, MediaStreamComponent*); |
| virtual ~MediaStreamTrack(); |
| String kind() const; |
| @@ -68,7 +62,7 @@ public: |
| static void getSources(ExecutionContext*, PassOwnPtr<MediaStreamTrackSourcesCallback>, ExceptionState&); |
| void stopTrack(ExceptionState&); |
| - PassRefPtr<MediaStreamTrack> clone(ExecutionContext*); |
| + PassRefPtrWillBeRawPtr<MediaStreamTrack> clone(ExecutionContext*); |
| DEFINE_ATTRIBUTE_EVENT_LISTENER(mute); |
| DEFINE_ATTRIBUTE_EVENT_LISTENER(unmute); |
| @@ -77,8 +71,8 @@ public: |
| MediaStreamComponent* component(); |
| bool ended() const; |
| - void addObserver(Observer*); |
| - void removeObserver(Observer*); |
| + void registerMediaStream(MediaStream*); |
| + void unregisterMediaStream(MediaStream*); |
| // EventTarget |
| virtual const AtomicString& interfaceName() const OVERRIDE; |
| @@ -89,6 +83,8 @@ public: |
| PassOwnPtr<AudioSourceProvider> createWebAudioSource(); |
| + void trace(Visitor*) { } |
| + |
| private: |
| MediaStreamTrack(ExecutionContext*, MediaStreamComponent*); |
| @@ -98,14 +94,14 @@ private: |
| virtual void sourceChangedState() OVERRIDE; |
| void propagateTrackEnded(); |
| - Vector<Observer*> m_observers; |
| - bool m_isIteratingObservers; |
| + Vector<RawPtrWillBeWeakMember<MediaStream> > m_registeredMediaStreams; |
|
haraken
2014/04/14 04:42:43
This should be WillBeHeapVector. And trace it.
keishi
2014/04/14 05:56:17
I'm getting build errors because there is a compil
haraken
2014/04/14 06:05:49
Yes, we intentionally don't support weakness in ve
Erik Corry
2014/04/14 09:10:35
It depends rather on what you want to happen when
haraken
2014/04/14 09:27:57
Does the order matters for m_registeredMediaStream
keishi
2014/04/21 07:14:40
I've looked into the usage and it seams like this
|
| + bool m_isIteratingRegisteredMediaStreams; |
| bool m_stopped; |
| RefPtr<MediaStreamComponent> m_component; |
| }; |
| -typedef Vector<RefPtr<MediaStreamTrack> > MediaStreamTrackVector; |
| +typedef WillBeHeapVector<RefPtrWillBeMember<MediaStreamTrack> > MediaStreamTrackVector; |
| } // namespace WebCore |