Changeset 190072 in webkit


Ignore:
Timestamp:
Sep 21, 2015 1:09:51 PM (9 years ago)
Author:
eric.carlson@apple.com
Message:

[MediaStream] Clean up MediaStream private interfaces
https://bugs.webkit.org/show_bug.cgi?id=149381

Reviewed by Jer Noble.

No new tests, no functional change.

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::create):
(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::clone):
(WebCore::MediaStream::getTrackById):
(WebCore::MediaStream::getAudioTracks):
(WebCore::MediaStream::getVideoTracks):
(WebCore::MediaStream::getTracks):
(WebCore::MediaStream::activeStatusChanged):
(WebCore::MediaStream::didAddTrack):
(WebCore::MediaStream::didRemoveTrack):
(WebCore::MediaStream::registry):
(WebCore::MediaStream::trackVectorForType):
(WebCore::MediaStream::didAddTrackToPrivate): Deleted.
(WebCore::MediaStream::didRemoveTrackFromPrivate): Deleted.

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamRegistry.cpp:

(WebCore::MediaStreamRegistry::lookup):
(WebCore::MediaStreamRegistry::MediaStreamRegistry):

  • Modules/mediastream/MediaStreamRegistry.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::kind):
(WebCore::MediaStreamTrack::removeObserver):
(WebCore::MediaStreamTrack::trackEnded):
(WebCore::MediaStreamTrack::trackMutedChanged):
(WebCore::MediaStreamTrack::trackStatesChanged):
(WebCore::MediaStreamTrack::configureTrackRendering):

  • Modules/mediastream/MediaStreamTrack.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::supportsType):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::load):

  • platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.mm:

(WebCore::MediaStreamPrivateAVFObjC::create):
(WebCore::MediaStreamPrivateAVFObjC::MediaStreamPrivateAVFObjC):

  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::create):
(WebCore::MediaStreamPrivate::MediaStreamPrivate):
(WebCore::MediaStreamPrivate::~MediaStreamPrivate):
(WebCore::MediaStreamPrivate::tracks):
(WebCore::MediaStreamPrivate::addTrack):
(WebCore::MediaStreamPrivate::removeTrack):

  • platform/mediastream/MediaStreamPrivate.h:

(WebCore::MediaStreamPrivateClient::~MediaStreamPrivateClient):
(WebCore::MediaStreamPrivate::id):
(WebCore::MediaStreamPrivate::active):
(WebCore::MediaStreamPrivate::MediaStreamPrivate): Deleted.
(WebCore::MediaStreamPrivate::~MediaStreamPrivate): Deleted.

  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate):
(WebCore::MediaStreamTrackPrivate::~MediaStreamTrackPrivate):
(WebCore::MediaStreamTrackPrivate::addObserver):
(WebCore::MediaStreamTrackPrivate::removeObserver):
(WebCore::MediaStreamTrackPrivate::label):
(WebCore::MediaStreamTrackPrivate::endTrack):
(WebCore::MediaStreamTrackPrivate::sourceStopped):
(WebCore::MediaStreamTrackPrivate::sourceMutedChanged):
(WebCore::MediaStreamTrackPrivate::sourceStatesChanged):
(WebCore::MediaStreamTrackPrivate::preventSourceFromStopping):

  • platform/mediastream/MediaStreamTrackPrivate.h:

(WebCore::MediaStreamTrackPrivate::Observer::~Observer):
(WebCore::MediaStreamTrackPrivate::ended):
(WebCore::MediaStreamTrackPrivate::startProducingData):
(WebCore::MediaStreamTrackPrivate::stopProducingData):
(WebCore::MediaStreamTrackPrivate::setMuted):
(WebCore::MediaStreamTrackPrivateClient::~MediaStreamTrackPrivateClient): Deleted.
(WebCore::MediaStreamTrackPrivate::setClient): Deleted.
(WebCore::MediaStreamTrackPrivate::client): Deleted.

  • platform/mediastream/MediaStreamTrackSourcesRequestClient.h:

(WebCore::TrackSourceInfo::create):
(WebCore::TrackSourceInfo::id):
(WebCore::TrackSourceInfo::label):
(WebCore::TrackSourceInfo::groupId):
(WebCore::TrackSourceInfo::kind):
(WebCore::TrackSourceInfo::TrackSourceInfo):
(WebCore::TrackSourceInfo::deviceId): Deleted.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::RealtimeMediaSource):
(WebCore::RealtimeMediaSource::reset):
(WebCore::RealtimeMediaSource::setMuted):
(WebCore::RealtimeMediaSource::statesDidChanged):
(WebCore::RealtimeMediaSource::readonly):

  • platform/mediastream/RealtimeMediaSource.h:

(WebCore::RealtimeMediaSource::id):
(WebCore::RealtimeMediaSource::persistentId):
(WebCore::RealtimeMediaSource::setPersistentId):
(WebCore::RealtimeMediaSource::type):
(WebCore::RealtimeMediaSource::stopped):

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/mac/AVCaptureDeviceManager.mm:

(WebCore::AVCaptureDeviceManager::getSourcesInfo):

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

(WebCore::RealtimeMediaSourceCenterMac::~RealtimeMediaSourceCenterMac):
(WebCore::RealtimeMediaSourceCenterMac::validateRequestConstraints):
(WebCore::RealtimeMediaSourceCenterMac::createMediaStream):
(WebCore::RealtimeMediaSourceCenterMac::getMediaStreamTrackSources):

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:

(WebCore::RealtimeMediaSourceCenterOwr::~RealtimeMediaSourceCenterOwr):
(WebCore::RealtimeMediaSourceCenterOwr::validateRequestConstraints):

  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockRealtimeMediaSourceCenter::registerMockRealtimeMediaSourceCenter):
(WebCore::MockRealtimeMediaSourceCenter::validateRequestConstraints):
(WebCore::MockRealtimeMediaSourceCenter::createMediaStream):
(WebCore::MockRealtimeMediaSourceCenter::getMediaStreamTrackSources):

  • platform/mock/MockRealtimeMediaSourceCenter.h:
