Title: [141151] trunk/Source
Revision
141151
Author
tom...@google.com
Date
2013-01-29 12:59:32 -0800 (Tue, 29 Jan 2013)

Log Message

MediaStream API: A MediaStreamComponent should be able to return the MediaStreamDescriptor it belongs to
https://bugs.webkit.org/show_bug.cgi?id=108173

Reviewed by Adam Barth.

Source/Platform:

* chromium/public/WebMediaStreamComponent.h:
(WebKit):
(WebMediaStreamComponent):

Source/WebCore:

To be able to return the MediaStreamDescriptor a MediaStreamComponent belongs to the "ownership"
of the MediaStreamDescriptor needed to move from a MediaStreamTrack to the MediaStreamComponent.
This is also better from an architectonic view as well.

Patch covered by existing tests.

* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::addTrack):
(WebCore::MediaStream::addRemoteTrack):
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::create):
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::setEnabled):
* Modules/mediastream/MediaStreamTrack.h:
(MediaStreamTrack):
* Modules/mediastream/RTCStatsRequestImpl.cpp:
(WebCore::RTCStatsRequestImpl::RTCStatsRequestImpl):
* platform/chromium/support/WebMediaStreamComponent.cpp:
(WebKit::WebMediaStreamComponent::stream):
(WebKit):
* platform/mediastream/MediaStreamComponent.h:
(WebCore):
(WebCore::MediaStreamComponent::create):
(MediaStreamComponent):
(WebCore::MediaStreamComponent::stream):
(WebCore::MediaStreamComponent::setStream):
(WebCore::MediaStreamComponent::MediaStreamComponent):
* platform/mediastream/MediaStreamDescriptor.h:
(WebCore::MediaStreamDescriptor::MediaStreamDescriptor):

Modified Paths

Diff

Modified: trunk/Source/Platform/ChangeLog (141150 => 141151)


--- trunk/Source/Platform/ChangeLog	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/Platform/ChangeLog	2013-01-29 20:59:32 UTC (rev 141151)
@@ -1,3 +1,14 @@
+2013-01-29  Tommy Widenflycht  <tom...@google.com>
+
+        MediaStream API: A MediaStreamComponent should be able to return the MediaStreamDescriptor it belongs to
+        https://bugs.webkit.org/show_bug.cgi?id=108173
+
+        Reviewed by Adam Barth.
+
+        * chromium/public/WebMediaStreamComponent.h:
+        (WebKit):
+        (WebMediaStreamComponent):
+
 2013-01-28  Alexandre Elias  <ael...@chromium.org>
 
         Make page scale shrink FrameView in applyPageScaleInCompositor mode

Modified: trunk/Source/Platform/chromium/public/WebMediaStreamComponent.h (141150 => 141151)


--- trunk/Source/Platform/chromium/public/WebMediaStreamComponent.h	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/Platform/chromium/public/WebMediaStreamComponent.h	2013-01-29 20:59:32 UTC (rev 141151)
@@ -40,7 +40,7 @@
 }
 
 namespace WebKit {
-
+class WebMediaStreamDescriptor;
 class WebMediaStreamSource;
 class WebString;
 
@@ -62,6 +62,7 @@
 
     WEBKIT_EXPORT WebString id() const;
 
+    WEBKIT_EXPORT WebMediaStreamDescriptor stream() const;
     WEBKIT_EXPORT WebMediaStreamSource source() const;
     WEBKIT_EXPORT bool isEnabled() const;
 

Modified: trunk/Source/WebCore/ChangeLog (141150 => 141151)


--- trunk/Source/WebCore/ChangeLog	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/ChangeLog	2013-01-29 20:59:32 UTC (rev 141151)
@@ -1,3 +1,41 @@
+2013-01-29  Tommy Widenflycht  <tom...@google.com>
+
+        MediaStream API: A MediaStreamComponent should be able to return the MediaStreamDescriptor it belongs to
+        https://bugs.webkit.org/show_bug.cgi?id=108173
+
+        Reviewed by Adam Barth.
+
+        To be able to return the MediaStreamDescriptor a MediaStreamComponent belongs to the "ownership"
+        of the MediaStreamDescriptor needed to move from a MediaStreamTrack to the MediaStreamComponent.
+        This is also better from an architectonic view as well.
+
+        Patch covered by existing tests.
+
+        * Modules/mediastream/MediaStream.cpp:
+        (WebCore::MediaStream::MediaStream):
+        (WebCore::MediaStream::addTrack):
+        (WebCore::MediaStream::addRemoteTrack):
+        * Modules/mediastream/MediaStreamTrack.cpp:
+        (WebCore::MediaStreamTrack::create):
+        (WebCore::MediaStreamTrack::MediaStreamTrack):
+        (WebCore::MediaStreamTrack::setEnabled):
+        * Modules/mediastream/MediaStreamTrack.h:
+        (MediaStreamTrack):
+        * Modules/mediastream/RTCStatsRequestImpl.cpp:
+        (WebCore::RTCStatsRequestImpl::RTCStatsRequestImpl):
+        * platform/chromium/support/WebMediaStreamComponent.cpp:
+        (WebKit::WebMediaStreamComponent::stream):
+        (WebKit):
+        * platform/mediastream/MediaStreamComponent.h:
+        (WebCore):
+        (WebCore::MediaStreamComponent::create):
+        (MediaStreamComponent):
+        (WebCore::MediaStreamComponent::stream):
+        (WebCore::MediaStreamComponent::setStream):
+        (WebCore::MediaStreamComponent::MediaStreamComponent):
+        * platform/mediastream/MediaStreamDescriptor.h:
+        (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
+
 2013-01-29  Alec Flett  <alecfl...@chromium.org>
 
         IndexedDB: Pass metadata in to IDBOpenDBRequest.onUpgradeNeeded/onSuccess

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (141150 => 141151)


--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp	2013-01-29 20:59:32 UTC (rev 141151)
@@ -115,12 +115,12 @@
     size_t numberOfAudioTracks = m_descriptor->numberOfAudioComponents();
     m_audioTracks.reserveCapacity(numberOfAudioTracks);
     for (size_t i = 0; i < numberOfAudioTracks; i++)
-        m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor, m_descriptor->audioComponent(i)));
+        m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor->audioComponent(i)));
 
     size_t numberOfVideoTracks = m_descriptor->numberOfVideoComponents();
     m_videoTracks.reserveCapacity(numberOfVideoTracks);
     for (size_t i = 0; i < numberOfVideoTracks; i++)
