Changeset 190072 in webkit
- Timestamp:
- Sep 21, 2015 1:09:51 PM (9 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r190068 r190072 1 2015-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 1 131 2015-09-21 Csaba Osztrogonác <ossy@webkit.org> 2 132 -
trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp
r190020 r190072 59 59 Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context) 60 60 { 61 return MediaStream::create(context , MediaStreamPrivate::create());61 return MediaStream::create(context); 62 62 } 63 63 … … 69 69 } 70 70 71 Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, const Vector<RefPtr<MediaStreamTrack>>& tracks)71 Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks) 72 72 { 73 73 return adoptRef(*new MediaStream(context, tracks)); … … 79 79 } 80 80 81 MediaStream::MediaStream(ScriptExecutionContext& context, const Vector<RefPtr<MediaStreamTrack>>& tracks)81 MediaStream::MediaStream(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks) 82 82 : ContextDestructionObserver(&context) 83 83 , m_activityEventTimer(*this, &MediaStream::activityEventTimerFired) … … 85 85 // This constructor preserves MediaStreamTrack instances and must be used by calls originating 86 86 // from the JavaScript MediaStream constructor. 87 Vector<RefPtr<MediaStreamTrackPrivate>>trackPrivates;87 MediaStreamTrackPrivateVector trackPrivates; 88 88 trackPrivates.reserveCapacity(tracks.size()); 89 89 … … 122 122 RefPtr<MediaStream> MediaStream::clone() 123 123 { 124 Vector<RefPtr<MediaStreamTrack>>clonedTracks;124 MediaStreamTrackVector clonedTracks; 125 125 clonedTracks.reserveCapacity(m_trackSet.size()); 126 126 … … 158 158 } 159 159 160 Vector<RefPtr<MediaStreamTrack>> MediaStream::getAudioTracks() 160 MediaStreamTrackVector MediaStream::getAudioTracks() const 161 161 { 162 162 return trackVectorForType(RealtimeMediaSource::Audio); 163 163 } 164 164 165 Vector<RefPtr<MediaStreamTrack>> MediaStream::getVideoTracks() 165 MediaStreamTrackVector MediaStream::getVideoTracks() const 166 166 { 167 167 return trackVectorForType(RealtimeMediaSource::Video); 168 168 } 169 169 170 Vector<RefPtr<MediaStreamTrack>>MediaStream::getTracks() const171 { 172 Vector<RefPtr<MediaStreamTrack>>tracks;170 MediaStreamTrackVector MediaStream::getTracks() const 171 { 172 MediaStreamTrackVector tracks; 173 173 tracks.reserveCapacity(m_trackSet.size()); 174 174 copyValuesToVector(m_trackSet, tracks); … … 194 194 } 195 195 196 void MediaStream::didAddTrack ToPrivate(MediaStreamTrackPrivate& trackPrivate)196 void MediaStream::didAddTrack(MediaStreamTrackPrivate& trackPrivate) 197 197 { 198 198 ScriptExecutionContext* context = scriptExecutionContext(); … … 203 203 } 204 204 205 void MediaStream::didRemoveTrack FromPrivate(MediaStreamTrackPrivate& trackPrivate)205 void MediaStream::didRemoveTrack(MediaStreamTrackPrivate& trackPrivate) 206 206 { 207 207 RefPtr<MediaStreamTrack> track = getTrackById(trackPrivate.id()); … … 267 267 } 268 268 269 Vector<RefPtr<MediaStreamTrack>>MediaStream::trackVectorForType(RealtimeMediaSource::Type filterType) const270 { 271 Vector<RefPtr<MediaStreamTrack>>tracks;269 MediaStreamTrackVector MediaStream::trackVectorForType(RealtimeMediaSource::Type filterType) const 270 { 271 MediaStreamTrackVector tracks; 272 272 for (auto& track : m_trackSet.values()) { 273 273 if (track->source()->type() == filterType) -
trunk/Source/WebCore/Modules/mediastream/MediaStream.h
r190020 r190072 58 58 static Ref<MediaStream> create(ScriptExecutionContext&); 59 59 static Ref<MediaStream> create(ScriptExecutionContext&, MediaStream*); 60 static Ref<MediaStream> create(ScriptExecutionContext&, const Vector<RefPtr<MediaStreamTrack>>&);60 static Ref<MediaStream> create(ScriptExecutionContext&, const MediaStreamTrackVector&); 61 61 static Ref<MediaStream> create(ScriptExecutionContext&, RefPtr<MediaStreamPrivate>&&); 62 62 virtual ~MediaStream(); … … 68 68 MediaStreamTrack* getTrackById(String); 69 69 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; 73 73 74 74 RefPtr<MediaStream> clone(); … … 92 92 93 93 protected: 94 MediaStream(ScriptExecutionContext&, const Vector<RefPtr<MediaStreamTrack>>&);94 MediaStream(ScriptExecutionContext&, const MediaStreamTrackVector&); 95 95 MediaStream(ScriptExecutionContext&, RefPtr<MediaStreamPrivate>&&); 96 96 … … 110 110 // MediaStreamPrivateClient 111 111 virtual void activeStatusChanged() override final; 112 virtual void didAddTrack ToPrivate(MediaStreamTrackPrivate&) override final;113 virtual void didRemoveTrack FromPrivate(MediaStreamTrackPrivate&) override final;112 virtual void didAddTrack(MediaStreamTrackPrivate&) override final; 113 virtual void didRemoveTrack(MediaStreamTrackPrivate&) override final; 114 114 115 115 bool internalAddTrack(RefPtr<MediaStreamTrack>&&, StreamModifier); … … 119 119 void activityEventTimerFired(); 120 120 121 Vector<RefPtr<MediaStreamTrack>>trackVectorForType(RealtimeMediaSource::Type) const;121 MediaStreamTrackVector trackVectorForType(RealtimeMediaSource::Type) const; 122 122 123 123 RefPtr<MediaStreamPrivate> m_private; -
trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp
r166053 r190072 63 63 } 64 64 65 MediaStreamRegistry::MediaStreamRegistry() 66 { 67 MediaStream::setRegistry(*this); 68 } 69 65 70 } // namespace WebCore 66 71 -
trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h
r162158 r190072 41 41 class MediaStreamRegistry final : public URLRegistry { 42 42 public: 43 friend class NeverDestroyed<MediaStreamRegistry>; 44 43 45 // Returns a single instance of MediaStreamRegistry. 44 46 static MediaStreamRegistry& registry(); … … 51 53 52 54 private: 55 MediaStreamRegistry(); 53 56 HashMap<String, RefPtr<MediaStream>> m_mediaStreams; 54 57 }; -
trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
r186081 r190072 60 60 suspendIfNeeded(); 61 61 62 m_private-> setClient(this);62 m_private->addObserver(*this); 63 63 } 64 64 65 65 MediaStreamTrack::~MediaStreamTrack() 66 66 { 67 m_private-> setClient(nullptr);67 m_private->removeObserver(*this); 68 68 } 69 69 … … 191 191 } 192 192 193 void MediaStreamTrack::trackEnded( )193 void MediaStreamTrack::trackEnded(MediaStreamTrackPrivate&) 194 194 { 195 195 dispatchEvent(Event::create(eventNames().endedEvent, false, false)); … … 201 201 } 202 202 203 void MediaStreamTrack::trackMutedChanged( )203 void MediaStreamTrack::trackMutedChanged(MediaStreamTrackPrivate&) 204 204 { 205 205 AtomicString eventType = muted() ? eventNames().muteEvent : eventNames().unmuteEvent; … … 209 209 } 210 210 211 void MediaStreamTrack::trackStatesChanged(MediaStreamTrackPrivate&) 212 { 213 configureTrackRendering(); 214 } 215 211 216 void MediaStreamTrack::configureTrackRendering() 212 217 { -
trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h
r186182 r190072 43 43 namespace WebCore { 44 44 45 class AudioSourceProvider; 45 46 class Dictionary; 46 47 class MediaConstraintsImpl; … … 49 50 class MediaTrackConstraints; 50 51 51 class MediaStreamTrack final : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivate Client{52 class MediaStreamTrack final : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivate::Observer { 52 53 public: 53 54 class Observer { … … 112 113 virtual void derefEventTarget() override final { deref(); } 113 114 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; 117 119 118 120 Vector<Observer*> m_observers; … … 122 124 }; 123 125 126 typedef Vector<RefPtr<MediaStreamTrack>> MediaStreamTrackVector; 127 124 128 } // namespace WebCore 125 129 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm
r189144 r190072 125 125 MediaPlayer::SupportsType MediaPlayerPrivateMediaStreamAVFObjC::supportsType(const MediaEngineSupportParameters& parameters) 126 126 { 127 // This engine does not support non-media-stream sources.128 127 if (parameters.isMediaStream) 129 128 return MediaPlayer::IsSupported; 129 130 130 return MediaPlayer::IsNotSupported; 131 131 } … … 134 134 #pragma mark MediaPlayerPrivateInterface Overrides 135 135 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); 136 void 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)); 142 143 if (!track->ended()) { 143 144 track->source()->startProducingData(); -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.h
r186766 r190072 55 55 class MediaStreamPrivateAVFObjC final : public MediaStreamPrivate { 56 56 public: 57 static RefPtr<MediaStreamPrivateAVFObjC> create(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivate Client&);57 static RefPtr<MediaStreamPrivateAVFObjC> create(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivate&); 58 58 virtual ~MediaStreamPrivateAVFObjC(); 59 59 … … 75 75 76 76 private: 77 MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivate Client&);77 MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivate&); 78 78 79 79 MediaPlayerPrivateMediaStreamAVFObjC* m_player; -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.mm
r186766 r190072 44 44 #pragma mark MediaStreamPrivateAVFObjC 45 45 46 RefPtr<MediaStreamPrivateAVFObjC> MediaStreamPrivateAVFObjC::create(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivate Client& client)46 RefPtr<MediaStreamPrivateAVFObjC> MediaStreamPrivateAVFObjC::create(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivate& stream) 47 47 { 48 return adoptRef(new MediaStreamPrivateAVFObjC(parent, client));48 return adoptRef(new MediaStreamPrivateAVFObjC(parent, stream)); 49 49 } 50 50 51 MediaStreamPrivateAVFObjC::MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivate Client& client)52 : m_player(&parent)53 , m_ client(&client)51 MediaStreamPrivateAVFObjC::MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivate& stream) 52 : MediaStreamPrivate(*stream.client()) 53 , m_player(&parent) 54 54 { 55 55 } -
trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp
r186081 r190072 45 45 RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const Vector<RefPtr<RealtimeMediaSource>>& audioSources, const Vector<RefPtr<RealtimeMediaSource>>& videoSources) 46 46 { 47 Vector<RefPtr<MediaStreamTrackPrivate>>tracks;47 MediaStreamTrackPrivateVector tracks; 48 48 tracks.reserveCapacity(audioSources.size() + videoSources.size()); 49 49 … … 57 57 } 58 58 59 RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const Vector<RefPtr<MediaStreamTrackPrivate>>& tracks)59 RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const MediaStreamTrackPrivateVector& tracks) 60 60 { 61 61 return adoptRef(new MediaStreamPrivate(createCanonicalUUIDString(), tracks)); 62 62 } 63 63 64 RefPtr<MediaStreamPrivate> MediaStreamPrivate::create() 64 MediaStreamPrivate::MediaStreamPrivate(const String& id, const MediaStreamTrackPrivateVector& tracks) 65 : m_id(id) 65 66 { 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()); 75 68 76 69 for (auto& track : tracks) … … 80 73 } 81 74 82 Vector<RefPtr<MediaStreamTrackPrivate>> MediaStreamPrivate::tracks() const 75 MediaStreamPrivate::MediaStreamPrivate(MediaStreamPrivateClient& client) 76 : m_client(&client) 83 77 { 84 Vector<RefPtr<MediaStreamTrackPrivate>> tracks; 78 } 79 80 MediaStreamPrivate::~MediaStreamPrivate() 81 { 82 m_client = nullptr; 83 m_isActive = false; 84 } 85 86 MediaStreamTrackPrivateVector MediaStreamPrivate::tracks() const 87 { 88 MediaStreamTrackPrivateVector tracks; 85 89 tracks.reserveCapacity(m_trackSet.size()); 86 90 copyValuesToVector(m_trackSet, tracks); … … 113 117 return; 114 118 119 track->addObserver(*this); 115 120 m_trackSet.add(track->id(), track); 116 121 117 122 if (m_client && notifyClientOption == NotifyClientOption::Notify) 118 m_client->didAddTrack ToPrivate(*track.get());123 m_client->didAddTrack(*track.get()); 119 124 120 updateActiveState( NotifyClientOption::Notify);125 updateActiveState(notifyClientOption); 121 126 } 122 127 … … 126 131 return; 127 132 133 track.removeObserver(*this); 134 128 135 if (m_client && notifyClientOption == NotifyClientOption::Notify) 129 m_client->didRemoveTrack FromPrivate(track);136 m_client->didRemoveTrack(track); 130 137 131 138 updateActiveState(NotifyClientOption::Notify); -
trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h
r187971 r190072 52 52 53 53 virtual void activeStatusChanged() = 0; 54 virtual void didAddTrack ToPrivate(MediaStreamTrackPrivate&) = 0;55 virtual void didRemoveTrack FromPrivate(MediaStreamTrackPrivate&) = 0;54 virtual void didAddTrack(MediaStreamTrackPrivate&) = 0; 55 virtual void didRemoveTrack(MediaStreamTrackPrivate&) = 0; 56 56 }; 57 57 58 class MediaStreamPrivate : public RefCounted<MediaStreamPrivate> {58 class MediaStreamPrivate : public MediaStreamTrackPrivate::Observer, public RefCounted<MediaStreamPrivate> { 59 59 public: 60 60 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&); 63 62 64 MediaStreamPrivate() { } 65 virtual ~MediaStreamPrivate() { } 63 virtual ~MediaStreamPrivate(); 66 64 67 65 enum class NotifyClientOption { Notify, DontNotify }; … … 72 70 String id() const { return m_id; } 73 71 74 Vector<RefPtr<MediaStreamTrackPrivate>>tracks() const;72 MediaStreamTrackPrivateVector tracks() const; 75 73 76 74 bool active() const { return m_isActive; } 77 75 void updateActiveState(NotifyClientOption); 78 76 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 80 protected: 81 explicit MediaStreamPrivate(MediaStreamPrivateClient&); 81 82 82 83 private: 83 MediaStreamPrivate(const String& id, const Vector<RefPtr<MediaStreamTrackPrivate>>&);84 MediaStreamPrivate(const String&, const MediaStreamTrackPrivateVector&); 84 85 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 }; 86 91 String m_id; 87 bool m_isActive ;92 bool m_isActive { false }; 88 93 89 94 HashMap<String, RefPtr<MediaStreamTrackPrivate>> m_trackSet; -
trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp
r186081 r190072 26 26 27 27 #include "config.h" 28 #include "MediaStreamTrackPrivate.h" 28 29 29 30 #if ENABLE(MEDIA_STREAM) 30 31 31 #include "MediaStreamTrackPrivate.h" 32 32 #include "AudioSourceProvider.h" 33 33 #include "MediaSourceStates.h" 34 34 #include "MediaStreamCapabilities.h" … … 51 51 : RefCounted() 52 52 , m_source(other.source()) 53 , m_client(nullptr)54 53 , m_id(createCanonicalUUIDString()) 55 54 , m_isEnabled(other.enabled()) … … 62 61 : RefCounted() 63 62 , m_source(source) 64 , m_client(nullptr)65 63 , m_id(id) 66 64 , m_isEnabled(true) … … 73 71 { 74 72 m_source->removeObserver(this); 73 } 74 75 void MediaStreamTrackPrivate::addObserver(MediaStreamTrackPrivate::Observer& observer) 76 { 77 m_observers.append(&observer); 78 } 79 80 void MediaStreamTrackPrivate::removeObserver(MediaStreamTrackPrivate::Observer& observer) 81 { 82 size_t pos = m_observers.find(&observer); 83 if (pos != notFound) 84 m_observers.remove(pos); 75 85 } 76 86 … … 103 113 void MediaStreamTrackPrivate::endTrack() 104 114 { 105 if ( ended())115 if (m_isEnded) 106 116 return; 107 117 … … 143 153 void MediaStreamTrackPrivate::sourceStopped() 144 154 { 145 if ( ended())155 if (m_isEnded) 146 156 return; 147 157 148 158 m_isEnded = true; 149 159 150 if (m_client)151 m_client->trackEnded();160 for (auto& observer : m_observers) 161 observer->trackEnded(*this); 152 162 } 153 163 154 164 void MediaStreamTrackPrivate::sourceMutedChanged() 155 165 { 156 if (m_client) 157 m_client->trackMutedChanged(); 166 for (auto& observer : m_observers) 167 observer->trackMutedChanged(*this); 168 } 169 170 void MediaStreamTrackPrivate::sourceStatesChanged() 171 { 172 for (auto& observer : m_observers) 173 observer->trackStatesChanged(*this); 158 174 } 159 175 -
trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h
r186081 r190072 36 36 namespace WebCore { 37 37 38 class AudioSourceProvider; 38 39 class MediaSourceStates; 39 40 class RealtimeMediaSourceCapabilities; 40 41 41 class MediaStreamTrackPrivateClient {42 public:43 virtual ~MediaStreamTrackPrivateClient() { }44 45 virtual void trackEnded() = 0;46 virtual void trackMutedChanged() = 0;47 };48 49 42 class MediaStreamTrackPrivate : public RefCounted<MediaStreamTrackPrivate>, public RealtimeMediaSource::Observer { 50 43 public: 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 51 53 static RefPtr<MediaStreamTrackPrivate> create(RefPtr<RealtimeMediaSource>&&); 52 54 static RefPtr<MediaStreamTrackPrivate> create(RefPtr<RealtimeMediaSource>&&, const String& id); … … 59 61 bool ended() const { return m_isEnded; } 60 62 63 void startProducingData() { m_source->startProducingData(); } 64 void stopProducingData() { m_source->stopProducingData(); } 65 61 66 bool muted() const; 67 void setMuted(bool muted) const { m_source->setMuted(muted); } 62 68 63 69 bool readonly() const; … … 74 80 void endTrack(); 75 81 76 void setClient(MediaStreamTrackPrivateClient* client) { m_client = client; } 82 void addObserver(Observer&); 83 void removeObserver(Observer&); 77 84 78 85 const RealtimeMediaSourceStates& states() const; … … 82 89 void applyConstraints(const MediaConstraints&); 83 90 84 void configureTrackRendering();85 86 91 private: 87 92 explicit MediaStreamTrackPrivate(const MediaStreamTrackPrivate&); 88 93 MediaStreamTrackPrivate(RefPtr<RealtimeMediaSource>&&, const String& id); 89 94 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; 91 100 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; 97 102 RefPtr<RealtimeMediaSource> m_source; 98 MediaStreamTrackPrivateClient* m_client;99 103 RefPtr<MediaConstraints> m_constraints; 100 104 … … 104 108 }; 105 109 110 typedef Vector<RefPtr<MediaStreamTrackPrivate>> MediaStreamTrackPrivateVector; 111 106 112 } // namespace WebCore 107 113 -
trunk/Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h
r189982 r190072 45 45 } 46 46 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) 48 48 { 49 return adoptRef(*new TrackSourceInfo(id, kind, label, groupId , deviceId));49 return adoptRef(*new TrackSourceInfo(id, kind, label, groupId)); 50 50 } 51 51 … … 53 53 const AtomicString& label() const { return m_label; } 54 54 const AtomicString& groupId() const { return m_groupId; } 55 const AtomicString& deviceId() const { return m_deviceId; }56 55 SourceKind kind() const { return m_kind; } 57 56 … … 64 63 } 65 64 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) 67 66 : m_id(id) 68 67 , m_kind(kind) 69 68 , m_label(label) 70 69 , m_groupId(groupId) 71 , m_deviceId(deviceId)72 70 { 73 71 } … … 77 75 AtomicString m_label; 78 76 AtomicString m_groupId; 79 AtomicString m_deviceId;80 77 }; 81 78 -
trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp
r187204 r190072 54 54 // FIXME(147205): Need to implement fitness score for constraints 55 55 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; 62 59 } 63 60 … … 99 96 } 100 97 98 void RealtimeMediaSource::statesDidChanged() 99 { 100 for (auto& observer : m_observers) 101 observer->sourceStatesChanged(); 102 } 103 101 104 bool RealtimeMediaSource::readonly() const 102 105 { -
trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h
r187204 r190072 45 45 namespace WebCore { 46 46 47 class AudioBus;48 47 class MediaConstraints; 49 48 class MediaStreamPrivate; … … 59 58 virtual void sourceStopped() = 0; 60 59 virtual void sourceMutedChanged() = 0; 60 virtual void sourceStatesChanged() = 0; 61 61 62 62 // Observer state queries. … … 69 69 70 70 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; } 71 74 72 75 enum Type { None, Audio, Video }; … … 81 84 virtual RefPtr<RealtimeMediaSourceCapabilities> capabilities() const = 0; 82 85 virtual const RealtimeMediaSourceStates& states() = 0; 86 void statesDidChanged(); 83 87 84 88 bool stopped() const { return m_stopped; } … … 109 113 private: 110 114 String m_id; 115 String m_persistentId; 111 116 Type m_type; 112 117 String m_name; -
trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h
r188385 r190072 54 54 static void setSharedStreamCenter(RealtimeMediaSourceCenter*); 55 55 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; 57 59 58 60 virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) = 0; -
trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm
r189982 r190072 334 334 335 335 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)); 337 337 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)); 339 339 } 340 340 -
trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp
r189982 r190072 57 57 } 58 58 59 void RealtimeMediaSourceCenterMac::validateRequestConstraints( PassRefPtr<MediaStreamCreationClient> prpQueryClient, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints>videoConstraints)59 void RealtimeMediaSourceCenterMac::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) 60 60 { 61 RefPtr<MediaStreamCreationClient> client = prpQueryClient;62 63 61 ASSERT(client); 64 62 … … 127 125 } 128 126 127 void 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 129 147 bool RealtimeMediaSourceCenterMac::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient> prpClient) 130 148 { -
trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h
r187282 r190072 46 46 ~RealtimeMediaSourceCenterMac(); 47 47 48 void validateRequestConstraints( PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints>videoConstraints) override;48 void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) override; 49 49 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; 51 52 RefPtr<TrackSourceInfo> sourceWithUID(const String&, RealtimeMediaSource::Type, MediaConstraints*) override; 52 53 }; -
trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp
r187282 r190072 79 79 } 80 80 81 void RealtimeMediaSourceCenterOwr::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpClient, PassRefPtr<MediaConstraints> prpAudioConstraints, PassRefPtr<MediaConstraints> prpVideoConstraints) 82 { 83 m_client = prpClient; 84 ASSERT(m_client); 81 void RealtimeMediaSourceCenterOwr::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) 82 { 83 m_client = client; 85 84 86 85 // FIXME: Actually do constraints validation. The MediaConstraints 87 86 // need to comply with the available audio/video device(s) 88 87 // capabilities. See bug #123345. 89 RefPtr<MediaConstraints> audioConstraints = prpAudioConstraints;90 RefPtr<MediaConstraints> videoConstraints = prpVideoConstraints;91 92 88 int types = OWR_MEDIA_TYPE_UNKNOWN; 93 89 if (audioConstraints) … … 127 123 videoSource->reset(); 128 124 videoSources.append(videoSource.release()); 125 } 126 } 127 128 client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources)); 129 } 130 131 void 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()); 129 151 } 130 152 } -
trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h
r187282 r190072 54 54 ~RealtimeMediaSourceCenterOwr(); 55 55 56 void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override; 56 void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) override; 57 57 58 void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override; 59 void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) override; 60 58 61 bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override; 59 62 -
trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp
r189982 r190072 128 128 } 129 129 130 void MockRealtimeMediaSourceCenter::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpQueryClient, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) 131 { 132 RefPtr<MediaStreamCreationClient> client = prpQueryClient; 133 130 void MockRealtimeMediaSourceCenter::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) 131 { 134 132 ASSERT(client); 135 133 136 134 if (audioConstraints) { 137 135 String invalidQuery = MediaConstraintsMock::verifyConstraints(audioConstraints); … … 193 191 } 194 192 193 client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources)); 194 } 195 196 void 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 195 220 client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources)); 196 221 } -
trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h
r187282 r190072 38 38 WEBCORE_EXPORT static void registerMockRealtimeMediaSourceCenter(); 39 39 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; 40 private: 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; 43 46 RefPtr<TrackSourceInfo> sourceWithUID(const String&, RealtimeMediaSource::Type, MediaConstraints*) override; 44 47 45 private:46 48 MockRealtimeMediaSourceCenter() { } 47 49 };
Note: See TracChangeset
for help on using the changeset viewer.