Location:
trunk/Source/WebCore
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r190068 r190072  
     12015-09-21  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [MediaStream] Clean up MediaStream private interfaces
     4        https://bugs.webkit.org/show_bug.cgi?id=149381
     5
     6        Reviewed by Jer Noble.
     7
     8        No new tests, no functional change.
     9
     10        * Modules/mediastream/MediaStream.cpp:
     11        (WebCore::MediaStream::create):
     12        (WebCore::MediaStream::MediaStream):
     13        (WebCore::MediaStream::clone):
     14        (WebCore::MediaStream::getTrackById):
     15        (WebCore::MediaStream::getAudioTracks):
     16        (WebCore::MediaStream::getVideoTracks):
     17        (WebCore::MediaStream::getTracks):
     18        (WebCore::MediaStream::activeStatusChanged):
     19        (WebCore::MediaStream::didAddTrack):
     20        (WebCore::MediaStream::didRemoveTrack):
     21        (WebCore::MediaStream::registry):
     22        (WebCore::MediaStream::trackVectorForType):
     23        (WebCore::MediaStream::didAddTrackToPrivate): Deleted.
     24        (WebCore::MediaStream::didRemoveTrackFromPrivate): Deleted.
     25        * Modules/mediastream/MediaStream.h:
     26
     27        * Modules/mediastream/MediaStreamRegistry.cpp:
     28        (WebCore::MediaStreamRegistry::lookup):
     29        (WebCore::MediaStreamRegistry::MediaStreamRegistry):
     30        * Modules/mediastream/MediaStreamRegistry.h:
     31
     32        * Modules/mediastream/MediaStreamTrack.cpp:
     33        (WebCore::MediaStreamTrack::MediaStreamTrack):
     34        (WebCore::MediaStreamTrack::~MediaStreamTrack):
     35        (WebCore::MediaStreamTrack::kind):
     36        (WebCore::MediaStreamTrack::removeObserver):
     37        (WebCore::MediaStreamTrack::trackEnded):
     38        (WebCore::MediaStreamTrack::trackMutedChanged):
     39        (WebCore::MediaStreamTrack::trackStatesChanged):
     40        (WebCore::MediaStreamTrack::configureTrackRendering):
     41        * Modules/mediastream/MediaStreamTrack.h:
     42
     43        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
     44        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::supportsType):
     45        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::load):
     46
     47        * platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.h:
     48        * platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.mm:
     49        (WebCore::MediaStreamPrivateAVFObjC::create):
     50        (WebCore::MediaStreamPrivateAVFObjC::MediaStreamPrivateAVFObjC):
     51
     52        * platform/mediastream/MediaStreamPrivate.cpp:
     53        (WebCore::MediaStreamPrivate::create):
     54        (WebCore::MediaStreamPrivate::MediaStreamPrivate):
     55        (WebCore::MediaStreamPrivate::~MediaStreamPrivate):
     56        (WebCore::MediaStreamPrivate::tracks):
     57        (WebCore::MediaStreamPrivate::addTrack):
     58        (WebCore::MediaStreamPrivate::removeTrack):
     59        * platform/mediastream/MediaStreamPrivate.h:
     60        (WebCore::MediaStreamPrivateClient::~MediaStreamPrivateClient):
     61        (WebCore::MediaStreamPrivate::id):
     62        (WebCore::MediaStreamPrivate::active):
     63        (WebCore::MediaStreamPrivate::MediaStreamPrivate): Deleted.
     64        (WebCore::MediaStreamPrivate::~MediaStreamPrivate): Deleted.
     65
     66        * platform/mediastream/MediaStreamTrackPrivate.cpp:
     67        (WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate):
     68        (WebCore::MediaStreamTrackPrivate::~MediaStreamTrackPrivate):
     69        (WebCore::MediaStreamTrackPrivate::addObserver):
     70        (WebCore::MediaStreamTrackPrivate::removeObserver):
     71        (WebCore::MediaStreamTrackPrivate::label):
     72        (WebCore::MediaStreamTrackPrivate::endTrack):
     73        (WebCore::MediaStreamTrackPrivate::sourceStopped):
     74        (WebCore::MediaStreamTrackPrivate::sourceMutedChanged):
     75        (WebCore::MediaStreamTrackPrivate::sourceStatesChanged):
     76        (WebCore::MediaStreamTrackPrivate::preventSourceFromStopping):
     77        * platform/mediastream/MediaStreamTrackPrivate.h:
     78        (WebCore::MediaStreamTrackPrivate::Observer::~Observer):
     79        (WebCore::MediaStreamTrackPrivate::ended):
     80        (WebCore::MediaStreamTrackPrivate::startProducingData):
     81        (WebCore::MediaStreamTrackPrivate::stopProducingData):
     82        (WebCore::MediaStreamTrackPrivate::setMuted):
     83        (WebCore::MediaStreamTrackPrivateClient::~MediaStreamTrackPrivateClient): Deleted.
     84        (WebCore::MediaStreamTrackPrivate::setClient): Deleted.
     85        (WebCore::MediaStreamTrackPrivate::client): Deleted.
     86
     87        * platform/mediastream/MediaStreamTrackSourcesRequestClient.h:
     88        (WebCore::TrackSourceInfo::create):
     89        (WebCore::TrackSourceInfo::id):
     90        (WebCore::TrackSourceInfo::label):
     91        (WebCore::TrackSourceInfo::groupId):
     92        (WebCore::TrackSourceInfo::kind):
     93        (WebCore::TrackSourceInfo::TrackSourceInfo):
     94        (WebCore::TrackSourceInfo::deviceId): Deleted.
     95
     96        * platform/mediastream/RealtimeMediaSource.cpp:
     97        (WebCore::RealtimeMediaSource::RealtimeMediaSource):
     98        (WebCore::RealtimeMediaSource::reset):
     99        (WebCore::RealtimeMediaSource::setMuted):
     100        (WebCore::RealtimeMediaSource::statesDidChanged):
     101        (WebCore::RealtimeMediaSource::readonly):
     102        * platform/mediastream/RealtimeMediaSource.h:
     103        (WebCore::RealtimeMediaSource::id):
     104        (WebCore::RealtimeMediaSource::persistentId):
     105        (WebCore::RealtimeMediaSource::setPersistentId):
     106        (WebCore::RealtimeMediaSource::type):
     107        (WebCore::RealtimeMediaSource::stopped):
     108        * platform/mediastream/RealtimeMediaSourceCenter.h:
     109        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
     110        (WebCore::AVCaptureDeviceManager::getSourcesInfo):
     111
     112        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
     113        (WebCore::RealtimeMediaSourceCenterMac::~RealtimeMediaSourceCenterMac):
     114        (WebCore::RealtimeMediaSourceCenterMac::validateRequestConstraints):
     115        (WebCore::RealtimeMediaSourceCenterMac::createMediaStream):
     116        (WebCore::RealtimeMediaSourceCenterMac::getMediaStreamTrackSources):
     117        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
     118
     119        * platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:
     120        (WebCore::RealtimeMediaSourceCenterOwr::~RealtimeMediaSourceCenterOwr):
     121        (WebCore::RealtimeMediaSourceCenterOwr::validateRequestConstraints):
     122        * platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h:
     123
     124        * platform/mock/MockRealtimeMediaSourceCenter.cpp:
     125        (WebCore::MockRealtimeMediaSourceCenter::registerMockRealtimeMediaSourceCenter):
     126        (WebCore::MockRealtimeMediaSourceCenter::validateRequestConstraints):
     127        (WebCore::MockRealtimeMediaSourceCenter::createMediaStream):
     128        (WebCore::MockRealtimeMediaSourceCenter::getMediaStreamTrackSources):
     129        * platform/mock/MockRealtimeMediaSourceCenter.h:
     130
    11312015-09-21  Csaba Osztrogonác  <ossy@webkit.org>
    2132
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp

    r190020 r190072  
    5959Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context)
    6060{
    61     return MediaStream::create(context, MediaStreamPrivate::create());
     61    return MediaStream::create(context);
    6262}
    6363
     
    6969}
    7070
    71 Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, const Vector<RefPtr<MediaStreamTrack>>& tracks)
     71Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks)
    7272{
    7373    return adoptRef(*new MediaStream(context, tracks));
     
    7979}
    8080
    81 MediaStream::MediaStream(ScriptExecutionContext& context, const Vector<RefPtr<MediaStreamTrack>>& tracks)
     81MediaStream::MediaStream(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks)
    8282    : ContextDestructionObserver(&context)
    8383    , m_activityEventTimer(*this, &MediaStream::activityEventTimerFired)
     
    8585    // This constructor preserves MediaStreamTrack instances and must be used by calls originating
    8686    // from the JavaScript MediaStream constructor.
    87     Vector<RefPtr<MediaStreamTrackPrivate>> trackPrivates;
     87    MediaStreamTrackPrivateVector trackPrivates;
    8888    trackPrivates.reserveCapacity(tracks.size());
    8989
     
    122122RefPtr<MediaStream> MediaStream::clone()
    123123{
    124     Vector<RefPtr<MediaStreamTrack>> clonedTracks;
     124    MediaStreamTrackVector clonedTracks;
    125125    clonedTracks.reserveCapacity(m_trackSet.size());
    126126
     
    158158}
    159159
    160 Vector<RefPtr<MediaStreamTrack>> MediaStream::getAudioTracks()
     160MediaStreamTrackVector MediaStream::getAudioTracks() const
    161161{
    162162    return trackVectorForType(RealtimeMediaSource::Audio);
    163163}
    164164
    165 Vector<RefPtr<MediaStreamTrack>> MediaStream::getVideoTracks()
     165MediaStreamTrackVector MediaStream::getVideoTracks() const
    166166{
    167167    return trackVectorForType(RealtimeMediaSource::Video);
    168168}
    169169
    170 Vector<RefPtr<MediaStreamTrack>> MediaStream::getTracks() const
    171 {
    172     Vector<RefPtr<MediaStreamTrack>> tracks;
     170MediaStreamTrackVector MediaStream::getTracks() const
     171{
     172    MediaStreamTrackVector tracks;
    173173    tracks.reserveCapacity(m_trackSet.size());
    174174    copyValuesToVector(m_trackSet, tracks);
     
    194194}
    195195
    196 void MediaStream::didAddTrackToPrivate(MediaStreamTrackPrivate& trackPrivate)
     196void MediaStream::didAddTrack(MediaStreamTrackPrivate& trackPrivate)
    197197{
    198198    ScriptExecutionContext* context = scriptExecutionContext();
     
    203203}
    204204
    205 void MediaStream::didRemoveTrackFromPrivate(MediaStreamTrackPrivate& trackPrivate)
     205void MediaStream::didRemoveTrack(MediaStreamTrackPrivate& trackPrivate)
    206206{
    207207    RefPtr<MediaStreamTrack> track = getTrackById(trackPrivate.id());
     
    267267}
    268268
    269 Vector<RefPtr<MediaStreamTrack>> MediaStream::trackVectorForType(RealtimeMediaSource::Type filterType) const
    270 {
    271     Vector<RefPtr<MediaStreamTrack>> tracks;
     269MediaStreamTrackVector MediaStream::trackVectorForType(RealtimeMediaSource::Type filterType) const
     270{
     271    MediaStreamTrackVector tracks;
    272272    for (auto& track : m_trackSet.values()) {
    273273        if (track->source()->type() == filterType)
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.h

    r190020 r190072  
    5858    static Ref<MediaStream> create(ScriptExecutionContext&);
    5959    static Ref<MediaStream> create(ScriptExecutionContext&, MediaStream*);
    60     static Ref<MediaStream> create(ScriptExecutionContext&, const Vector<RefPtr<MediaStreamTrack>>&);
     60    static Ref<MediaStream> create(ScriptExecutionContext&, const MediaStreamTrackVector&);
    6161    static Ref<MediaStream> create(ScriptExecutionContext&, RefPtr<MediaStreamPrivate>&&);
    6262    virtual ~MediaStream();
     
    6868    MediaStreamTrack* getTrackById(String);
    6969
    70     Vector<RefPtr<MediaStreamTrack>> getAudioTracks();
    71     Vector<RefPtr<MediaStreamTrack>> getVideoTracks();
    72     Vector<RefPtr<MediaStreamTrack>> getTracks() const;
     70    MediaStreamTrackVector getAudioTracks() const;
     71    MediaStreamTrackVector getVideoTracks() const;
     72    MediaStreamTrackVector getTracks() const;
    7373
    7474    RefPtr<MediaStream> clone();
     
    9292
    9393protected:
    94     MediaStream(ScriptExecutionContext&, const Vector<RefPtr<MediaStreamTrack>>&);
     94    MediaStream(ScriptExecutionContext&, const MediaStreamTrackVector&);
    9595    MediaStream(ScriptExecutionContext&, RefPtr<MediaStreamPrivate>&&);
    9696
     
    110110    // MediaStreamPrivateClient
    111111    virtual void activeStatusChanged() override final;
    112     virtual void didAddTrackToPrivate(MediaStreamTrackPrivate&) override final;
    113     virtual void didRemoveTrackFromPrivate(MediaStreamTrackPrivate&) override final;
     112    virtual void didAddTrack(MediaStreamTrackPrivate&) override final;
     113    virtual void didRemoveTrack(MediaStreamTrackPrivate&) override final;
    114114
    115115    bool internalAddTrack(RefPtr<MediaStreamTrack>&&, StreamModifier);
     
    119119    void activityEventTimerFired();
    120120
    121     Vector<RefPtr<MediaStreamTrack>> trackVectorForType(RealtimeMediaSource::Type) const;
     121    MediaStreamTrackVector trackVectorForType(RealtimeMediaSource::Type) const;
    122122
    123123    RefPtr<MediaStreamPrivate> m_private;
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp

    r166053 r190072  
    6363}
    6464
     65MediaStreamRegistry::MediaStreamRegistry()
     66{
     67    MediaStream::setRegistry(*this);
     68}
     69
    6570} // namespace WebCore
    6671
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h

    r162158 r190072  
    4141class MediaStreamRegistry final : public URLRegistry {
    4242public:
     43    friend class NeverDestroyed<MediaStreamRegistry>;
     44
    4345    // Returns a single instance of MediaStreamRegistry.
    4446    static MediaStreamRegistry& registry();
     
    5153
    5254private:
     55    MediaStreamRegistry();
    5356    HashMap<String, RefPtr<MediaStream>> m_mediaStreams;
    5457};
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp

    r186081 r190072  
    6060    suspendIfNeeded();
    6161
    62     m_private->setClient(this);
     62    m_private->addObserver(*this);
    6363}
    6464
    6565MediaStreamTrack::~MediaStreamTrack()
    6666{
    67     m_private->setClient(nullptr);
     67    m_private->removeObserver(*this);
    6868}
    6969
     
    191191}
    192192
    193 void MediaStreamTrack::trackEnded()
     193void MediaStreamTrack::trackEnded(MediaStreamTrackPrivate&)
    194194{
    195195    dispatchEvent(Event::create(eventNames().endedEvent, false, false));
     
    201201}
    202202   
    203 void MediaStreamTrack::trackMutedChanged()
     203void MediaStreamTrack::trackMutedChanged(MediaStreamTrackPrivate&)
    204204{
    205205    AtomicString eventType = muted() ? eventNames().muteEvent : eventNames().unmuteEvent;
     
    209209}
    210210
     211void MediaStreamTrack::trackStatesChanged(MediaStreamTrackPrivate&)
     212{
     213    configureTrackRendering();
     214}
     215
    211216void MediaStreamTrack::configureTrackRendering()
    212217{
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h

    r186182 r190072  
    4343namespace WebCore {
    4444
     45class AudioSourceProvider;
    4546class Dictionary;
    4647class MediaConstraintsImpl;
     
    4950class MediaTrackConstraints;
    5051
    51 class MediaStreamTrack final : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivateClient {
     52class MediaStreamTrack final : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivate::Observer {
    5253public:
    5354    class Observer {
     
    112113    virtual void derefEventTarget() override final { deref(); }
    113114
    114     // MediaStreamTrackPrivateClient
    115     void trackEnded() override;
    116     void trackMutedChanged() override;
     115    // MediaStreamTrackPrivate::Observer
     116    void trackEnded(MediaStreamTrackPrivate&) override;
     117    void trackMutedChanged(MediaStreamTrackPrivate&) override;
     118    void trackStatesChanged(MediaStreamTrackPrivate&) override;
    117119
    118120    Vector<Observer*> m_observers;
     
    122124};
    123125
     126typedef Vector<RefPtr<MediaStreamTrack>> MediaStreamTrackVector;
     127
    124128} // namespace WebCore
    125129
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm

    r189144 r190072  
    125125MediaPlayer::SupportsType MediaPlayerPrivateMediaStreamAVFObjC::supportsType(const MediaEngineSupportParameters& parameters)
    126126{
    127     // This engine does not support non-media-stream sources.
    128127    if (parameters.isMediaStream)
    129128        return MediaPlayer::IsSupported;
     129
    130130    return MediaPlayer::IsNotSupported;
    131131}
     
    134134#pragma mark MediaPlayerPrivateInterface Overrides
    135135
    136 void MediaPlayerPrivateMediaStreamAVFObjC::load(MediaStreamPrivate& client)
    137 {
    138     m_MediaStreamPrivate = MediaStreamPrivateAVFObjC::create(*this, *client.client());
    139     for (auto track : client.tracks()) {
    140         m_MediaStreamPrivate->addTrack(WTF::move(track), MediaStreamPrivate::NotifyClientOption::DontNotify);
    141         m_MediaStreamPrivate->client()->didAddTrackToPrivate(*track);
     136void MediaPlayerPrivateMediaStreamAVFObjC::load(MediaStreamPrivate& stream)
     137{
     138    LOG(Media, "MediaPlayerPrivateMediaStreamAVFObjC::load(%p)", this);
     139
     140    m_MediaStreamPrivate = MediaStreamPrivateAVFObjC::create(*this, stream);
     141    for (auto track : stream.tracks()) {
     142        m_MediaStreamPrivate->addTrack(WTF::move(track));
    142143        if (!track->ended()) {
    143144            track->source()->startProducingData();
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.h

    r186766 r190072  
    5555class MediaStreamPrivateAVFObjC final : public MediaStreamPrivate {
    5656public:
    57     static RefPtr<MediaStreamPrivateAVFObjC> create(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivateClient&);
     57    static RefPtr<MediaStreamPrivateAVFObjC> create(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivate&);
    5858    virtual ~MediaStreamPrivateAVFObjC();
    5959
     
    7575
    7676private:
    77     MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivateClient&);
     77    MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivate&);
    7878
    7979    MediaPlayerPrivateMediaStreamAVFObjC* m_player;
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.mm

    r186766 r190072  
    4444#pragma mark MediaStreamPrivateAVFObjC
    4545
    46 RefPtr<MediaStreamPrivateAVFObjC> MediaStreamPrivateAVFObjC::create(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivateClient& client)
     46RefPtr<MediaStreamPrivateAVFObjC> MediaStreamPrivateAVFObjC::create(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivate& stream)
    4747{
    48     return adoptRef(new MediaStreamPrivateAVFObjC(parent, client));
     48    return adoptRef(new MediaStreamPrivateAVFObjC(parent, stream));
    4949}
    5050
    51 MediaStreamPrivateAVFObjC::MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivateClient& client)
    52     : m_player(&parent)
    53     , m_client(&client)
     51MediaStreamPrivateAVFObjC::MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivate& stream)
     52    : MediaStreamPrivate(*stream.client())
     53    , m_player(&parent)
    5454{
    5555}
  • trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp

    r186081 r190072  
    4545RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const Vector<RefPtr<RealtimeMediaSource>>& audioSources, const Vector<RefPtr<RealtimeMediaSource>>& videoSources)
    4646{
    47     Vector<RefPtr<MediaStreamTrackPrivate>> tracks;
     47    MediaStreamTrackPrivateVector tracks;
    4848    tracks.reserveCapacity(audioSources.size() + videoSources.size());
    4949
     
    5757}
    5858
    59 RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const Vector<RefPtr<MediaStreamTrackPrivate>>& tracks)
     59RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const MediaStreamTrackPrivateVector& tracks)
    6060{
    6161    return adoptRef(new MediaStreamPrivate(createCanonicalUUIDString(), tracks));
    6262}
    6363
    64 RefPtr<MediaStreamPrivate> MediaStreamPrivate::create()
     64MediaStreamPrivate::MediaStreamPrivate(const String& id, const MediaStreamTrackPrivateVector& tracks)
     65    : m_id(id)
    6566{
    66     return MediaStreamPrivate::create(Vector<RefPtr<MediaStreamTrackPrivate>>());
    67 }
    68 
    69 MediaStreamPrivate::MediaStreamPrivate(const String& id, const Vector<RefPtr<MediaStreamTrackPrivate>>& tracks)
    70     : m_client(0)
    71     , m_id(id)
    72     , m_isActive(false)
    73 {
    74     ASSERT(m_id.length());
     67    ASSERT(!m_id.isEmpty());
    7568
    7669    for (auto& track : tracks)
     
    8073}
    8174
    82 Vector<RefPtr<MediaStreamTrackPrivate>> MediaStreamPrivate::tracks() const
     75MediaStreamPrivate::MediaStreamPrivate(MediaStreamPrivateClient& client)
     76    : m_client(&client)
    8377{
    84     Vector<RefPtr<MediaStreamTrackPrivate>> tracks;
     78}
     79
     80MediaStreamPrivate::~MediaStreamPrivate()
     81{
     82    m_client = nullptr;
     83    m_isActive = false;
     84}
     85
     86MediaStreamTrackPrivateVector MediaStreamPrivate::tracks() const
     87{
     88    MediaStreamTrackPrivateVector tracks;
    8589    tracks.reserveCapacity(m_trackSet.size());
    8690    copyValuesToVector(m_trackSet, tracks);
     
    113117        return;
    114118
     119    track->addObserver(*this);
    115120    m_trackSet.add(track->id(), track);
    116121
    117122    if (m_client && notifyClientOption == NotifyClientOption::Notify)
    118         m_client->didAddTrackToPrivate(*track.get());
     123        m_client->didAddTrack(*track.get());
    119124
    120     updateActiveState(NotifyClientOption::Notify);
     125    updateActiveState(notifyClientOption);
    121126}
    122127
     
    126131        return;
    127132
     133    track.removeObserver(*this);
     134
    128135    if (m_client && notifyClientOption == NotifyClientOption::Notify)
    129         m_client->didRemoveTrackFromPrivate(track);
     136        m_client->didRemoveTrack(track);
    130137
    131138    updateActiveState(NotifyClientOption::Notify);
  • trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h

    r187971 r190072  
    5252
    5353    virtual void activeStatusChanged() = 0;
    54     virtual void didAddTrackToPrivate(MediaStreamTrackPrivate&) = 0;
    55     virtual void didRemoveTrackFromPrivate(MediaStreamTrackPrivate&) = 0;
     54    virtual void didAddTrack(MediaStreamTrackPrivate&) = 0;
     55    virtual void didRemoveTrack(MediaStreamTrackPrivate&) = 0;
    5656};
    5757
    58 class MediaStreamPrivate : public RefCounted<MediaStreamPrivate> {
     58class MediaStreamPrivate : public MediaStreamTrackPrivate::Observer, public RefCounted<MediaStreamPrivate> {
    5959public:
    6060    static RefPtr<MediaStreamPrivate> create(const Vector<RefPtr<RealtimeMediaSource>>& audioSources, const Vector<RefPtr<RealtimeMediaSource>>& videoSources);
    61     static RefPtr<MediaStreamPrivate> create(const Vector<RefPtr<MediaStreamTrackPrivate>>&);
    62     static RefPtr<MediaStreamPrivate> create();
     61    static RefPtr<MediaStreamPrivate> create(const MediaStreamTrackPrivateVector&);
    6362
    64     MediaStreamPrivate() { }
    65     virtual ~MediaStreamPrivate() { }
     63    virtual ~MediaStreamPrivate();
    6664
    6765    enum class NotifyClientOption { Notify, DontNotify };
     
    7270    String id() const { return m_id; }
    7371
    74     Vector<RefPtr<MediaStreamTrackPrivate>> tracks() const;
     72    MediaStreamTrackPrivateVector tracks() const;
    7573
    7674    bool active() const { return m_isActive; }
    7775    void updateActiveState(NotifyClientOption);
    7876
    79     void addTrack(RefPtr<MediaStreamTrackPrivate>&&, NotifyClientOption);
    80     void removeTrack(MediaStreamTrackPrivate&, NotifyClientOption);
     77    void addTrack(RefPtr<MediaStreamTrackPrivate>&&, NotifyClientOption = NotifyClientOption::Notify);
     78    void removeTrack(MediaStreamTrackPrivate&, NotifyClientOption = NotifyClientOption::Notify);
     79
     80protected:
     81    explicit MediaStreamPrivate(MediaStreamPrivateClient&);
    8182
    8283private:
    83     MediaStreamPrivate(const String& id, const Vector<RefPtr<MediaStreamTrackPrivate>>&);
     84    MediaStreamPrivate(const String&, const MediaStreamTrackPrivateVector&);
    8485
    85     MediaStreamPrivateClient* m_client;
     86    void trackEnded(MediaStreamTrackPrivate&) override { }
     87    void trackMutedChanged(MediaStreamTrackPrivate&) override { }
     88    void trackStatesChanged(MediaStreamTrackPrivate&) override { }
     89
     90    MediaStreamPrivateClient* m_client { nullptr };
    8691    String m_id;
    87     bool m_isActive;
     92    bool m_isActive { false };
    8893
    8994    HashMap<String, RefPtr<MediaStreamTrackPrivate>> m_trackSet;
  • trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp

    r186081 r190072  
    2626
    2727#include "config.h"
     28#include "MediaStreamTrackPrivate.h"
    2829
    2930#if ENABLE(MEDIA_STREAM)
    3031
    31 #include "MediaStreamTrackPrivate.h"
    32 
     32#include "AudioSourceProvider.h"
    3333#include "MediaSourceStates.h"
    3434#include "MediaStreamCapabilities.h"
     
    5151    : RefCounted()
    5252    , m_source(other.source())
    53     , m_client(nullptr)
    5453    , m_id(createCanonicalUUIDString())
    5554    , m_isEnabled(other.enabled())
     
    6261    : RefCounted()
    6362    , m_source(source)
    64     , m_client(nullptr)
    6563    , m_id(id)
    6664    , m_isEnabled(true)
     
    7371{
    7472    m_source->removeObserver(this);
     73}
     74
     75void MediaStreamTrackPrivate::addObserver(MediaStreamTrackPrivate::Observer& observer)
     76{
     77    m_observers.append(&observer);
     78}
     79
     80void MediaStreamTrackPrivate::removeObserver(MediaStreamTrackPrivate::Observer& observer)
     81{
     82    size_t pos = m_observers.find(&observer);
     83    if (pos != notFound)
     84        m_observers.remove(pos);
    7585}
    7686
     
    103113void MediaStreamTrackPrivate::endTrack()
    104114{
    105     if (ended())
     115    if (m_isEnded)
    106116        return;
    107117
     
    143153void MediaStreamTrackPrivate::sourceStopped()
    144154{
    145     if (ended())
     155    if (m_isEnded)
    146156        return;
    147157
    148158    m_isEnded = true;
    149159
    150     if (m_client)
    151         m_client->trackEnded();
     160    for (auto& observer : m_observers)
     161        observer->trackEnded(*this);
    152162}
    153163
    154164void MediaStreamTrackPrivate::sourceMutedChanged()
    155165{
    156     if (m_client)
    157         m_client->trackMutedChanged();
     166    for (auto& observer : m_observers)
     167        observer->trackMutedChanged(*this);
     168}
     169
     170void MediaStreamTrackPrivate::sourceStatesChanged()
     171{
     172    for (auto& observer : m_observers)
     173        observer->trackStatesChanged(*this);
    158174}
    159175
  • trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h

    r186081 r190072  
    3636namespace WebCore {
    3737
     38class AudioSourceProvider;
    3839class MediaSourceStates;
    3940class RealtimeMediaSourceCapabilities;
    4041
    41 class MediaStreamTrackPrivateClient {
    42 public:
    43     virtual ~MediaStreamTrackPrivateClient() { }
    44 
    45     virtual void trackEnded() = 0;
    46     virtual void trackMutedChanged() = 0;
    47 };
    48 
    4942class MediaStreamTrackPrivate : public RefCounted<MediaStreamTrackPrivate>, public RealtimeMediaSource::Observer {
    5043public:
     44    class Observer {
     45    public:
     46        virtual ~Observer() { }
     47
     48        virtual void trackEnded(MediaStreamTrackPrivate&) = 0;
     49        virtual void trackMutedChanged(MediaStreamTrackPrivate&) = 0;
     50        virtual void trackStatesChanged(MediaStreamTrackPrivate&) = 0;
     51    };
     52   
    5153    static RefPtr<MediaStreamTrackPrivate> create(RefPtr<RealtimeMediaSource>&&);
    5254    static RefPtr<MediaStreamTrackPrivate> create(RefPtr<RealtimeMediaSource>&&, const String& id);
     
    5961    bool ended() const { return m_isEnded; }
    6062
     63    void startProducingData() { m_source->startProducingData(); }
     64    void stopProducingData() { m_source->stopProducingData(); }
     65
    6166    bool muted() const;
     67    void setMuted(bool muted) const { m_source->setMuted(muted); }
    6268
    6369    bool readonly() const;
     
    7480    void endTrack();
    7581
    76     void setClient(MediaStreamTrackPrivateClient* client) { m_client = client; }
     82    void addObserver(Observer&);
     83    void removeObserver(Observer&);
    7784
    7885    const RealtimeMediaSourceStates& states() const;
     
    8289    void applyConstraints(const MediaConstraints&);
    8390
    84     void configureTrackRendering();
    85 
    8691private:
    8792    explicit MediaStreamTrackPrivate(const MediaStreamTrackPrivate&);
    8893    MediaStreamTrackPrivate(RefPtr<RealtimeMediaSource>&&, const String& id);
    8994
    90     MediaStreamTrackPrivateClient* client() const { return m_client; }
     95    // RealtimeMediaSourceObserver
     96    void sourceStopped() override final;
     97    void sourceMutedChanged() override final;
     98    void sourceStatesChanged() override final;
     99    bool preventSourceFromStopping() override final;
    91100
    92     // RealtimeMediaSourceObserver
    93     virtual void sourceStopped() override final;
    94     virtual void sourceMutedChanged() override final;
    95     virtual bool preventSourceFromStopping() override final;
    96    
     101    Vector<Observer*> m_observers;
    97102    RefPtr<RealtimeMediaSource> m_source;
    98     MediaStreamTrackPrivateClient* m_client;
    99103    RefPtr<MediaConstraints> m_constraints;
    100104
     
    104108};
    105109
     110typedef Vector<RefPtr<MediaStreamTrackPrivate>> MediaStreamTrackPrivateVector;
     111
    106112} // namespace WebCore
    107113
  • trunk/Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h

    r189982 r190072  
    4545    }
    4646
    47     static Ref<TrackSourceInfo> create(const AtomicString& id, SourceKind kind, const AtomicString& label, const AtomicString& groupId, const AtomicString& deviceId)
     47    static Ref<TrackSourceInfo> create(const AtomicString& id, SourceKind kind, const AtomicString& label, const AtomicString& groupId)
    4848    {
    49         return adoptRef(*new TrackSourceInfo(id, kind, label, groupId, deviceId));
     49        return adoptRef(*new TrackSourceInfo(id, kind, label, groupId));
    5050    }
    5151
     
    5353    const AtomicString& label() const { return m_label; }
    5454    const AtomicString& groupId() const { return m_groupId; }
    55     const AtomicString& deviceId() const { return m_deviceId; }
    5655    SourceKind kind() const { return m_kind; }
    5756
     
    6463    }
    6564
    66     TrackSourceInfo(const AtomicString& id, SourceKind kind, const AtomicString& label, const AtomicString& groupId, const AtomicString& deviceId)
     65    TrackSourceInfo(const AtomicString& id, SourceKind kind, const AtomicString& label, const AtomicString& groupId)
    6766        : m_id(id)
    6867        , m_kind(kind)
    6968        , m_label(label)
    7069        , m_groupId(groupId)
    71         , m_deviceId(deviceId)
    7270    {
    7371    }
     
    7775    AtomicString m_label;
    7876    AtomicString m_groupId;
    79     AtomicString m_deviceId;
    8077};
    8178
  • trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp

    r187204 r190072  
    5454    // FIXME(147205): Need to implement fitness score for constraints
    5555
    56     if (!m_id.isEmpty())
    57         return;
    58    
    59     m_id = createCanonicalUUIDString();
    60 
    61     startProducingData();
     56    if (m_id.isEmpty())
     57        m_id = createCanonicalUUIDString();
     58    m_persistentId = m_id;
    6259}
    6360
     
    9996}
    10097
     98void RealtimeMediaSource::statesDidChanged()
     99{
     100    for (auto& observer : m_observers)
     101        observer->sourceStatesChanged();
     102}
     103
    101104bool RealtimeMediaSource::readonly() const
    102105{
  • trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h

    r187204 r190072  
    4545namespace WebCore {
    4646
    47 class AudioBus;
    4847class MediaConstraints;
    4948class MediaStreamPrivate;
     
    5958        virtual void sourceStopped() = 0;
    6059        virtual void sourceMutedChanged() = 0;
     60        virtual void sourceStatesChanged() = 0;
    6161
    6262        // Observer state queries.
     
    6969
    7070    const String& id() const { return m_id; }
     71
     72    const String& persistentId() const { return m_persistentId; }
     73    virtual void setPersistentId(const String& persistentId) { m_persistentId = persistentId; }
    7174
    7275    enum Type { None, Audio, Video };
     
    8184    virtual RefPtr<RealtimeMediaSourceCapabilities> capabilities() const = 0;
    8285    virtual const RealtimeMediaSourceStates& states() = 0;
     86    void statesDidChanged();
    8387   
    8488    bool stopped() const { return m_stopped; }
     
    109113private:
    110114    String m_id;
     115    String m_persistentId;
    111116    Type m_type;
    112117    String m_name;
  • trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h

    r188385 r190072  
    5454    static void setSharedStreamCenter(RealtimeMediaSourceCenter*);
    5555
    56     virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) = 0;
     56    virtual void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) = 0;
     57
     58    virtual void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) = 0;
    5759
    5860    virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) = 0;
  • trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm

    r189982 r190072  
    334334
    335335        if (!captureDevice.m_videoSourceId.isEmpty())
    336             sourcesInfo.append(TrackSourceInfo::create(captureDevice.m_videoSourceId, TrackSourceInfo::Video, captureDevice.m_localizedName, captureDevice.m_groupID, captureDevice.m_captureDeviceID));
     336            sourcesInfo.append(TrackSourceInfo::create(captureDevice.m_videoSourceId, TrackSourceInfo::Video, captureDevice.m_localizedName, captureDevice.m_groupID));
    337337        if (!captureDevice.m_audioSourceId.isEmpty())
    338             sourcesInfo.append(TrackSourceInfo::create(captureDevice.m_audioSourceId, TrackSourceInfo::Audio, captureDevice.m_localizedName, captureDevice.m_groupID, captureDevice.m_captureDeviceID));
     338            sourcesInfo.append(TrackSourceInfo::create(captureDevice.m_audioSourceId, TrackSourceInfo::Audio, captureDevice.m_localizedName, captureDevice.m_groupID));
    339339    }
    340340
  • trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp

    r189982 r190072  
    5757}
    5858
    59 void RealtimeMediaSourceCenterMac::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpQueryClient, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints)
     59void RealtimeMediaSourceCenterMac::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints)
    6060{
    61     RefPtr<MediaStreamCreationClient> client = prpQueryClient;
    62    
    6361    ASSERT(client);
    6462
     
    127125}
    128126
     127void RealtimeMediaSourceCenterMac::createMediaStream(MediaStreamCreationClient* client, const String& audioDeviceID, const String& videoDeviceID)
     128{
     129    ASSERT(client);
     130    Vector<RefPtr<RealtimeMediaSource>> audioSources;
     131    Vector<RefPtr<RealtimeMediaSource>> videoSources;
     132
     133    if (!audioDeviceID.isEmpty()) {
     134        RefPtr<RealtimeMediaSource> audioSource = AVCaptureDeviceManager::singleton().sourceWithUID(audioDeviceID, RealtimeMediaSource::Audio, nullptr);
     135        if (audioSource)
     136            audioSources.append(audioSource.release());
     137    }
     138    if (!videoDeviceID.isEmpty()) {
     139        RefPtr<RealtimeMediaSource> videoSource = AVCaptureDeviceManager::singleton().sourceWithUID(videoDeviceID, RealtimeMediaSource::Video, nullptr);
     140        if (videoSource)
     141            videoSources.append(videoSource.release());
     142    }
     143
     144    client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
     145}
     146
    129147bool RealtimeMediaSourceCenterMac::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient> prpClient)
    130148{
  • trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h

    r187282 r190072  
    4646    ~RealtimeMediaSourceCenterMac();
    4747
    48     void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
     48    void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) override;
    4949    void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
    50     virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
     50    void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) override;
     51    bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
    5152    RefPtr<TrackSourceInfo> sourceWithUID(const String&, RealtimeMediaSource::Type, MediaConstraints*) override;
    5253};
  • trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp

    r187282 r190072  
    7979}
    8080
    81 void RealtimeMediaSourceCenterOwr::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpClient, PassRefPtr<MediaConstraints> prpAudioConstraints, PassRefPtr<MediaConstraints> prpVideoConstraints)
    82 {
    83     m_client = prpClient;
    84     ASSERT(m_client);
     81void RealtimeMediaSourceCenterOwr::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints)
     82{
     83    m_client = client;
    8584
    8685    // FIXME: Actually do constraints validation. The MediaConstraints
    8786    // need to comply with the available audio/video device(s)
    8887    // capabilities. See bug #123345.
    89     RefPtr<MediaConstraints> audioConstraints = prpAudioConstraints;
    90     RefPtr<MediaConstraints> videoConstraints = prpVideoConstraints;
    91 
    9288    int types = OWR_MEDIA_TYPE_UNKNOWN;
    9389    if (audioConstraints)
     
    127123            videoSource->reset();
    128124            videoSources.append(videoSource.release());
     125        }
     126    }
     127
     128    client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
     129}
     130
     131void RealtimeMediaSourceCenterOwr::createMediaStream(MediaStreamCreationClient* client, const String& audioDeviceID, const String& videoDeviceID)
     132{
     133    ASSERT(client);
     134    Vector<RefPtr<RealtimeMediaSource>> audioSources;
     135    Vector<RefPtr<RealtimeMediaSource>> videoSources;
     136
     137    if (!audioDeviceID.isEmpty()) {
     138        RealtimeMediaSourceOwrMap::iterator sourceIterator = m_sourceMap.find(audioDeviceID);
     139        if (sourceIterator != m_sourceMap.end()) {
     140            RefPtr<RealtimeMediaSource> source = sourceIterator->value;
     141            if (source->type() == RealtimeMediaSource::Audio)
     142                audioSources.append(source.release());
     143        }
     144    }
     145    if (!videoDeviceID.isEmpty()) {
     146        RealtimeMediaSourceOwrMap::iterator sourceIterator = m_sourceMap.find(videoDeviceID);
     147        if (sourceIterator != m_sourceMap.end()) {
     148            RefPtr<RealtimeMediaSource> source = sourceIterator->value;
     149            if (source->type() == RealtimeMediaSource::Video)
     150                audioSources.append(source.release());
    129151        }
    130152    }
  • trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h

    r187282 r190072  
    5454    ~RealtimeMediaSourceCenterOwr();
    5555
    56     void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
     56    void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) override;
     57
    5758    void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
     59    void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) override;
     60
    5861    bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
    5962
  • trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp

    r189982 r190072  
    128128}
    129129
    130 void MockRealtimeMediaSourceCenter::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpQueryClient, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints)
    131 {
    132     RefPtr<MediaStreamCreationClient> client = prpQueryClient;
    133    
     130void MockRealtimeMediaSourceCenter::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints)
     131{
    134132    ASSERT(client);
    135    
     133
    136134    if (audioConstraints) {
    137135        String invalidQuery = MediaConstraintsMock::verifyConstraints(audioConstraints);
     
    193191    }
    194192   
     193    client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
     194}
     195
     196void MockRealtimeMediaSourceCenter::createMediaStream(MediaStreamCreationClient* client, const String& audioDeviceID, const String& videoDeviceID)
     197{
     198    ASSERT(client);
     199    Vector<RefPtr<RealtimeMediaSource>> audioSources;
     200    Vector<RefPtr<RealtimeMediaSource>> videoSources;
     201    MockSourceMap& map = mockSourceMap();
     202
     203    if (!audioDeviceID.isEmpty()) {
     204        MockSourceMap::iterator it = map.find(mockAudioSourceID());
     205        ASSERT(it != map.end());
     206
     207        RefPtr<RealtimeMediaSource> audioSource = it->value;
     208        audioSource->reset();
     209        audioSources.append(audioSource.release());
     210    }
     211    if (!videoDeviceID.isEmpty()) {
     212        MockSourceMap::iterator it = map.find(mockVideoSourceID());
     213        ASSERT(it != map.end());
     214
     215        RefPtr<RealtimeMediaSource> videoSource = it->value;
     216        videoSource->reset();
     217        videoSources.append(videoSource.release());
     218    }
     219
    195220    client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
    196221}
  • trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h

    r187282 r190072  
    3838    WEBCORE_EXPORT static void registerMockRealtimeMediaSourceCenter();
    3939
    40     virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
    41     virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
    42     virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
     40private:
     41
     42    void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) override;
     43    void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
     44    bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
     45    void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) override;
    4346    RefPtr<TrackSourceInfo> sourceWithUID(const String&, RealtimeMediaSource::Type, MediaConstraints*) override;
    4447
    45 private:
    4648    MockRealtimeMediaSourceCenter() { }
    4749};
Note: See TracChangeset for help on using the changeset viewer.