<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[190072] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/190072">190072</a></dd>
<dt>Author</dt> <dd>eric.carlson@apple.com</dd>
<dt>Date</dt> <dd>2015-09-21 13:09:51 -0700 (Mon, 21 Sep 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>[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:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamcpp">trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamh">trunk/Source/WebCore/Modules/mediastream/MediaStream.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamRegistrycpp">trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamRegistryh">trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackcpp">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackh">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateMediaStreamAVFObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaStreamPrivateAVFObjCh">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaStreamPrivateAVFObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaStreamPrivatecpp">trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaStreamPrivateh">trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivatecpp">trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivateh">trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaStreamTrackSourcesRequestClienth">trunk/Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourcecpp">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceh">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceCenterh">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVCaptureDeviceManagermm">trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacRealtimeMediaSourceCenterMaccpp">trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacRealtimeMediaSourceCenterMach">trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamopenwebrtcRealtimeMediaSourceCenterOwrcpp">trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamopenwebrtcRealtimeMediaSourceCenterOwrh">trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeMediaSourceCentercpp">trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeMediaSourceCenterh">trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/ChangeLog        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -1,3 +1,133 @@
</span><ins>+2015-09-21 Eric Carlson <eric.carlson@apple.com>
+
+ [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:
+
</ins><span class="cx"> 2015-09-21 Csaba Osztrogonác <ossy@webkit.org>
</span><span class="cx">
</span><span class="cx"> Fix the !ENABLE(TEMPLATE_ELEMENT) build after r189945
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">
</span><span class="cx"> Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context)
</span><span class="cx"> {
</span><del>- return MediaStream::create(context, MediaStreamPrivate::create());
</del><ins>+ return MediaStream::create(context);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, MediaStream* stream)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> return adoptRef(*new MediaStream(context, stream->getTracks()));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, const Vector<RefPtr<MediaStreamTrack>>& tracks)
</del><ins>+Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks)
</ins><span class="cx"> {
</span><span class="cx"> return adoptRef(*new MediaStream(context, tracks));
</span><span class="cx"> }
</span><span class="lines">@@ -78,13 +78,13 @@
</span><span class="cx"> return adoptRef(*new MediaStream(context, WTF::move(streamPrivate)));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-MediaStream::MediaStream(ScriptExecutionContext& context, const Vector<RefPtr<MediaStreamTrack>>& tracks)
</del><ins>+MediaStream::MediaStream(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks)
</ins><span class="cx"> : ContextDestructionObserver(&context)
</span><span class="cx"> , m_activityEventTimer(*this, &MediaStream::activityEventTimerFired)
</span><span class="cx"> {
</span><span class="cx"> // This constructor preserves MediaStreamTrack instances and must be used by calls originating
</span><span class="cx"> // from the JavaScript MediaStream constructor.
</span><del>- Vector<RefPtr<MediaStreamTrackPrivate>> trackPrivates;
</del><ins>+ MediaStreamTrackPrivateVector trackPrivates;
</ins><span class="cx"> trackPrivates.reserveCapacity(tracks.size());
</span><span class="cx">
</span><span class="cx"> for (auto& track : tracks) {
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<MediaStream> MediaStream::clone()
</span><span class="cx"> {
</span><del>- Vector<RefPtr<MediaStreamTrack>> clonedTracks;
</del><ins>+ MediaStreamTrackVector clonedTracks;
</ins><span class="cx"> clonedTracks.reserveCapacity(m_trackSet.size());
</span><span class="cx">
</span><span class="cx"> for (auto& track : m_trackSet.values())
</span><span class="lines">@@ -157,19 +157,19 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Vector<RefPtr<MediaStreamTrack>> MediaStream::getAudioTracks()
</del><ins>+MediaStreamTrackVector MediaStream::getAudioTracks() const
</ins><span class="cx"> {
</span><span class="cx"> return trackVectorForType(RealtimeMediaSource::Audio);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Vector<RefPtr<MediaStreamTrack>> MediaStream::getVideoTracks()
</del><ins>+MediaStreamTrackVector MediaStream::getVideoTracks() const
</ins><span class="cx"> {
</span><span class="cx"> return trackVectorForType(RealtimeMediaSource::Video);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Vector<RefPtr<MediaStreamTrack>> MediaStream::getTracks() const
</del><ins>+MediaStreamTrackVector MediaStream::getTracks() const
</ins><span class="cx"> {
</span><del>- Vector<RefPtr<MediaStreamTrack>> tracks;
</del><ins>+ MediaStreamTrackVector tracks;
</ins><span class="cx"> tracks.reserveCapacity(m_trackSet.size());
</span><span class="cx"> copyValuesToVector(m_trackSet, tracks);
</span><span class="cx">
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx"> scheduleActiveStateChange();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void MediaStream::didAddTrackToPrivate(MediaStreamTrackPrivate& trackPrivate)
</del><ins>+void MediaStream::didAddTrack(MediaStreamTrackPrivate& trackPrivate)
</ins><span class="cx"> {
</span><span class="cx"> ScriptExecutionContext* context = scriptExecutionContext();
</span><span class="cx"> if (!context)
</span><span class="lines">@@ -202,7 +202,7 @@
</span><span class="cx"> internalAddTrack(MediaStreamTrack::create(*context, trackPrivate), StreamModifier::Platform);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void MediaStream::didRemoveTrackFromPrivate(MediaStreamTrackPrivate& trackPrivate)
</del><ins>+void MediaStream::didRemoveTrack(MediaStreamTrackPrivate& trackPrivate)
</ins><span class="cx"> {
</span><span class="cx"> RefPtr<MediaStreamTrack> track = getTrackById(trackPrivate.id());
</span><span class="cx"> internalRemoveTrack(WTF::move(track), StreamModifier::Platform);
</span><span class="lines">@@ -266,9 +266,9 @@
</span><span class="cx"> return MediaStreamRegistry::registry();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Vector<RefPtr<MediaStreamTrack>> MediaStream::trackVectorForType(RealtimeMediaSource::Type filterType) const
</del><ins>+MediaStreamTrackVector MediaStream::trackVectorForType(RealtimeMediaSource::Type filterType) const
</ins><span class="cx"> {
</span><del>- Vector<RefPtr<MediaStreamTrack>> tracks;
</del><ins>+ MediaStreamTrackVector tracks;
</ins><span class="cx"> for (auto& track : m_trackSet.values()) {
</span><span class="cx"> if (track->source()->type() == filterType)
</span><span class="cx"> tracks.append(track);
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStream.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx">
</span><span class="cx"> static Ref<MediaStream> create(ScriptExecutionContext&);
</span><span class="cx"> static Ref<MediaStream> create(ScriptExecutionContext&, MediaStream*);
</span><del>- static Ref<MediaStream> create(ScriptExecutionContext&, const Vector<RefPtr<MediaStreamTrack>>&);
</del><ins>+ static Ref<MediaStream> create(ScriptExecutionContext&, const MediaStreamTrackVector&);
</ins><span class="cx"> static Ref<MediaStream> create(ScriptExecutionContext&, RefPtr<MediaStreamPrivate>&&);
</span><span class="cx"> virtual ~MediaStream();
</span><span class="cx">
</span><span class="lines">@@ -67,9 +67,9 @@
</span><span class="cx"> void removeTrack(MediaStreamTrack*);
</span><span class="cx"> MediaStreamTrack* getTrackById(String);
</span><span class="cx">
</span><del>- Vector<RefPtr<MediaStreamTrack>> getAudioTracks();
- Vector<RefPtr<MediaStreamTrack>> getVideoTracks();
- Vector<RefPtr<MediaStreamTrack>> getTracks() const;
</del><ins>+ MediaStreamTrackVector getAudioTracks() const;
+ MediaStreamTrackVector getVideoTracks() const;
+ MediaStreamTrackVector getTracks() const;
</ins><span class="cx">
</span><span class="cx"> RefPtr<MediaStream> clone();
</span><span class="cx">
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx"> void removeObserver(Observer*);
</span><span class="cx">
</span><span class="cx"> protected:
</span><del>- MediaStream(ScriptExecutionContext&, const Vector<RefPtr<MediaStreamTrack>>&);
</del><ins>+ MediaStream(ScriptExecutionContext&, const MediaStreamTrackVector&);
</ins><span class="cx"> MediaStream(ScriptExecutionContext&, RefPtr<MediaStreamPrivate>&&);
</span><span class="cx">
</span><span class="cx"> // ContextDestructionObserver
</span><span class="lines">@@ -109,8 +109,8 @@
</span><span class="cx">
</span><span class="cx"> // MediaStreamPrivateClient
</span><span class="cx"> virtual void activeStatusChanged() override final;
</span><del>- virtual void didAddTrackToPrivate(MediaStreamTrackPrivate&) override final;
- virtual void didRemoveTrackFromPrivate(MediaStreamTrackPrivate&) override final;
</del><ins>+ virtual void didAddTrack(MediaStreamTrackPrivate&) override final;
+ virtual void didRemoveTrack(MediaStreamTrackPrivate&) override final;
</ins><span class="cx">
</span><span class="cx"> bool internalAddTrack(RefPtr<MediaStreamTrack>&&, StreamModifier);
</span><span class="cx"> bool internalRemoveTrack(RefPtr<MediaStreamTrack>&&, StreamModifier);
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> void scheduleActiveStateChange();
</span><span class="cx"> void activityEventTimerFired();
</span><span class="cx">
</span><del>- Vector<RefPtr<MediaStreamTrack>> trackVectorForType(RealtimeMediaSource::Type) const;
</del><ins>+ MediaStreamTrackVector trackVectorForType(RealtimeMediaSource::Type) const;
</ins><span class="cx">
</span><span class="cx"> RefPtr<MediaStreamPrivate> m_private;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -62,6 +62,11 @@
</span><span class="cx"> return m_mediaStreams.get(url);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+MediaStreamRegistry::MediaStreamRegistry()
+{
+ MediaStream::setRegistry(*this);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // ENABLE(MEDIA_STREAM)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamRegistryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -40,6 +40,8 @@
</span><span class="cx">
</span><span class="cx"> class MediaStreamRegistry final : public URLRegistry {
</span><span class="cx"> public:
</span><ins>+ friend class NeverDestroyed<MediaStreamRegistry>;
+
</ins><span class="cx"> // Returns a single instance of MediaStreamRegistry.
</span><span class="cx"> static MediaStreamRegistry& registry();
</span><span class="cx">
</span><span class="lines">@@ -50,6 +52,7 @@
</span><span class="cx"> virtual URLRegistrable* lookup(const String&) const override;
</span><span class="cx">
</span><span class="cx"> private:
</span><ins>+ MediaStreamRegistry();
</ins><span class="cx"> HashMap<String, RefPtr<MediaStream>> m_mediaStreams;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -59,12 +59,12 @@
</span><span class="cx"> {
</span><span class="cx"> suspendIfNeeded();
</span><span class="cx">
</span><del>- m_private->setClient(this);
</del><ins>+ m_private->addObserver(*this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> MediaStreamTrack::~MediaStreamTrack()
</span><span class="cx"> {
</span><del>- m_private->setClient(nullptr);
</del><ins>+ m_private->removeObserver(*this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> const AtomicString& MediaStreamTrack::kind() const
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx"> m_observers.remove(pos);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void MediaStreamTrack::trackEnded()
</del><ins>+void MediaStreamTrack::trackEnded(MediaStreamTrackPrivate&)
</ins><span class="cx"> {
</span><span class="cx"> dispatchEvent(Event::create(eventNames().endedEvent, false, false));
</span><span class="cx">
</span><span class="lines">@@ -200,7 +200,7 @@
</span><span class="cx"> configureTrackRendering();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void MediaStreamTrack::trackMutedChanged()
</del><ins>+void MediaStreamTrack::trackMutedChanged(MediaStreamTrackPrivate&)
</ins><span class="cx"> {
</span><span class="cx"> AtomicString eventType = muted() ? eventNames().muteEvent : eventNames().unmuteEvent;
</span><span class="cx"> dispatchEvent(Event::create(eventType, false, false));
</span><span class="lines">@@ -208,6 +208,11 @@
</span><span class="cx"> configureTrackRendering();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void MediaStreamTrack::trackStatesChanged(MediaStreamTrackPrivate&)
+{
+ configureTrackRendering();
+}
+
</ins><span class="cx"> void MediaStreamTrack::configureTrackRendering()
</span><span class="cx"> {
</span><span class="cx"> // 4.3.1
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -42,13 +42,14 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+class AudioSourceProvider;
</ins><span class="cx"> class Dictionary;
</span><span class="cx"> class MediaConstraintsImpl;
</span><span class="cx"> class MediaSourceStates;
</span><span class="cx"> class MediaStreamCapabilities;
</span><span class="cx"> class MediaTrackConstraints;
</span><span class="cx">
</span><del>-class MediaStreamTrack final : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivateClient {
</del><ins>+class MediaStreamTrack final : public RefCounted<MediaStreamTrack>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivate::Observer {
</ins><span class="cx"> public:
</span><span class="cx"> class Observer {
</span><span class="cx"> public:
</span><span class="lines">@@ -111,9 +112,10 @@
</span><span class="cx"> virtual void refEventTarget() override final { ref(); }
</span><span class="cx"> virtual void derefEventTarget() override final { deref(); }
</span><span class="cx">
</span><del>- // MediaStreamTrackPrivateClient
- void trackEnded() override;
- void trackMutedChanged() override;
</del><ins>+ // MediaStreamTrackPrivate::Observer
+ void trackEnded(MediaStreamTrackPrivate&) override;
+ void trackMutedChanged(MediaStreamTrackPrivate&) override;
+ void trackStatesChanged(MediaStreamTrackPrivate&) override;
</ins><span class="cx">
</span><span class="cx"> Vector<Observer*> m_observers;
</span><span class="cx"> Ref<MediaStreamTrackPrivate> m_private;
</span><span class="lines">@@ -121,6 +123,8 @@
</span><span class="cx"> RefPtr<MediaConstraintsImpl> m_constraints;
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+typedef Vector<RefPtr<MediaStreamTrack>> MediaStreamTrackVector;
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // ENABLE(MEDIA_STREAM)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateMediaStreamAVFObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -124,21 +124,22 @@
</span><span class="cx">
</span><span class="cx"> MediaPlayer::SupportsType MediaPlayerPrivateMediaStreamAVFObjC::supportsType(const MediaEngineSupportParameters& parameters)
</span><span class="cx"> {
</span><del>- // This engine does not support non-media-stream sources.
</del><span class="cx"> if (parameters.isMediaStream)
</span><span class="cx"> return MediaPlayer::IsSupported;
</span><ins>+
</ins><span class="cx"> return MediaPlayer::IsNotSupported;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #pragma mark -
</span><span class="cx"> #pragma mark MediaPlayerPrivateInterface Overrides
</span><span class="cx">
</span><del>-void MediaPlayerPrivateMediaStreamAVFObjC::load(MediaStreamPrivate& client)
</del><ins>+void MediaPlayerPrivateMediaStreamAVFObjC::load(MediaStreamPrivate& stream)
</ins><span class="cx"> {
</span><del>- m_MediaStreamPrivate = MediaStreamPrivateAVFObjC::create(*this, *client.client());
- for (auto track : client.tracks()) {
- m_MediaStreamPrivate->addTrack(WTF::move(track), MediaStreamPrivate::NotifyClientOption::DontNotify);
- m_MediaStreamPrivate->client()->didAddTrackToPrivate(*track);
</del><ins>+ LOG(Media, "MediaPlayerPrivateMediaStreamAVFObjC::load(%p)", this);
+
+ m_MediaStreamPrivate = MediaStreamPrivateAVFObjC::create(*this, stream);
+ for (auto track : stream.tracks()) {
+ m_MediaStreamPrivate->addTrack(WTF::move(track));
</ins><span class="cx"> if (!track->ended()) {
</span><span class="cx"> track->source()->startProducingData();
</span><span class="cx"> track->setEnabled(true);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaStreamPrivateAVFObjCh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">
</span><span class="cx"> class MediaStreamPrivateAVFObjC final : public MediaStreamPrivate {
</span><span class="cx"> public:
</span><del>- static RefPtr<MediaStreamPrivateAVFObjC> create(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivateClient&);
</del><ins>+ static RefPtr<MediaStreamPrivateAVFObjC> create(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivate&);
</ins><span class="cx"> virtual ~MediaStreamPrivateAVFObjC();
</span><span class="cx">
</span><span class="cx"> MediaPlayerPrivateMediaStreamAVFObjC* player() const { return m_player; }
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> MediaPlayer::ReadyState readyState() const;
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivateClient&);
</del><ins>+ MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC&, MediaStreamPrivate&);
</ins><span class="cx">
</span><span class="cx"> MediaPlayerPrivateMediaStreamAVFObjC* m_player;
</span><span class="cx"> RefPtr<MediaStreamPrivateClient> m_client;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaStreamPrivateAVFObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.mm (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.mm        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaStreamPrivateAVFObjC.mm        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -43,14 +43,14 @@
</span><span class="cx"> #pragma mark -
</span><span class="cx"> #pragma mark MediaStreamPrivateAVFObjC
</span><span class="cx">
</span><del>-RefPtr<MediaStreamPrivateAVFObjC> MediaStreamPrivateAVFObjC::create(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivateClient& client)
</del><ins>+RefPtr<MediaStreamPrivateAVFObjC> MediaStreamPrivateAVFObjC::create(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivate& stream)
</ins><span class="cx"> {
</span><del>- return adoptRef(new MediaStreamPrivateAVFObjC(parent, client));
</del><ins>+ return adoptRef(new MediaStreamPrivateAVFObjC(parent, stream));
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-MediaStreamPrivateAVFObjC::MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivateClient& client)
- : m_player(&parent)
- , m_client(&client)
</del><ins>+MediaStreamPrivateAVFObjC::MediaStreamPrivateAVFObjC(MediaPlayerPrivateMediaStreamAVFObjC& parent, MediaStreamPrivate& stream)
+ : MediaStreamPrivate(*stream.client())
+ , m_player(&parent)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamPrivatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const Vector<RefPtr<RealtimeMediaSource>>& audioSources, const Vector<RefPtr<RealtimeMediaSource>>& videoSources)
</span><span class="cx"> {
</span><del>- Vector<RefPtr<MediaStreamTrackPrivate>> tracks;
</del><ins>+ MediaStreamTrackPrivateVector tracks;
</ins><span class="cx"> tracks.reserveCapacity(audioSources.size() + videoSources.size());
</span><span class="cx">
</span><span class="cx"> for (auto source : audioSources)
</span><span class="lines">@@ -56,32 +56,36 @@
</span><span class="cx"> return MediaStreamPrivate::create(tracks);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const Vector<RefPtr<MediaStreamTrackPrivate>>& tracks)
</del><ins>+RefPtr<MediaStreamPrivate> MediaStreamPrivate::create(const MediaStreamTrackPrivateVector& tracks)
</ins><span class="cx"> {
</span><span class="cx"> return adoptRef(new MediaStreamPrivate(createCanonicalUUIDString(), tracks));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<MediaStreamPrivate> MediaStreamPrivate::create()
</del><ins>+MediaStreamPrivate::MediaStreamPrivate(const String& id, const MediaStreamTrackPrivateVector& tracks)
+ : m_id(id)
</ins><span class="cx"> {
</span><del>- return MediaStreamPrivate::create(Vector<RefPtr<MediaStreamTrackPrivate>>());
-}
</del><ins>+ ASSERT(!m_id.isEmpty());
</ins><span class="cx">
</span><del>-MediaStreamPrivate::MediaStreamPrivate(const String& id, const Vector<RefPtr<MediaStreamTrackPrivate>>& tracks)
- : m_client(0)
- , m_id(id)
- , m_isActive(false)
-{
- ASSERT(m_id.length());
-
</del><span class="cx"> for (auto& track : tracks)
</span><span class="cx"> m_trackSet.add(track->id(), track);
</span><span class="cx">
</span><span class="cx"> updateActiveState(NotifyClientOption::DontNotify);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Vector<RefPtr<MediaStreamTrackPrivate>> MediaStreamPrivate::tracks() const
</del><ins>+MediaStreamPrivate::MediaStreamPrivate(MediaStreamPrivateClient& client)
+ : m_client(&client)
</ins><span class="cx"> {
</span><del>- Vector<RefPtr<MediaStreamTrackPrivate>> tracks;
</del><ins>+}
+
+MediaStreamPrivate::~MediaStreamPrivate()
+{
+ m_client = nullptr;
+ m_isActive = false;
+}
+
+MediaStreamTrackPrivateVector MediaStreamPrivate::tracks() const
+{
+ MediaStreamTrackPrivateVector tracks;
</ins><span class="cx"> tracks.reserveCapacity(m_trackSet.size());
</span><span class="cx"> copyValuesToVector(m_trackSet, tracks);
</span><span class="cx">
</span><span class="lines">@@ -112,12 +116,13 @@
</span><span class="cx"> if (m_trackSet.contains(track->id()))
</span><span class="cx"> return;
</span><span class="cx">
</span><ins>+ track->addObserver(*this);
</ins><span class="cx"> m_trackSet.add(track->id(), track);
</span><span class="cx">
</span><span class="cx"> if (m_client && notifyClientOption == NotifyClientOption::Notify)
</span><del>- m_client->didAddTrackToPrivate(*track.get());
</del><ins>+ m_client->didAddTrack(*track.get());
</ins><span class="cx">
</span><del>- updateActiveState(NotifyClientOption::Notify);
</del><ins>+ updateActiveState(notifyClientOption);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void MediaStreamPrivate::removeTrack(MediaStreamTrackPrivate& track, NotifyClientOption notifyClientOption)
</span><span class="lines">@@ -125,8 +130,10 @@
</span><span class="cx"> if (!m_trackSet.remove(track.id()))
</span><span class="cx"> return;
</span><span class="cx">
</span><ins>+ track.removeObserver(*this);
+
</ins><span class="cx"> if (m_client && notifyClientOption == NotifyClientOption::Notify)
</span><del>- m_client->didRemoveTrackFromPrivate(track);
</del><ins>+ m_client->didRemoveTrack(track);
</ins><span class="cx">
</span><span class="cx"> updateActiveState(NotifyClientOption::Notify);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -51,18 +51,16 @@
</span><span class="cx"> virtual ~MediaStreamPrivateClient() { }
</span><span class="cx">
</span><span class="cx"> virtual void activeStatusChanged() = 0;
</span><del>- virtual void didAddTrackToPrivate(MediaStreamTrackPrivate&) = 0;
- virtual void didRemoveTrackFromPrivate(MediaStreamTrackPrivate&) = 0;
</del><ins>+ virtual void didAddTrack(MediaStreamTrackPrivate&) = 0;
+ virtual void didRemoveTrack(MediaStreamTrackPrivate&) = 0;
</ins><span class="cx"> };
</span><span class="cx">
</span><del>-class MediaStreamPrivate : public RefCounted<MediaStreamPrivate> {
</del><ins>+class MediaStreamPrivate : public MediaStreamTrackPrivate::Observer, public RefCounted<MediaStreamPrivate> {
</ins><span class="cx"> public:
</span><span class="cx"> static RefPtr<MediaStreamPrivate> create(const Vector<RefPtr<RealtimeMediaSource>>& audioSources, const Vector<RefPtr<RealtimeMediaSource>>& videoSources);
</span><del>- static RefPtr<MediaStreamPrivate> create(const Vector<RefPtr<MediaStreamTrackPrivate>>&);
- static RefPtr<MediaStreamPrivate> create();
</del><ins>+ static RefPtr<MediaStreamPrivate> create(const MediaStreamTrackPrivateVector&);
</ins><span class="cx">
</span><del>- MediaStreamPrivate() { }
- virtual ~MediaStreamPrivate() { }
</del><ins>+ virtual ~MediaStreamPrivate();
</ins><span class="cx">
</span><span class="cx"> enum class NotifyClientOption { Notify, DontNotify };
</span><span class="cx">
</span><span class="lines">@@ -71,20 +69,27 @@
</span><span class="cx">
</span><span class="cx"> String id() const { return m_id; }
</span><span class="cx">
</span><del>- Vector<RefPtr<MediaStreamTrackPrivate>> tracks() const;
</del><ins>+ MediaStreamTrackPrivateVector tracks() const;
</ins><span class="cx">
</span><span class="cx"> bool active() const { return m_isActive; }
</span><span class="cx"> void updateActiveState(NotifyClientOption);
</span><span class="cx">
</span><del>- void addTrack(RefPtr<MediaStreamTrackPrivate>&&, NotifyClientOption);
- void removeTrack(MediaStreamTrackPrivate&, NotifyClientOption);
</del><ins>+ void addTrack(RefPtr<MediaStreamTrackPrivate>&&, NotifyClientOption = NotifyClientOption::Notify);
+ void removeTrack(MediaStreamTrackPrivate&, NotifyClientOption = NotifyClientOption::Notify);
</ins><span class="cx">
</span><ins>+protected:
+ explicit MediaStreamPrivate(MediaStreamPrivateClient&);
+
</ins><span class="cx"> private:
</span><del>- MediaStreamPrivate(const String& id, const Vector<RefPtr<MediaStreamTrackPrivate>>&);
</del><ins>+ MediaStreamPrivate(const String&, const MediaStreamTrackPrivateVector&);
</ins><span class="cx">
</span><del>- MediaStreamPrivateClient* m_client;
</del><ins>+ void trackEnded(MediaStreamTrackPrivate&) override { }
+ void trackMutedChanged(MediaStreamTrackPrivate&) override { }
+ void trackStatesChanged(MediaStreamTrackPrivate&) override { }
+
+ MediaStreamPrivateClient* m_client { nullptr };
</ins><span class="cx"> String m_id;
</span><del>- bool m_isActive;
</del><ins>+ bool m_isActive { false };
</ins><span class="cx">
</span><span class="cx"> HashMap<String, RefPtr<MediaStreamTrackPrivate>> m_trackSet;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -25,11 +25,11 @@
</span><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #include "config.h"
</span><ins>+#include "MediaStreamTrackPrivate.h"
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx">
</span><del>-#include "MediaStreamTrackPrivate.h"
-
</del><ins>+#include "AudioSourceProvider.h"
</ins><span class="cx"> #include "MediaSourceStates.h"
</span><span class="cx"> #include "MediaStreamCapabilities.h"
</span><span class="cx"> #include "UUID.h"
</span><span class="lines">@@ -50,7 +50,6 @@
</span><span class="cx"> MediaStreamTrackPrivate::MediaStreamTrackPrivate(const MediaStreamTrackPrivate& other)
</span><span class="cx"> : RefCounted()
</span><span class="cx"> , m_source(other.source())
</span><del>- , m_client(nullptr)
</del><span class="cx"> , m_id(createCanonicalUUIDString())
</span><span class="cx"> , m_isEnabled(other.enabled())
</span><span class="cx"> , m_isEnded(other.ended())
</span><span class="lines">@@ -61,7 +60,6 @@
</span><span class="cx"> MediaStreamTrackPrivate::MediaStreamTrackPrivate(RefPtr<RealtimeMediaSource>&& source, const String& id)
</span><span class="cx"> : RefCounted()
</span><span class="cx"> , m_source(source)
</span><del>- , m_client(nullptr)
</del><span class="cx"> , m_id(id)
</span><span class="cx"> , m_isEnabled(true)
</span><span class="cx"> , m_isEnded(false)
</span><span class="lines">@@ -74,6 +72,18 @@
</span><span class="cx"> m_source->removeObserver(this);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void MediaStreamTrackPrivate::addObserver(MediaStreamTrackPrivate::Observer& observer)
+{
+ m_observers.append(&observer);
+}
+
+void MediaStreamTrackPrivate::removeObserver(MediaStreamTrackPrivate::Observer& observer)
+{
+ size_t pos = m_observers.find(&observer);
+ if (pos != notFound)
+ m_observers.remove(pos);
+}
+
</ins><span class="cx"> const String& MediaStreamTrackPrivate::label() const
</span><span class="cx"> {
</span><span class="cx"> return m_source->name();
</span><span class="lines">@@ -102,7 +112,7 @@
</span><span class="cx">
</span><span class="cx"> void MediaStreamTrackPrivate::endTrack()
</span><span class="cx"> {
</span><del>- if (ended())
</del><ins>+ if (m_isEnded)
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> m_isEnded = true;
</span><span class="lines">@@ -142,21 +152,27 @@
</span><span class="cx">
</span><span class="cx"> void MediaStreamTrackPrivate::sourceStopped()
</span><span class="cx"> {
</span><del>- if (ended())
</del><ins>+ if (m_isEnded)
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> m_isEnded = true;
</span><span class="cx">
</span><del>- if (m_client)
- m_client->trackEnded();
</del><ins>+ for (auto& observer : m_observers)
+ observer->trackEnded(*this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void MediaStreamTrackPrivate::sourceMutedChanged()
</span><span class="cx"> {
</span><del>- if (m_client)
- m_client->trackMutedChanged();
</del><ins>+ for (auto& observer : m_observers)
+ observer->trackMutedChanged(*this);
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+void MediaStreamTrackPrivate::sourceStatesChanged()
+{
+ for (auto& observer : m_observers)
+ observer->trackStatesChanged(*this);
+}
+
</ins><span class="cx"> bool MediaStreamTrackPrivate::preventSourceFromStopping()
</span><span class="cx"> {
</span><span class="cx"> return !m_isEnded;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -35,19 +35,21 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+class AudioSourceProvider;
</ins><span class="cx"> class MediaSourceStates;
</span><span class="cx"> class RealtimeMediaSourceCapabilities;
</span><span class="cx">
</span><del>-class MediaStreamTrackPrivateClient {
</del><ins>+class MediaStreamTrackPrivate : public RefCounted<MediaStreamTrackPrivate>, public RealtimeMediaSource::Observer {
</ins><span class="cx"> public:
</span><del>- virtual ~MediaStreamTrackPrivateClient() { }
</del><ins>+ class Observer {
+ public:
+ virtual ~Observer() { }
</ins><span class="cx">
</span><del>- virtual void trackEnded() = 0;
- virtual void trackMutedChanged() = 0;
-};
-
-class MediaStreamTrackPrivate : public RefCounted<MediaStreamTrackPrivate>, public RealtimeMediaSource::Observer {
-public:
</del><ins>+ virtual void trackEnded(MediaStreamTrackPrivate&) = 0;
+ virtual void trackMutedChanged(MediaStreamTrackPrivate&) = 0;
+ virtual void trackStatesChanged(MediaStreamTrackPrivate&) = 0;
+ };
+
</ins><span class="cx"> static RefPtr<MediaStreamTrackPrivate> create(RefPtr<RealtimeMediaSource>&&);
</span><span class="cx"> static RefPtr<MediaStreamTrackPrivate> create(RefPtr<RealtimeMediaSource>&&, const String& id);
</span><span class="cx">
</span><span class="lines">@@ -58,7 +60,11 @@
</span><span class="cx">
</span><span class="cx"> bool ended() const { return m_isEnded; }
</span><span class="cx">
</span><ins>+ void startProducingData() { m_source->startProducingData(); }
+ void stopProducingData() { m_source->stopProducingData(); }
+
</ins><span class="cx"> bool muted() const;
</span><ins>+ void setMuted(bool muted) const { m_source->setMuted(muted); }
</ins><span class="cx">
</span><span class="cx"> bool readonly() const;
</span><span class="cx"> bool remote() const;
</span><span class="lines">@@ -73,7 +79,8 @@
</span><span class="cx">
</span><span class="cx"> void endTrack();
</span><span class="cx">
</span><del>- void setClient(MediaStreamTrackPrivateClient* client) { m_client = client; }
</del><ins>+ void addObserver(Observer&);
+ void removeObserver(Observer&);
</ins><span class="cx">
</span><span class="cx"> const RealtimeMediaSourceStates& states() const;
</span><span class="cx"> RefPtr<RealtimeMediaSourceCapabilities> capabilities() const;
</span><span class="lines">@@ -81,21 +88,18 @@
</span><span class="cx"> RefPtr<MediaConstraints> constraints() const;
</span><span class="cx"> void applyConstraints(const MediaConstraints&);
</span><span class="cx">
</span><del>- void configureTrackRendering();
-
</del><span class="cx"> private:
</span><span class="cx"> explicit MediaStreamTrackPrivate(const MediaStreamTrackPrivate&);
</span><span class="cx"> MediaStreamTrackPrivate(RefPtr<RealtimeMediaSource>&&, const String& id);
</span><span class="cx">
</span><del>- MediaStreamTrackPrivateClient* client() const { return m_client; }
</del><ins>+ // RealtimeMediaSourceObserver
+ void sourceStopped() override final;
+ void sourceMutedChanged() override final;
+ void sourceStatesChanged() override final;
+ bool preventSourceFromStopping() override final;
</ins><span class="cx">
</span><del>- // RealtimeMediaSourceObserver
- virtual void sourceStopped() override final;
- virtual void sourceMutedChanged() override final;
- virtual bool preventSourceFromStopping() override final;
-
</del><ins>+ Vector<Observer*> m_observers;
</ins><span class="cx"> RefPtr<RealtimeMediaSource> m_source;
</span><del>- MediaStreamTrackPrivateClient* m_client;
</del><span class="cx"> RefPtr<MediaConstraints> m_constraints;
</span><span class="cx">
</span><span class="cx"> String m_id;
</span><span class="lines">@@ -103,6 +107,8 @@
</span><span class="cx"> bool m_isEnded;
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+typedef Vector<RefPtr<MediaStreamTrackPrivate>> MediaStreamTrackPrivateVector;
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // ENABLE(MEDIA_STREAM)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamTrackSourcesRequestClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -44,15 +44,14 @@
</span><span class="cx"> return adoptRef(new TrackSourceInfo(id, kind, label));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- static Ref<TrackSourceInfo> create(const AtomicString& id, SourceKind kind, const AtomicString& label, const AtomicString& groupId, const AtomicString& deviceId)
</del><ins>+ static Ref<TrackSourceInfo> create(const AtomicString& id, SourceKind kind, const AtomicString& label, const AtomicString& groupId)
</ins><span class="cx"> {
</span><del>- return adoptRef(*new TrackSourceInfo(id, kind, label, groupId, deviceId));
</del><ins>+ return adoptRef(*new TrackSourceInfo(id, kind, label, groupId));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> const AtomicString& id() const { return m_id; }
</span><span class="cx"> const AtomicString& label() const { return m_label; }
</span><span class="cx"> const AtomicString& groupId() const { return m_groupId; }
</span><del>- const AtomicString& deviceId() const { return m_deviceId; }
</del><span class="cx"> SourceKind kind() const { return m_kind; }
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="lines">@@ -63,12 +62,11 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- TrackSourceInfo(const AtomicString& id, SourceKind kind, const AtomicString& label, const AtomicString& groupId, const AtomicString& deviceId)
</del><ins>+ TrackSourceInfo(const AtomicString& id, SourceKind kind, const AtomicString& label, const AtomicString& groupId)
</ins><span class="cx"> : m_id(id)
</span><span class="cx"> , m_kind(kind)
</span><span class="cx"> , m_label(label)
</span><span class="cx"> , m_groupId(groupId)
</span><del>- , m_deviceId(deviceId)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -76,7 +74,6 @@
</span><span class="cx"> SourceKind m_kind;
</span><span class="cx"> AtomicString m_label;
</span><span class="cx"> AtomicString m_groupId;
</span><del>- AtomicString m_deviceId;
</del><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> typedef Vector<RefPtr<TrackSourceInfo>> TrackSourceInfoVector;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -53,12 +53,9 @@
</span><span class="cx"> {
</span><span class="cx"> // FIXME(147205): Need to implement fitness score for constraints
</span><span class="cx">
</span><del>- if (!m_id.isEmpty())
- return;
-
- m_id = createCanonicalUUIDString();
-
- startProducingData();
</del><ins>+ if (m_id.isEmpty())
+ m_id = createCanonicalUUIDString();
+ m_persistentId = m_id;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RealtimeMediaSource::reset()
</span><span class="lines">@@ -98,6 +95,12 @@
</span><span class="cx"> observer->sourceMutedChanged();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void RealtimeMediaSource::statesDidChanged()
+{
+ for (auto& observer : m_observers)
+ observer->sourceStatesChanged();
+}
+
</ins><span class="cx"> bool RealtimeMediaSource::readonly() const
</span><span class="cx"> {
</span><span class="cx"> return m_readonly;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -44,7 +44,6 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class AudioBus;
</del><span class="cx"> class MediaConstraints;
</span><span class="cx"> class MediaStreamPrivate;
</span><span class="cx"> class RealtimeMediaSourceStates;
</span><span class="lines">@@ -58,6 +57,7 @@
</span><span class="cx"> // Source state changes.
</span><span class="cx"> virtual void sourceStopped() = 0;
</span><span class="cx"> virtual void sourceMutedChanged() = 0;
</span><ins>+ virtual void sourceStatesChanged() = 0;
</ins><span class="cx">
</span><span class="cx"> // Observer state queries.
</span><span class="cx"> virtual bool preventSourceFromStopping() = 0;
</span><span class="lines">@@ -69,6 +69,9 @@
</span><span class="cx">
</span><span class="cx"> const String& id() const { return m_id; }
</span><span class="cx">
</span><ins>+ const String& persistentId() const { return m_persistentId; }
+ virtual void setPersistentId(const String& persistentId) { m_persistentId = persistentId; }
+
</ins><span class="cx"> enum Type { None, Audio, Video };
</span><span class="cx"> Type type() const { return m_type; }
</span><span class="cx">
</span><span class="lines">@@ -80,6 +83,7 @@
</span><span class="cx">
</span><span class="cx"> virtual RefPtr<RealtimeMediaSourceCapabilities> capabilities() const = 0;
</span><span class="cx"> virtual const RealtimeMediaSourceStates& states() = 0;
</span><ins>+ void statesDidChanged();
</ins><span class="cx">
</span><span class="cx"> bool stopped() const { return m_stopped; }
</span><span class="cx">
</span><span class="lines">@@ -108,6 +112,7 @@
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> String m_id;
</span><ins>+ String m_persistentId;
</ins><span class="cx"> Type m_type;
</span><span class="cx"> String m_name;
</span><span class="cx"> bool m_stopped;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceCenterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -53,8 +53,10 @@
</span><span class="cx"> WEBCORE_EXPORT static RealtimeMediaSourceCenter& singleton();
</span><span class="cx"> static void setSharedStreamCenter(RealtimeMediaSourceCenter*);
</span><span class="cx">
</span><del>- virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) = 0;
</del><ins>+ virtual void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) = 0;
</ins><span class="cx">
</span><ins>+ virtual void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) = 0;
+
</ins><span class="cx"> virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) = 0;
</span><span class="cx">
</span><span class="cx"> virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) = 0;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVCaptureDeviceManagermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -333,9 +333,9 @@
</span><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> if (!captureDevice.m_videoSourceId.isEmpty())
</span><del>- sourcesInfo.append(TrackSourceInfo::create(captureDevice.m_videoSourceId, TrackSourceInfo::Video, captureDevice.m_localizedName, captureDevice.m_groupID, captureDevice.m_captureDeviceID));
</del><ins>+ sourcesInfo.append(TrackSourceInfo::create(captureDevice.m_videoSourceId, TrackSourceInfo::Video, captureDevice.m_localizedName, captureDevice.m_groupID));
</ins><span class="cx"> if (!captureDevice.m_audioSourceId.isEmpty())
</span><del>- sourcesInfo.append(TrackSourceInfo::create(captureDevice.m_audioSourceId, TrackSourceInfo::Audio, captureDevice.m_localizedName, captureDevice.m_groupID, captureDevice.m_captureDeviceID));
</del><ins>+ sourcesInfo.append(TrackSourceInfo::create(captureDevice.m_audioSourceId, TrackSourceInfo::Audio, captureDevice.m_localizedName, captureDevice.m_groupID));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> LOG(Media, "AVCaptureDeviceManager::getSourcesInfo(%p), found %d active devices", this, sourcesInfo.size());
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacRealtimeMediaSourceCenterMaccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -56,10 +56,8 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RealtimeMediaSourceCenterMac::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpQueryClient, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints)
</del><ins>+void RealtimeMediaSourceCenterMac::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints)
</ins><span class="cx"> {
</span><del>- RefPtr<MediaStreamCreationClient> client = prpQueryClient;
-
</del><span class="cx"> ASSERT(client);
</span><span class="cx">
</span><span class="cx"> if (audioConstraints) {
</span><span class="lines">@@ -126,6 +124,26 @@
</span><span class="cx"> client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void RealtimeMediaSourceCenterMac::createMediaStream(MediaStreamCreationClient* client, const String& audioDeviceID, const String& videoDeviceID)
+{
+ ASSERT(client);
+ Vector<RefPtr<RealtimeMediaSource>> audioSources;
+ Vector<RefPtr<RealtimeMediaSource>> videoSources;
+
+ if (!audioDeviceID.isEmpty()) {
+ RefPtr<RealtimeMediaSource> audioSource = AVCaptureDeviceManager::singleton().sourceWithUID(audioDeviceID, RealtimeMediaSource::Audio, nullptr);
+ if (audioSource)
+ audioSources.append(audioSource.release());
+ }
+ if (!videoDeviceID.isEmpty()) {
+ RefPtr<RealtimeMediaSource> videoSource = AVCaptureDeviceManager::singleton().sourceWithUID(videoDeviceID, RealtimeMediaSource::Video, nullptr);
+ if (videoSource)
+ videoSources.append(videoSource.release());
+ }
+
+ client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
+}
+
</ins><span class="cx"> bool RealtimeMediaSourceCenterMac::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient> prpClient)
</span><span class="cx"> {
</span><span class="cx"> RefPtr<MediaStreamTrackSourcesRequestClient> requestClient = prpClient;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacRealtimeMediaSourceCenterMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -45,9 +45,10 @@
</span><span class="cx"> RealtimeMediaSourceCenterMac();
</span><span class="cx"> ~RealtimeMediaSourceCenterMac();
</span><span class="cx">
</span><del>- void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
</del><ins>+ void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) override;
</ins><span class="cx"> void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
</span><del>- virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
</del><ins>+ void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) override;
+ bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
</ins><span class="cx"> RefPtr<TrackSourceInfo> sourceWithUID(const String&, RealtimeMediaSource::Type, MediaConstraints*) override;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamopenwebrtcRealtimeMediaSourceCenterOwrcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -78,17 +78,13 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RealtimeMediaSourceCenterOwr::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpClient, PassRefPtr<MediaConstraints> prpAudioConstraints, PassRefPtr<MediaConstraints> prpVideoConstraints)
</del><ins>+void RealtimeMediaSourceCenterOwr::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints)
</ins><span class="cx"> {
</span><del>- m_client = prpClient;
- ASSERT(m_client);
</del><ins>+ m_client = client;
</ins><span class="cx">
</span><span class="cx"> // FIXME: Actually do constraints validation. The MediaConstraints
</span><span class="cx"> // need to comply with the available audio/video device(s)
</span><span class="cx"> // capabilities. See bug #123345.
</span><del>- RefPtr<MediaConstraints> audioConstraints = prpAudioConstraints;
- RefPtr<MediaConstraints> videoConstraints = prpVideoConstraints;
-
</del><span class="cx"> int types = OWR_MEDIA_TYPE_UNKNOWN;
</span><span class="cx"> if (audioConstraints)
</span><span class="cx"> types |= OWR_MEDIA_TYPE_AUDIO;
</span><span class="lines">@@ -132,6 +128,32 @@
</span><span class="cx"> client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void RealtimeMediaSourceCenterOwr::createMediaStream(MediaStreamCreationClient* client, const String& audioDeviceID, const String& videoDeviceID)
+{
+ ASSERT(client);
+ Vector<RefPtr<RealtimeMediaSource>> audioSources;
+ Vector<RefPtr<RealtimeMediaSource>> videoSources;
+
+ if (!audioDeviceID.isEmpty()) {
+ RealtimeMediaSourceOwrMap::iterator sourceIterator = m_sourceMap.find(audioDeviceID);
+ if (sourceIterator != m_sourceMap.end()) {
+ RefPtr<RealtimeMediaSource> source = sourceIterator->value;
+ if (source->type() == RealtimeMediaSource::Audio)
+ audioSources.append(source.release());
+ }
+ }
+ if (!videoDeviceID.isEmpty()) {
+ RealtimeMediaSourceOwrMap::iterator sourceIterator = m_sourceMap.find(videoDeviceID);
+ if (sourceIterator != m_sourceMap.end()) {
+ RefPtr<RealtimeMediaSource> source = sourceIterator->value;
+ if (source->type() == RealtimeMediaSource::Video)
+ audioSources.append(source.release());
+ }
+ }
+
+ client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
+}
+
</ins><span class="cx"> bool RealtimeMediaSourceCenterOwr::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>)
</span><span class="cx"> {
</span><span class="cx"> notImplemented();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamopenwebrtcRealtimeMediaSourceCenterOwrh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -53,8 +53,11 @@
</span><span class="cx"> RealtimeMediaSourceCenterOwr();
</span><span class="cx"> ~RealtimeMediaSourceCenterOwr();
</span><span class="cx">
</span><del>- void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
</del><ins>+ void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) override;
+
</ins><span class="cx"> void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
</span><ins>+ void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) override;
+
</ins><span class="cx"> bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
</span><span class="cx">
</span><span class="cx"> void mediaSourcesAvailable(GList* sources);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeMediaSourceCentercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -127,12 +127,10 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void MockRealtimeMediaSourceCenter::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpQueryClient, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints)
</del><ins>+void MockRealtimeMediaSourceCenter::validateRequestConstraints(MediaStreamCreationClient* client, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints)
</ins><span class="cx"> {
</span><del>- RefPtr<MediaStreamCreationClient> client = prpQueryClient;
-
</del><span class="cx"> ASSERT(client);
</span><del>-
</del><ins>+
</ins><span class="cx"> if (audioConstraints) {
</span><span class="cx"> String invalidQuery = MediaConstraintsMock::verifyConstraints(audioConstraints);
</span><span class="cx"> if (!invalidQuery.isEmpty()) {
</span><span class="lines">@@ -195,6 +193,33 @@
</span><span class="cx"> client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void MockRealtimeMediaSourceCenter::createMediaStream(MediaStreamCreationClient* client, const String& audioDeviceID, const String& videoDeviceID)
+{
+ ASSERT(client);
+ Vector<RefPtr<RealtimeMediaSource>> audioSources;
+ Vector<RefPtr<RealtimeMediaSource>> videoSources;
+ MockSourceMap& map = mockSourceMap();
+
+ if (!audioDeviceID.isEmpty()) {
+ MockSourceMap::iterator it = map.find(mockAudioSourceID());
+ ASSERT(it != map.end());
+
+ RefPtr<RealtimeMediaSource> audioSource = it->value;
+ audioSource->reset();
+ audioSources.append(audioSource.release());
+ }
+ if (!videoDeviceID.isEmpty()) {
+ MockSourceMap::iterator it = map.find(mockVideoSourceID());
+ ASSERT(it != map.end());
+
+ RefPtr<RealtimeMediaSource> videoSource = it->value;
+ videoSource->reset();
+ videoSources.append(videoSource.release());
+ }
+
+ client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
+}
+
</ins><span class="cx"> bool MockRealtimeMediaSourceCenter::getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient> prpClient)
</span><span class="cx"> {
</span><span class="cx"> RefPtr<MediaStreamTrackSourcesRequestClient> requestClient = prpClient;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeMediaSourceCenterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h (190071 => 190072)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h        2015-09-21 20:05:51 UTC (rev 190071)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h        2015-09-21 20:09:51 UTC (rev 190072)
</span><span class="lines">@@ -37,12 +37,14 @@
</span><span class="cx"> public:
</span><span class="cx"> WEBCORE_EXPORT static void registerMockRealtimeMediaSourceCenter();
</span><span class="cx">
</span><del>- virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
- virtual void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
- virtual bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
</del><ins>+private:
+
+ void validateRequestConstraints(MediaStreamCreationClient*, RefPtr<MediaConstraints>& audioConstraints, RefPtr<MediaConstraints>& videoConstraints) override;
+ void createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) override;
+ bool getMediaStreamTrackSources(PassRefPtr<MediaStreamTrackSourcesRequestClient>) override;
+ void createMediaStream(MediaStreamCreationClient*, const String& audioDeviceID, const String& videoDeviceID) override;
</ins><span class="cx"> RefPtr<TrackSourceInfo> sourceWithUID(const String&, RealtimeMediaSource::Type, MediaConstraints*) override;
</span><span class="cx">
</span><del>-private:
</del><span class="cx"> MockRealtimeMediaSourceCenter() { }
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>