-        m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor, m_descriptor->videoComponent(i)));
+        m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor->videoComponent(i)));
 }
 
 MediaStream::~MediaStream()
@@ -150,8 +150,8 @@
     if (getTrackById(track->id()))
         return;
 
-    RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(track->component()->source());
-    RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecutionContext(), m_descriptor, component.get());
+    RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(m_descriptor.get(), track->component()->source());
+    RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecutionContext(), component.get());
 
     switch (component->source()->type()) {
     case MediaStreamSource::TypeAudio:
@@ -257,10 +257,13 @@
 
 void MediaStream::addRemoteTrack(MediaStreamComponent* component)
 {
+    ASSERT(component && !component->stream());
     if (ended())
         return;
 
-    RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionContext(), m_descriptor, component);
+    component->setStream(descriptor());
+
+    RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionContext(), component);
     switch (component->source()->type()) {
     case MediaStreamSource::TypeAudio:
         m_audioTracks.append(track);

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (141150 => 141151)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2013-01-29 20:59:32 UTC (rev 141151)
@@ -34,17 +34,16 @@
 
 namespace WebCore {
 
-PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor, MediaStreamComponent* component)
+PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, MediaStreamComponent* component)
 {
-    RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, streamDescriptor, component));
+    RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, component));
     track->suspendIfNeeded();
     return track.release();
 }
 
-MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor, MediaStreamComponent* component)
+MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, MediaStreamComponent* component)
     : ActiveDOMObject(context, this)
     , m_stopped(false)
-    , m_streamDescriptor(streamDescriptor)
     , m_component(component)
 {
     m_component->source()->addObserver(this);
@@ -93,10 +92,10 @@
 
     m_component->setEnabled(enabled);
 
-    if (m_streamDescriptor->ended())
+    if (m_component->stream()->ended())
         return;
 
-    MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_streamDescriptor.get(), m_component.get());
+    MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_component->stream(), m_component.get());
 }
 
 String MediaStreamTrack::readyState() const
@@ -140,11 +139,6 @@
     }
 }
 
-MediaStreamDescriptor* MediaStreamTrack::streamDescriptor()
-{
-    return m_streamDescriptor.get();
-}
-
 MediaStreamComponent* MediaStreamTrack::component()
 {
     return m_component.get();

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (141150 => 141151)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2013-01-29 20:59:32 UTC (rev 141151)
@@ -43,7 +43,7 @@
 
 class MediaStreamTrack : public RefCounted<MediaStreamTrack>, public ActiveDOMObject, public EventTarget, public MediaStreamSource::Observer {
 public:
-    static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>, MediaStreamComponent*);
+    static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, MediaStreamComponent*);
     virtual ~MediaStreamTrack();
 
     String kind() const;
@@ -59,7 +59,6 @@
     DEFINE_ATTRIBUTE_EVENT_LISTENER(unmute);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(ended);
 
