<!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>[192954] trunk</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/192954">192954</a></dd>
<dt>Author</dt> <dd>eric.carlson@apple.com</dd>
<dt>Date</dt> <dd>2015-12-02 12:20:37 -0800 (Wed, 02 Dec 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[MediaStream] Implement MediaStreamTrack.getSettings()
https://bugs.webkit.org/show_bug.cgi?id=151727

Reviewed by Jer Noble.

Source/WebCore:

MediaStreamTrack.getStates has been replaced by MediaStreamTrack.getSettings. 

Test: fast/mediastream/MediaStreamTrack-getSettings.html

* CMakeLists.txt: MediaSourceStates.* -&gt; MediaSourceSettings.*.
* DerivedSources.make: No more MediaSourceStates.idl.
* Modules/mediastream/CapabilityRange.cpp: MediaSourceStates.* -&gt; MediaSourceSettings.*.
* Modules/mediastream/MediaSourceSettings.cpp: Copied from Source/WebCore/Modules/mediastream/MediaSourceStates.cpp.
(WebCore::MediaSourceSettings::create):
(WebCore::MediaSourceSettings::MediaSourceSettings):
(WebCore::MediaSourceSettings::facingMode):
(WebCore::MediaSourceStates::create): Deleted.
(WebCore::MediaSourceStates::MediaSourceStates): Deleted.
(WebCore::MediaSourceStates::sourceType): Deleted.
(WebCore::MediaSourceStates::facingMode): Deleted.
* Modules/mediastream/MediaSourceSettings.h: Copied from Source/WebCore/Modules/mediastream/MediaSourceStates.h.

MediaSourceStates.* renamed to MediaSourceSettings.* and updated to new API.
* Modules/mediastream/MediaSourceStates.cpp: Removed.
* Modules/mediastream/MediaSourceStates.h: Removed.
* Modules/mediastream/MediaSourceStates.idl: Removed.

* Modules/mediastream/MediaStreamCapabilities.cpp:
(WebCore::MediaStreamCapabilities::sourceType): Return an empty vector for now, will be fixed
  by the changes for https://bugs.webkit.org/show_bug.cgi?id=151728.
(WebCore::MediaStreamCapabilities::sourceId): RealtimeMediaSourceStates -&gt; MediaSourceSettings.
(WebCore::MediaStreamCapabilities::facingMode): Ditto.

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::getSettings): New.
(WebCore::MediaStreamTrack::getCapabilities): Don't modify states, just pass through whatever
  private track returns.
(WebCore::MediaStreamTrack::trackSettingsChanged):
(WebCore::MediaStreamTrack::states): Deleted.
(WebCore::MediaStreamTrack::trackStatesChanged): Deleted.
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl: MediaSourceStates -&gt; MediaSourceSettings.

* Modules/webaudio/MediaStreamAudioSource.cpp:
(WebCore::MediaStreamAudioSource::settings):
(WebCore::MediaStreamAudioSource::states): Deleted.
* Modules/webaudio/MediaStreamAudioSource.h: MediaSourceStates -&gt; MediaSourceSettings.

* WebCore.xcodeproj/project.pbxproj: MediaSourceStates.* -&gt; MediaSourceSettings.*.

* bindings/js/JSMediaSourceStatesCustom.cpp: Removed.
* bindings/js/JSMediaStreamTrackCustom.cpp: Added.
(WebCore::JSMediaStreamTrack::getSettings): MediaSourceSettings is a generic dictionary so 
  it has to be generated manually.

* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::intrinsicSize): states -&gt; settings.
(WebCore::MediaStreamPrivate::trackStatesChanged): Deleted.
* platform/mediastream/MediaStreamPrivate.h:

* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::settings):
(WebCore::MediaStreamTrackPrivate::sourceSettingsChanged):
(WebCore::MediaStreamTrackPrivate::states): Deleted.
(WebCore::MediaStreamTrackPrivate::sourceStatesChanged): Deleted.
* platform/mediastream/MediaStreamTrackPrivate.h:

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::settingsDidChanged):
(WebCore::RealtimeMediaSource::statesDidChanged): Deleted.
* platform/mediastream/RealtimeMediaSource.h:

* platform/mediastream/RealtimeMediaSourceCapabilities.h:
(WebCore::RealtimeMediaSourceCapabilities::facingModes): States -&gt; Settings.
(WebCore::RealtimeMediaSourceCapabilities::addFacingMode): Ditto.
(WebCore::RealtimeMediaSourceCapabilities::sourceTypes): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setSourceType): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::addSourceType): Deleted.

* platform/mediastream/RealtimeMediaSourceCenter.h: States -&gt; Settings.
* platform/mediastream/RealtimeMediaSourceSettings.cpp: Copied from Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.cpp.
(WebCore::RealtimeMediaSourceSettings::facingMode):
(WebCore::RealtimeMediaSourceStates::facingMode): Deleted.
(WebCore::RealtimeMediaSourceStates::sourceType): Deleted.

* platform/mediastream/RealtimeMediaSourceSettings.h: Copied from Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.h.
* platform/mediastream/RealtimeMediaSourceStates.cpp: Removed.

* platform/mediastream/RealtimeMediaSourceStates.h: Removed.
* platform/mediastream/mac/AVAudioCaptureSource.h:
* platform/mediastream/mac/AVAudioCaptureSource.mm:
(WebCore::AVAudioCaptureSource::updateStates): Deleted.

* platform/mediastream/mac/AVCaptureDeviceManager.h:
* platform/mediastream/mac/AVCaptureDeviceManager.mm:

* platform/mediastream/mac/AVMediaCaptureSource.h:
* platform/mediastream/mac/AVMediaCaptureSource.mm:
(WebCore::AVMediaCaptureSource::states): Deleted.

* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::updateStates): Deleted.

* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

* platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:

* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::initializeSupportedConstraints):
(WebCore::MockRealtimeAudioSource::updateStates): Deleted.
* platform/mock/MockRealtimeAudioSource.h:

* platform/mock/MockRealtimeMediaSource.cpp:
(WebCore::MockRealtimeMediaSource::capabilities): Minor cleanup.
(WebCore::MockRealtimeMediaSource::settings):
(WebCore::MockRealtimeMediaSource::supportedConstraints):
(WebCore::MockRealtimeMediaSource::states): Deleted.
* platform/mock/MockRealtimeMediaSource.h:
(WebCore::MockRealtimeMediaSource::constraints):
(WebCore::MockRealtimeMediaSource::currentStates): Deleted.

* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::updateSettings):
(WebCore::MockRealtimeVideoSource::initializeCapabilities):
(WebCore::MockRealtimeVideoSource::initializeSupportedConstraints):
(WebCore::MockRealtimeVideoSource::setFrameRate): states -&gt; settings.
(WebCore::MockRealtimeVideoSource::setSize): Ditto.
(WebCore::MockRealtimeVideoSource::drawAnimation): Ditto.
(WebCore::MockRealtimeVideoSource::drawText): Ditto.
(WebCore::MockRealtimeVideoSource::updateStates): Deleted.
(WebCore::MockRealtimeVideoSource::setFacingMode): Deleted.
* platform/mock/MockRealtimeVideoSource.h:

LayoutTests:

* fast/mediastream/MediaStream-video-element-expected.txt:
* fast/mediastream/MediaStream-video-element-track-stop-expected.txt:
* fast/mediastream/MediaStream-video-element-track-stop.html:
* fast/mediastream/MediaStream-video-element.html:
* fast/mediastream/MediaStreamTrack-getSettings-expected.txt: Added.
* fast/mediastream/MediaStreamTrack-getSettings.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamvideoelementexpectedtxt">trunk/LayoutTests/fast/mediastream/MediaStream-video-element-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamvideoelementtrackstopexpectedtxt">trunk/LayoutTests/fast/mediastream/MediaStream-video-element-track-stop-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamvideoelementtrackstophtml">trunk/LayoutTests/fast/mediastream/MediaStream-video-element-track-stop.html</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamvideoelementhtml">trunk/LayoutTests/fast/mediastream/MediaStream-video-element.html</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamCapabilityRangecpp">trunk/Source/WebCore/Modules/mediastream/CapabilityRange.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamCaptureDeviceInfoh">trunk/Source/WebCore/Modules/mediastream/CaptureDeviceInfo.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamCaptureDeviceManagercpp">trunk/Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamCaptureDeviceManagerh">trunk/Source/WebCore/Modules/mediastream/CaptureDeviceManager.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamCapabilitiescpp">trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp</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="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioMediaStreamAudioSourcecpp">trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioMediaStreamAudioSourceh">trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</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="#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="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceCapabilitiesh">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceCenterh">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVAudioCaptureSourceh">trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVAudioCaptureSourcemm">trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVCaptureDeviceManagerh">trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVCaptureDeviceManagermm">trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVMediaCaptureSourceh">trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVMediaCaptureSourcemm">trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVVideoCaptureSourceh">trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVVideoCaptureSourcemm">trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacMockRealtimeVideoSourceMacmm">trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamopenwebrtcRealtimeMediaSourceOwrh">trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeAudioSourcecpp">trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeAudioSourceh">trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeMediaSourcecpp">trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeMediaSourceh">trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeVideoSourcecpp">trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeVideoSourceh">trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamTrackgetSettingsexpectedtxt">trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamTrackgetSettingshtml">trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings.html</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaSourceSettingscpp">trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaSourceSettingsh">trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceSettingscpp">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceSettingsh">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaSourceStatescpp">trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaSourceStatesh">trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaSourceStatesidl">trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.idl</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMediaSourceStatesCustomcpp">trunk/Source/WebCore/bindings/js/JSMediaSourceStatesCustom.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceStatescpp">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceStatesh">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/LayoutTests/ChangeLog        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2015-12-02  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [MediaStream] Implement MediaStreamTrack.getSettings()
+        https://bugs.webkit.org/show_bug.cgi?id=151727
+
+        Reviewed by Jer Noble.
+
+        * fast/mediastream/MediaStream-video-element-expected.txt:
+        * fast/mediastream/MediaStream-video-element-track-stop-expected.txt:
+        * fast/mediastream/MediaStream-video-element-track-stop.html:
+        * fast/mediastream/MediaStream-video-element.html:
+        * fast/mediastream/MediaStreamTrack-getSettings-expected.txt: Added.
+        * fast/mediastream/MediaStreamTrack-getSettings.html: Added.
+
</ins><span class="cx"> 2015-12-01  David Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Implement the picture element.
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamvideoelementexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStream-video-element-expected.txt (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStream-video-element-expected.txt        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/LayoutTests/fast/mediastream/MediaStream-video-element-expected.txt        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -21,8 +21,8 @@
</span><span class="cx"> video.pause()
</span><span class="cx"> 
</span><span class="cx"> **** check video element ****
</span><del>-PASS video.videoWidth is mediaStream.getVideoTracks()[0].states().width
-PASS video.videoHeight is mediaStream.getVideoTracks()[0].states().height
</del><ins>+PASS video.videoWidth is mediaStream.getVideoTracks()[0].getSettings().width
+PASS video.videoHeight is mediaStream.getVideoTracks()[0].getSettings().height
</ins><span class="cx"> PASS video.src.indexOf(&quot;blob:&quot;) is 0
</span><span class="cx"> PASS video.srcObject is mediaStream
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamvideoelementtrackstopexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStream-video-element-track-stop-expected.txt (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStream-video-element-track-stop-expected.txt        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/LayoutTests/fast/mediastream/MediaStream-video-element-track-stop-expected.txt        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -22,8 +22,8 @@
</span><span class="cx"> 
</span><span class="cx"> **** check states with live video stream track ****
</span><span class="cx"> PASS video.ended is false
</span><del>-PASS video.videoWidth is mediaStream.getVideoTracks()[0].states().width
-PASS video.videoHeight is mediaStream.getVideoTracks()[0].states().height
</del><ins>+PASS video.videoWidth is mediaStream.getVideoTracks()[0].getSettings().width
+PASS video.videoHeight is mediaStream.getVideoTracks()[0].getSettings().height
</ins><span class="cx"> PASS video.src.indexOf(&quot;blob:&quot;) is 0
</span><span class="cx"> PASS video.srcObject is mediaStream
</span><span class="cx"> 
</span><span class="lines">@@ -41,8 +41,8 @@
</span><span class="cx"> 
</span><span class="cx"> **** re-check states now that the video stream has been disabled ****
</span><span class="cx"> PASS mediaStream.getVideoTracks()[0].enabled is false
</span><del>-PASS video.videoWidth is mediaStream.getVideoTracks()[0].states().width
-PASS video.videoHeight is mediaStream.getVideoTracks()[0].states().height
</del><ins>+PASS video.videoWidth is mediaStream.getVideoTracks()[0].getSettings().width
+PASS video.videoHeight is mediaStream.getVideoTracks()[0].getSettings().height
</ins><span class="cx"> 
</span><span class="cx"> **** stop MediaStream tracks ****
</span><span class="cx"> mediaStream.getVideoTracks()[0].enabled = true
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamvideoelementtrackstophtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStream-video-element-track-stop.html (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStream-video-element-track-stop.html        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/LayoutTests/fast/mediastream/MediaStream-video-element-track-stop.html        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -44,8 +44,8 @@
</span><span class="cx">             {
</span><span class="cx">                 debug(&quot;&lt;br&gt;**** re-check states now that the video stream has been disabled ****&quot;);
</span><span class="cx">                 shouldBe('mediaStream.getVideoTracks()[0].enabled', 'false');
</span><del>-                shouldBe('video.videoWidth', 'mediaStream.getVideoTracks()[0].states().width');
-                shouldBe('video.videoHeight', 'mediaStream.getVideoTracks()[0].states().height');
</del><ins>+                shouldBe('video.videoWidth', 'mediaStream.getVideoTracks()[0].getSettings().width');
+                shouldBe('video.videoHeight', 'mediaStream.getVideoTracks()[0].getSettings().height');
</ins><span class="cx"> 
</span><span class="cx">                 debug(&quot;&lt;br&gt;**** stop MediaStream tracks ****&quot;);
</span><span class="cx">                 evalAndLog('mediaStream.getVideoTracks()[0].enabled = true');
</span><span class="lines">@@ -60,8 +60,8 @@
</span><span class="cx"> 
</span><span class="cx">                 debug(&quot;&lt;br&gt;**** check states with live video stream track ****&quot;);
</span><span class="cx">                 shouldBe('video.ended', 'false');
</span><del>-                shouldBe('video.videoWidth', 'mediaStream.getVideoTracks()[0].states().width');
-                shouldBe('video.videoHeight', 'mediaStream.getVideoTracks()[0].states().height');
</del><ins>+                shouldBe('video.videoWidth', 'mediaStream.getVideoTracks()[0].getSettings().width');
+                shouldBe('video.videoHeight', 'mediaStream.getVideoTracks()[0].getSettings().height');
</ins><span class="cx">                 shouldBe('video.src.indexOf(&quot;blob:&quot;)', '0');
</span><span class="cx">                 shouldBe('video.srcObject', 'mediaStream');
</span><span class="cx">                 
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamvideoelementhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStream-video-element.html (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStream-video-element.html        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/LayoutTests/fast/mediastream/MediaStream-video-element.html        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -30,9 +30,6 @@
</span><span class="cx">             function enumerateProperties(object, workFunc)
</span><span class="cx">             {
</span><span class="cx">                 for (var property in object) {
</span><del>-                    // When https://webkit.org/b/129375 is fixed, we have to remove
-                    // states.hasOwnProperty(property), because all the attributes
-                    // will be in the prototype chain.
</del><span class="cx">                     if (!object.hasOwnProperty(property) &amp;&amp; !object.__proto__.hasOwnProperty(property))
</span><span class="cx">                         continue;
</span><span class="cx">                     if (object[property] === undefined)
</span><span class="lines">@@ -59,8 +56,8 @@
</span><span class="cx">                 evalAndLog(&quot;video.pause()&quot;);
</span><span class="cx"> 
</span><span class="cx">                 debug(&quot;&lt;br&gt;**** check video element ****&quot;);
</span><del>-                shouldBe('video.videoWidth', 'mediaStream.getVideoTracks()[0].states().width');
-                shouldBe('video.videoHeight', 'mediaStream.getVideoTracks()[0].states().height');
</del><ins>+                shouldBe('video.videoWidth', 'mediaStream.getVideoTracks()[0].getSettings().width');
+                shouldBe('video.videoHeight', 'mediaStream.getVideoTracks()[0].getSettings().height');
</ins><span class="cx">                 shouldBe('video.src.indexOf(&quot;blob:&quot;)', '0');
</span><span class="cx">                 shouldBe('video.srcObject', 'mediaStream');
</span><span class="cx">                 
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamTrackgetSettingsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt (0 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+Tests MediaStreamTrack.getSettings.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+video track:
+  settings.width = 640
+  settings.height = 480
+  settings.aspectRatio = 1.33
+  settings.frameRate = 30
+  settings.facingMode = user
+  settings.deviceId = &lt;UUID&gt;
+
+audio track:
+  settings.volume = 50
+  settings.deviceId = &lt;UUID&gt;
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamTrackgetSettingshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings.html (0 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings.html                                (rev 0)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings.html        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;./resources/getUserMedia-helper.js&quot;&gt;&lt;/script&gt;
+        &lt;script&gt;
+            var mediaStream;
+
+            function limitPrecision(value, precision)
+            {
+                if (typeof value === &quot;number&quot; &amp;&amp; value % 1 != 0)
+                    return value.toFixed(precision);
+                return value;
+            }
+
+            function gotStream(stream)
+            {
+                mediaStream = stream;
+                mediaStream.getTracks().forEach(function(track) {
+                    debug(`${track.kind} track:`);
+                    settings = track.getSettings();
+                    for (var property in settings) {
+                        if (settings.hasOwnProperty(property) || settings.__proto__.hasOwnProperty(property))
+                            if (property == &quot;deviceId&quot;)
+                                value = &quot;&amp;lt;UUID&gt;&quot;;
+                            else
+                                value = limitPrecision(settings[property], 2);
+                            debug(`  settings.${property} = ${value}`);
+                    }
+                    debug(&quot;&quot;);
+                });
+                finishJSTest();
+            }
+
+            function start()
+            {
+                description(&quot;Tests MediaStreamTrack.getSettings.&quot;);
+                getUserMedia(&quot;allow&quot;, {audio:true, video:true}, gotStream);
+            }
+
+            window.jsTestIsAsync = true;
+            window.successfullyParsed = true;
+        &lt;/script&gt;
+
+    &lt;/head&gt;
+    &lt;body onload=&quot;start()&quot;&gt;
+        &lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+        &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+        &lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/CMakeLists.txt        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -228,7 +228,6 @@
</span><span class="cx">     Modules/mediastream/HTMLMediaElementMediaStream.idl
</span><span class="cx">     Modules/mediastream/MediaDeviceInfo.idl
</span><span class="cx">     Modules/mediastream/MediaDevices.idl
</span><del>-    Modules/mediastream/MediaSourceStates.idl
</del><span class="cx">     Modules/mediastream/MediaStream.idl
</span><span class="cx">     Modules/mediastream/MediaStreamCapabilities.idl
</span><span class="cx">     Modules/mediastream/MediaStreamEvent.idl
</span><span class="lines">@@ -952,7 +951,7 @@
</span><span class="cx">     Modules/mediastream/MediaDevices.cpp
</span><span class="cx">     Modules/mediastream/MediaDevicesRequest.cpp
</span><span class="cx">     Modules/mediastream/MediaEndpointPeerConnection.cpp
</span><del>-    Modules/mediastream/MediaSourceStates.cpp
</del><ins>+    Modules/mediastream/MediaSourceSettings.cpp
</ins><span class="cx">     Modules/mediastream/MediaStream.cpp
</span><span class="cx">     Modules/mediastream/MediaStreamCapabilities.cpp
</span><span class="cx">     Modules/mediastream/MediaStreamEvent.cpp
</span><span class="lines">@@ -1207,8 +1206,8 @@
</span><span class="cx">     bindings/js/JSLazyEventListener.cpp
</span><span class="cx">     bindings/js/JSLocationCustom.cpp
</span><span class="cx">     bindings/js/JSMainThreadExecState.cpp
</span><del>-    bindings/js/JSMediaSourceStatesCustom.cpp
</del><span class="cx">     bindings/js/JSMediaStreamCapabilitiesCustom.cpp
</span><ins>+    bindings/js/JSMediaStreamTrackCustom.cpp
</ins><span class="cx">     bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp
</span><span class="cx">     bindings/js/JSMessageChannelCustom.cpp
</span><span class="cx">     bindings/js/JSMessageEventCustom.cpp
</span><span class="lines">@@ -2310,7 +2309,7 @@
</span><span class="cx">     platform/mediastream/RTCSessionDescriptionDescriptor.cpp
</span><span class="cx">     platform/mediastream/RealtimeMediaSource.cpp
</span><span class="cx">     platform/mediastream/RealtimeMediaSourceCenter.cpp
</span><del>-    platform/mediastream/RealtimeMediaSourceStates.cpp
</del><ins>+    platform/mediastream/RealtimeMediaSourceSettings.cpp
</ins><span class="cx"> 
</span><span class="cx">     platform/mock/DeviceMotionClientMock.cpp
</span><span class="cx">     platform/mock/DeviceOrientationClientMock.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/ChangeLog        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -1,3 +1,139 @@
</span><ins>+2015-12-02  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [MediaStream] Implement MediaStreamTrack.getSettings()
+        https://bugs.webkit.org/show_bug.cgi?id=151727
+
+        Reviewed by Jer Noble.
+
+        MediaStreamTrack.getStates has been replaced by MediaStreamTrack.getSettings. 
+
+        Test: fast/mediastream/MediaStreamTrack-getSettings.html
+
+        * CMakeLists.txt: MediaSourceStates.* -&gt; MediaSourceSettings.*.
+        * DerivedSources.make: No more MediaSourceStates.idl.
+        * Modules/mediastream/CapabilityRange.cpp: MediaSourceStates.* -&gt; MediaSourceSettings.*.
+        * Modules/mediastream/MediaSourceSettings.cpp: Copied from Source/WebCore/Modules/mediastream/MediaSourceStates.cpp.
+        (WebCore::MediaSourceSettings::create):
+        (WebCore::MediaSourceSettings::MediaSourceSettings):
+        (WebCore::MediaSourceSettings::facingMode):
+        (WebCore::MediaSourceStates::create): Deleted.
+        (WebCore::MediaSourceStates::MediaSourceStates): Deleted.
+        (WebCore::MediaSourceStates::sourceType): Deleted.
+        (WebCore::MediaSourceStates::facingMode): Deleted.
+        * Modules/mediastream/MediaSourceSettings.h: Copied from Source/WebCore/Modules/mediastream/MediaSourceStates.h.
+
+        MediaSourceStates.* renamed to MediaSourceSettings.* and updated to new API.
+        * Modules/mediastream/MediaSourceStates.cpp: Removed.
+        * Modules/mediastream/MediaSourceStates.h: Removed.
+        * Modules/mediastream/MediaSourceStates.idl: Removed.
+
+        * Modules/mediastream/MediaStreamCapabilities.cpp:
+        (WebCore::MediaStreamCapabilities::sourceType): Return an empty vector for now, will be fixed
+          by the changes for https://bugs.webkit.org/show_bug.cgi?id=151728.
+        (WebCore::MediaStreamCapabilities::sourceId): RealtimeMediaSourceStates -&gt; MediaSourceSettings.
+        (WebCore::MediaStreamCapabilities::facingMode): Ditto.
+
+        * Modules/mediastream/MediaStreamTrack.cpp:
+        (WebCore::MediaStreamTrack::getSettings): New.
+        (WebCore::MediaStreamTrack::getCapabilities): Don't modify states, just pass through whatever
+          private track returns.
+        (WebCore::MediaStreamTrack::trackSettingsChanged):
+        (WebCore::MediaStreamTrack::states): Deleted.
+        (WebCore::MediaStreamTrack::trackStatesChanged): Deleted.
+        * Modules/mediastream/MediaStreamTrack.h:
+        * Modules/mediastream/MediaStreamTrack.idl: MediaSourceStates -&gt; MediaSourceSettings.
+
+        * Modules/webaudio/MediaStreamAudioSource.cpp:
+        (WebCore::MediaStreamAudioSource::settings):
+        (WebCore::MediaStreamAudioSource::states): Deleted.
+        * Modules/webaudio/MediaStreamAudioSource.h: MediaSourceStates -&gt; MediaSourceSettings.
+
+        * WebCore.xcodeproj/project.pbxproj: MediaSourceStates.* -&gt; MediaSourceSettings.*.
+
+        * bindings/js/JSMediaSourceStatesCustom.cpp: Removed.
+        * bindings/js/JSMediaStreamTrackCustom.cpp: Added.
+        (WebCore::JSMediaStreamTrack::getSettings): MediaSourceSettings is a generic dictionary so 
+          it has to be generated manually.
+
+        * platform/mediastream/MediaStreamPrivate.cpp:
+        (WebCore::MediaStreamPrivate::intrinsicSize): states -&gt; settings.
+        (WebCore::MediaStreamPrivate::trackStatesChanged): Deleted.
+        * platform/mediastream/MediaStreamPrivate.h:
+
+        * platform/mediastream/MediaStreamTrackPrivate.cpp:
+        (WebCore::MediaStreamTrackPrivate::settings):
+        (WebCore::MediaStreamTrackPrivate::sourceSettingsChanged):
+        (WebCore::MediaStreamTrackPrivate::states): Deleted.
+        (WebCore::MediaStreamTrackPrivate::sourceStatesChanged): Deleted.
+        * platform/mediastream/MediaStreamTrackPrivate.h:
+
+        * platform/mediastream/RealtimeMediaSource.cpp:
+        (WebCore::RealtimeMediaSource::settingsDidChanged):
+        (WebCore::RealtimeMediaSource::statesDidChanged): Deleted.
+        * platform/mediastream/RealtimeMediaSource.h:
+
+        * platform/mediastream/RealtimeMediaSourceCapabilities.h:
+        (WebCore::RealtimeMediaSourceCapabilities::facingModes): States -&gt; Settings.
+        (WebCore::RealtimeMediaSourceCapabilities::addFacingMode): Ditto.
+        (WebCore::RealtimeMediaSourceCapabilities::sourceTypes): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::setSourceType): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::addSourceType): Deleted.
+
+        * platform/mediastream/RealtimeMediaSourceCenter.h: States -&gt; Settings.
+        * platform/mediastream/RealtimeMediaSourceSettings.cpp: Copied from Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.cpp.
+        (WebCore::RealtimeMediaSourceSettings::facingMode):
+        (WebCore::RealtimeMediaSourceStates::facingMode): Deleted.
+        (WebCore::RealtimeMediaSourceStates::sourceType): Deleted.
+
+        * platform/mediastream/RealtimeMediaSourceSettings.h: Copied from Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.h.
+        * platform/mediastream/RealtimeMediaSourceStates.cpp: Removed.
+
+        * platform/mediastream/RealtimeMediaSourceStates.h: Removed.
+        * platform/mediastream/mac/AVAudioCaptureSource.h:
+        * platform/mediastream/mac/AVAudioCaptureSource.mm:
+        (WebCore::AVAudioCaptureSource::updateStates): Deleted.
+
+        * platform/mediastream/mac/AVCaptureDeviceManager.h:
+        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
+
+        * platform/mediastream/mac/AVMediaCaptureSource.h:
+        * platform/mediastream/mac/AVMediaCaptureSource.mm:
+        (WebCore::AVMediaCaptureSource::states): Deleted.
+
+        * platform/mediastream/mac/AVVideoCaptureSource.h:
+        * platform/mediastream/mac/AVVideoCaptureSource.mm:
+        (WebCore::AVVideoCaptureSource::updateStates): Deleted.
+
+        * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
+
+        * platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:
+
+        * platform/mock/MockRealtimeAudioSource.cpp:
+        (WebCore::MockRealtimeAudioSource::initializeSupportedConstraints):
+        (WebCore::MockRealtimeAudioSource::updateStates): Deleted.
+        * platform/mock/MockRealtimeAudioSource.h:
+
+        * platform/mock/MockRealtimeMediaSource.cpp:
+        (WebCore::MockRealtimeMediaSource::capabilities): Minor cleanup.
+        (WebCore::MockRealtimeMediaSource::settings):
+        (WebCore::MockRealtimeMediaSource::supportedConstraints):
+        (WebCore::MockRealtimeMediaSource::states): Deleted.
+        * platform/mock/MockRealtimeMediaSource.h:
+        (WebCore::MockRealtimeMediaSource::constraints):
+        (WebCore::MockRealtimeMediaSource::currentStates): Deleted.
+
+        * platform/mock/MockRealtimeVideoSource.cpp:
+        (WebCore::MockRealtimeVideoSource::updateSettings):
+        (WebCore::MockRealtimeVideoSource::initializeCapabilities):
+        (WebCore::MockRealtimeVideoSource::initializeSupportedConstraints):
+        (WebCore::MockRealtimeVideoSource::setFrameRate): states -&gt; settings.
+        (WebCore::MockRealtimeVideoSource::setSize): Ditto.
+        (WebCore::MockRealtimeVideoSource::drawAnimation): Ditto.
+        (WebCore::MockRealtimeVideoSource::drawText): Ditto.
+        (WebCore::MockRealtimeVideoSource::updateStates): Deleted.
+        (WebCore::MockRealtimeVideoSource::setFacingMode): Deleted.
+        * platform/mock/MockRealtimeVideoSource.h:
+
</ins><span class="cx"> 2015-11-30  David Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Implement the picture element.
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/DerivedSources.make        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -122,7 +122,6 @@
</span><span class="cx">     $(WebCore)/Modules/mediastream/CapabilityRange.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/DOMURLMediaStream.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/HTMLMediaElementMediaStream.idl \
</span><del>-    $(WebCore)/Modules/mediastream/MediaSourceStates.idl \
</del><span class="cx">     $(WebCore)/Modules/mediastream/MediaDeviceInfo.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/MediaDevices.idl \
</span><span class="cx">         $(WebCore)/Modules/mediastream/MediaStream.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamCapabilityRangecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/CapabilityRange.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/CapabilityRange.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/CapabilityRange.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #include &quot;CapabilityRange.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><del>-#include &quot;MediaSourceStates.h&quot;
</del><ins>+#include &quot;MediaSourceSettings.h&quot;
</ins><span class="cx"> #include &lt;bindings/ScriptValue.h&gt;
</span><span class="cx"> #include &lt;interpreter/CallFrame.h&gt;
</span><span class="cx"> #include &lt;runtime/JSCJSValue.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamCaptureDeviceInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/CaptureDeviceInfo.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/CaptureDeviceInfo.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/CaptureDeviceInfo.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> 
</span><span class="cx">     bool m_enabled { false };
</span><span class="cx">     RealtimeMediaSource::Type m_sourceType { RealtimeMediaSource::None };
</span><del>-    RealtimeMediaSourceStates::VideoFacingMode m_position { RealtimeMediaSourceStates::Unknown };
</del><ins>+    RealtimeMediaSourceSettings::VideoFacingMode m_position { RealtimeMediaSourceSettings::Unknown };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class CaptureSessionInfo {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamCaptureDeviceManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/CaptureDeviceManager.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #import &quot;MediaConstraints.h&quot;
</span><span class="cx"> #import &quot;RealtimeMediaSource.h&quot;
</span><span class="cx"> #import &quot;RealtimeMediaSourceCenter.h&quot;
</span><del>-#import &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#import &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #import &quot;UUID.h&quot;
</span><span class="cx"> #import &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #import &lt;wtf/NeverDestroyed.h&gt;
</span><span class="lines">@@ -125,9 +125,9 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CaptureDeviceInfo* CaptureDeviceManager::bestDeviceForFacingMode(RealtimeMediaSourceStates::VideoFacingMode facingMode)
</del><ins>+CaptureDeviceInfo* CaptureDeviceManager::bestDeviceForFacingMode(RealtimeMediaSourceSettings::VideoFacingMode facingMode)
</ins><span class="cx"> {
</span><del>-    if (facingMode == RealtimeMediaSourceStates::Unknown)
</del><ins>+    if (facingMode == RealtimeMediaSourceSettings::Unknown)
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; device : captureDeviceList()) {
</span><span class="lines">@@ -137,21 +137,21 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline RealtimeMediaSourceStates::VideoFacingMode facingModeFromString(const String&amp; facingModeString)
</del><ins>+static inline RealtimeMediaSourceSettings::VideoFacingMode facingModeFromString(const String&amp; facingModeString)
</ins><span class="cx"> {
</span><span class="cx">     static NeverDestroyed&lt;AtomicString&gt; userFacingModeString(&quot;user&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">     static NeverDestroyed&lt;AtomicString&gt; environmentFacingModeString(&quot;environment&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">     static NeverDestroyed&lt;AtomicString&gt; leftFacingModeString(&quot;left&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">     static NeverDestroyed&lt;AtomicString&gt; rightFacingModeString(&quot;right&quot;, AtomicString::ConstructFromLiteral);
</span><span class="cx">     if (facingModeString == userFacingModeString)
</span><del>-        return RealtimeMediaSourceStates::User;
</del><ins>+        return RealtimeMediaSourceSettings::User;
</ins><span class="cx">     if (facingModeString == environmentFacingModeString)
</span><del>-        return RealtimeMediaSourceStates::Environment;
</del><ins>+        return RealtimeMediaSourceSettings::Environment;
</ins><span class="cx">     if (facingModeString == leftFacingModeString)
</span><del>-        return RealtimeMediaSourceStates::Left;
</del><ins>+        return RealtimeMediaSourceSettings::Left;
</ins><span class="cx">     if (facingModeString == rightFacingModeString)
</span><del>-        return RealtimeMediaSourceStates::Right;
-    return RealtimeMediaSourceStates::Unknown;
</del><ins>+        return RealtimeMediaSourceSettings::Right;
+    return RealtimeMediaSourceSettings::Unknown;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool CaptureDeviceManager::sessionSupportsConstraint(const CaptureSessionInfo*, RealtimeMediaSource::Type type, const String&amp; name, const String&amp; value)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamCaptureDeviceManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/CaptureDeviceManager.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/CaptureDeviceManager.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/CaptureDeviceManager.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">     virtual bool isSupportedFrameRate(float frameRate) const;
</span><span class="cx"> 
</span><span class="cx">     bool captureDeviceFromDeviceID(const String&amp; captureDeviceID, CaptureDeviceInfo&amp; source);
</span><del>-    CaptureDeviceInfo* bestDeviceForFacingMode(RealtimeMediaSourceStates::VideoFacingMode);
</del><ins>+    CaptureDeviceInfo* bestDeviceForFacingMode(RealtimeMediaSourceSettings::VideoFacingMode);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaSourceSettingscppfromrev192930trunkSourceWebCoreModulesmediastreamMediaSourceStatescpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.cpp (from rev 192930, trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.cpp) (0 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.cpp                                (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+/*
+ * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;MediaSourceSettings.h&quot;
+
+#if ENABLE(MEDIA_STREAM)
+
+#include &lt;wtf/NeverDestroyed.h&gt;
+
+namespace WebCore {
+
+Ref&lt;MediaSourceSettings&gt; MediaSourceSettings::create(const RealtimeMediaSourceSettings&amp; settings)
+{
+    return adoptRef(*new MediaSourceSettings(settings));
+}
+
+MediaSourceSettings::MediaSourceSettings(const RealtimeMediaSourceSettings&amp; settings)
+    : m_sourceSettings(settings)
+{
+}
+
+const AtomicString&amp; MediaSourceSettings::facingMode() const
+{
+    return RealtimeMediaSourceSettings::facingMode(m_sourceSettings.facingMode());
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaSourceSettingshfromrev192930trunkSourceWebCoreModulesmediastreamMediaSourceStatesh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h (from rev 192930, trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.h) (0 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h                                (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+/*
+ * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MediaSourceSettings_h
+#define MediaSourceSettings_h
+
+#if ENABLE(MEDIA_STREAM)
+
+#include &quot;RealtimeMediaSourceCapabilities.h&quot;
+#include &quot;ScriptWrappable.h&quot;
+#include &lt;wtf/Forward.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+
+namespace WebCore {
+
+class MediaSourceSettings : public RefCounted&lt;MediaSourceSettings&gt;, public ScriptWrappable {
+public:
+    static Ref&lt;MediaSourceSettings&gt; create(const RealtimeMediaSourceSettings&amp;);
+
+    bool supportsWidth() const { return m_sourceSettings.supportsWidth(); }
+    unsigned long width() const { return m_sourceSettings.width(); }
+
+    bool supportsHeight() const { return m_sourceSettings.supportsHeight(); }
+    unsigned long height() const { return m_sourceSettings.height(); }
+
+    bool supportsAspectRatio() const { return m_sourceSettings.supportsAspectRatio(); }
+    float aspectRatio() const { return m_sourceSettings.aspectRatio(); }
+
+    bool supportsFrameRate() const { return m_sourceSettings.supportsFrameRate(); }
+    float frameRate() const { return m_sourceSettings.frameRate(); }
+
+    bool supportsFacingMode() const { return m_sourceSettings.supportsFacingMode(); }
+    const AtomicString&amp; facingMode() const;
+
+    bool supportsVolume() const { return m_sourceSettings.supportsVolume(); }
+    unsigned long volume() const { return m_sourceSettings.volume(); }
+
+    bool supportsSampleRate() const { return m_sourceSettings.supportsSampleRate(); }
+    unsigned long sampleRate() const { return m_sourceSettings.sampleRate(); }
+
+    bool supportsSampleSize() const { return m_sourceSettings.supportsSampleSize(); }
+    unsigned long sampleSize() const { return m_sourceSettings.sampleSize(); }
+
+    bool supportsEchoCancellation() const { return m_sourceSettings.supportsEchoCancellation(); }
+    bool echoCancellation() const { return m_sourceSettings.echoCancellation(); }
+
+    bool supportsDeviceId() const { return m_sourceSettings.supportsDeviceId(); }
+    const AtomicString&amp; deviceId() const { return m_sourceSettings.deviceId(); }
+
+    bool supportsGroupId() const { return m_sourceSettings.supportsGroupId(); }
+    const AtomicString&amp; groupId() const { return m_sourceSettings.groupId(); }
+
+private:
+    explicit MediaSourceSettings(const RealtimeMediaSourceSettings&amp;);
+
+    RealtimeMediaSourceSettings m_sourceSettings;
+};
+
+} // namespace WebCore
+
+#endif // MediaSourceSettings_h
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaSourceStatescpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -1,59 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;MediaSourceStates.h&quot;
-
-#include &lt;wtf/NeverDestroyed.h&gt;
-
-namespace WebCore {
-
-Ref&lt;MediaSourceStates&gt; MediaSourceStates::create(const RealtimeMediaSourceStates&amp; states)
-{
-    return adoptRef(*new MediaSourceStates(states));
-}
-
-MediaSourceStates::MediaSourceStates(const RealtimeMediaSourceStates&amp; states)
-    : m_sourceStates(states)
-{
-}
-
-const AtomicString&amp; MediaSourceStates::sourceType() const
-{
-    return RealtimeMediaSourceStates::sourceType(m_sourceStates.sourceType());
-}
-
-const AtomicString&amp; MediaSourceStates::facingMode() const
-{
-    return RealtimeMediaSourceStates::facingMode(m_sourceStates.facingMode());
-}
-
-
-} // namespace WebCore
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaSourceStatesh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -1,63 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef MediaSourceStates_h
-#define MediaSourceStates_h
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;RealtimeMediaSourceCapabilities.h&quot;
-#include &quot;ScriptWrappable.h&quot;
-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-
-namespace WebCore {
-
-class MediaSourceStates : public RefCounted&lt;MediaSourceStates&gt;, public ScriptWrappable {
-public:
-    static Ref&lt;MediaSourceStates&gt; create(const RealtimeMediaSourceStates&amp;);
-
-    const AtomicString&amp; sourceType() const;
-    const AtomicString&amp; sourceId() const { return m_sourceStates.sourceId(); }
-    unsigned long width() const { return m_sourceStates.width(); }
-    unsigned long height() const { return m_sourceStates.height(); }
-    float frameRate() const { return m_sourceStates.frameRate(); }
-    float aspectRatio() const { return m_sourceStates.aspectRatio(); }
-    const AtomicString&amp; facingMode() const;
-    unsigned long volume() const { return m_sourceStates.volume(); }
-    
-    bool hasVideoSource() const { return m_sourceStates.sourceType() == RealtimeMediaSourceStates::Camera; }
-
-private:
-    explicit MediaSourceStates(const RealtimeMediaSourceStates&amp;);
-
-    RealtimeMediaSourceStates m_sourceStates;
-};
-
-} // namespace WebCore
-
-#endif // MediaSourceStates_h
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaSourceStatesidl"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.idl (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.idl        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/MediaSourceStates.idl        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -1,44 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-enum SourceTypeEnum { &quot;none&quot;, &quot;camera&quot;, &quot;microphone&quot; };
-enum VideoFacingModeEnum { &quot;user&quot;, &quot;environment&quot;, &quot;left&quot;, &quot;right&quot; };
-
-[
-    Conditional=MEDIA_STREAM,
-    ImplementationLacksVTable,
-    NoInterfaceObject,
-] interface MediaSourceStates {
-    readonly attribute SourceTypeEnum sourceType;
-    readonly attribute DOMString sourceId;
-
-    [CustomGetter] readonly attribute unsigned long? width;
-    [CustomGetter] readonly attribute unsigned long? height;
-    [CustomGetter] readonly attribute unrestricted float? frameRate;
-    [CustomGetter] readonly attribute unrestricted float? aspectRatio;
-    [CustomGetter] readonly attribute VideoFacingModeEnum? facingMode;
-    [CustomGetter] readonly attribute unsigned long? volume;
-};
-
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamCapabilitiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include &quot;AllAudioCapabilities.h&quot;
</span><span class="cx"> #include &quot;AllVideoCapabilities.h&quot;
</span><span class="cx"> #include &quot;CapabilityRange.h&quot;
</span><del>-#include &quot;MediaSourceStates.h&quot;
</del><ins>+#include &quot;MediaSourceSettings.h&quot;
</ins><span class="cx"> #include &quot;RealtimeMediaSourceCapabilities.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -52,19 +52,8 @@
</span><span class="cx"> 
</span><span class="cx"> Vector&lt;String&gt; MediaStreamCapabilities::sourceType() const
</span><span class="cx"> {
</span><del>-    ASSERT(m_SourceCapabilities-&gt;hasVideoSource());
-    
-    size_t count = m_SourceCapabilities-&gt;sourceTypes().size();
-    if (!count)
-        return Vector&lt;String&gt;();
-    
-    Vector&lt;String&gt; capabilities;
-    capabilities.reserveCapacity(count);
-    
-    for (auto&amp; type : m_SourceCapabilities-&gt;sourceTypes())
-        capabilities.append(RealtimeMediaSourceStates::sourceType(type));
-    
-    return capabilities;
</del><ins>+    // This will be fixed by https://bugs.webkit.org/show_bug.cgi?id=151728.
+    return Vector&lt;String&gt;();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Vector&lt;String&gt; MediaStreamCapabilities::sourceId() const
</span><span class="lines">@@ -94,7 +83,7 @@
</span><span class="cx">     capabilities.reserveCapacity(count);
</span><span class="cx">     
</span><span class="cx">     for (auto&amp; mode : m_SourceCapabilities-&gt;facingModes())
</span><del>-        capabilities.append(RealtimeMediaSourceStates::facingMode(mode));
</del><ins>+        capabilities.append(RealtimeMediaSourceSettings::facingMode(mode));
</ins><span class="cx">     
</span><span class="cx">     return capabilities;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;ExceptionCodePlaceholder.h&quot;
</span><span class="cx"> #include &quot;MediaConstraintsImpl.h&quot;
</span><del>-#include &quot;MediaSourceStates.h&quot;
</del><ins>+#include &quot;MediaSourceSettings.h&quot;
</ins><span class="cx"> #include &quot;MediaStream.h&quot;
</span><span class="cx"> #include &quot;MediaStreamPrivate.h&quot;
</span><span class="cx"> #include &quot;MediaTrackConstraints.h&quot;
</span><span class="lines">@@ -162,21 +162,14 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;MediaSourceStates&gt; MediaStreamTrack::states() const
</del><ins>+RefPtr&lt;MediaSourceSettings&gt; MediaStreamTrack::getSettings() const
</ins><span class="cx"> {
</span><del>-    return MediaSourceStates::create(m_private-&gt;states());
</del><ins>+    return MediaSourceSettings::create(m_private-&gt;settings());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;MediaStreamCapabilities&gt; MediaStreamTrack::getCapabilities() const
</span><span class="cx"> {
</span><del>-    // The source may be shared by multiple tracks, so its states is not necessarily
-    // in sync with the track state. A track that has ended always has a source
-    // type of &quot;none&quot;.
-    RefPtr&lt;RealtimeMediaSourceCapabilities&gt; sourceCapabilities = m_private-&gt;capabilities();
-    if (ended())
-        sourceCapabilities-&gt;setSourceType(RealtimeMediaSourceStates::None);
-    
-    return MediaStreamCapabilities::create(sourceCapabilities.release());
</del><ins>+    return MediaStreamCapabilities::create(m_private-&gt;capabilities());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaStreamTrack::applyConstraints(const Dictionary&amp; constraints)
</span><span class="lines">@@ -238,7 +231,7 @@
</span><span class="cx">     configureTrackRendering();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaStreamTrack::trackStatesChanged(MediaStreamTrackPrivate&amp;)
</del><ins>+void MediaStreamTrack::trackSettingsChanged(MediaStreamTrackPrivate&amp;)
</ins><span class="cx"> {
</span><span class="cx">     configureTrackRendering();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> class AudioSourceProvider;
</span><span class="cx"> class Dictionary;
</span><span class="cx"> class MediaConstraintsImpl;
</span><del>-class MediaSourceStates;
</del><ins>+class MediaSourceSettings;
</ins><span class="cx"> class MediaStreamCapabilities;
</span><span class="cx"> class MediaTrackConstraints;
</span><span class="cx"> 
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">     void stopProducingData();
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaTrackConstraints&gt; getConstraints() const;
</span><del>-    RefPtr&lt;MediaSourceStates&gt; states() const;
</del><ins>+    RefPtr&lt;MediaSourceSettings&gt; getSettings() const;
</ins><span class="cx">     RefPtr&lt;MediaStreamCapabilities&gt; getCapabilities() const;
</span><span class="cx">     void applyConstraints(const Dictionary&amp;);
</span><span class="cx">     void applyConstraints(const MediaConstraints&amp;);
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx">     // MediaStreamTrackPrivate::Observer
</span><span class="cx">     void trackEnded(MediaStreamTrackPrivate&amp;) override;
</span><span class="cx">     void trackMutedChanged(MediaStreamTrackPrivate&amp;) override;
</span><del>-    void trackStatesChanged(MediaStreamTrackPrivate&amp;) override;
</del><ins>+    void trackSettingsChanged(MediaStreamTrackPrivate&amp;) override;
</ins><span class="cx">     void trackEnabledChanged(MediaStreamTrackPrivate&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;Observer*&gt; m_observers;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">     [ImplementedAs=stopProducingData] void stop();
</span><span class="cx"> 
</span><span class="cx">     MediaTrackConstraints getConstraints();
</span><del>-    MediaSourceStates states();
</del><ins>+    [Custom] MediaSourceSettings getSettings();
</ins><span class="cx">     MediaStreamCapabilities getCapabilities(); // returns either AllVideoCapabilities or AllAudioCapabilities
</span><span class="cx">     void applyConstraints(Dictionary constraints);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioMediaStreamAudioSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -52,12 +52,12 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const RealtimeMediaSourceStates&amp; MediaStreamAudioSource::states()
</del><ins>+const RealtimeMediaSourceSettings&amp; MediaStreamAudioSource::settings()
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: implement this.
</span><span class="cx">     // https://bugs.webkit.org/show_bug.cgi?id=122430
</span><span class="cx">     notImplemented();
</span><del>-    return m_currentStates;
</del><ins>+    return m_currentSettings;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> AudioSourceProvider* MediaStreamAudioSource::audioSourceProvider()
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioMediaStreamAudioSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     ~MediaStreamAudioSource() { }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities() override;
</span><del>-    const RealtimeMediaSourceStates&amp; states() override;
</del><ins>+    const RealtimeMediaSourceSettings&amp; settings() override;
</ins><span class="cx">     
</span><span class="cx">     const String&amp; deviceId() const { return m_deviceId; }
</span><span class="cx">     void setDeviceId(const String&amp; deviceId) { m_deviceId = deviceId; }
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx">     String m_deviceId;
</span><span class="cx">     Lock m_audioConsumersLock;
</span><span class="cx">     Vector&lt;RefPtr&lt;AudioDestinationConsumer&gt;&gt; m_audioConsumers;
</span><del>-    RealtimeMediaSourceStates m_currentStates;
</del><ins>+    RealtimeMediaSourceSettings m_currentSettings;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -319,11 +319,9 @@
</span><span class="cx">                 07BDD6EC1469B4C2009C9F85 /* JSTrackEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B5A30A14687B8400A81ECE /* JSTrackEventCustom.cpp */; };
</span><span class="cx">                 07C1C0E21BFB600100BD2256 /* MediaTrackSupportedConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C1C0E01BFB600100BD2256 /* MediaTrackSupportedConstraints.h */; };
</span><span class="cx">                 07C1C0E51BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C1C0E41BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                07C59B6817F784BA000FBCBB /* MediaSourceStates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6517F784BA000FBCBB /* MediaSourceStates.cpp */; };
-                07C59B6917F784BA000FBCBB /* MediaSourceStates.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C59B6617F784BA000FBCBB /* MediaSourceStates.h */; };
-                07C59B6E17F794F6000FBCBB /* JSMediaSourceStatesCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6D17F794F6000FBCBB /* JSMediaSourceStatesCustom.cpp */; };
-                07C59B7117F79C7C000FBCBB /* JSMediaSourceStates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6F17F79C7C000FBCBB /* JSMediaSourceStates.cpp */; };
-                07C59B7217F79C7C000FBCBB /* JSMediaSourceStates.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C59B7017F79C7C000FBCBB /* JSMediaSourceStates.h */; };
</del><ins>+                07C59B6817F784BA000FBCBB /* MediaSourceSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6517F784BA000FBCBB /* MediaSourceSettings.cpp */; };
+                07C59B6917F784BA000FBCBB /* MediaSourceSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C59B6617F784BA000FBCBB /* MediaSourceSettings.h */; };
+                07C59B6E17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */; };
</ins><span class="cx">                 07C59B7617F7D0DB000FBCBB /* CapabilityRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C59B7417F7D09D000FBCBB /* CapabilityRange.h */; };
</span><span class="cx">                 07CA120E182D67D800D12197 /* JSRTCPeerConnectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07CA120D182D67D800D12197 /* JSRTCPeerConnectionCustom.cpp */; };
</span><span class="cx">                 07CE77D516712A6A00C55A47 /* InbandTextTrackPrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -1857,8 +1855,8 @@
</span><span class="cx">                 4A4F65701AA997F100E38CDD /* RealtimeMediaSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A4F656B1AA997F100E38CDD /* RealtimeMediaSource.cpp */; };
</span><span class="cx">                 4A4F65711AA997F100E38CDD /* RealtimeMediaSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F656C1AA997F100E38CDD /* RealtimeMediaSource.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 4A4F65721AA997F100E38CDD /* RealtimeMediaSourceCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F656D1AA997F100E38CDD /* RealtimeMediaSourceCapabilities.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                4A4F65731AA997F100E38CDD /* RealtimeMediaSourceStates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A4F656E1AA997F100E38CDD /* RealtimeMediaSourceStates.cpp */; };
-                4A4F65741AA997F100E38CDD /* RealtimeMediaSourceStates.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F656F1AA997F100E38CDD /* RealtimeMediaSourceStates.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><ins>+                4A4F65731AA997F100E38CDD /* RealtimeMediaSourceSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A4F656E1AA997F100E38CDD /* RealtimeMediaSourceSettings.cpp */; };
+                4A4F65741AA997F100E38CDD /* RealtimeMediaSourceSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F656F1AA997F100E38CDD /* RealtimeMediaSourceSettings.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 4A5A2ADB161E7E00005889DD /* WebSocketExtensionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A5A2AD9161E7E00005889DD /* WebSocketExtensionParser.cpp */; };
</span><span class="cx">                 4A5A2ADC161E7E00005889DD /* WebSocketExtensionParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A5A2ADA161E7E00005889DD /* WebSocketExtensionParser.h */; };
</span><span class="cx">                 4A6E9FC313C17D1D0046A7F8 /* CSSFontFeatureValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6E9FC113C17D1D0046A7F8 /* CSSFontFeatureValue.cpp */; };
</span><span class="lines">@@ -7617,12 +7615,9 @@
</span><span class="cx">                 07C1C0E11BFB600100BD2256 /* MediaTrackSupportedConstraints.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaTrackSupportedConstraints.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C1C0E41BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealtimeMediaSourceSupportedConstraints.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C1C0E61BFB90A700BD2256 /* JSMediaTrackSupportedConstraintsCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaTrackSupportedConstraintsCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                07C59B6517F784BA000FBCBB /* MediaSourceStates.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSourceStates.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B6617F784BA000FBCBB /* MediaSourceStates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSourceStates.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B6717F784BA000FBCBB /* MediaSourceStates.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaSourceStates.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B6D17F794F6000FBCBB /* JSMediaSourceStatesCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaSourceStatesCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B6F17F79C7C000FBCBB /* JSMediaSourceStates.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaSourceStates.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B7017F79C7C000FBCBB /* JSMediaSourceStates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaSourceStates.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                07C59B6517F784BA000FBCBB /* MediaSourceSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSourceSettings.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                07C59B6617F784BA000FBCBB /* MediaSourceSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSourceSettings.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaStreamTrackCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 07C59B7317F7D09D000FBCBB /* AllVideoCapabilities.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AllVideoCapabilities.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C59B7417F7D09D000FBCBB /* CapabilityRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CapabilityRange.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C59B7517F7D09D000FBCBB /* CapabilityRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CapabilityRange.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -9293,8 +9288,8 @@
</span><span class="cx">                 4A4F656B1AA997F100E38CDD /* RealtimeMediaSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RealtimeMediaSource.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4A4F656C1AA997F100E38CDD /* RealtimeMediaSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealtimeMediaSource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4A4F656D1AA997F100E38CDD /* RealtimeMediaSourceCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealtimeMediaSourceCapabilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                4A4F656E1AA997F100E38CDD /* RealtimeMediaSourceStates.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RealtimeMediaSourceStates.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                4A4F656F1AA997F100E38CDD /* RealtimeMediaSourceStates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealtimeMediaSourceStates.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                4A4F656E1AA997F100E38CDD /* RealtimeMediaSourceSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RealtimeMediaSourceSettings.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                4A4F656F1AA997F100E38CDD /* RealtimeMediaSourceSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealtimeMediaSourceSettings.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 4A5A2AD9161E7E00005889DD /* WebSocketExtensionParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSocketExtensionParser.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4A5A2ADA161E7E00005889DD /* WebSocketExtensionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketExtensionParser.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4A6E9FC113C17D1D0046A7F8 /* CSSFontFeatureValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFeatureValue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -15177,9 +15172,8 @@
</span><span class="cx">                                 07394EC91BAB2CD700BE99CD /* MediaDevicesRequest.h */,
</span><span class="cx">                                 5E16A2E21BFA64FB0029A21E /* MediaEndpointPeerConnection.cpp */,
</span><span class="cx">                                 5E16A2E31BFA64FB0029A21E /* MediaEndpointPeerConnection.h */,
</span><del>-                                07C59B6517F784BA000FBCBB /* MediaSourceStates.cpp */,
-                                07C59B6617F784BA000FBCBB /* MediaSourceStates.h */,
-                                07C59B6717F784BA000FBCBB /* MediaSourceStates.idl */,
</del><ins>+                                07C59B6517F784BA000FBCBB /* MediaSourceSettings.cpp */,
+                                07C59B6617F784BA000FBCBB /* MediaSourceSettings.h */,
</ins><span class="cx">                                 07221B4C17CEC32700848E51 /* MediaStream.cpp */,
</span><span class="cx">                                 07221B4D17CEC32700848E51 /* MediaStream.h */,
</span><span class="cx">                                 07221B4E17CEC32700848E51 /* MediaStream.idl */,
</span><span class="lines">@@ -15303,8 +15297,8 @@
</span><span class="cx">                                 4A4F656D1AA997F100E38CDD /* RealtimeMediaSourceCapabilities.h */,
</span><span class="cx">                                 4A0FFA9F1AAF5EA20062803B /* RealtimeMediaSourceCenter.cpp */,
</span><span class="cx">                                 4A0FFAA01AAF5EA20062803B /* RealtimeMediaSourceCenter.h */,
</span><del>-                                4A4F656E1AA997F100E38CDD /* RealtimeMediaSourceStates.cpp */,
-                                4A4F656F1AA997F100E38CDD /* RealtimeMediaSourceStates.h */,
</del><ins>+                                4A4F656E1AA997F100E38CDD /* RealtimeMediaSourceSettings.cpp */,
+                                4A4F656F1AA997F100E38CDD /* RealtimeMediaSourceSettings.h */,
</ins><span class="cx">                                 07AB996D18DA3C740018771E /* RTCConfigurationPrivate.h */,
</span><span class="cx">                                 07221BA217CF0AD400848E51 /* RTCDataChannelHandler.h */,
</span><span class="cx">                                 07221BA317CF0AD400848E51 /* RTCDataChannelHandlerClient.h */,
</span><span class="lines">@@ -15400,8 +15394,6 @@
</span><span class="cx">                                 157CC2621B7C1CA400D8D075 /* JSMediaDeviceInfo.h */,
</span><span class="cx">                                 15739BB81B42012200D258C1 /* JSMediaDevices.cpp */,
</span><span class="cx">                                 15739BB91B42012200D258C1 /* JSMediaDevices.h */,
</span><del>-                                07C59B6F17F79C7C000FBCBB /* JSMediaSourceStates.cpp */,
-                                07C59B7017F79C7C000FBCBB /* JSMediaSourceStates.h */,
</del><span class="cx">                                 07277E4017D018CC0015534D /* JSMediaStream.cpp */,
</span><span class="cx">                                 07277E4117D018CC0015534D /* JSMediaStream.h */,
</span><span class="cx">                                 07277E4217D018CC0015534D /* JSMediaStreamAudioDestinationNode.cpp */,
</span><span class="lines">@@ -22182,7 +22174,7 @@
</span><span class="cx">                                 BCE1C43F0D9830F4003B02F2 /* JSLocationCustom.cpp */,
</span><span class="cx">                                 AD726FE716D9F204003A4E6D /* JSMediaListCustom.h */,
</span><span class="cx">                                 077B640E1B8F5375003E9AD5 /* JSMediaSessionCustom.cpp */,
</span><del>-                                07C59B6D17F794F6000FBCBB /* JSMediaSourceStatesCustom.cpp */,
</del><ins>+                                07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */,
</ins><span class="cx">                                 0705851617FB40E9005F2BCB /* JSMediaStreamCapabilitiesCustom.cpp */,
</span><span class="cx">                                 E1A5F99A0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp */,
</span><span class="cx">                                 07C1C0E61BFB90A700BD2256 /* JSMediaTrackSupportedConstraintsCustom.cpp */,
</span><span class="lines">@@ -26305,7 +26297,6 @@
</span><span class="cx">                                 D3A94A47122DC40F00A37BBC /* JSMediaQueryList.h in Headers */,
</span><span class="cx">                                 7C5343FD17B74B63004232F0 /* JSMediaQueryListListener.h in Headers */,
</span><span class="cx">                                 CD9DE17517AAC74C00EA386D /* JSMediaSource.h in Headers */,
</span><del>-                                07C59B7217F79C7C000FBCBB /* JSMediaSourceStates.h in Headers */,
</del><span class="cx">                                 07277E4D17D018CC0015534D /* JSMediaStream.h in Headers */,
</span><span class="cx">                                 07277E4F17D018CC0015534D /* JSMediaStreamAudioDestinationNode.h in Headers */,
</span><span class="cx">                                 FDBD480D159BC6870093EB4F /* JSMediaStreamAudioSourceNode.h in Headers */,
</span><span class="lines">@@ -26796,7 +26787,7 @@
</span><span class="cx">                                 CDC8B5A7180474F70016E685 /* MediaSourcePrivateAVFObjC.h in Headers */,
</span><span class="cx">                                 CDDC1E7A18A952F30027A9D4 /* MediaSourcePrivateClient.h in Headers */,
</span><span class="cx">                                 CD61FE681794AADB004101EB /* MediaSourceRegistry.h in Headers */,
</span><del>-                                07C59B6917F784BA000FBCBB /* MediaSourceStates.h in Headers */,
</del><ins>+                                07C59B6917F784BA000FBCBB /* MediaSourceSettings.h in Headers */,
</ins><span class="cx">                                 078E091517D14D1C00420AA1 /* MediaStream.h in Headers */,
</span><span class="cx">                                 078E094C17D1709600420AA1 /* MediaStreamAudioDestinationNode.h in Headers */,
</span><span class="cx">                                 0783228518013ED800999E0C /* MediaStreamAudioSource.h in Headers */,
</span><span class="lines">@@ -27121,7 +27112,7 @@
</span><span class="cx">                                 4A4F65721AA997F100E38CDD /* RealtimeMediaSourceCapabilities.h in Headers */,
</span><span class="cx">                                 4A0FFAA21AAF5EA20062803B /* RealtimeMediaSourceCenter.h in Headers */,
</span><span class="cx">                                 4A0FFAA61AAF5EF60062803B /* RealtimeMediaSourceCenterMac.h in Headers */,
</span><del>-                                4A4F65741AA997F100E38CDD /* RealtimeMediaSourceStates.h in Headers */,
</del><ins>+                                4A4F65741AA997F100E38CDD /* RealtimeMediaSourceSettings.h in Headers */,
</ins><span class="cx">                                 07C1C0E51BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h in Headers */,
</span><span class="cx">                                 BC4368E80C226E32005EFB5F /* Rect.h in Headers */,
</span><span class="cx">                                 FD45A958175D414C00C21EC8 /* RectangleShape.h in Headers */,
</span><span class="lines">@@ -29990,8 +29981,7 @@
</span><span class="cx">                                 C9DADBCB1B1D3B97001F17D8 /* JSMediaSession.cpp in Sources */,
</span><span class="cx">                                 077B640F1B8F5D6B003E9AD5 /* JSMediaSessionCustom.cpp in Sources */,
</span><span class="cx">                                 CD9DE17417AAC74C00EA386D /* JSMediaSource.cpp in Sources */,
</span><del>-                                07C59B7117F79C7C000FBCBB /* JSMediaSourceStates.cpp in Sources */,
-                                07C59B6E17F794F6000FBCBB /* JSMediaSourceStatesCustom.cpp in Sources */,
</del><ins>+                                07C59B6E17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp in Sources */,
</ins><span class="cx">                                 07277E4C17D018CC0015534D /* JSMediaStream.cpp in Sources */,
</span><span class="cx">                                 07277E4E17D018CC0015534D /* JSMediaStreamAudioDestinationNode.cpp in Sources */,
</span><span class="cx">                                 FDBD480C159BC6870093EB4F /* JSMediaStreamAudioSourceNode.cpp in Sources */,
</span><span class="lines">@@ -30505,7 +30495,7 @@
</span><span class="cx">                                 CD3A495E17A9D01B00274E42 /* MediaSource.cpp in Sources */,
</span><span class="cx">                                 CDC8B5A6180474F70016E685 /* MediaSourcePrivateAVFObjC.mm in Sources */,
</span><span class="cx">                                 CD61FE671794AADB004101EB /* MediaSourceRegistry.cpp in Sources */,
</span><del>-                                07C59B6817F784BA000FBCBB /* MediaSourceStates.cpp in Sources */,
</del><ins>+                                07C59B6817F784BA000FBCBB /* MediaSourceSettings.cpp in Sources */,
</ins><span class="cx">                                 078E08FF17D14CEE00420AA1 /* MediaStream.cpp in Sources */,
</span><span class="cx">                                 078E094B17D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp in Sources */,
</span><span class="cx">                                 0783228418013ED800999E0C /* MediaStreamAudioSource.cpp in Sources */,
</span><span class="lines">@@ -30735,7 +30725,7 @@
</span><span class="cx">                                 4A4F65701AA997F100E38CDD /* RealtimeMediaSource.cpp in Sources */,
</span><span class="cx">                                 4A0FFAA11AAF5EA20062803B /* RealtimeMediaSourceCenter.cpp in Sources */,
</span><span class="cx">                                 4A0FFAA51AAF5EF60062803B /* RealtimeMediaSourceCenterMac.cpp in Sources */,
</span><del>-                                4A4F65731AA997F100E38CDD /* RealtimeMediaSourceStates.cpp in Sources */,
</del><ins>+                                4A4F65731AA997F100E38CDD /* RealtimeMediaSourceSettings.cpp in Sources */,
</ins><span class="cx">                                 FD45A95A175D417100C21EC8 /* RectangleShape.cpp in Sources */,
</span><span class="cx">                                 BCAB418113E356E800D8AAF3 /* Region.cpp in Sources */,
</span><span class="cx">                                 85031B4B0A44EFC700F992E0 /* RegisteredEventListener.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMediaSourceStatesCustomcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/JSMediaSourceStatesCustom.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMediaSourceStatesCustom.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/bindings/js/JSMediaSourceStatesCustom.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -1,92 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;JSMediaSourceStates.h&quot;
-
-#include &quot;JSDOMBinding.h&quot;
-
-using namespace JSC;
-
-namespace WebCore {
-
-JSValue JSMediaSourceStates::width(ExecState&amp;) const
-{
-    if (!wrapped().hasVideoSource())
-        return jsUndefined();
-
-    return jsNumber(wrapped().width());
-}
-
-JSValue JSMediaSourceStates::height(ExecState&amp;) const
-{
-    if (!wrapped().hasVideoSource())
-        return jsUndefined();
-    
-    return jsNumber(wrapped().height());
-}
-
-JSValue JSMediaSourceStates::frameRate(ExecState&amp;) const
-{
-    if (!wrapped().hasVideoSource())
-        return jsUndefined();
-    
-    return jsNumber(wrapped().frameRate());
-}
-
-JSValue JSMediaSourceStates::aspectRatio(ExecState&amp;) const
-{
-    if (!wrapped().hasVideoSource())
-        return jsUndefined();
-    
-    return jsNumber(wrapped().aspectRatio());
-}
-
-JSValue JSMediaSourceStates::facingMode(ExecState&amp; state) const
-{
-    if (!wrapped().hasVideoSource())
-        return jsUndefined();
-
-    const AtomicString&amp; mode = wrapped().facingMode();
-    if (mode.isEmpty())
-        return jsUndefined();
-    
-    return jsStringWithCache(&amp;state, wrapped().facingMode());
-}
-
-JSValue JSMediaSourceStates::volume(ExecState&amp;) const
-{
-    if (wrapped().hasVideoSource())
-        return jsUndefined();
-    
-    return jsNumber(wrapped().volume());
-}
-
-} // namespace WebCore
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp (0 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;JSMediaStreamTrack.h&quot;
+
+#if ENABLE(MEDIA_STREAM)
+
+#include &quot;ExceptionCode.h&quot;
+#include &quot;JSDOMBinding.h&quot;
+#include &quot;MediaSourceSettings.h&quot;
+#include &lt;runtime/JSObject.h&gt;
+#include &lt;runtime/ObjectConstructor.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSC::JSValue JSMediaStreamTrack::getSettings(ExecState&amp; state)
+{
+    JSValue thisValue = state.thisValue();
+    JSMediaStreamTrack* castedThis = jsDynamicCast&lt;JSMediaStreamTrack*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return JSValue::decode(throwThisTypeError(state, &quot;MediaStreamTrack&quot;, &quot;getSettings&quot;));
+
+    JSObject* object = constructEmptyObject(&amp;state);
+    auto&amp; impl = castedThis-&gt;wrapped();
+    RefPtr&lt;MediaSourceSettings&gt; settings = WTF::getPtr(impl.getSettings());
+
+    if (settings-&gt;supportsWidth())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;width&quot;), jsNumber(settings-&gt;width()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsHeight())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;height&quot;), jsNumber(settings-&gt;height()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsAspectRatio())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;aspectRatio&quot;), jsDoubleNumber(settings-&gt;aspectRatio()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsFrameRate())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;frameRate&quot;), jsDoubleNumber(settings-&gt;frameRate()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsFacingMode())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;facingMode&quot;), jsStringWithCache(&amp;state, settings-&gt;facingMode()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsVolume())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;volume&quot;), jsDoubleNumber(settings-&gt;volume()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsSampleRate())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;sampleRate&quot;), jsNumber(settings-&gt;sampleRate()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsSampleSize())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;sampleSize&quot;), jsNumber(settings-&gt;sampleSize()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsEchoCancellation())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;echoCancellation&quot;), jsBoolean(settings-&gt;echoCancellation()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsDeviceId())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;deviceId&quot;), jsStringWithCache(&amp;state, settings-&gt;deviceId()), DontDelete | ReadOnly);
+    if (settings-&gt;supportsGroupId())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;groupId&quot;), jsStringWithCache(&amp;state, settings-&gt;groupId()), DontDelete | ReadOnly);
+    
+    return object;
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamPrivatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -204,9 +204,9 @@
</span><span class="cx">     FloatSize size;
</span><span class="cx"> 
</span><span class="cx">     if (m_activeVideoTrack) {
</span><del>-        const RealtimeMediaSourceStates&amp; states = m_activeVideoTrack-&gt;source()-&gt;states();
-        size.setWidth(states.width());
-        size.setHeight(states.height());
</del><ins>+        const RealtimeMediaSourceSettings&amp; setting = m_activeVideoTrack-&gt;settings();
+        size.setWidth(setting.width());
+        size.setHeight(setting.height());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return size;
</span><span class="lines">@@ -268,7 +268,7 @@
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaStreamPrivate::trackStatesChanged(MediaStreamTrackPrivate&amp;)
</del><ins>+void MediaStreamPrivate::trackSettingsChanged(MediaStreamTrackPrivate&amp;)
</ins><span class="cx"> {
</span><span class="cx">     characteristicsChanged();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">     // MediaStreamTrackPrivate::Observer
</span><span class="cx">     void trackEnded(MediaStreamTrackPrivate&amp;) override;
</span><span class="cx">     void trackMutedChanged(MediaStreamTrackPrivate&amp;) override;
</span><del>-    void trackStatesChanged(MediaStreamTrackPrivate&amp;) override;
</del><ins>+    void trackSettingsChanged(MediaStreamTrackPrivate&amp;) override;
</ins><span class="cx">     void trackEnabledChanged(MediaStreamTrackPrivate&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     void characteristicsChanged();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -32,8 +32,7 @@
</span><span class="cx"> #include &quot;AudioSourceProvider.h&quot;
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><del>-#include &quot;MediaSourceStates.h&quot;
-#include &quot;MediaStreamCapabilities.h&quot;
</del><ins>+#include &quot;MediaSourceSettings.h&quot;
</ins><span class="cx"> #include &quot;UUID.h&quot;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -149,9 +148,9 @@
</span><span class="cx">     return m_constraints;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const RealtimeMediaSourceStates&amp; MediaStreamTrackPrivate::states() const
</del><ins>+const RealtimeMediaSourceSettings&amp; MediaStreamTrackPrivate::settings() const
</ins><span class="cx"> {
</span><del>-    return m_source-&gt;states();
</del><ins>+    return m_source-&gt;settings();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;RealtimeMediaSourceCapabilities&gt; MediaStreamTrackPrivate::capabilities() const
</span><span class="lines">@@ -202,10 +201,10 @@
</span><span class="cx">         observer-&gt;trackMutedChanged(*this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaStreamTrackPrivate::sourceStatesChanged()
</del><ins>+void MediaStreamTrackPrivate::sourceSettingsChanged()
</ins><span class="cx"> {
</span><span class="cx">     for (auto&amp; observer : m_observers)
</span><del>-        observer-&gt;trackStatesChanged(*this);
</del><ins>+        observer-&gt;trackSettingsChanged(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaStreamTrackPrivate::preventSourceFromStopping()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> class AudioSourceProvider;
</span><span class="cx"> class GraphicsContext;
</span><del>-class MediaSourceStates;
</del><ins>+class MediaSourceSettings;
</ins><span class="cx"> class RealtimeMediaSourceCapabilities;
</span><span class="cx"> 
</span><span class="cx"> class MediaStreamTrackPrivate : public RefCounted&lt;MediaStreamTrackPrivate&gt;, public RealtimeMediaSource::Observer {
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> 
</span><span class="cx">         virtual void trackEnded(MediaStreamTrackPrivate&amp;) = 0;
</span><span class="cx">         virtual void trackMutedChanged(MediaStreamTrackPrivate&amp;) = 0;
</span><del>-        virtual void trackStatesChanged(MediaStreamTrackPrivate&amp;) = 0;
</del><ins>+        virtual void trackSettingsChanged(MediaStreamTrackPrivate&amp;) = 0;
</ins><span class="cx">         virtual void trackEnabledChanged(MediaStreamTrackPrivate&amp;) = 0;
</span><span class="cx">     };
</span><span class="cx">     
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx">     void addObserver(Observer&amp;);
</span><span class="cx">     void removeObserver(Observer&amp;);
</span><span class="cx"> 
</span><del>-    const RealtimeMediaSourceStates&amp; states() const;
</del><ins>+    const RealtimeMediaSourceSettings&amp; settings() const;
</ins><span class="cx">     RefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities() const;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaConstraints&gt; constraints() const;
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx">     // RealtimeMediaSourceObserver
</span><span class="cx">     void sourceStopped() override final;
</span><span class="cx">     void sourceMutedChanged() override final;
</span><del>-    void sourceStatesChanged() override final;
</del><ins>+    void sourceSettingsChanged() override final;
</ins><span class="cx">     bool preventSourceFromStopping() override final;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;Observer*&gt; m_observers;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -95,10 +95,10 @@
</span><span class="cx">         observer-&gt;sourceMutedChanged();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RealtimeMediaSource::statesDidChanged()
</del><ins>+void RealtimeMediaSource::settingsDidChanged()
</ins><span class="cx"> {
</span><span class="cx">     for (auto&amp; observer : m_observers)
</span><del>-        observer-&gt;sourceStatesChanged();
</del><ins>+        observer-&gt;sourceSettingsChanged();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RealtimeMediaSource::readonly() const
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> class GraphicsContext;
</span><span class="cx"> class MediaConstraints;
</span><span class="cx"> class MediaStreamPrivate;
</span><del>-class RealtimeMediaSourceStates;
</del><ins>+class RealtimeMediaSourceSettings;
</ins><span class="cx"> 
</span><span class="cx"> class RealtimeMediaSource : public RefCounted&lt;RealtimeMediaSource&gt; {
</span><span class="cx"> public:
</span><span class="lines">@@ -62,7 +62,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><del>-        virtual void sourceStatesChanged() = 0;
</del><ins>+        virtual void sourceSettingsChanged() = 0;
</ins><span class="cx"> 
</span><span class="cx">         // Observer state queries.
</span><span class="cx">         virtual bool preventSourceFromStopping() = 0;
</span><span class="lines">@@ -85,8 +85,8 @@
</span><span class="cx">     virtual void setFitnessScore(const unsigned fitnessScore) { m_fitnessScore = fitnessScore; }
</span><span class="cx"> 
</span><span class="cx">     virtual RefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities() = 0;
</span><del>-    virtual const RealtimeMediaSourceStates&amp; states() = 0;
-    void statesDidChanged();
</del><ins>+    virtual const RealtimeMediaSourceSettings&amp; settings() = 0;
+    void settingsDidChanged();
</ins><span class="cx">     
</span><span class="cx">     bool stopped() const { return m_stopped; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceCapabilitiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx"> 
</span><del>-#include &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#include &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/AtomicString.h&gt;
</span><span class="lines">@@ -90,20 +90,11 @@
</span><span class="cx"> 
</span><span class="cx">     ~RealtimeMediaSourceCapabilities() { }
</span><span class="cx"> 
</span><del>-    const Vector&lt;RealtimeMediaSourceStates::SourceType&gt;&amp; sourceTypes() { return m_sourceType; }
-    void setSourceType(RealtimeMediaSourceStates::SourceType sourceType) { m_sourceType.resizeToFit(1); addSourceType(sourceType); }
-    void addSourceType(RealtimeMediaSourceStates::SourceType sourceType)
-    {
-        if (sourceType == RealtimeMediaSourceStates::Camera)
-            m_videoSource = true;
-        m_sourceType.append(sourceType);
-    }
-
</del><span class="cx">     const Vector&lt;AtomicString&gt;&amp; sourceId() { return m_sourceId; }
</span><span class="cx">     void setSourceId(const AtomicString&amp; id)  { m_sourceId.reserveCapacity(1); m_sourceId.insert(0, id); }
</span><span class="cx"> 
</span><del>-    const Vector&lt;RealtimeMediaSourceStates::VideoFacingMode&gt;&amp; facingModes() { return m_facingMode; }
-    void addFacingMode(RealtimeMediaSourceStates::VideoFacingMode mode) { m_facingMode.append(mode); }
</del><ins>+    const Vector&lt;RealtimeMediaSourceSettings::VideoFacingMode&gt;&amp; facingModes() { return m_facingMode; }
+    void addFacingMode(RealtimeMediaSourceSettings::VideoFacingMode mode) { m_facingMode.append(mode); }
</ins><span class="cx"> 
</span><span class="cx">     const RealtimeMediaSourceCapabilityRange&amp; width() { return m_width; }
</span><span class="cx">     void setWidthRange(const RealtimeMediaSourceCapabilityRange&amp; width) { m_width = width; }
</span><span class="lines">@@ -130,8 +121,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;AtomicString&gt; m_sourceId;
</span><del>-    Vector&lt;RealtimeMediaSourceStates::SourceType&gt; m_sourceType;
-    Vector&lt;RealtimeMediaSourceStates::VideoFacingMode&gt; m_facingMode;
</del><ins>+    Vector&lt;RealtimeMediaSourceSettings::VideoFacingMode&gt; m_facingMode;
</ins><span class="cx"> 
</span><span class="cx">     RealtimeMediaSourceCapabilityRange m_width;
</span><span class="cx">     RealtimeMediaSourceCapabilityRange m_height;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceCenterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> class MediaConstraints;
</span><span class="cx"> class MediaStreamCreationClient;
</span><span class="cx"> class MediaStreamTrackSourcesRequestClient;
</span><del>-class RealtimeMediaSourceStates;
</del><ins>+class RealtimeMediaSourceSettings;
</ins><span class="cx"> class RealtimeMediaSourceSupportedConstraints;
</span><span class="cx"> class TrackSourceInfo;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceSettingscppfromrev192930trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceStatescpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp (from rev 192930, trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.cpp) (0 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name of Google Inc. nor the names of its contributors
+ *    may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+
+#if ENABLE(MEDIA_STREAM)
+#include &quot;RealtimeMediaSourceSettings.h&quot;
+
+#include &lt;wtf/NeverDestroyed.h&gt;
+
+namespace WebCore {
+
+const AtomicString&amp; RealtimeMediaSourceSettings::facingMode(RealtimeMediaSourceSettings::VideoFacingMode mode)
+{
+    static NeverDestroyed&lt;AtomicString&gt; userFacing(&quot;user&quot;, AtomicString::ConstructFromLiteral);
+    static NeverDestroyed&lt;AtomicString&gt; environmentFacing(&quot;environment&quot;, AtomicString::ConstructFromLiteral);
+    static NeverDestroyed&lt;AtomicString&gt; leftFacing(&quot;left&quot;, AtomicString::ConstructFromLiteral);
+    static NeverDestroyed&lt;AtomicString&gt; rightFacing(&quot;right&quot;, AtomicString::ConstructFromLiteral);
+    
+    switch (mode) {
+    case RealtimeMediaSourceSettings::User:
+        return userFacing;
+    case RealtimeMediaSourceSettings::Environment:
+        return environmentFacing;
+    case RealtimeMediaSourceSettings::Left:
+        return leftFacing;
+    case RealtimeMediaSourceSettings::Right:
+        return rightFacing;
+    case RealtimeMediaSourceSettings::Unknown:
+        return emptyAtom;
+    }
+    
+    ASSERT_NOT_REACHED();
+    return emptyAtom;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(MEDIA_STREAM)
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceSettingshfromrev192930trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceStatesh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h (from rev 192930, trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.h) (0 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h                                (rev 0)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -0,0 +1,116 @@
</span><ins>+/*
+ * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RealtimeMediaSourceSettings_h
+#define RealtimeMediaSourceSettings_h
+
+#if ENABLE(MEDIA_STREAM)
+
+#include &quot;RealtimeMediaSourceSupportedConstraints.h&quot;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/Vector.h&gt;
+#include &lt;wtf/text/AtomicString.h&gt;
+
+namespace WebCore {
+
+class RealtimeMediaSourceSettings {
+public:
+    enum SourceType { None, Camera, Microphone };
+    enum VideoFacingMode { Unknown, User, Environment, Left, Right };
+
+    static const AtomicString&amp; facingMode(RealtimeMediaSourceSettings::VideoFacingMode);
+
+    explicit RealtimeMediaSourceSettings()
+    {
+    }
+
+    bool supportsWidth() const { return m_supportedConstraints.supportsWidth(); }
+    unsigned long width() const { return m_width; }
+    void setWidth(unsigned long width) { m_width = width; }
+
+    bool supportsHeight() const { return m_supportedConstraints.supportsHeight(); }
+    unsigned long height() const { return m_height; }
+    void setHeight(unsigned long height) { m_height = height; }
+
+    bool supportsAspectRatio() const { return m_supportedConstraints.supportsAspectRatio(); }
+    float aspectRatio() const { return m_aspectRatio; }
+    void setAspectRatio(float aspectRatio) { m_aspectRatio = aspectRatio; }
+
+    bool supportsFrameRate() const { return m_supportedConstraints.supportsFrameRate(); }
+    float frameRate() const { return m_frameRate; }
+    void setFrameRate(float frameRate) { m_frameRate = frameRate; }
+
+    bool supportsFacingMode() const { return m_supportedConstraints.supportsFacingMode(); }
+    VideoFacingMode facingMode() const { return m_facingMode; }
+    void setFacingMode(VideoFacingMode facingMode) { m_facingMode = facingMode; }
+
+    bool supportsVolume() const { return m_supportedConstraints.supportsVolume(); }
+    unsigned long volume() const { return m_volume; }
+    void setVolume(unsigned long volume) { m_volume = volume; }
+
+    bool supportsSampleRate() const { return m_supportedConstraints.supportsSampleRate(); }
+    unsigned long sampleRate() const { return m_sampleRate; }
+    void setSampleRate(unsigned long sampleRate) { m_sampleRate = sampleRate; }
+
+    bool supportsSampleSize() const { return m_supportedConstraints.supportsSampleSize(); }
+    unsigned long sampleSize() const { return m_sampleSize; }
+    void setSampleSize(unsigned long sampleSize) { m_sampleSize = sampleSize; }
+
+    bool supportsEchoCancellation() const { return m_supportedConstraints.supportsEchoCancellation(); }
+    bool echoCancellation() const { return m_echoCancellation; }
+    void setEchoCancellation(bool echoCancellation) { m_echoCancellation = echoCancellation; }
+
+    bool supportsDeviceId() const { return m_supportedConstraints.supportsDeviceId(); }
+    const AtomicString&amp; deviceId() const { return m_deviceId; }
+    void setDeviceId(const AtomicString&amp; deviceId) { m_deviceId = deviceId; }
+
+    bool supportsGroupId() const { return m_supportedConstraints.supportsGroupId(); }
+    const AtomicString&amp; groupId() const { return m_groupId; }
+    void setGroupId(const AtomicString&amp; groupId) { m_groupId = groupId; }
+
+    void setSupportedConstraits(const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints) { m_supportedConstraints = supportedConstraints; }
+
+private:
+    unsigned long m_width { 0 };
+    unsigned long m_height { 0 };
+    float m_aspectRatio { 0 };
+    float m_frameRate { 0 };
+    VideoFacingMode m_facingMode { Unknown };
+    unsigned long m_volume { 0 };
+    unsigned long m_sampleRate { 0 };
+    unsigned long m_sampleSize { 0 };
+    bool m_echoCancellation { 0 };
+
+    AtomicString m_deviceId;
+    AtomicString m_groupId;
+
+    RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
+};
+
+} // namespace WebCore
+
+#endif // RealtimeMediaSourceSettings_h
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceStatescpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -1,85 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer
- *    in the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name of Google Inc. nor the names of its contributors
- *    may be used to endorse or promote products derived from this
- *    software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-
-#if ENABLE(MEDIA_STREAM)
-#include &quot;RealtimeMediaSourceStates.h&quot;
-
-#include &lt;wtf/NeverDestroyed.h&gt;
-
-namespace WebCore {
-
-const AtomicString&amp; RealtimeMediaSourceStates::facingMode(RealtimeMediaSourceStates::VideoFacingMode mode)
-{
-    static NeverDestroyed&lt;AtomicString&gt; userFacing(&quot;user&quot;, AtomicString::ConstructFromLiteral);
-    static NeverDestroyed&lt;AtomicString&gt; environmentFacing(&quot;environment&quot;, AtomicString::ConstructFromLiteral);
-    static NeverDestroyed&lt;AtomicString&gt; leftFacing(&quot;left&quot;, AtomicString::ConstructFromLiteral);
-    static NeverDestroyed&lt;AtomicString&gt; rightFacing(&quot;right&quot;, AtomicString::ConstructFromLiteral);
-    
-    switch (mode) {
-    case RealtimeMediaSourceStates::User:
-        return userFacing;
-    case RealtimeMediaSourceStates::Environment:
-        return environmentFacing;
-    case RealtimeMediaSourceStates::Left:
-        return leftFacing;
-    case RealtimeMediaSourceStates::Right:
-        return rightFacing;
-    case RealtimeMediaSourceStates::Unknown:
-        return emptyAtom;
-    }
-    
-    ASSERT_NOT_REACHED();
-    return emptyAtom;
-}
-
-const AtomicString&amp; RealtimeMediaSourceStates::sourceType(RealtimeMediaSourceStates::SourceType sourceType)
-{
-    static NeverDestroyed&lt;AtomicString&gt; none(&quot;none&quot;, AtomicString::ConstructFromLiteral);
-    static NeverDestroyed&lt;AtomicString&gt; camera(&quot;camera&quot;, AtomicString::ConstructFromLiteral);
-    static NeverDestroyed&lt;AtomicString&gt; microphone(&quot;microphone&quot;, AtomicString::ConstructFromLiteral);
-    
-    switch (sourceType) {
-    case RealtimeMediaSourceStates::None:
-        return none;
-    case RealtimeMediaSourceStates::Camera:
-        return camera;
-    case RealtimeMediaSourceStates::Microphone:
-        return microphone;
-    }
-    
-    ASSERT_NOT_REACHED();
-    return emptyAtom;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(MEDIA_STREAM)
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceStatesh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -1,95 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef RealtimeMediaSourceStates_h
-#define RealtimeMediaSourceStates_h
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/Vector.h&gt;
-#include &lt;wtf/text/AtomicString.h&gt;
-
-namespace WebCore {
-
-class RealtimeMediaSourceStates {
-public:
-    enum SourceType { None, Camera, Microphone };
-    enum VideoFacingMode { Unknown, User, Environment, Left, Right };
-
-    RealtimeMediaSourceStates()
-        : m_sourceType(None)
-        , m_facingMode(Unknown)
-        , m_width(0)
-        , m_height(0)
-        , m_frameRate(0)
-        , m_aspectRatio(0)
-        , m_volume(0)
-    {
-    }
-
-    static const AtomicString&amp; sourceType(RealtimeMediaSourceStates::SourceType);
-    static const AtomicString&amp; facingMode(RealtimeMediaSourceStates::VideoFacingMode);
-
-    SourceType sourceType() const { return m_sourceType; }
-    void setSourceType(SourceType type) { m_sourceType = type; }
-
-    const AtomicString&amp; sourceId() const { return m_sourceId; }
-    void setSourceId(const AtomicString&amp; sourceId) { m_sourceId = sourceId; }
-
-    VideoFacingMode facingMode() const { return m_facingMode; }
-    void setFacingMode(VideoFacingMode facingMode) { m_facingMode = facingMode; }
-    
-    unsigned long width() const { return m_width; }
-    void setWidth(unsigned long width) { m_width = width; }
-    
-    unsigned long height() const { return m_height; }
-    void setHeight(unsigned long height) { m_height = height; }
-    
-    float frameRate() const { return m_frameRate; }
-    void setFrameRate(float frameRate) { m_frameRate = frameRate; }
-    
-    float aspectRatio() const { return m_aspectRatio; }
-    void setAspectRatio(float aspectRatio) { m_aspectRatio = aspectRatio; }
-    
-    unsigned long volume() const { return m_volume; }
-    void setVolume(unsigned long volume) { m_volume = volume; }
-    
-private:
-    SourceType m_sourceType;
-    AtomicString m_sourceId;
-    VideoFacingMode m_facingMode;
-    unsigned long m_width;
-    unsigned long m_height;
-    float m_frameRate;
-    float m_aspectRatio;
-    unsigned long m_volume;
-};
-
-} // namespace WebCore
-
-#endif // RealtimeMediaSourceStates_h
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVAudioCaptureSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -59,12 +59,13 @@
</span><span class="cx">     virtual ~AVAudioCaptureSource();
</span><span class="cx">     
</span><span class="cx">     void initializeCapabilities(RealtimeMediaSourceCapabilities&amp;) override;
</span><ins>+    void initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     void captureOutputDidOutputSampleBufferFromConnection(AVCaptureOutput*, CMSampleBufferRef, AVCaptureConnection*) override;
</span><span class="cx">     
</span><span class="cx">     void setupCaptureSession() override;
</span><span class="cx">     void shutdownCaptureSession() override;
</span><del>-    void updateStates() override;
</del><ins>+    void updateSettings(RealtimeMediaSourceSettings&amp;) override;
</ins><span class="cx">     AudioSourceProvider* audioSourceProvider() override;
</span><span class="cx"> 
</span><span class="cx">     RetainPtr&lt;AVCaptureConnection&gt; m_audioConnection;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVAudioCaptureSourcemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #import &quot;Logging.h&quot;
</span><span class="cx"> #import &quot;MediaConstraints.h&quot;
</span><span class="cx"> #import &quot;NotImplemented.h&quot;
</span><del>-#import &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#import &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #import &quot;SoftLinking.h&quot;
</span><span class="cx"> #import &quot;WebAudioSourceProviderAVFObjC.h&quot;
</span><span class="cx"> #import &lt;AVFoundation/AVFoundation.h&gt;
</span><span class="lines">@@ -70,8 +70,6 @@
</span><span class="cx"> AVAudioCaptureSource::AVAudioCaptureSource(AVCaptureDeviceType* device, const AtomicString&amp; id, PassRefPtr&lt;MediaConstraints&gt; constraints)
</span><span class="cx">     : AVMediaCaptureSource(device, id, RealtimeMediaSource::Audio, constraints)
</span><span class="cx"> {
</span><del>-    currentStates()-&gt;setSourceId(id);
-    currentStates()-&gt;setSourceType(RealtimeMediaSourceStates::Microphone);
</del><span class="cx">     m_inputDescription = std::make_unique&lt;AudioStreamBasicDescription&gt;();
</span><span class="cx"> }
</span><span class="cx">     
</span><span class="lines">@@ -79,19 +77,21 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AVAudioCaptureSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp;capabilities)
</del><ins>+void AVAudioCaptureSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp;)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: finish this implementation - https://webkit.org/b/122430
</span><del>-    capabilities.addSourceType(RealtimeMediaSourceStates::Microphone);
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AVAudioCaptureSource::updateStates()
</del><ins>+void AVAudioCaptureSource::initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
</ins><span class="cx"> {
</span><ins>+    supportedConstraints.setSupportsVolume(true);
+}
+
+void AVAudioCaptureSource::updateSettings(RealtimeMediaSourceSettings&amp; settings)
+{
</ins><span class="cx">     // FIXME: use [AVCaptureAudioPreviewOutput volume] for volume
</span><span class="cx"> 
</span><del>-    RealtimeMediaSourceStates* states = currentStates();
-    states-&gt;setSourceId(id());
-    states-&gt;setSourceType(RealtimeMediaSourceStates::Microphone);
</del><ins>+    settings.setDeviceId(id());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AVAudioCaptureSource::addObserver(AVAudioCaptureSource::Observer* observer)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVCaptureDeviceManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;CaptureDeviceManager.h&quot;
</span><span class="cx"> #include &quot;MediaStreamTrackSourcesRequestClient.h&quot;
</span><span class="cx"> #include &quot;RealtimeMediaSource.h&quot;
</span><ins>+#include &quot;RealtimeMediaSourceSupportedConstraints.h&quot;
</ins><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -65,6 +66,8 @@
</span><span class="cx"> 
</span><span class="cx">     void deviceConnected();
</span><span class="cx">     void deviceDisconnected(AVCaptureDevice*);
</span><ins>+    
+    const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints();
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     static bool isAvailable();
</span><span class="lines">@@ -80,6 +83,7 @@
</span><span class="cx">     void registerForDeviceNotifications();
</span><span class="cx"> 
</span><span class="cx">     RetainPtr&lt;WebCoreAVCaptureDeviceManagerObserver&gt; m_objcObserver;
</span><ins>+    RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
</ins><span class="cx">     Vector&lt;CaptureDeviceInfo&gt; m_devices;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVCaptureDeviceManagermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> #import &quot;MediaConstraints.h&quot;
</span><span class="cx"> #import &quot;RealtimeMediaSource.h&quot;
</span><span class="cx"> #import &quot;RealtimeMediaSourceCenter.h&quot;
</span><del>-#import &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#import &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #import &quot;RealtimeMediaSourceSupportedConstraints.h&quot;
</span><span class="cx"> #import &quot;SoftLinking.h&quot;
</span><span class="cx"> #import &quot;UUID.h&quot;
</span><span class="lines">@@ -177,9 +177,9 @@
</span><span class="cx">             captureDevice.m_groupID = createCanonicalUUIDString();
</span><span class="cx">             captureDevice.m_localizedName = platformDevice.localizedName;
</span><span class="cx">             if ([platformDevice position] == AVCaptureDevicePositionFront)
</span><del>-                captureDevice.m_position = RealtimeMediaSourceStates::User;
</del><ins>+                captureDevice.m_position = RealtimeMediaSourceSettings::User;
</ins><span class="cx">             if ([platformDevice position] == AVCaptureDevicePositionBack)
</span><del>-                captureDevice.m_position = RealtimeMediaSourceStates::Environment;
</del><ins>+                captureDevice.m_position = RealtimeMediaSourceSettings::Environment;
</ins><span class="cx"> 
</span><span class="cx">             bool hasAudio = [platformDevice hasMediaType:AVMediaTypeAudio] || [platformDevice hasMediaType:AVMediaTypeMuxed];
</span><span class="cx">             bool hasVideo = [platformDevice hasMediaType:AVMediaTypeVideo] || [platformDevice hasMediaType:AVMediaTypeMuxed];
</span><span class="lines">@@ -344,6 +344,31 @@
</span><span class="cx">     return CaptureDeviceManager::isSupportedFrameRate(frameRate);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const RealtimeMediaSourceSupportedConstraints&amp; AVCaptureDeviceManager::supportedConstraints()
+{
+    if (m_supportedConstraints.supportsDeviceId())
+        return m_supportedConstraints;
+
+    m_supportedConstraints.setSupportsDeviceId(true);
+
+    Vector&lt;CaptureDeviceInfo&gt;&amp; devices = captureDeviceList();
+
+    for (auto&amp; captureDevice : devices) {
+        if (captureDevice.m_sourceType == RealtimeMediaSource::Audio)
+            m_supportedConstraints.setSupportsVolume(true);
+
+        if (captureDevice.m_sourceType == RealtimeMediaSource::Video) {
+            m_supportedConstraints.setSupportsWidth(true);
+            m_supportedConstraints.setSupportsHeight(true);
+            m_supportedConstraints.setSupportsAspectRatio(true);
+            m_supportedConstraints.setSupportsFrameRate(true);
+            m_supportedConstraints.setSupportsFacingMode(true);
+        }
+    }
+    
+    return m_supportedConstraints;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> @implementation WebCoreAVCaptureDeviceManagerObserver
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVMediaCaptureSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     
</span><span class="cx">     AVCaptureSession *session() const { return m_session.get(); }
</span><span class="cx"> 
</span><del>-    const RealtimeMediaSourceStates&amp; states() override;
</del><ins>+    const RealtimeMediaSourceSettings&amp; settings() override;
</ins><span class="cx"> 
</span><span class="cx">     void startProducingData() override;
</span><span class="cx">     void stopProducingData() override;
</span><span class="lines">@@ -71,14 +71,15 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void setupCaptureSession() = 0;
</span><span class="cx">     virtual void shutdownCaptureSession() = 0;
</span><del>-    virtual void updateStates() = 0;
</del><ins>+    virtual void updateSettings(RealtimeMediaSourceSettings&amp;) = 0;
</ins><span class="cx">     virtual void initializeCapabilities(RealtimeMediaSourceCapabilities&amp;) = 0;
</span><ins>+    virtual void initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp;) = 0;
</ins><span class="cx"> 
</span><span class="cx">     AVCaptureDevice *device() const { return m_device.get(); }
</span><span class="cx"> 
</span><del>-    RealtimeMediaSourceStates* currentStates() { return &amp;m_currentStates; }
</del><span class="cx">     MediaConstraints* constraints() { return m_constraints.get(); }
</span><span class="cx"> 
</span><ins>+    RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints();
</ins><span class="cx">     RefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities() override;
</span><span class="cx"> 
</span><span class="cx">     void setVideoSampleBufferDelegate(AVCaptureVideoDataOutput*);
</span><span class="lines">@@ -90,11 +91,12 @@
</span><span class="cx">     void setupSession();
</span><span class="cx">     void reset() override;
</span><span class="cx"> 
</span><ins>+    RealtimeMediaSourceSettings m_currentSettings;
+    RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
</ins><span class="cx">     WeakPtrFactory&lt;AVMediaCaptureSource&gt; m_weakPtrFactory;
</span><span class="cx">     RetainPtr&lt;WebCoreAVMediaCaptureSourceObserver&gt; m_objcObserver;
</span><span class="cx">     RefPtr&lt;MediaConstraints&gt; m_constraints;
</span><span class="cx">     RefPtr&lt;RealtimeMediaSourceCapabilities&gt; m_capabilities;
</span><del>-    RealtimeMediaSourceStates m_currentStates;
</del><span class="cx">     RetainPtr&lt;AVCaptureSession&gt; m_session;
</span><span class="cx">     RetainPtr&lt;AVCaptureDevice&gt; m_device;
</span><span class="cx">     bool m_isRunning { false};
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVMediaCaptureSourcemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #import &quot;AudioSourceProvider.h&quot;
</span><span class="cx"> #import &quot;Logging.h&quot;
</span><span class="cx"> #import &quot;MediaConstraints.h&quot;
</span><del>-#import &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#import &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #import &quot;SoftLinking.h&quot;
</span><span class="cx"> #import &quot;UUID.h&quot;
</span><span class="cx"> #import &lt;AVFoundation/AVFoundation.h&gt;
</span><span class="lines">@@ -132,7 +132,6 @@
</span><span class="cx"> {
</span><span class="cx">     setName(device.localizedName);
</span><span class="cx">     setPersistentID(device.uniqueID);
</span><del>-    m_currentStates.setSourceType(type == RealtimeMediaSource::Video ? RealtimeMediaSourceStates::Camera : RealtimeMediaSourceStates::Microphone);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> AVMediaCaptureSource::~AVMediaCaptureSource()
</span><span class="lines">@@ -165,13 +164,27 @@
</span><span class="cx">     [m_session.get() stopRunning];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const RealtimeMediaSourceStates&amp; AVMediaCaptureSource::states()
</del><ins>+const RealtimeMediaSourceSettings&amp; AVMediaCaptureSource::settings()
</ins><span class="cx"> {
</span><del>-    m_currentStates.setSourceId(id());
-    updateStates();
-    return m_currentStates;
</del><ins>+    if (m_currentSettings.deviceId().isEmpty())
+        m_currentSettings.setSupportedConstraits(supportedConstraints());
+
+    m_currentSettings.setDeviceId(id());
+    updateSettings(m_currentSettings);
+    return m_currentSettings;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RealtimeMediaSourceSupportedConstraints&amp; AVMediaCaptureSource::supportedConstraints()
+{
+    if (m_supportedConstraints.supportsDeviceId())
+        return m_supportedConstraints;
+
+    m_supportedConstraints.setSupportsDeviceId(true);
+    initializeSupportedConstraints(m_supportedConstraints);
+
+    return m_supportedConstraints;
+}
+
</ins><span class="cx"> RefPtr&lt;RealtimeMediaSourceCapabilities&gt; AVMediaCaptureSource::capabilities()
</span><span class="cx"> {
</span><span class="cx">     if (!m_capabilities) {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVVideoCaptureSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -55,9 +55,10 @@
</span><span class="cx">     void setupCaptureSession() override;
</span><span class="cx">     void shutdownCaptureSession() override;
</span><span class="cx"> 
</span><del>-    void updateStates() override;
</del><ins>+    void updateSettings(RealtimeMediaSourceSettings&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     void initializeCapabilities(RealtimeMediaSourceCapabilities&amp;) override;
</span><ins>+    void initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     bool applyConstraints(MediaConstraints*);
</span><span class="cx">     bool setFrameRateConstraint(float minFrameRate, float maxFrameRate);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVVideoCaptureSourcemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> #import &quot;NotImplemented.h&quot;
</span><span class="cx"> #import &quot;PlatformLayer.h&quot;
</span><span class="cx"> #import &quot;RealtimeMediaSourceCenter.h&quot;
</span><del>-#import &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#import &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #import &lt;AVFoundation/AVFoundation.h&gt;
</span><span class="cx"> #import &lt;objc/runtime.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -111,28 +111,33 @@
</span><span class="cx"> void AVVideoCaptureSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp; capabilities)
</span><span class="cx"> {
</span><span class="cx">     // FIXME: finish this implementation
</span><del>-    capabilities.setSourceId(currentStates()-&gt;sourceId());
-    capabilities.addSourceType(RealtimeMediaSourceStates::Camera);
</del><ins>+    capabilities.setSourceId(id());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AVVideoCaptureSource::updateStates()
</del><ins>+void AVVideoCaptureSource::initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
</ins><span class="cx"> {
</span><del>-    RealtimeMediaSourceStates* states = currentStates();
</del><ins>+    supportedConstraints.setSupportsWidth(true);
+    supportedConstraints.setSupportsHeight(true);
+    supportedConstraints.setSupportsAspectRatio(true);
+    supportedConstraints.setSupportsFrameRate(true);
+    supportedConstraints.setSupportsFacingMode(true);
+}
</ins><span class="cx"> 
</span><del>-    states-&gt;setSourceId(id());
-    states-&gt;setSourceType(RealtimeMediaSourceStates::Camera);
</del><ins>+void AVVideoCaptureSource::updateSettings(RealtimeMediaSourceSettings&amp; settings)
+{
+    settings.setDeviceId(id());
</ins><span class="cx"> 
</span><span class="cx">     if ([device() position] == AVCaptureDevicePositionFront)
</span><del>-        states-&gt;setFacingMode(RealtimeMediaSourceStates::User);
</del><ins>+        settings.setFacingMode(RealtimeMediaSourceSettings::User);
</ins><span class="cx">     else if ([device() position] == AVCaptureDevicePositionBack)
</span><del>-        states-&gt;setFacingMode(RealtimeMediaSourceStates::Environment);
</del><ins>+        settings.setFacingMode(RealtimeMediaSourceSettings::Environment);
</ins><span class="cx">     else
</span><del>-        states-&gt;setFacingMode(RealtimeMediaSourceStates::Unknown);
</del><ins>+        settings.setFacingMode(RealtimeMediaSourceSettings::Unknown);
</ins><span class="cx">     
</span><del>-    states-&gt;setFrameRate(m_frameRate);
-    states-&gt;setWidth(m_width);
-    states-&gt;setHeight(m_height);
-    states-&gt;setAspectRatio(static_cast&lt;float&gt;(m_width) / m_height);
</del><ins>+    settings.setFrameRate(m_frameRate);
+    settings.setWidth(m_width);
+    settings.setHeight(m_height);
+    settings.setAspectRatio(static_cast&lt;float&gt;(m_width) / m_height);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool AVVideoCaptureSource::setFrameRateConstraint(float minFrameRate, float maxFrameRate)
</span><span class="lines">@@ -292,7 +297,7 @@
</span><span class="cx"> 
</span><span class="cx">     updateFramerate(sampleBuffer.get());
</span><span class="cx"> 
</span><del>-    bool statesChanged = false;
</del><ins>+    bool settingsChanged = false;
</ins><span class="cx"> 
</span><span class="cx">     m_buffer = sampleBuffer;
</span><span class="cx">     m_lastImage = nullptr;
</span><span class="lines">@@ -301,11 +306,11 @@
</span><span class="cx">     if (dimensions.width != m_width || dimensions.height != m_height) {
</span><span class="cx">         m_width = dimensions.width;
</span><span class="cx">         m_height = dimensions.height;
</span><del>-        statesChanged = true;
</del><ins>+        settingsChanged = true;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (statesChanged)
-        this-&gt;statesDidChanged();
</del><ins>+    if (settingsChanged)
+        this-&gt;settingsDidChanged();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AVVideoCaptureSource::captureOutputDidOutputSampleBufferFromConnection(AVCaptureOutputType*, CMSampleBufferRef sampleBuffer, AVCaptureConnectionType*)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacMockRealtimeVideoSourceMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> #import &quot;MediaConstraints.h&quot;
</span><span class="cx"> #import &quot;NotImplemented.h&quot;
</span><span class="cx"> #import &quot;PlatformLayer.h&quot;
</span><del>-#import &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#import &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #import &lt;QuartzCore/CALayer.h&gt;
</span><span class="cx"> #import &lt;QuartzCore/CATransaction.h&gt;
</span><span class="cx"> #import &lt;objc/runtime.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamopenwebrtcRealtimeMediaSourceOwrh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -59,13 +59,13 @@
</span><span class="cx">     virtual ~RealtimeMediaSourceOwr() { }
</span><span class="cx"> 
</span><span class="cx">     virtual RefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities() { return m_capabilities; }
</span><del>-    virtual const RealtimeMediaSourceStates&amp; states() { return m_currentStates; }
</del><ins>+    virtual const RealtimeMediaSourceSettings&amp; settings() { return m_currentSettings; }
</ins><span class="cx"> 
</span><span class="cx">     OwrMediaSource* mediaSource() const { return m_mediaSource; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     RefPtr&lt;RealtimeMediaSourceCapabilities&gt; m_capabilities;
</span><del>-    RealtimeMediaSourceStates m_currentStates;
</del><ins>+    RealtimeMediaSourceSettings m_currentSettings;
</ins><span class="cx">     OwrMediaSource* m_mediaSource;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeAudioSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="cx"> #include &quot;MediaConstraints.h&quot;
</span><span class="cx"> #include &quot;NotImplemented.h&quot;
</span><del>-#include &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#include &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #include &quot;UUID.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -50,11 +50,9 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MockRealtimeAudioSource::updateStates()
</del><ins>+void MockRealtimeAudioSource::updateSettings(RealtimeMediaSourceSettings&amp; settings)
</ins><span class="cx"> {
</span><del>-    RealtimeMediaSourceStates* states = currentStates();
-    states-&gt;setSourceType(RealtimeMediaSourceStates::Microphone);
-    states-&gt;setVolume(50);
</del><ins>+    settings.setVolume(50);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockRealtimeAudioSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp; capabilities)
</span><span class="lines">@@ -62,6 +60,11 @@
</span><span class="cx">     capabilities.setVolumeRange(RealtimeMediaSourceCapabilityRange(0UL, 100UL, true));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void MockRealtimeAudioSource::initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
+{
+    supportedConstraints.setSupportsVolume(true);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MEDIA_STREAM)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeAudioSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -51,8 +51,9 @@
</span><span class="cx">     MockRealtimeAudioSource();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void updateStates() override;
</del><ins>+    void updateSettings(RealtimeMediaSourceSettings&amp;) override;
</ins><span class="cx">     void initializeCapabilities(RealtimeMediaSourceCapabilities&amp;) override;
</span><ins>+    void initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp;) override;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeMediaSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> #include &quot;MediaConstraints.h&quot;
</span><span class="cx"> #include &quot;MediaStreamTrackSourcesRequestClient.h&quot;
</span><span class="cx"> #include &quot;NotImplemented.h&quot;
</span><del>-#include &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#include &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #include &lt;math.h&gt;
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="lines">@@ -92,22 +92,39 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;RealtimeMediaSourceCapabilities&gt; MockRealtimeMediaSource::capabilities()
</span><span class="cx"> {
</span><del>-    if (!m_capabilities) {
-        m_capabilities = RealtimeMediaSourceCapabilities::create();
-        m_capabilities-&gt;setSourceId(id());
-        initializeCapabilities(*m_capabilities.get());
-    }
</del><ins>+    if (m_capabilities)
+        return m_capabilities;
+
+    m_capabilities = RealtimeMediaSourceCapabilities::create();
+    m_capabilities-&gt;setSourceId(id());
+    initializeCapabilities(*m_capabilities.get());
+
</ins><span class="cx">     return m_capabilities;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const RealtimeMediaSourceStates&amp; MockRealtimeMediaSource::states()
</del><ins>+const RealtimeMediaSourceSettings&amp; MockRealtimeMediaSource::settings()
</ins><span class="cx"> {
</span><del>-    m_currentStates.setSourceId(id());
-    updateStates();
</del><ins>+    if (m_currentSettings.deviceId().isEmpty()) {
+        m_currentSettings.setSupportedConstraits(supportedConstraints());
+        m_currentSettings.setDeviceId(id());
+    }
</ins><span class="cx"> 
</span><del>-    return m_currentStates;
</del><ins>+    updateSettings(m_currentSettings);
+    return m_currentSettings;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RealtimeMediaSourceSupportedConstraints&amp; MockRealtimeMediaSource::supportedConstraints()
+{
+    if (m_supportedConstraints.supportsDeviceId())
+        return m_supportedConstraints;
+
+    m_supportedConstraints.setSupportsDeviceId(true);
+    initializeSupportedConstraints(m_supportedConstraints);
+
+    return m_supportedConstraints;
+}
+
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MEDIA_STREAM)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeMediaSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -57,23 +57,25 @@
</span><span class="cx"> protected:
</span><span class="cx">     MockRealtimeMediaSource(const String&amp; id, Type, const String&amp; name);
</span><span class="cx"> 
</span><del>-    virtual void updateStates() = 0;
</del><ins>+    virtual void updateSettings(RealtimeMediaSourceSettings&amp;) = 0;
</ins><span class="cx">     virtual void initializeCapabilities(RealtimeMediaSourceCapabilities&amp;) = 0;
</span><ins>+    virtual void initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp;) = 0;
</ins><span class="cx"> 
</span><span class="cx">     void startProducingData() override { m_isProducingData = true; }
</span><span class="cx">     void stopProducingData() override { m_isProducingData = false; }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities() override;
</span><del>-    const RealtimeMediaSourceStates&amp; states() override;
</del><ins>+    const RealtimeMediaSourceSettings&amp; settings() override;
</ins><span class="cx"> 
</span><del>-    RealtimeMediaSourceStates* currentStates() { return &amp;m_currentStates; }
-    MediaConstraints* constraints() { return m_constraints.get(); }
</del><ins>+    MediaConstraints&amp; constraints() { return *m_constraints.get(); }
+    RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints();
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx"> 
</span><span class="cx">     bool isProducingData() const override { return m_isProducingData; }
</span><span class="cx"> 
</span><del>-    RealtimeMediaSourceStates m_currentStates;
</del><ins>+    RealtimeMediaSourceSettings m_currentSettings;
+    RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
</ins><span class="cx">     RefPtr&lt;RealtimeMediaSourceCapabilities&gt; m_capabilities;
</span><span class="cx">     RefPtr&lt;MediaConstraints&gt; m_constraints;
</span><span class="cx">     bool m_isProducingData { false };
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeVideoSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> #include &quot;MediaConstraints.h&quot;
</span><span class="cx"> #include &quot;NotImplemented.h&quot;
</span><span class="cx"> #include &quot;PlatformLayer.h&quot;
</span><del>-#include &quot;RealtimeMediaSourceStates.h&quot;
</del><ins>+#include &quot;RealtimeMediaSourceSettings.h&quot;
</ins><span class="cx"> #include &quot;UUID.h&quot;
</span><span class="cx"> #include &lt;math.h&gt;
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="lines">@@ -90,39 +90,32 @@
</span><span class="cx">     return m_elapsedTime + (monotonicallyIncreasingTime() - m_startTime);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MockRealtimeVideoSource::updateStates()
</del><ins>+void MockRealtimeVideoSource::updateSettings(RealtimeMediaSourceSettings&amp; settings)
</ins><span class="cx"> {
</span><del>-    RealtimeMediaSourceStates* states = currentStates();
-
-    states-&gt;setSourceType(RealtimeMediaSourceStates::Camera);
-    states-&gt;setFacingMode(RealtimeMediaSourceStates::User);
-    states-&gt;setFrameRate(m_frameRate);
-    states-&gt;setWidth(m_size.width());
-    states-&gt;setHeight(m_size.height());
-    states-&gt;setAspectRatio(static_cast&lt;float&gt;(m_size.width()) / m_size.height());
</del><ins>+    settings.setFacingMode(RealtimeMediaSourceSettings::User);
+    settings.setFrameRate(m_frameRate);
+    settings.setWidth(m_size.width());
+    settings.setHeight(m_size.height());
+    settings.setAspectRatio(static_cast&lt;float&gt;(m_size.width()) / m_size.height());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockRealtimeVideoSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp; capabilities)
</span><span class="cx"> {
</span><del>-    capabilities.addSourceType(RealtimeMediaSourceStates::Camera);
-    capabilities.addFacingMode(RealtimeMediaSourceStates::User);
-    capabilities.addFacingMode(RealtimeMediaSourceStates::Environment);
</del><ins>+    capabilities.addFacingMode(RealtimeMediaSourceSettings::User);
+    capabilities.addFacingMode(RealtimeMediaSourceSettings::Environment);
</ins><span class="cx">     capabilities.setWidthRange(RealtimeMediaSourceCapabilityRange(320UL, 1920UL, true));
</span><span class="cx">     capabilities.setHeightRange(RealtimeMediaSourceCapabilityRange(240UL, 1080UL, true));
</span><span class="cx">     capabilities.setFrameRateRange(RealtimeMediaSourceCapabilityRange(15.0f, 60.0f, true));
</span><span class="cx">     capabilities.setAspectRatioRange(RealtimeMediaSourceCapabilityRange(4 / 3.0f, 16 / 9.0f, true));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MockRealtimeVideoSource::setFacingMode(RealtimeMediaSourceStates::VideoFacingMode mode)
</del><ins>+void MockRealtimeVideoSource::initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
</ins><span class="cx"> {
</span><del>-    RealtimeMediaSourceStates* states = currentStates();
-
-    if (states-&gt;facingMode() == mode)
-        return;
-
-    states-&gt;setFacingMode(mode);
-
-    statesDidChanged();
</del><ins>+    supportedConstraints.setSupportsWidth(true);
+    supportedConstraints.setSupportsHeight(true);
+    supportedConstraints.setSupportsAspectRatio(true);
+    supportedConstraints.setSupportsFrameRate(true);
+    supportedConstraints.setSupportsFacingMode(true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockRealtimeVideoSource::setFrameRate(float rate)
</span><span class="lines">@@ -134,7 +127,7 @@
</span><span class="cx">     if (m_timer.isActive())
</span><span class="cx">         m_timer.startRepeating(std::chrono::milliseconds(lround(1000 / m_frameRate)));
</span><span class="cx"> 
</span><del>-    statesDidChanged();
</del><ins>+    settingsDidChanged();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockRealtimeVideoSource::setSize(const IntSize&amp; size)
</span><span class="lines">@@ -169,7 +162,7 @@
</span><span class="cx">     m_imageBuffer = nullptr;
</span><span class="cx">     updatePlatformLayer();
</span><span class="cx"> 
</span><del>-    statesDidChanged();
</del><ins>+    settingsDidChanged();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockRealtimeVideoSource::drawAnimation(GraphicsContext&amp; context)
</span><span class="lines">@@ -284,20 +277,20 @@
</span><span class="cx">     context.drawText(m_statsFont, TextRun((StringView(string))), statsLocation, 0, -1);
</span><span class="cx"> 
</span><span class="cx">     const char* camera;
</span><del>-    switch (states().facingMode()) {
-    case RealtimeMediaSourceStates::User:
</del><ins>+    switch (settings().facingMode()) {
+    case RealtimeMediaSourceSettings::User:
</ins><span class="cx">         camera = &quot;User facing&quot;;
</span><span class="cx">         break;
</span><del>-    case RealtimeMediaSourceStates::Environment:
</del><ins>+    case RealtimeMediaSourceSettings::Environment:
</ins><span class="cx">         camera = &quot;Environment facing&quot;;
</span><span class="cx">         break;
</span><del>-    case RealtimeMediaSourceStates::Left:
</del><ins>+    case RealtimeMediaSourceSettings::Left:
</ins><span class="cx">         camera = &quot;Left facing&quot;;
</span><span class="cx">         break;
</span><del>-    case RealtimeMediaSourceStates::Right:
</del><ins>+    case RealtimeMediaSourceSettings::Right:
</ins><span class="cx">         camera = &quot;Right facing&quot;;
</span><span class="cx">         break;
</span><del>-    case RealtimeMediaSourceStates::Unknown:
</del><ins>+    case RealtimeMediaSourceSettings::Unknown:
</ins><span class="cx">         camera = &quot;Unknown&quot;;
</span><span class="cx">         break;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeVideoSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h (192953 => 192954)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h        2015-12-02 20:13:50 UTC (rev 192953)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h        2015-12-02 20:20:37 UTC (rev 192954)
</span><span class="lines">@@ -53,7 +53,6 @@
</span><span class="cx">     void setSize(const IntSize&amp;);
</span><span class="cx">     const IntSize&amp; size() const { return m_size; }
</span><span class="cx"> 
</span><del>-    void setFacingMode(RealtimeMediaSourceStates::VideoFacingMode);
</del><span class="cx">     void setFrameRate(float);
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="lines">@@ -63,8 +62,9 @@
</span><span class="cx">     ImageBuffer* imageBuffer() const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void updateStates() override;
</del><ins>+    void updateSettings(RealtimeMediaSourceSettings&amp;) override;
</ins><span class="cx">     void initializeCapabilities(RealtimeMediaSourceCapabilities&amp;) override;
</span><ins>+    void initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     void startProducingData() override;
</span><span class="cx">     void stopProducingData() override;
</span></span></pre>
</div>
</div>

</body>
</html>