Title: [143919] branches/chromium/1410/Source
Revision
143919
Author
[email protected]
Date
2013-02-25 06:38:20 -0800 (Mon, 25 Feb 2013)

Log Message

Merge 142773
> MediaStream API: Use the source id when creating new tracks
> https://bugs.webkit.org/show_bug.cgi?id=109688
> 
> Reviewed by Adam Barth.
> 
> Source/Platform:
> 
> Added id to initialize and renamed audio/videoSources to audio/videoTracks.
> 
> * chromium/public/WebMediaStream.h:
> (WebKit):
> (WebMediaStream):
> (WebKit::WebMediaStream::audioSources):
> (WebKit::WebMediaStream::videoSources):
> * chromium/public/WebMediaStreamTrack.h:
> (WebMediaStreamTrack):
> 
> Source/WebCore:
> 
> This patch reuses the ids from the source when creating tracks instead of creating a new one.
> This was requested by the chromium port to greatly simplify their implementation.
> In the longer run the API should be rewritten to only use tracks instead of sources.
> 
> Covered by existing tests.
> 
> * platform/chromium/support/WebMediaStream.cpp:
> (WebKit::WebMediaStream::audioTracks):
> (WebKit::WebMediaStream::videoTracks):
> (WebKit::WebMediaStream::initialize):
> (WebKit):
> * platform/chromium/support/WebMediaStreamTrack.cpp:
> (WebKit::WebMediaStreamTrack::initialize):
> (WebKit):
> * platform/mediastream/MediaStreamComponent.h:
> (WebCore::MediaStreamComponent::create):
> (MediaStreamComponent):
> (WebCore::MediaStreamComponent::MediaStreamComponent):
> (WebCore):
> * platform/mediastream/MediaStreamDescriptor.h:
> (WebCore::MediaStreamDescriptor::create):
> (MediaStreamDescriptor):
> (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
> 
> Tools:
> 
> Switching mock to new API.
> 
> * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:
> (WebTestRunner::WebUserMediaClientMock::requestUserMedia):
> 

[email protected]
Review URL: https://codereview.chromium.org/12326102

Modified Paths

Diff

Modified: branches/chromium/1410/Source/Platform/chromium/public/WebMediaStream.h (143918 => 143919)


--- branches/chromium/1410/Source/Platform/chromium/public/WebMediaStream.h	2013-02-25 14:14:40 UTC (rev 143918)
+++ branches/chromium/1410/Source/Platform/chromium/public/WebMediaStream.h	2013-02-25 14:38:20 UTC (rev 143919)
@@ -36,8 +36,8 @@
 
 namespace WebKit {
 
+class WebMediaStreamSource;
 class WebMediaStreamTrack;
-class WebMediaStreamSource;
 class WebString;
 
 class WebMediaStream {
@@ -59,7 +59,11 @@
 
     WEBKIT_EXPORT void assign(const WebMediaStream&);
 
+    // DEPRECATED
     WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources);
+
+    WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks);
+
     WEBKIT_EXPORT void reset();
     bool isNull() const { return m_private.isNull(); }
 
@@ -68,9 +72,13 @@
 
     WEBKIT_EXPORT WebString id() const;
 
-    WEBKIT_EXPORT void audioSources(WebVector<WebMediaStreamTrack>&) const;
-    WEBKIT_EXPORT void videoSources(WebVector<WebMediaStreamTrack>&) const;
+    WEBKIT_EXPORT void audioTracks(WebVector<WebMediaStreamTrack>&) const;
+    WEBKIT_EXPORT void videoTracks(WebVector<WebMediaStreamTrack>&) const;
 
+    // DEPRECATED
+    void audioSources(WebVector<WebMediaStreamTrack>& tracks) const { audioTracks(tracks); }
+    void videoSources(WebVector<WebMediaStreamTrack>& tracks) const { videoTracks(tracks); }
+
     // Extra data associated with this WebMediaStream.
     // If non-null, the extra data pointer will be deleted when the object is destroyed.
     // Setting the extra data pointer will cause any existing non-null

Modified: branches/chromium/1410/Source/Platform/chromium/public/WebMediaStreamTrack.h (143918 => 143919)


--- branches/chromium/1410/Source/Platform/chromium/public/WebMediaStreamTrack.h	2013-02-25 14:14:40 UTC (rev 143918)
+++ branches/chromium/1410/Source/Platform/chromium/public/WebMediaStreamTrack.h	2013-02-25 14:38:20 UTC (rev 143919)
@@ -50,7 +50,10 @@
         return *this;
     }
     WEBKIT_EXPORT void assign(const WebMediaStreamTrack&);
