Changeset 141151 in webkit


Ignore:
Timestamp:
Jan 29, 2013 12:59:32 PM (11 years ago)
Author:
tommyw@google.com
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):

Location:
trunk/Source
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/Platform/ChangeLog

    r141053 r141151  
     12013-01-29  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: A MediaStreamComponent should be able to return the MediaStreamDescriptor it belongs to
     4        https://bugs.webkit.org/show_bug.cgi?id=108173
     5
     6        Reviewed by Adam Barth.
     7
     8        * chromium/public/WebMediaStreamComponent.h:
     9        (WebKit):
     10        (WebMediaStreamComponent):
     11
    1122013-01-28  Alexandre Elias  <aelias@chromium.org>
    213
  • trunk/Source/Platform/chromium/public/WebMediaStreamComponent.h

    r139352 r141151  
    4141
    4242namespace WebKit {
    43 
     43class WebMediaStreamDescriptor;
    4444class WebMediaStreamSource;
    4545class WebString;
     
    6363    WEBKIT_EXPORT WebString id() const;
    6464
     65    WEBKIT_EXPORT WebMediaStreamDescriptor stream() const;
    6566    WEBKIT_EXPORT WebMediaStreamSource source() const;
    6667    WEBKIT_EXPORT bool isEnabled() const;
  • trunk/Source/WebCore/ChangeLog

    r141142 r141151  
     12013-01-29  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: A MediaStreamComponent should be able to return the MediaStreamDescriptor it belongs to
     4        https://bugs.webkit.org/show_bug.cgi?id=108173
     5
     6        Reviewed by Adam Barth.
     7
     8        To be able to return the MediaStreamDescriptor a MediaStreamComponent belongs to the "ownership"
     9        of the MediaStreamDescriptor needed to move from a MediaStreamTrack to the MediaStreamComponent.
     10        This is also better from an architectonic view as well.
     11
     12        Patch covered by existing tests.
     13
     14        * Modules/mediastream/MediaStream.cpp:
     15        (WebCore::MediaStream::MediaStream):
     16        (WebCore::MediaStream::addTrack):
     17        (WebCore::MediaStream::addRemoteTrack):
     18        * Modules/mediastream/MediaStreamTrack.cpp:
     19        (WebCore::MediaStreamTrack::create):
     20        (WebCore::MediaStreamTrack::MediaStreamTrack):
     21        (WebCore::MediaStreamTrack::setEnabled):
     22        * Modules/mediastream/MediaStreamTrack.h:
     23        (MediaStreamTrack):
     24        * Modules/mediastream/RTCStatsRequestImpl.cpp:
     25        (WebCore::RTCStatsRequestImpl::RTCStatsRequestImpl):
     26        * platform/chromium/support/WebMediaStreamComponent.cpp:
     27        (WebKit::WebMediaStreamComponent::stream):
     28        (WebKit):
     29        * platform/mediastream/MediaStreamComponent.h:
     30        (WebCore):
     31        (WebCore::MediaStreamComponent::create):
     32        (MediaStreamComponent):
     33        (WebCore::MediaStreamComponent::stream):
     34        (WebCore::MediaStreamComponent::setStream):
     35        (WebCore::MediaStreamComponent::MediaStreamComponent):
     36        * platform/mediastream/MediaStreamDescriptor.h:
     37        (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
     38
    1392013-01-29  Alec Flett  <alecflett@chromium.org>
    240
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp

    r139849 r141151  
    116116    m_audioTracks.reserveCapacity(numberOfAudioTracks);
    117117    for (size_t i = 0; i < numberOfAudioTracks; i++)
    118         m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor, m_descriptor->audioComponent(i)));
     118        m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor->audioComponent(i)));
    119119
    120120    size_t numberOfVideoTracks = m_descriptor->numberOfVideoComponents();
    121121    m_videoTracks.reserveCapacity(numberOfVideoTracks);
    122122    for (size_t i = 0; i < numberOfVideoTracks; i++)
    123         m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor, m_descriptor->videoComponent(i)));
     123        m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor->videoComponent(i)));
    124124}
    125125
     
    151151        return;
    152152
    153     RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(track->component()->source());
    154     RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecutionContext(), m_descriptor, component.get());
     153    RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(m_descriptor.get(), track->component()->source());
     154    RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecutionContext(), component.get());
    155155
    156156    switch (component->source()->type()) {
     
    258258void MediaStream::addRemoteTrack(MediaStreamComponent* component)
    259259{
     260    ASSERT(component && !component->stream());
    260261    if (ended())
    261262        return;
    262263
    263     RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionContext(), m_descriptor, component);
     264    component->setStream(descriptor());
     265
     266    RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionContext(), component);
    264267    switch (component->source()->type()) {
    265268    case MediaStreamSource::TypeAudio:
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp

    r139849 r141151  
    3535namespace WebCore {
    3636
    37 PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor, MediaStreamComponent* component)
     37PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, MediaStreamComponent* component)
    3838{
    39     RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, streamDescriptor, component));
     39    RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, component));
    4040    track->suspendIfNeeded();
    4141    return track.release();
    4242}
    4343
    44 MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor, MediaStreamComponent* component)
     44MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, MediaStreamComponent* component)
    4545    : ActiveDOMObject(context, this)
    4646    , m_stopped(false)
    47     , m_streamDescriptor(streamDescriptor)
    4847    , m_component(component)
    4948{
     
    9493    m_component->setEnabled(enabled);
    9594
    96     if (m_streamDescriptor->ended())
     95    if (m_component->stream()->ended())
    9796        return;
    9897
    99     MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_streamDescriptor.get(), m_component.get());
     98    MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_component->stream(), m_component.get());
    10099}
    101100
     
    141140}
    142141
    143 MediaStreamDescriptor* MediaStreamTrack::streamDescriptor()
    144 {
    145     return m_streamDescriptor.get();
    146 }
    147 
    148142MediaStreamComponent* MediaStreamTrack::component()
    149143{
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h

    r139849 r141151  
    4444class MediaStreamTrack : public RefCounted<MediaStreamTrack>, public ActiveDOMObject, public EventTarget, public MediaStreamSource::Observer {
    4545public:
    46     static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>, MediaStreamComponent*);
     46    static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, MediaStreamComponent*);
    4747    virtual ~MediaStreamTrack();
    4848
     
    6060    DEFINE_ATTRIBUTE_EVENT_LISTENER(ended);
    6161
    62     MediaStreamDescriptor* streamDescriptor();
    6362    MediaStreamComponent* component();
    6463    bool ended() const;
     
    7574
    7675private:
    77     MediaStreamTrack(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>, MediaStreamComponent*);
     76    MediaStreamTrack(ScriptExecutionContext*, MediaStreamComponent*);
    7877
    7978    // EventTarget
     
    8887
    8988    bool m_stopped;
    90     RefPtr<MediaStreamDescriptor> m_streamDescriptor;
    9189    RefPtr<MediaStreamComponent> m_component;
    9290};
  • trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp

    r131584 r141151  
    4545    : ActiveDOMObject(context, this)
    4646    , m_successCallback(callback)
    47     , m_stream(selector ? selector->streamDescriptor() : 0)
     47    , m_stream(selector ? selector->component()->stream() : 0)
    4848    , m_component(selector ? selector->component() : 0)
    4949{
  • trunk/Source/WebCore/platform/chromium/support/WebMediaStreamComponent.cpp

    r139352 r141151  
    3636
    3737#include "MediaStreamComponent.h"
     38#include <public/WebMediaStreamDescriptor.h>
    3839#include <public/WebMediaStreamSource.h>
    3940#include <public/WebString.h>
     
    8788}
    8889
     90WebMediaStreamDescriptor WebMediaStreamComponent::stream() const
     91{
     92    ASSERT(!m_private.isNull());
     93    return WebMediaStreamDescriptor(m_private->stream());
     94}
     95
    8996WebMediaStreamSource WebMediaStreamComponent::source() const
    9097{
  • trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h

    r139352 r141151  
    3939namespace WebCore {
    4040
     41class MediaStreamDescriptor;
     42
    4143class MediaStreamComponent : public RefCounted<MediaStreamComponent> {
    4244public:
    4345    static PassRefPtr<MediaStreamComponent> create(PassRefPtr<MediaStreamSource> source)
    4446    {
    45         return adoptRef(new MediaStreamComponent(source));
     47        return adoptRef(new MediaStreamComponent(0, source));
    4648    }
     49
     50    static PassRefPtr<MediaStreamComponent> create(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
     51    {
     52        return adoptRef(new MediaStreamComponent(stream, source));
     53    }
     54
     55    MediaStreamDescriptor* stream() const { return m_stream; }
     56    void setStream(MediaStreamDescriptor* stream) { ASSERT(!m_stream && stream); m_stream = stream; }
    4757
    4858    MediaStreamSource* source() const { return m_source.get(); }
     
    5363
    5464private:
    55     MediaStreamComponent(PassRefPtr<MediaStreamSource> source)
    56         : m_source(source)
     65    MediaStreamComponent(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
     66        : m_stream(stream)
     67        , m_source(source)
    5768        , m_id(createCanonicalUUIDString())
    5869        , m_enabled(true)
     
    6071    }
    6172
     73    MediaStreamDescriptor* m_stream;
    6274    RefPtr<MediaStreamSource> m_source;
    6375    String m_id;
  • trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h

    r139775 r141151  
    100100    {
    101101        for (size_t i = 0; i < audioSources.size(); i++)
    102             m_audioComponents.append(MediaStreamComponent::create(audioSources[i]));
     102            m_audioComponents.append(MediaStreamComponent::create(this, audioSources[i]));
    103103
    104104        for (size_t i = 0; i < videoSources.size(); i++)
    105             m_videoComponents.append(MediaStreamComponent::create(videoSources[i]));
     105            m_videoComponents.append(MediaStreamComponent::create(this, videoSources[i]));
    106106    }
    107107
Note: See TracChangeset for help on using the changeset viewer.