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 |