+
     WEBKIT_EXPORT void initialize(const WebMediaStreamSource&);
+    WEBKIT_EXPORT void initialize(const WebString& id, const WebMediaStreamSource&);
+
     WEBKIT_EXPORT void reset();
     bool isNull() const { return m_private.isNull(); }
 

Modified: branches/chromium/1410/Source/WebCore/platform/chromium/support/WebMediaStream.cpp (143918 => 143919)


--- branches/chromium/1410/Source/WebCore/platform/chromium/support/WebMediaStream.cpp	2013-02-25 14:14:40 UTC (rev 143918)
+++ branches/chromium/1410/Source/WebCore/platform/chromium/support/WebMediaStream.cpp	2013-02-25 14:38:20 UTC (rev 143919)
@@ -94,22 +94,22 @@
     m_private->setExtraData(adoptRef(new ExtraDataContainer(extraData)));
 }
 
-void WebMediaStream::audioSources(WebVector<WebMediaStreamTrack>& webSources) const
+void WebMediaStream::audioTracks(WebVector<WebMediaStreamTrack>& webTracks) const
 {
-    size_t numberOfSources = m_private->numberOfAudioComponents();
-    WebVector<WebMediaStreamTrack> result(numberOfSources);
-    for (size_t i = 0; i < numberOfSources; ++i)
+    size_t numberOfTracks = m_private->numberOfAudioComponents();
+    WebVector<WebMediaStreamTrack> result(numberOfTracks);
+    for (size_t i = 0; i < numberOfTracks; ++i)
         result[i] = m_private->audioComponent(i);
-    webSources.swap(result);
+    webTracks.swap(result);
 }
 
-void WebMediaStream::videoSources(WebVector<WebMediaStreamTrack>& webSources) const
+void WebMediaStream::videoTracks(WebVector<WebMediaStreamTrack>& webTracks) const
 {
-    size_t numberOfSources = m_private->numberOfVideoComponents();
-    WebVector<WebMediaStreamTrack> result(numberOfSources);
-    for (size_t i = 0; i < numberOfSources; ++i)
+    size_t numberOfTracks = m_private->numberOfVideoComponents();
+    WebVector<WebMediaStreamTrack> result(numberOfTracks);
+    for (size_t i = 0; i < numberOfTracks; ++i)
         result[i] = m_private->videoComponent(i);
-    webSources.swap(result);
+    webTracks.swap(result);
 }
 
 WebMediaStream& WebMediaStream::operator=(const PassRefPtr<WebCore::MediaStreamDescriptor>& mediaStreamDescriptor)
@@ -130,18 +130,32 @@
 
 void WebMediaStream::initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources)
 {
-    MediaStreamSourceVector audio, video;
+    MediaStreamComponentVector audio, video;
     for (size_t i = 0; i < audioSources.size(); ++i) {
-        MediaStreamSource* curr = audioSources[i];
-        audio.append(curr);
+        MediaStreamSource* source = audioSources[i];
+        audio.append(MediaStreamComponent::create(source->id(), source));
     }
     for (size_t i = 0; i < videoSources.size(); ++i) {
-        MediaStreamSource* curr = videoSources[i];
-        video.append(curr);
+        MediaStreamSource* source = videoSources[i];
+        video.append(MediaStreamComponent::create(source->id(), source));
     }
     m_private = MediaStreamDescriptor::create(label, audio, video);
 }
 
+void WebMediaStream::initialize(const WebString& label, const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks)
+{
+    MediaStreamComponentVector audio, video;
+    for (size_t i = 0; i < audioTracks.size(); ++i) {
+        MediaStreamComponent* component = audioTracks[i];
+        audio.append(component);
+    }
+    for (size_t i = 0; i < videoTracks.size(); ++i) {
+        MediaStreamComponent* component = videoTracks[i];
+        video.append(component);
+    }
+    m_private = MediaStreamDescriptor::create(label, audio, video);
+}
+
 void WebMediaStream::assign(const WebMediaStream& other)
 {
     m_private = other.m_private;

Modified: branches/chromium/1410/Source/WebCore/platform/chromium/support/WebMediaStreamTrack.cpp (143918 => 143919)


--- branches/chromium/1410/Source/WebCore/platform/chromium/support/WebMediaStreamTrack.cpp	2013-02-25 14:14:40 UTC (rev 143918)
+++ branches/chromium/1410/Source/WebCore/platform/chromium/support/WebMediaStreamTrack.cpp	2013-02-25 14:38:20 UTC (rev 143919)
@@ -59,6 +59,11 @@
     m_private = MediaStreamComponent::create(source);
 }
 
