Title: [105138] trunk/Source/WebCore
Revision
105138
Author
[email protected]
Date
2012-01-17 03:13:00 -0800 (Tue, 17 Jan 2012)

Log Message

MediaStream API: Add the mediaStream constructor
https://bugs.webkit.org/show_bug.cgi?id=76436

Adding support for creating a MediaStream using a collection of MediaStreamTracks.

Reviewed by Adam Barth.

Tests for the Media Stream API will be provided by the bug 56587, pending enough landed code.

* mediastream/MediaStream.cpp:
(WebCore::MediaStream::create):
* mediastream/MediaStream.h:
* mediastream/MediaStream.idl:
* mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::component):
* mediastream/MediaStreamTrack.h:
* platform/mediastream/MediaStreamCenter.cpp:
(WebCore::MediaStreamCenter::didConstructMediaStream):
* platform/mediastream/MediaStreamCenter.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (105137 => 105138)


--- trunk/Source/WebCore/ChangeLog	2012-01-17 10:51:55 UTC (rev 105137)
+++ trunk/Source/WebCore/ChangeLog	2012-01-17 11:13:00 UTC (rev 105138)
@@ -1,3 +1,25 @@
+2012-01-17  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add the mediaStream constructor
+        https://bugs.webkit.org/show_bug.cgi?id=76436
+
+        Adding support for creating a MediaStream using a collection of MediaStreamTracks.
+
+        Reviewed by Adam Barth.
+
+        Tests for the Media Stream API will be provided by the bug 56587, pending enough landed code.
+
+        * mediastream/MediaStream.cpp:
+        (WebCore::MediaStream::create):
+        * mediastream/MediaStream.h:
+        * mediastream/MediaStream.idl:
+        * mediastream/MediaStreamTrack.cpp:
+        (WebCore::MediaStreamTrack::component):
+        * mediastream/MediaStreamTrack.h:
+        * platform/mediastream/MediaStreamCenter.cpp:
+        (WebCore::MediaStreamCenter::didConstructMediaStream):
+        * platform/mediastream/MediaStreamCenter.h:
+
 2012-01-17  Joshua Bell  <[email protected]>
 
         IndexedDB: IDBIndex.get/getKey should yield undefined, not an error

Modified: trunk/Source/WebCore/mediastream/MediaStream.cpp (105137 => 105138)


--- trunk/Source/WebCore/mediastream/MediaStream.cpp	2012-01-17 10:51:55 UTC (rev 105137)
+++ trunk/Source/WebCore/mediastream/MediaStream.cpp	2012-01-17 11:13:00 UTC (rev 105138)
@@ -29,10 +29,24 @@
 #if ENABLE(MEDIA_STREAM)
 
 #include "Event.h"
+#include "MediaStreamCenter.h"
 #include "ScriptExecutionContext.h"