-    MediaStreamDescriptor* streamDescriptor();
     MediaStreamComponent* component();
     bool ended() const;
 
@@ -74,7 +73,7 @@
     using RefCounted<MediaStreamTrack>::deref;
 
 private:
-    MediaStreamTrack(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>, MediaStreamComponent*);
+    MediaStreamTrack(ScriptExecutionContext*, MediaStreamComponent*);
 
     // EventTarget
     virtual EventTargetData* eventTargetData() OVERRIDE;
@@ -87,7 +86,6 @@
     virtual void sourceChangedState() OVERRIDE;
 
     bool m_stopped;
-    RefPtr<MediaStreamDescriptor> m_streamDescriptor;
     RefPtr<MediaStreamComponent> m_component;
 };
 

Modified: trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp (141150 => 141151)


--- trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp	2013-01-29 20:59:32 UTC (rev 141151)
@@ -44,7 +44,7 @@
 RTCStatsRequestImpl::RTCStatsRequestImpl(ScriptExecutionContext* context, PassRefPtr<RTCStatsCallback> callback, PassRefPtr<MediaStreamTrack> selector)
     : ActiveDOMObject(context, this)
     , m_successCallback(callback)
-    , m_stream(selector ? selector->streamDescriptor() : 0)
+    , m_stream(selector ? selector->component()->stream() : 0)
     , m_component(selector ? selector->component() : 0)
 {
 }

Modified: trunk/Source/WebCore/platform/chromium/support/WebMediaStreamComponent.cpp (141150 => 141151)


--- trunk/Source/WebCore/platform/chromium/support/WebMediaStreamComponent.cpp	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/platform/chromium/support/WebMediaStreamComponent.cpp	2013-01-29 20:59:32 UTC (rev 141151)
@@ -35,6 +35,7 @@
 #include <public/WebMediaStreamComponent.h>
 
 #include "MediaStreamComponent.h"
+#include <public/WebMediaStreamDescriptor.h>
 #include <public/WebMediaStreamSource.h>
 #include <public/WebString.h>
 #include <wtf/Vector.h>
@@ -86,6 +87,12 @@
     return m_private->id();
 }
 
+WebMediaStreamDescriptor WebMediaStreamComponent::stream() const
+{
+    ASSERT(!m_private.isNull());
+    return WebMediaStreamDescriptor(m_private->stream());
+}
+
 WebMediaStreamSource WebMediaStreamComponent::source() const
 {
     ASSERT(!m_private.isNull());

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h (141150 => 141151)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h	2013-01-29 20:59:32 UTC (rev 141151)
@@ -38,13 +38,23 @@
 
 namespace WebCore {
 
+class MediaStreamDescriptor;
+
 class MediaStreamComponent : public RefCounted<MediaStreamComponent> {
 public:
     static PassRefPtr<MediaStreamComponent> create(PassRefPtr<MediaStreamSource> source)
     {
-        return adoptRef(new MediaStreamComponent(source));
+        return adoptRef(new MediaStreamComponent(0, source));
     }
 
+    static PassRefPtr<MediaStreamComponent> create(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
+    {
+        return adoptRef(new MediaStreamComponent(stream, source));
+    }
+
+    MediaStreamDescriptor* stream() const { return m_stream; }
+    void setStream(MediaStreamDescriptor* stream) { ASSERT(!m_stream && stream); m_stream = stream; }
+
     MediaStreamSource* source() const { return m_source.get(); }
 
     String id() const { return m_id; }
@@ -52,13 +62,15 @@
     void setEnabled(bool enabled) { m_enabled = enabled; }
 
 private:
-    MediaStreamComponent(PassRefPtr<MediaStreamSource> source)
-        : m_source(source)
+    MediaStreamComponent(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
+        : m_stream(stream)
+        , m_source(source)
         , m_id(createCanonicalUUIDString())
         , m_enabled(true)
     {
     }
 
+    MediaStreamDescriptor* m_stream;
     RefPtr<MediaStreamSource> m_source;
     String m_id;
     bool m_enabled;

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h (141150 => 141151)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h	2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h	2013-01-29 20:59:32 UTC (rev 141151)
@@ -99,10 +99,10 @@
         , m_ended(false)
     {
         for (size_t i = 0; i < audioSources.size(); i++)
-            m_audioComponents.append(MediaStreamComponent::create(audioSources[i]));
+            m_audioComponents.append(MediaStreamComponent::create(this, audioSources[i]));
 
         for (size_t i = 0; i < videoSources.size(); i++)
-            m_videoComponents.append(MediaStreamComponent::create(videoSources[i]));
+            m_videoComponents.append(MediaStreamComponent::create(this, videoSources[i]));
     }
 
     MediaStreamDescriptorClient* m_client;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to