Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / mediastream / MediaStream.h
index 53b97c0..8ecd6f6 100644 (file)
@@ -40,7 +40,7 @@ namespace WebCore {
 
 class ExceptionState;
 
-class MediaStream FINAL : public RefCounted<MediaStream>, public ScriptWrappable, public URLRegistrable, public MediaStreamDescriptorClient, public EventTargetWithInlineData, public ContextLifecycleObserver {
+class MediaStream FINAL : public RefCounted<MediaStream>, public ScriptWrappable, public URLRegistrable, public MediaStreamDescriptorClient, public EventTargetWithInlineData, public ContextLifecycleObserver, public MediaStreamTrack::Observer {
     REFCOUNTED_EVENT_TARGET(MediaStream);
 public:
     static PassRefPtr<MediaStream> create(ExecutionContext*);
@@ -57,6 +57,7 @@ public:
     void addTrack(PassRefPtr<MediaStreamTrack>, ExceptionState&);
     void removeTrack(PassRefPtr<MediaStreamTrack>, ExceptionState&);
     MediaStreamTrack* getTrackById(String);
+    PassRefPtr<MediaStream> clone(ExecutionContext*);
 
     MediaStreamTrackVector getAudioTracks() const { return m_audioTracks; }
     MediaStreamTrackVector getVideoTracks() const { return m_videoTracks; }
@@ -68,8 +69,10 @@ public:
     DEFINE_ATTRIBUTE_EVENT_LISTENER(addtrack);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(removetrack);
 
-    // MediaStreamDescriptorClient
+    // MediaStreamTrack::Observer
     virtual void trackEnded() OVERRIDE;
+
+    // MediaStreamDescriptorClient
     virtual void streamEnded() OVERRIDE;
 
     MediaStreamDescriptor* descriptor() const { return m_descriptor.get(); }
@@ -81,18 +84,18 @@ public:
     // URLRegistrable
     virtual URLRegistry& registry() const OVERRIDE;
 
-protected:
+private:
     MediaStream(ExecutionContext*, PassRefPtr<MediaStreamDescriptor>);
+    MediaStream(ExecutionContext*, const MediaStreamTrackVector& audioTracks, const MediaStreamTrackVector& videoTracks);
 
     // ContextLifecycleObserver
     virtual void contextDestroyed() OVERRIDE;
 
-private:
     // MediaStreamDescriptorClient
     virtual void addRemoteTrack(MediaStreamComponent*) OVERRIDE;
     virtual void removeRemoteTrack(MediaStreamComponent*) OVERRIDE;
 
-    void scheduleDispatchEvent(PassRefPtr<Event>);
+    void scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event>);
     void scheduledEventTimerFired(Timer<MediaStream>*);
 
     bool m_stopped;
@@ -102,7 +105,7 @@ private:
     RefPtr<MediaStreamDescriptor> m_descriptor;
 
     Timer<MediaStream> m_scheduledEventTimer;
-    Vector<RefPtr<Event> > m_scheduledEvents;
+    WillBePersistentHeapVector<RefPtrWillBeMember<Event> > m_scheduledEvents;
 };
 
 typedef Vector<RefPtr<MediaStream> > MediaStreamVector;