+#include "UUID.h"
 
 namespace WebCore {
 
+PassRefPtr<MediaStream> MediaStream::create(ScriptExecutionContext* context, PassRefPtr<MediaStreamTrackList> prpTracks)
+{
+    RefPtr<MediaStreamTrackList> tracks = prpTracks;
+    MediaStreamSourceVector sources;
+    for (unsigned i = 0; i < tracks->length(); ++i)
+        sources.append(tracks->item(i)->component()->source());
+
+    RefPtr<MediaStreamDescriptor> descriptor = MediaStreamDescriptor::create(createCanonicalUUIDString(), sources);
+    MediaStreamCenter::instance().didConstructMediaStream(descriptor.get());
+    return adoptRef(new MediaStream(context, descriptor.release()));
+}
+
 PassRefPtr<MediaStream> MediaStream::create(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor)
 {
     return adoptRef(new MediaStream(context, streamDescriptor));

Modified: trunk/Source/WebCore/mediastream/MediaStream.h (105137 => 105138)


--- trunk/Source/WebCore/mediastream/MediaStream.h	2012-01-17 10:51:55 UTC (rev 105137)
+++ trunk/Source/WebCore/mediastream/MediaStream.h	2012-01-17 11:13:00 UTC (rev 105138)
@@ -47,6 +47,7 @@
     };
 
     static PassRefPtr<MediaStream> create(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>);
+    static PassRefPtr<MediaStream> create(ScriptExecutionContext*, PassRefPtr<MediaStreamTrackList>);
     virtual ~MediaStream();
 
     DEFINE_ATTRIBUTE_EVENT_LISTENER(ended);

Modified: trunk/Source/WebCore/mediastream/MediaStream.idl (105137 => 105138)


--- trunk/Source/WebCore/mediastream/MediaStream.idl	2012-01-17 10:51:55 UTC (rev 105137)
+++ trunk/Source/WebCore/mediastream/MediaStream.idl	2012-01-17 11:13:00 UTC (rev 105138)
@@ -26,8 +26,10 @@
 
     interface [
         Conditional=MEDIA_STREAM,
-        EventTarget
-    ] MediaStream {
+        EventTarget,
+        Constructor(in MediaStreamTrackList trackList),
+        CallWith=ScriptExecutionContext
+   ] MediaStream {
         readonly attribute DOMString label;
         readonly attribute MediaStreamTrackList tracks;
 

Modified: trunk/Source/WebCore/mediastream/MediaStreamTrack.cpp (105137 => 105138)


--- trunk/Source/WebCore/mediastream/MediaStreamTrack.cpp	2012-01-17 10:51:55 UTC (rev 105137)
+++ trunk/Source/WebCore/mediastream/MediaStreamTrack.cpp	2012-01-17 11:13:00 UTC (rev 105138)
@@ -29,6 +29,7 @@
 #if ENABLE(MEDIA_STREAM)
 
 #include "MediaStreamCenter.h"
+#include "MediaStreamComponent.h"
 
 namespace WebCore {
 
@@ -83,6 +84,11 @@
     MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_streamDescriptor.get(), m_trackIndex);
 }
 
+MediaStreamComponent* MediaStreamTrack::component()
+{
+    return m_streamDescriptor->component(m_trackIndex);
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(MEDIA_STREAM)

Modified: trunk/Source/WebCore/mediastream/MediaStreamTrack.h (105137 => 105138)


--- trunk/Source/WebCore/mediastream/MediaStreamTrack.h	2012-01-17 10:51:55 UTC (rev 105137)
+++ trunk/Source/WebCore/mediastream/MediaStreamTrack.h	2012-01-17 11:13:00 UTC (rev 105138)
@@ -36,6 +36,8 @@
 
 namespace WebCore {
 
+class MediaStreamComponent;
+
 class MediaStreamTrack : public RefCounted<MediaStreamTrack> {
 public:
     static PassRefPtr<MediaStreamTrack> create(PassRefPtr<MediaStreamDescriptor>, size_t trackIndex);
@@ -47,6 +49,8 @@
     bool enabled() const;
     void setEnabled(bool);
 
+    MediaStreamComponent* component();
+
 private:
     MediaStreamTrack(PassRefPtr<MediaStreamDescriptor>, size_t trackIndex);
 

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.cpp (105137 => 105138)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.cpp	2012-01-17 10:51:55 UTC (rev 105137)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.cpp	2012-01-17 11:13:00 UTC (rev 105138)
@@ -57,6 +57,7 @@
 
 // FIXME: remove when real implementations are available
 // Empty implementations for ports that build with MEDIA_STREAM enabled by default.
+
 MediaStreamCenter::MediaStreamCenter()
 {
 }
@@ -79,6 +80,10 @@
 {
 }
 
+void MediaStreamCenter::didConstructMediaStream(MediaStreamDescriptor*)
+{
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(MEDIA_STREAM)

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.h (105137 => 105138)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.h	2012-01-17 10:51:55 UTC (rev 105137)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.h	2012-01-17 11:13:00 UTC (rev 105138)
@@ -65,6 +65,7 @@
     // Calls from the DOM objects to notify the platform
     void didSetMediaStreamTrackEnabled(MediaStreamDescriptor*, unsigned componentIndex);
     void didStopLocalMediaStream(MediaStreamDescriptor*);
+    void didConstructMediaStream(MediaStreamDescriptor*);
 
     // Calls from the platform to update the DOM objects
     void endLocalMediaStream(MediaStreamDescriptor*);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to