+void WebMediaStreamTrack::initialize(const WebString& id, const WebMediaStreamSource& source)
+{
+    m_private = MediaStreamComponent::create(id, source);
+}
+
 void WebMediaStreamTrack::reset()
 {
     m_private.reset();

Modified: branches/chromium/1410/Source/WebCore/platform/mediastream/MediaStreamComponent.h (143918 => 143919)


--- branches/chromium/1410/Source/WebCore/platform/mediastream/MediaStreamComponent.h	2013-02-25 14:14:40 UTC (rev 143918)
+++ branches/chromium/1410/Source/WebCore/platform/mediastream/MediaStreamComponent.h	2013-02-25 14:38:20 UTC (rev 143919)
@@ -44,12 +44,17 @@
 public:
     static PassRefPtr<MediaStreamComponent> create(PassRefPtr<MediaStreamSource> source)
     {
-        return adoptRef(new MediaStreamComponent(0, source));
+        return adoptRef(new MediaStreamComponent(createCanonicalUUIDString(), 0, source));
     }
 
+    static PassRefPtr<MediaStreamComponent> create(const String& id, PassRefPtr<MediaStreamSource> source)
+    {
+        return adoptRef(new MediaStreamComponent(id, 0, source));
+    }
+
     static PassRefPtr<MediaStreamComponent> create(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
     {
-        return adoptRef(new MediaStreamComponent(stream, source));
+        return adoptRef(new MediaStreamComponent(createCanonicalUUIDString(), stream, source));
     }
 
     MediaStreamDescriptor* stream() const { return m_stream; }
@@ -62,12 +67,13 @@
     void setEnabled(bool enabled) { m_enabled = enabled; }
 
 private:
-    MediaStreamComponent(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
+    MediaStreamComponent(const String& id, MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
         : m_stream(stream)
         , m_source(source)
-        , m_id(createCanonicalUUIDString())
+        , m_id(id)
         , m_enabled(true)
     {
+        ASSERT(m_id.length());
     }
 
     MediaStreamDescriptor* m_stream;
@@ -76,6 +82,8 @@
     bool m_enabled;
 };
 
+typedef Vector<RefPtr<MediaStreamComponent> > MediaStreamComponentVector;
+
 } // namespace WebCore
 
 #endif // ENABLE(MEDIA_STREAM)

Modified: branches/chromium/1410/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h (143918 => 143919)


--- branches/chromium/1410/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h	2013-02-25 14:14:40 UTC (rev 143918)
+++ branches/chromium/1410/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h	2013-02-25 14:38:20 UTC (rev 143919)
@@ -61,6 +61,11 @@
         return adoptRef(new MediaStreamDescriptor(id, audioSources, videoSources));
     }
 
+    static PassRefPtr<MediaStreamDescriptor> create(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents)
+    {
+        return adoptRef(new MediaStreamDescriptor(id, audioComponents, videoComponents));
+    }
+
     MediaStreamDescriptorClient* client() const { return m_client; }
     void setClient(MediaStreamDescriptorClient* client) { m_client = client; }
 
@@ -98,6 +103,7 @@
         , m_id(id)
         , m_ended(false)
     {
+        ASSERT(m_id.length());
         for (size_t i = 0; i < audioSources.size(); i++)
             m_audioComponents.append(MediaStreamComponent::create(this, audioSources[i]));
 
@@ -105,6 +111,22 @@
             m_videoComponents.append(MediaStreamComponent::create(this, videoSources[i]));
     }
 
+    MediaStreamDescriptor(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents)
+        : m_client(0)
+        , m_id(id)
+        , m_ended(false)
+    {
+        ASSERT(m_id.length());
+        for (MediaStreamComponentVector::const_iterator iter = audioComponents.begin(); iter != audioComponents.end(); ++iter) {
+            (*iter)->setStream(this);
+            m_audioComponents.append((*iter));
+        }
+        for (MediaStreamComponentVector::const_iterator iter = videoComponents.begin(); iter != videoComponents.end(); ++iter) {
+            (*iter)->setStream(this);
+            m_videoComponents.append((*iter));
+        }
+    }
+
     MediaStreamDescriptorClient* m_client;
     String m_id;
     Vector<RefPtr<MediaStreamComponent> > m_audioComponents;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to