<!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>[193389] 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/193389">193389</a></dd>
<dt>Author</dt> <dd>eric.carlson@apple.com</dd>
<dt>Date</dt> <dd>2015-12-03 16:34:55 -0800 (Thu, 03 Dec 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[MediaStream] Update MediaStreamTrack.getCapabilities
https://bugs.webkit.org/show_bug.cgi?id=151728

Reviewed by Jer Noble.

Source/WebCore:

Test: fast/mediastream/MediaStreamTrack-getCapabilities.html

* CMakeLists.txt: Remove files deleted from the repository.

* DerivedSources.make: Ditto.

* Modules/mediastream/AllAudioCapabilities.h: Removed.
* Modules/mediastream/AllAudioCapabilities.idl: Removed.
* Modules/mediastream/AllVideoCapabilities.h: Removed.
* Modules/mediastream/AllVideoCapabilities.idl: Removed.
* Modules/mediastream/CapabilityRange.cpp: Removed.
* Modules/mediastream/CapabilityRange.h: Removed.
* Modules/mediastream/CapabilityRange.idl: Removed.

* Modules/mediastream/MediaSourceSettings.h:
(WebCore::MediaSourceSettings::supportsVolume): Volume is a double.
(WebCore::MediaSourceSettings::volume): Double.

* Modules/mediastream/MediaStreamCapabilities.cpp: Removed.
* Modules/mediastream/MediaStreamCapabilities.h: Removed.
* Modules/mediastream/MediaStreamCapabilities.idl: Removed.

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::getCapabilities): MediaStreamCapabilities is gone, return a RealtimeMediaSourceCapabilities.
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl:

* WebCore.xcodeproj/project.pbxproj: Remove files deleted from the repository.
* bindings/js/JSMediaStreamTrackCustom.cpp:
(WebCore::capabilityValue):
(WebCore::JSMediaStreamTrack::getCapabilities): Create and return a dictionary of capatilities.

* platform/mediastream/RealtimeMediaSourceCapabilities.h:
(WebCore::CapabilityValueOrRange::type):
(WebCore::CapabilityValueOrRange::CapabilityValueOrRange):
(WebCore::CapabilityValueOrRange::rangeMin):
(WebCore::CapabilityValueOrRange::rangeMax):
(WebCore::CapabilityValueOrRange::value):
(WebCore::RealtimeMediaSourceCapabilities::create):
(WebCore::RealtimeMediaSourceCapabilities::~RealtimeMediaSourceCapabilities):
(WebCore::RealtimeMediaSourceCapabilities::supportsWidth):
(WebCore::RealtimeMediaSourceCapabilities::width):
(WebCore::RealtimeMediaSourceCapabilities::setWidth):
(WebCore::RealtimeMediaSourceCapabilities::supportsHeight):
(WebCore::RealtimeMediaSourceCapabilities::height):
(WebCore::RealtimeMediaSourceCapabilities::setHeight):
(WebCore::RealtimeMediaSourceCapabilities::supportsFrameRate):
(WebCore::RealtimeMediaSourceCapabilities::frameRate):
(WebCore::RealtimeMediaSourceCapabilities::setFrameRate):
(WebCore::RealtimeMediaSourceCapabilities::supportsFacingMode):
(WebCore::RealtimeMediaSourceCapabilities::facingMode):
(WebCore::RealtimeMediaSourceCapabilities::addFacingMode):
(WebCore::RealtimeMediaSourceCapabilities::supportsAspectRatio):
(WebCore::RealtimeMediaSourceCapabilities::aspectRatio):
(WebCore::RealtimeMediaSourceCapabilities::setAspectRatio):
(WebCore::RealtimeMediaSourceCapabilities::supportsVolume):
(WebCore::RealtimeMediaSourceCapabilities::volume):
(WebCore::RealtimeMediaSourceCapabilities::setVolume):
(WebCore::RealtimeMediaSourceCapabilities::supportsSampleRate):
(WebCore::RealtimeMediaSourceCapabilities::sampleRate):
(WebCore::RealtimeMediaSourceCapabilities::setSampleRate):
(WebCore::RealtimeMediaSourceCapabilities::supportsSampleSize):
(WebCore::RealtimeMediaSourceCapabilities::sampleSize):
(WebCore::RealtimeMediaSourceCapabilities::setSampleSize):
(WebCore::RealtimeMediaSourceCapabilities::supportsEchoCancellation):
(WebCore::RealtimeMediaSourceCapabilities::echoCancellation):
(WebCore::RealtimeMediaSourceCapabilities::setEchoCancellation):
(WebCore::RealtimeMediaSourceCapabilities::supportsDeviceId):
(WebCore::RealtimeMediaSourceCapabilities::deviceId):
(WebCore::RealtimeMediaSourceCapabilities::setDeviceId):
(WebCore::RealtimeMediaSourceCapabilities::supportsGroupId):
(WebCore::RealtimeMediaSourceCapabilities::groupId):
(WebCore::RealtimeMediaSourceCapabilities::setGroupId):
(WebCore::RealtimeMediaSourceCapabilities::RealtimeMediaSourceCapabilities):
(WebCore::RealtimeMediaSourceCapabilityRange::RealtimeMediaSourceCapabilityRange): Deleted.
(WebCore::RealtimeMediaSourceCapabilityRange::min): Deleted.
(WebCore::RealtimeMediaSourceCapabilityRange::max): Deleted.
(WebCore::RealtimeMediaSourceCapabilityRange::type): Deleted.
(WebCore::RealtimeMediaSourceCapabilityRange::supported): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::sourceId): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setSourceId): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::facingModes): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setWidthRange): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setHeightRange): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setFrameRateRange): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setAspectRatioRange): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setVolumeRange): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::hasVideoSource): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setHasVideoSource): Deleted.

* platform/mediastream/RealtimeMediaSourceSettings.h:
(WebCore::RealtimeMediaSourceSettings::volume): Volume is a double.
(WebCore::RealtimeMediaSourceSettings::setVolume): Ditt.

* platform/mediastream/mac/AVAudioCaptureSource.mm:
(WebCore::AVAudioCaptureSource::initializeCapabilities): Initialize volume capability.

* platform/mediastream/mac/AVMediaCaptureSource.mm:
(WebCore::AVMediaCaptureSource::capabilities): RealtimeMediaSourceCapabilities constructor takes
  supportedConstraints. sourceId -&gt; deviceId.

* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::initializeCapabilities): DeviceId is set by the base class.

* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm: Drive-by cleanup, remove unused code.

* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::initializeCapabilities): Updated.
(WebCore::MockRealtimeAudioSource::initializeSupportedConstraints): Ditto.

* platform/mock/MockRealtimeMediaSource.cpp:
(WebCore::MockRealtimeMediaSource::capabilities): sourceId -&gt; deviceId.

* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::initializeCapabilities): Updated.
(WebCore::MockRealtimeVideoSource::initializeSupportedConstraints): Ditto.

LayoutTests:

* fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt: Added.
* fast/mediastream/MediaStreamTrack-getCapabilities.html: Added.
* fast/mediastream/MediaStreamTrack-getSettings-expected.txt:
* fast/mediastream/MediaStreamTrack-getSettings.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<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="#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="#trunkSourceWebCoreModulesmediastreamMediaSourceSettingsh">trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackcpp">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackh">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceCapabilitiesh">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceSettingsh">trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVAudioCaptureSourcemm">trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVMediaCaptureSourcemm">trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacAVVideoCaptureSourcemm">trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreammacWebAudioSourceProviderAVFObjCmm">trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeAudioSourcecpp">trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeMediaSourcecpp">trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmockMockRealtimeVideoSourcecpp">trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamTrackgetCapabilitiesexpectedtxt">trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamTrackgetCapabilitieshtml">trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities.html</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreModulesmediastreamAllAudioCapabilitiesh">trunk/Source/WebCore/Modules/mediastream/AllAudioCapabilities.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamAllAudioCapabilitiesidl">trunk/Source/WebCore/Modules/mediastream/AllAudioCapabilities.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamAllVideoCapabilitiesh">trunk/Source/WebCore/Modules/mediastream/AllVideoCapabilities.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamAllVideoCapabilitiesidl">trunk/Source/WebCore/Modules/mediastream/AllVideoCapabilities.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamCapabilityRangecpp">trunk/Source/WebCore/Modules/mediastream/CapabilityRange.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamCapabilityRangeh">trunk/Source/WebCore/Modules/mediastream/CapabilityRange.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamCapabilityRangeidl">trunk/Source/WebCore/Modules/mediastream/CapabilityRange.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamCapabilitiescpp">trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamCapabilitiesh">trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamCapabilitiesidl">trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/LayoutTests/ChangeLog        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2015-12-03  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [MediaStream] Update MediaStreamTrack.getCapabilities
+        https://bugs.webkit.org/show_bug.cgi?id=151728
+
+        Reviewed by Jer Noble.
+
+        * fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt: Added.
+        * fast/mediastream/MediaStreamTrack-getCapabilities.html: Added.
+        * fast/mediastream/MediaStreamTrack-getSettings-expected.txt:
+        * fast/mediastream/MediaStreamTrack-getSettings.html:
+
</ins><span class="cx"> 2015-12-03  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Removing deleted test storage/indexeddb/objectstore-keycursor.html from TestExpectations file
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamTrackgetCapabilitiesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt (0 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+Tests MediaStreamTrack.getCapabilities.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+video track capabilities:
+  capabilities.width = { min: 320, max: 1920 }
+  capabilities.height = { min: 240, max: 1080 }
+  capabilities.aspectRatio = { min: 1.333, max: 1.778 }
+  capabilities.frameRate = { min: 15, max: 60 }
+  capabilities.facingMode = [ user, environment ]
+  capabilities.deviceId = &lt;UUID&gt;
+
+audio track capabilities:
+  capabilities.volume = { min: 0, max: 1 }
+  capabilities.echoCancellation = [ true, true ]
+  capabilities.deviceId = &lt;UUID&gt;
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamTrackgetCapabilitieshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities.html (0 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities.html                                (rev 0)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities.html        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -0,0 +1,85 @@
</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;string&quot;)
+                    return `&quot;${value}`;
+
+                if (typeof value === &quot;number&quot; &amp;&amp; value % 1 != 0)
+                    return value.toFixed(precision);
+                return value;
+            }
+
+            function capabilityRange(name, object)
+            {
+                if (Array.isArray(object)) {
+                    if (!object.length)
+                        return &quot;[ ]&quot;;
+
+                    var value = &quot;[&quot;;
+                    for (i = 0; i &lt; object.length; i++)
+                        value += ` ${object[i]},`;
+
+                    return value.slice(0, -1) + &quot; ]&quot;;
+                }
+
+                var value = &quot;{&quot;;
+                for (var property in object) {
+                        value += ` ${property}: ${limitPrecision(object[property], 3)},`;
+                }
+                
+                if (value.length)
+                    value = value.slice(0, -1);
+
+
+                return value + &quot; }&quot;;
+            }
+
+            function listTrackProperties(track)
+            {
+                debug(`${track.kind} track capabilities:`);
+                capabilities = track.getCapabilities();
+                for (var property in capabilities) {
+                    if (capabilities.hasOwnProperty(property) || capabilities.__proto__.hasOwnProperty(property))
+                        if (property == &quot;deviceId&quot;)
+                            value = &quot;&amp;lt;UUID&gt;&quot;;
+                        else if (typeof capabilities[property] === &quot;object&quot;)
+                            value = capabilityRange(property, capabilities[property]);
+                        else
+                            value = limitPrecision(capabilities[property], 2);
+                        debug(`  capabilities.${property} = ${value}`);
+                }
+                debug(&quot;&quot;);
+            }
+
+            function gotStream(stream)
+            {
+                mediaStream = stream;
+                listTrackProperties(mediaStream.getVideoTracks()[0]);
+                listTrackProperties(mediaStream.getAudioTracks()[0]);
+                finishJSTest();
+            }
+
+            function start()
+            {
+                description(&quot;Tests MediaStreamTrack.getCapabilities.&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="trunkLayoutTestsfastmediastreamMediaStreamTrackgetSettingsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -3,18 +3,30 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-video track:
</del><ins>+video track settings:
</ins><span class="cx">   settings.width = 640
</span><span class="cx">   settings.height = 480
</span><del>-  settings.aspectRatio = 1.33
</del><ins>+  settings.aspectRatio = 1.333
</ins><span class="cx">   settings.frameRate = 30
</span><span class="cx">   settings.facingMode = user
</span><span class="cx">   settings.deviceId = &lt;UUID&gt;
</span><span class="cx"> 
</span><del>-audio track:
</del><ins>+audio track settings:
</ins><span class="cx">   settings.volume = 50
</span><ins>+  settings.echoCancellation = false
</ins><span class="cx">   settings.deviceId = &lt;UUID&gt;
</span><span class="cx"> 
</span><ins>+According to the spec: &quot;[every setting] MUST be a member of the set defined for that property by getCapabilities()&quot;
+
+PASS &quot;width&quot; in track.getCapabilities() is true
+PASS &quot;height&quot; in track.getCapabilities() is true
+PASS &quot;aspectRatio&quot; in track.getCapabilities() is true
+PASS &quot;frameRate&quot; in track.getCapabilities() is true
+PASS &quot;facingMode&quot; in track.getCapabilities() is true
+PASS &quot;deviceId&quot; in track.getCapabilities() is true
+PASS &quot;volume&quot; in track.getCapabilities() is true
+PASS &quot;echoCancellation&quot; in track.getCapabilities() is true
+PASS &quot;deviceId&quot; in track.getCapabilities() is true
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamTrackgetSettingshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings.html (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings.html        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings.html        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -5,6 +5,7 @@
</span><span class="cx">         &lt;script src=&quot;./resources/getUserMedia-helper.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;script&gt;
</span><span class="cx">             var mediaStream;
</span><ins>+            var track;
</ins><span class="cx"> 
</span><span class="cx">             function limitPrecision(value, precision)
</span><span class="cx">             {
</span><span class="lines">@@ -13,26 +14,46 @@
</span><span class="cx">                 return value;
</span><span class="cx">             }
</span><span class="cx">             
</span><del>-            function listTrackProperties(track)
</del><ins>+            function listTrackSettings(track)
</ins><span class="cx">             {
</span><del>-                debug(`${track.kind} track:`);
</del><ins>+                debug(`${track.kind} track settings:`);
</ins><span class="cx">                 settings = track.getSettings();
</span><span class="cx">                 for (var property in settings) {
</span><del>-                    if (settings.hasOwnProperty(property) || settings.__proto__.hasOwnProperty(property))
</del><ins>+                    if (settings.hasOwnProperty(property) || settings.__proto__.hasOwnProperty(property)) {
</ins><span class="cx">                         if (property == &quot;deviceId&quot;)
</span><span class="cx">                             value = &quot;&amp;lt;UUID&gt;&quot;;
</span><span class="cx">                         else
</span><del>-                            value = limitPrecision(settings[property], 2);
</del><ins>+                            value = limitPrecision(settings[property], 3);
</ins><span class="cx">                         debug(`  settings.${property} = ${value}`);
</span><ins>+                    }
</ins><span class="cx">                 }
</span><ins>+
</ins><span class="cx">                 debug(&quot;&quot;);
</span><span class="cx">             }
</span><span class="cx"> 
</span><ins>+            function checkTrackSettings(t)
+            {
+                track = t;
+
+                capabilities = track.getCapabilities();
+                settings = track.getSettings();
+                for (var property in settings) {
+                    if (settings.hasOwnProperty(property) || settings.__proto__.hasOwnProperty(property)) {
+                        shouldBeTrue(`&quot;${property}&quot; in track.getCapabilities()`);
+                    }
+                }
+            }
+
</ins><span class="cx">             function gotStream(stream)
</span><span class="cx">             {
</span><span class="cx">                 mediaStream = stream;
</span><del>-                listTrackProperties(mediaStream.getVideoTracks()[0]);
-                listTrackProperties(mediaStream.getAudioTracks()[0]);
</del><ins>+
+                listTrackSettings(mediaStream.getVideoTracks()[0]);
+                listTrackSettings(mediaStream.getAudioTracks()[0]);
+
+                debug('According to the spec: &quot;[every setting] MUST be a member of the set defined for that property by getCapabilities()&quot;&lt;br&gt;');
+                checkTrackSettings(mediaStream.getVideoTracks()[0]);
+                checkTrackSettings(mediaStream.getAudioTracks()[0]);
</ins><span class="cx">                 finishJSTest();
</span><span class="cx">             }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/CMakeLists.txt        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -221,15 +221,11 @@
</span><span class="cx">     Modules/mediasource/SourceBufferList.idl
</span><span class="cx">     Modules/mediasource/VideoPlaybackQuality.idl
</span><span class="cx"> 
</span><del>-    Modules/mediastream/AllAudioCapabilities.idl
-    Modules/mediastream/AllVideoCapabilities.idl
-    Modules/mediastream/CapabilityRange.idl
</del><span class="cx">     Modules/mediastream/DOMURLMediaStream.idl
</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><span class="cx">     Modules/mediastream/MediaStream.idl
</span><del>-    Modules/mediastream/MediaStreamCapabilities.idl
</del><span class="cx">     Modules/mediastream/MediaStreamEvent.idl
</span><span class="cx">     Modules/mediastream/MediaStreamTrack.idl
</span><span class="cx">     Modules/mediastream/MediaStreamTrackEvent.idl
</span><span class="lines">@@ -943,7 +939,6 @@
</span><span class="cx">     Modules/mediasource/SourceBufferList.cpp
</span><span class="cx">     Modules/mediasource/VideoPlaybackQuality.cpp
</span><span class="cx"> 
</span><del>-    Modules/mediastream/CapabilityRange.cpp
</del><span class="cx">     Modules/mediastream/DOMURLMediaStream.cpp
</span><span class="cx">     Modules/mediastream/HTMLMediaElementMediaStream.cpp
</span><span class="cx">     Modules/mediastream/MediaConstraintsImpl.cpp
</span><span class="lines">@@ -953,7 +948,6 @@
</span><span class="cx">     Modules/mediastream/MediaEndpointPeerConnection.cpp
</span><span class="cx">     Modules/mediastream/MediaSourceSettings.cpp
</span><span class="cx">     Modules/mediastream/MediaStream.cpp
</span><del>-    Modules/mediastream/MediaStreamCapabilities.cpp
</del><span class="cx">     Modules/mediastream/MediaStreamEvent.cpp
</span><span class="cx">     Modules/mediastream/MediaStreamRegistry.cpp
</span><span class="cx">     Modules/mediastream/MediaStreamTrack.cpp
</span><span class="lines">@@ -1206,7 +1200,6 @@
</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/JSMediaStreamCapabilitiesCustom.cpp
</del><span class="cx">     bindings/js/JSMediaStreamTrackCustom.cpp
</span><span class="cx">     bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp
</span><span class="cx">     bindings/js/JSMessageChannelCustom.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/ChangeLog        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,3 +1,127 @@
</span><ins>+2015-12-03  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [MediaStream] Update MediaStreamTrack.getCapabilities
+        https://bugs.webkit.org/show_bug.cgi?id=151728
+
+        Reviewed by Jer Noble.
+
+        Test: fast/mediastream/MediaStreamTrack-getCapabilities.html
+
+        * CMakeLists.txt: Remove files deleted from the repository.
+
+        * DerivedSources.make: Ditto.
+
+        * Modules/mediastream/AllAudioCapabilities.h: Removed.
+        * Modules/mediastream/AllAudioCapabilities.idl: Removed.
+        * Modules/mediastream/AllVideoCapabilities.h: Removed.
+        * Modules/mediastream/AllVideoCapabilities.idl: Removed.
+        * Modules/mediastream/CapabilityRange.cpp: Removed.
+        * Modules/mediastream/CapabilityRange.h: Removed.
+        * Modules/mediastream/CapabilityRange.idl: Removed.
+
+        * Modules/mediastream/MediaSourceSettings.h:
+        (WebCore::MediaSourceSettings::supportsVolume): Volume is a double.
+        (WebCore::MediaSourceSettings::volume): Double.
+
+        * Modules/mediastream/MediaStreamCapabilities.cpp: Removed.
+        * Modules/mediastream/MediaStreamCapabilities.h: Removed.
+        * Modules/mediastream/MediaStreamCapabilities.idl: Removed.
+
+        * Modules/mediastream/MediaStreamTrack.cpp:
+        (WebCore::MediaStreamTrack::getCapabilities): MediaStreamCapabilities is gone, return a RealtimeMediaSourceCapabilities.
+        * Modules/mediastream/MediaStreamTrack.h:
+        * Modules/mediastream/MediaStreamTrack.idl:
+
+        * WebCore.xcodeproj/project.pbxproj: Remove files deleted from the repository.
+        * bindings/js/JSMediaStreamTrackCustom.cpp:
+        (WebCore::capabilityValue):
+        (WebCore::JSMediaStreamTrack::getCapabilities): Create and return a dictionary of capatilities.
+
+        * platform/mediastream/RealtimeMediaSourceCapabilities.h:
+        (WebCore::CapabilityValueOrRange::type):
+        (WebCore::CapabilityValueOrRange::CapabilityValueOrRange):
+        (WebCore::CapabilityValueOrRange::rangeMin):
+        (WebCore::CapabilityValueOrRange::rangeMax):
+        (WebCore::CapabilityValueOrRange::value):
+        (WebCore::RealtimeMediaSourceCapabilities::create):
+        (WebCore::RealtimeMediaSourceCapabilities::~RealtimeMediaSourceCapabilities):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsWidth):
+        (WebCore::RealtimeMediaSourceCapabilities::width):
+        (WebCore::RealtimeMediaSourceCapabilities::setWidth):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsHeight):
+        (WebCore::RealtimeMediaSourceCapabilities::height):
+        (WebCore::RealtimeMediaSourceCapabilities::setHeight):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsFrameRate):
+        (WebCore::RealtimeMediaSourceCapabilities::frameRate):
+        (WebCore::RealtimeMediaSourceCapabilities::setFrameRate):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsFacingMode):
+        (WebCore::RealtimeMediaSourceCapabilities::facingMode):
+        (WebCore::RealtimeMediaSourceCapabilities::addFacingMode):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsAspectRatio):
+        (WebCore::RealtimeMediaSourceCapabilities::aspectRatio):
+        (WebCore::RealtimeMediaSourceCapabilities::setAspectRatio):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsVolume):
+        (WebCore::RealtimeMediaSourceCapabilities::volume):
+        (WebCore::RealtimeMediaSourceCapabilities::setVolume):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsSampleRate):
+        (WebCore::RealtimeMediaSourceCapabilities::sampleRate):
+        (WebCore::RealtimeMediaSourceCapabilities::setSampleRate):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsSampleSize):
+        (WebCore::RealtimeMediaSourceCapabilities::sampleSize):
+        (WebCore::RealtimeMediaSourceCapabilities::setSampleSize):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsEchoCancellation):
+        (WebCore::RealtimeMediaSourceCapabilities::echoCancellation):
+        (WebCore::RealtimeMediaSourceCapabilities::setEchoCancellation):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsDeviceId):
+        (WebCore::RealtimeMediaSourceCapabilities::deviceId):
+        (WebCore::RealtimeMediaSourceCapabilities::setDeviceId):
+        (WebCore::RealtimeMediaSourceCapabilities::supportsGroupId):
+        (WebCore::RealtimeMediaSourceCapabilities::groupId):
+        (WebCore::RealtimeMediaSourceCapabilities::setGroupId):
+        (WebCore::RealtimeMediaSourceCapabilities::RealtimeMediaSourceCapabilities):
+        (WebCore::RealtimeMediaSourceCapabilityRange::RealtimeMediaSourceCapabilityRange): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilityRange::min): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilityRange::max): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilityRange::type): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilityRange::supported): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::sourceId): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::setSourceId): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::facingModes): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::setWidthRange): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::setHeightRange): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::setFrameRateRange): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::setAspectRatioRange): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::setVolumeRange): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::hasVideoSource): Deleted.
+        (WebCore::RealtimeMediaSourceCapabilities::setHasVideoSource): Deleted.
+
+        * platform/mediastream/RealtimeMediaSourceSettings.h:
+        (WebCore::RealtimeMediaSourceSettings::volume): Volume is a double.
+        (WebCore::RealtimeMediaSourceSettings::setVolume): Ditt.
+
+        * platform/mediastream/mac/AVAudioCaptureSource.mm:
+        (WebCore::AVAudioCaptureSource::initializeCapabilities): Initialize volume capability.
+
+        * platform/mediastream/mac/AVMediaCaptureSource.mm:
+        (WebCore::AVMediaCaptureSource::capabilities): RealtimeMediaSourceCapabilities constructor takes
+          supportedConstraints. sourceId -&gt; deviceId.
+
+        * platform/mediastream/mac/AVVideoCaptureSource.mm:
+        (WebCore::AVVideoCaptureSource::initializeCapabilities): DeviceId is set by the base class.
+
+        * platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm: Drive-by cleanup, remove unused code.
+
+        * platform/mock/MockRealtimeAudioSource.cpp:
+        (WebCore::MockRealtimeAudioSource::initializeCapabilities): Updated.
+        (WebCore::MockRealtimeAudioSource::initializeSupportedConstraints): Ditto.
+
+        * platform/mock/MockRealtimeMediaSource.cpp:
+        (WebCore::MockRealtimeMediaSource::capabilities): sourceId -&gt; deviceId.
+
+        * platform/mock/MockRealtimeVideoSource.cpp:
+        (WebCore::MockRealtimeVideoSource::initializeCapabilities): Updated.
+        (WebCore::MockRealtimeVideoSource::initializeSupportedConstraints): Ditto.
+
</ins><span class="cx"> 2015-12-03  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Have layer memory use consult the backing store format
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/DerivedSources.make        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -117,15 +117,11 @@
</span><span class="cx">         $(WebCore)/Modules/mediasource/TextTrackMediaSource.idl \
</span><span class="cx">         $(WebCore)/Modules/mediasource/VideoTrackMediaSource.idl \
</span><span class="cx">         $(WebCore)/Modules/mediasource/VideoPlaybackQuality.idl \
</span><del>-        $(WebCore)/Modules/mediastream/AllVideoCapabilities.idl \
-        $(WebCore)/Modules/mediastream/AllAudioCapabilities.idl \
-    $(WebCore)/Modules/mediastream/CapabilityRange.idl \
</del><span class="cx">         $(WebCore)/Modules/mediastream/DOMURLMediaStream.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/HTMLMediaElementMediaStream.idl \
</span><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><del>-        $(WebCore)/Modules/mediastream/MediaStreamCapabilities.idl \
</del><span class="cx">     $(WebCore)/Modules/mediastream/MediaStreamEvent.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/MediaStreamTrack.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/MediaStreamTrackEvent.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamAllAudioCapabilitiesh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/AllAudioCapabilities.h (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/AllAudioCapabilities.h        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/AllAudioCapabilities.h        2015-12-04 00:34:55 UTC (rev 193389)
</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.
- */
-
-#ifndef AllAudioCapabilities_h
-#define AllAudioCapabilities_h
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;MediaStreamCapabilities.h&quot;
-#include &quot;RealtimeMediaSourceCapabilities.h&quot;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-class CapabilityRange;
-class RealtimeMediaSourceCapabilities;
-
-class AllAudioCapabilities : public MediaStreamCapabilities {
-public:
-    static Ref&lt;AllAudioCapabilities&gt; create(PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities)
-    {
-        return adoptRef(*new AllAudioCapabilities(capabilities));
-    }
-    virtual ~AllAudioCapabilities() { }
-
-private:
-    explicit AllAudioCapabilities(PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities)
-        : MediaStreamCapabilities(capabilities)
-    {
-    }
-};
-
-} // namespace WebCore
-
-#endif // AllAudioCapabilities_h
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamAllAudioCapabilitiesidl"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/AllAudioCapabilities.idl (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/AllAudioCapabilities.idl        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/AllAudioCapabilities.idl        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,33 +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. 
- */
-
-[
-    NoInterfaceObject,
-    Conditional=MEDIA_STREAM,
-    JSGenerateToJSObject,
-] interface AllAudioCapabilities : MediaStreamCapabilities {
-    readonly attribute DOMString[] sourceId;
-    readonly attribute CapabilityRange volume;
-};
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamAllVideoCapabilitiesh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/AllVideoCapabilities.h (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/AllVideoCapabilities.h        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/AllVideoCapabilities.h        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,57 +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 AllVideoCapabilities_h
-#define AllVideoCapabilities_h
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;MediaStreamCapabilities.h&quot;
-
-namespace WebCore {
-
-class CapabilityRange;
-class RealtimeMediaSourceCapabilities;
-
-class AllVideoCapabilities : public MediaStreamCapabilities {
-public:
-    static Ref&lt;AllVideoCapabilities&gt; create(PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities)
-    {
-        return adoptRef(*new AllVideoCapabilities(capabilities));
-    }
-    virtual ~AllVideoCapabilities() { }
-
-private:
-    explicit AllVideoCapabilities(PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities)
-        : MediaStreamCapabilities(capabilities)
-    {
-    }
-};
-
-} // namespace WebCore
-
-#endif // AllVideoCapabilities_h
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamAllVideoCapabilitiesidl"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/AllVideoCapabilities.idl (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/AllVideoCapabilities.idl        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/AllVideoCapabilities.idl        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,38 +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. 
- */
-
-[
-    NoInterfaceObject,
-    Conditional=MEDIA_STREAM,
-    JSGenerateToJSObject,
-] interface AllVideoCapabilities : MediaStreamCapabilities {
-    readonly attribute DOMString[] sourceType;
-    readonly attribute DOMString[] sourceId;
-    readonly attribute CapabilityRange width;
-    readonly attribute CapabilityRange height;
-    readonly attribute CapabilityRange frameRate;
-    readonly attribute CapabilityRange aspectRatio;
-    readonly attribute DOMString[]  facingMode;
-};
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamCapabilityRangecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/CapabilityRange.cpp (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/CapabilityRange.cpp        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/CapabilityRange.cpp        2015-12-04 00:34:55 UTC (rev 193389)
</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;CapabilityRange.h&quot;
-
-#include &quot;JSDOMBinding.h&quot;
-#include &quot;MediaSourceSettings.h&quot;
-#include &lt;bindings/ScriptValue.h&gt;
-#include &lt;interpreter/CallFrame.h&gt;
-#include &lt;runtime/JSCJSValue.h&gt;
-
-using namespace JSC;
-
-namespace WebCore {
-
-Ref&lt;CapabilityRange&gt; CapabilityRange::create(const RealtimeMediaSourceCapabilityRange&amp; rangeInfo)
-{
-    return adoptRef(*new CapabilityRange(rangeInfo));
-}
-
-CapabilityRange::CapabilityRange(const RealtimeMediaSourceCapabilityRange&amp; rangeInfo)
-    : m_rangeInfo(rangeInfo)
-{
-}
-
-static Deprecated::ScriptValue scriptValue(ExecState&amp; state, const RealtimeMediaSourceCapabilityRange::ValueUnion&amp; value, RealtimeMediaSourceCapabilityRange::Type type)
-{
-    // NOTE: the spec says:
-    //      ... an implementation should make a reasonable attempt to translate and scale the hardware's setting
-    //      onto the mapping provided by this specification. If this is not possible due to the user agent's
-    //      inability to retrieve a given capability from a source, then for CapabilityRange-typed capabilities,
-    //      the min and max fields will not be present on the returned dictionary, and the supported field will be false.
-    // We don't do this currently because I don't know of an instance where it isn't possible to retrieve a source
-    // capability, but when we have to deal with this we will need to mark CapabilityRange.min and CapabilityRange.max as
-    // &quot;Custom&quot; and return jsUndefined() from the custom getter to support it.
-    
-    switch (type) {
-    case RealtimeMediaSourceCapabilityRange::Float:
-        return Deprecated::ScriptValue(state.vm(), JSValue(value.asFloat));
-        break;
-    case RealtimeMediaSourceCapabilityRange::ULong:
-        return Deprecated::ScriptValue(state.vm(), JSValue(value.asULong));
-        break;
-    case RealtimeMediaSourceCapabilityRange::Undefined:
-        return Deprecated::ScriptValue(state.vm(), jsUndefined());
-        break;
-    }
-
-    ASSERT_NOT_REACHED();
-    return Deprecated::ScriptValue(state.vm(), jsUndefined());
-}
-
-Deprecated::ScriptValue CapabilityRange::min(ExecState&amp; state) const
-{
-    return scriptValue(state, m_rangeInfo.min(), m_rangeInfo.type());
-}
-
-Deprecated::ScriptValue CapabilityRange::max(ExecState&amp; state) const
-{
-    return scriptValue(state, m_rangeInfo.max(), m_rangeInfo.type());
-}
-
-} // namespace WebCore
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamCapabilityRangeh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/CapabilityRange.h (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/CapabilityRange.h        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/CapabilityRange.h        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,60 +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 CapabilityRange_h
-#define CapabilityRange_h
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;RealtimeMediaSourceCapabilities.h&quot;
-#include &quot;ScriptWrappable.h&quot;
-#include &lt;bindings/ScriptValue.h&gt;
-#include &lt;interpreter/CallFrame.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-
-namespace WebCore {
-
-class CapabilityRange : public RefCounted&lt;CapabilityRange&gt;, public ScriptWrappable {
-public:
-    virtual ~CapabilityRange() { }
-
-    static Ref&lt;CapabilityRange&gt; create(const RealtimeMediaSourceCapabilityRange&amp;);
-
-    Deprecated::ScriptValue min(JSC::ExecState&amp;) const;
-    Deprecated::ScriptValue max(JSC::ExecState&amp;) const;
-    bool supported() const { return m_rangeInfo.supported(); }
-
-private:
-    CapabilityRange(const RealtimeMediaSourceCapabilityRange&amp;);
-    
-    RealtimeMediaSourceCapabilityRange m_rangeInfo;
-};
-
-} // namespace WebCore
-
-#endif // CapabilityRange_h
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamCapabilityRangeidl"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/CapabilityRange.idl (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/CapabilityRange.idl        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/CapabilityRange.idl        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,33 +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. 
- */
-
-[
-    NoInterfaceObject,
-    Conditional=MEDIA_STREAM,
-] interface CapabilityRange {
-    [CallWith=ScriptState] readonly attribute any max;
-    [CallWith=ScriptState] readonly attribute any min;
-    readonly attribute boolean supported;
-};
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaSourceSettingsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">     const AtomicString&amp; facingMode() const;
</span><span class="cx"> 
</span><span class="cx">     bool supportsVolume() const { return m_sourceSettings.supportsVolume(); }
</span><del>-    unsigned long volume() const { return m_sourceSettings.volume(); }
</del><ins>+    double volume() const { return m_sourceSettings.volume(); }
</ins><span class="cx"> 
</span><span class="cx">     bool supportsSampleRate() const { return m_sourceSettings.supportsSampleRate(); }
</span><span class="cx">     unsigned long sampleRate() const { return m_sourceSettings.sampleRate(); }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamCapabilitiescpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,128 +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;MediaStreamCapabilities.h&quot;
-
-#include &quot;AllAudioCapabilities.h&quot;
-#include &quot;AllVideoCapabilities.h&quot;
-#include &quot;CapabilityRange.h&quot;
-#include &quot;MediaSourceSettings.h&quot;
-#include &quot;RealtimeMediaSourceCapabilities.h&quot;
-
-namespace WebCore {
-
-RefPtr&lt;MediaStreamCapabilities&gt; MediaStreamCapabilities::create(PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities)
-{
-    if (capabilities-&gt;hasVideoSource())
-        return AllVideoCapabilities::create(capabilities);
-    
-    return AllAudioCapabilities::create(capabilities);
-}
-
-MediaStreamCapabilities::MediaStreamCapabilities(PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt; capabilities)
-    : m_SourceCapabilities(capabilities)
-{
-}
-
-Vector&lt;String&gt; MediaStreamCapabilities::sourceType() const
-{
-    // This will be fixed by https://bugs.webkit.org/show_bug.cgi?id=151728.
-    return Vector&lt;String&gt;();
-}
-
-Vector&lt;String&gt; MediaStreamCapabilities::sourceId() const
-{
-    size_t count = m_SourceCapabilities-&gt;sourceId().size();
-    if (!count)
-        return Vector&lt;String&gt;();
-
-    Vector&lt;String&gt; capabilities;
-    capabilities.reserveCapacity(count);
-
-    for (auto&amp; id : m_SourceCapabilities-&gt;sourceId())
-        capabilities.append(id);
-    
-    return capabilities;
-}
-
-Vector&lt;String&gt; MediaStreamCapabilities::facingMode() const
-{
-    ASSERT(m_SourceCapabilities-&gt;hasVideoSource());
-    
-    size_t count = m_SourceCapabilities-&gt;facingModes().size();
-    if (!count)
-        return Vector&lt;String&gt;();
-    
-    Vector&lt;String&gt; capabilities;
-    capabilities.reserveCapacity(count);
-    
-    for (auto&amp; mode : m_SourceCapabilities-&gt;facingModes())
-        capabilities.append(RealtimeMediaSourceSettings::facingMode(mode));
-    
-    return capabilities;
-}
-
-RefPtr&lt;CapabilityRange&gt; MediaStreamCapabilities::width() const
-{
-    ASSERT(m_SourceCapabilities-&gt;hasVideoSource());
-    
-    return CapabilityRange::create(m_SourceCapabilities-&gt;width());
-}
-
-RefPtr&lt;CapabilityRange&gt; MediaStreamCapabilities::height() const
-{
-    ASSERT(m_SourceCapabilities-&gt;hasVideoSource());
-    
-    return CapabilityRange::create(m_SourceCapabilities-&gt;height());
-}
-
-RefPtr&lt;CapabilityRange&gt; MediaStreamCapabilities::frameRate() const
-{
-    ASSERT(m_SourceCapabilities-&gt;hasVideoSource());
-    
-    return CapabilityRange::create(m_SourceCapabilities-&gt;frameRate());
-}
-
-RefPtr&lt;CapabilityRange&gt; MediaStreamCapabilities::aspectRatio() const
-{
-    ASSERT(m_SourceCapabilities-&gt;hasVideoSource());
-    
-    return CapabilityRange::create(m_SourceCapabilities-&gt;aspectRatio());
-}
-
-RefPtr&lt;CapabilityRange&gt; MediaStreamCapabilities::volume() const
-{
-    ASSERT(!m_SourceCapabilities-&gt;hasVideoSource());
-    
-    return CapabilityRange::create(m_SourceCapabilities-&gt;volume());
-}
-
-} // namespace WebCore
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamCapabilitiesh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.h (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.h        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.h        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,69 +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 MediaStreamCapabilities_h
-#define MediaStreamCapabilities_h
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;MediaStreamCapabilities.h&quot;
-#include &quot;RealtimeMediaSourceCapabilities.h&quot;
-#include &quot;ScriptWrappable.h&quot;
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/Vector.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-namespace WebCore {
-
-class CapabilityRange;
-class RealtimeMediaSourceCapabilities;
-
-class MediaStreamCapabilities : public RefCounted&lt;MediaStreamCapabilities&gt;, public ScriptWrappable {
-public:
-    static RefPtr&lt;MediaStreamCapabilities&gt; create(PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt;);
-    virtual ~MediaStreamCapabilities() { }
-
-    virtual Vector&lt;String&gt; sourceType() const;
-    virtual Vector&lt;String&gt; sourceId() const;
-    virtual RefPtr&lt;CapabilityRange&gt; width() const;
-    virtual RefPtr&lt;CapabilityRange&gt; height() const;
-    virtual RefPtr&lt;CapabilityRange&gt; frameRate() const;
-    virtual RefPtr&lt;CapabilityRange&gt; aspectRatio() const;
-    virtual Vector&lt;String&gt; facingMode() const;
-    virtual RefPtr&lt;CapabilityRange&gt; volume() const;
-    
-    bool hasVideoSource() { return m_SourceCapabilities-&gt;hasVideoSource(); }
-
-protected:
-    explicit MediaStreamCapabilities(PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt;);
-
-    RefPtr&lt;RealtimeMediaSourceCapabilities&gt; m_SourceCapabilities;
-};
-
-} // namespace WebCore
-
-#endif // MediaStreamCapabilities_h
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamCapabilitiesidl"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.idl (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.idl        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamCapabilities.idl        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -1,33 +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. 
- */
-
-[
-    Conditional=MEDIA_STREAM,
-    NoInterfaceObject,
-    SkipVTableValidation,
-    CustomToJSObject,
-] interface MediaStreamCapabilities {
-};
-
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -30,8 +30,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx"> 
</span><del>-#include &quot;AllAudioCapabilities.h&quot;
-#include &quot;AllVideoCapabilities.h&quot;
</del><span class="cx"> #include &quot;Dictionary.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="lines">@@ -167,9 +165,9 @@
</span><span class="cx">     return MediaSourceSettings::create(m_private-&gt;settings());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;MediaStreamCapabilities&gt; MediaStreamTrack::getCapabilities() const
</del><ins>+RefPtr&lt;RealtimeMediaSourceCapabilities&gt; MediaStreamTrack::getCapabilities() const
</ins><span class="cx"> {
</span><del>-    return MediaStreamCapabilities::create(m_private-&gt;capabilities());
</del><ins>+    return 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></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -46,7 +46,6 @@
</span><span class="cx"> class Dictionary;
</span><span class="cx"> class MediaConstraintsImpl;
</span><span class="cx"> class MediaSourceSettings;
</span><del>-class MediaStreamCapabilities;
</del><span class="cx"> class MediaTrackConstraints;
</span><span class="cx"> 
</span><span class="cx"> class MediaStreamTrack final : public RefCounted&lt;MediaStreamTrack&gt;, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivate::Observer {
</span><span class="lines">@@ -80,7 +79,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaTrackConstraints&gt; getConstraints() const;
</span><span class="cx">     RefPtr&lt;MediaSourceSettings&gt; getSettings() const;
</span><del>-    RefPtr&lt;MediaStreamCapabilities&gt; getCapabilities() const;
</del><ins>+    RefPtr&lt;RealtimeMediaSourceCapabilities&gt; getCapabilities() const;
</ins><span class="cx">     void applyConstraints(const Dictionary&amp;);
</span><span class="cx">     void applyConstraints(const MediaConstraints&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> 
</span><span class="cx">     MediaTrackConstraints getConstraints();
</span><span class="cx">     [Custom] MediaSourceSettings getSettings();
</span><del>-    MediaStreamCapabilities getCapabilities(); // returns either AllVideoCapabilities or AllAudioCapabilities
</del><ins>+    [Custom] MediaTrackCapabilities getCapabilities();
</ins><span class="cx">     void applyConstraints(Dictionary constraints);
</span><span class="cx"> 
</span><span class="cx">     attribute EventHandler onoverconstrained;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -79,17 +79,6 @@
</span><span class="cx">                 070363E5181A1CDC00C074A5 /* AVMediaCaptureSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 070363DD181A1CDC00C074A5 /* AVMediaCaptureSource.mm */; };
</span><span class="cx">                 070363E6181A1CDC00C074A5 /* AVVideoCaptureSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 070363DE181A1CDC00C074A5 /* AVVideoCaptureSource.h */; };
</span><span class="cx">                 070363E7181A1CDC00C074A5 /* AVVideoCaptureSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 070363DF181A1CDC00C074A5 /* AVVideoCaptureSource.mm */; };
</span><del>-                070584FF17F9F05E005F2BCB /* CapabilityRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070584FE17F9F05E005F2BCB /* CapabilityRange.cpp */; };
-                0705850217FA10D0005F2BCB /* JSAllVideoCapabilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0705850017FA10D0005F2BCB /* JSAllVideoCapabilities.cpp */; };
-                0705850317FA10D0005F2BCB /* JSAllVideoCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0705850117FA10D0005F2BCB /* JSAllVideoCapabilities.h */; };
-                0705850817FA4689005F2BCB /* AllAudioCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0705850517FA4689005F2BCB /* AllAudioCapabilities.h */; };
-                0705850B17FA4827005F2BCB /* MediaStreamCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0705850A17FA4827005F2BCB /* MediaStreamCapabilities.h */; };
-                0705851217FA7107005F2BCB /* JSMediaStreamCapabilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0705851017FA7107005F2BCB /* JSMediaStreamCapabilities.cpp */; };
-                0705851317FA7107005F2BCB /* JSMediaStreamCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0705851117FA7107005F2BCB /* JSMediaStreamCapabilities.h */; };
-                0705851517FB0EEA005F2BCB /* MediaStreamCapabilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0705851417FB0E2C005F2BCB /* MediaStreamCapabilities.cpp */; };
-                0705851717FB40E9005F2BCB /* JSMediaStreamCapabilitiesCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0705851617FB40E9005F2BCB /* JSMediaStreamCapabilitiesCustom.cpp */; };
-                0705851A17FB44B4005F2BCB /* JSAllAudioCapabilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0705851817FB44B4005F2BCB /* JSAllAudioCapabilities.cpp */; };
-                0705851B17FB44B4005F2BCB /* JSAllAudioCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0705851917FB44B4005F2BCB /* JSAllAudioCapabilities.h */; };
</del><span class="cx">                 0705852117FDC140005F2BCB /* MediaTrackConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0705851D17FDC140005F2BCB /* MediaTrackConstraint.h */; };
</span><span class="cx">                 0705852317FDC140005F2BCB /* MediaTrackConstraints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0705851F17FDC140005F2BCB /* MediaTrackConstraints.cpp */; };
</span><span class="cx">                 0705852417FDC140005F2BCB /* MediaTrackConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 0705852017FDC140005F2BCB /* MediaTrackConstraints.h */; };
</span><span class="lines">@@ -166,9 +155,6 @@
</span><span class="cx">                 073794FE19F5864E00E5A045 /* RTCNotifiersMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 073794F819F5864E00E5A045 /* RTCNotifiersMock.h */; };
</span><span class="cx">                 07394EC81BAB2CCD00BE99CD /* MediaDevicesRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07394EC71BAB2CCD00BE99CD /* MediaDevicesRequest.cpp */; };
</span><span class="cx">                 07394ECA1BAB2CD700BE99CD /* MediaDevicesRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 07394EC91BAB2CD700BE99CD /* MediaDevicesRequest.h */; };
</span><del>-                073AB4B317F8BACA006E0D6F /* AllVideoCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 073AB4B017F8BACA006E0D6F /* AllVideoCapabilities.h */; };
-                073AB4B717F92ECF006E0D6F /* JSCapabilityRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 073AB4B517F92ECF006E0D6F /* JSCapabilityRange.cpp */; };
-                073AB4B817F92ECF006E0D6F /* JSCapabilityRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 073AB4B617F92ECF006E0D6F /* JSCapabilityRange.h */; };
</del><span class="cx">                 073BE34017D17E01002BD431 /* JSNavigatorUserMedia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 073BE33E17D17E01002BD431 /* JSNavigatorUserMedia.cpp */; };
</span><span class="cx">                 073BE34117D17E01002BD431 /* JSNavigatorUserMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = 073BE33F17D17E01002BD431 /* JSNavigatorUserMedia.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 073BE34817D17E7A002BD431 /* JSNavigatorUserMediaError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 073BE34217D17E7A002BD431 /* JSNavigatorUserMediaError.cpp */; };
</span><span class="lines">@@ -322,7 +308,6 @@
</span><span class="cx">                 07C59B6817F784BA000FBCBB /* MediaSourceSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6517F784BA000FBCBB /* MediaSourceSettings.cpp */; };
</span><span class="cx">                 07C59B6917F784BA000FBCBB /* MediaSourceSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C59B6617F784BA000FBCBB /* MediaSourceSettings.h */; };
</span><span class="cx">                 07C59B6E17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */; };
</span><del>-                07C59B7617F7D0DB000FBCBB /* CapabilityRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C59B7417F7D09D000FBCBB /* CapabilityRange.h */; };
</del><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="cx">                 07D07B141834158800ABDD3C /* JSRTCSessionDescriptionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07D07B131834158800ABDD3C /* JSRTCSessionDescriptionCustom.cpp */; };
</span><span class="lines">@@ -7335,19 +7320,6 @@
</span><span class="cx">                 070363DD181A1CDC00C074A5 /* AVMediaCaptureSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AVMediaCaptureSource.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 070363DE181A1CDC00C074A5 /* AVVideoCaptureSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVVideoCaptureSource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 070363DF181A1CDC00C074A5 /* AVVideoCaptureSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AVVideoCaptureSource.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                070584FE17F9F05E005F2BCB /* CapabilityRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CapabilityRange.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705850017FA10D0005F2BCB /* JSAllVideoCapabilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAllVideoCapabilities.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705850117FA10D0005F2BCB /* JSAllVideoCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAllVideoCapabilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705850517FA4689005F2BCB /* AllAudioCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AllAudioCapabilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705850617FA4689005F2BCB /* AllAudioCapabilities.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AllAudioCapabilities.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705850A17FA4827005F2BCB /* MediaStreamCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamCapabilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705850E17FA6FB1005F2BCB /* MediaStreamCapabilities.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaStreamCapabilities.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705851017FA7107005F2BCB /* JSMediaStreamCapabilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaStreamCapabilities.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705851117FA7107005F2BCB /* JSMediaStreamCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaStreamCapabilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705851417FB0E2C005F2BCB /* MediaStreamCapabilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamCapabilities.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705851617FB40E9005F2BCB /* JSMediaStreamCapabilitiesCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaStreamCapabilitiesCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705851817FB44B4005F2BCB /* JSAllAudioCapabilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAllAudioCapabilities.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0705851917FB44B4005F2BCB /* JSAllAudioCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAllAudioCapabilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 0705851C17FDB23C005F2BCB /* MediaTrackConstraints.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = MediaTrackConstraints.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0705851D17FDC140005F2BCB /* MediaTrackConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaTrackConstraint.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0705851E17FDC140005F2BCB /* MediaTrackConstraint.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaTrackConstraint.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7505,9 +7477,6 @@
</span><span class="cx">                 073794F819F5864E00E5A045 /* RTCNotifiersMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCNotifiersMock.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07394EC71BAB2CCD00BE99CD /* MediaDevicesRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaDevicesRequest.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07394EC91BAB2CD700BE99CD /* MediaDevicesRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaDevicesRequest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                073AB4B017F8BACA006E0D6F /* AllVideoCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AllVideoCapabilities.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                073AB4B517F92ECF006E0D6F /* JSCapabilityRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCapabilityRange.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                073AB4B617F92ECF006E0D6F /* JSCapabilityRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCapabilityRange.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 073BE33E17D17E01002BD431 /* JSNavigatorUserMedia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNavigatorUserMedia.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 073BE33F17D17E01002BD431 /* JSNavigatorUserMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNavigatorUserMedia.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 073BE34217D17E7A002BD431 /* JSNavigatorUserMediaError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNavigatorUserMediaError.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7616,9 +7585,6 @@
</span><span class="cx">                 07C59B6517F784BA000FBCBB /* MediaSourceSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSourceSettings.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C59B6617F784BA000FBCBB /* MediaSourceSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSourceSettings.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaStreamTrackCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                07C59B7317F7D09D000FBCBB /* AllVideoCapabilities.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AllVideoCapabilities.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B7417F7D09D000FBCBB /* CapabilityRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CapabilityRange.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B7517F7D09D000FBCBB /* CapabilityRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CapabilityRange.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 07CA120D182D67D800D12197 /* JSRTCPeerConnectionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRTCPeerConnectionCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandTextTrackPrivateClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07D07B131834158800ABDD3C /* JSRTCSessionDescriptionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRTCSessionDescriptionCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -15139,13 +15105,6 @@
</span><span class="cx">                 07221B4617CEC32700848E51 /* mediastream */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                0705850517FA4689005F2BCB /* AllAudioCapabilities.h */,
-                                0705850617FA4689005F2BCB /* AllAudioCapabilities.idl */,
-                                073AB4B017F8BACA006E0D6F /* AllVideoCapabilities.h */,
-                                07C59B7317F7D09D000FBCBB /* AllVideoCapabilities.idl */,
-                                070584FE17F9F05E005F2BCB /* CapabilityRange.cpp */,
-                                07C59B7417F7D09D000FBCBB /* CapabilityRange.h */,
-                                07C59B7517F7D09D000FBCBB /* CapabilityRange.idl */,
</del><span class="cx">                                 2E3C8C611BFBA8DC00309566 /* CaptureDeviceManager.h */,
</span><span class="cx">                                 2E3C8C631BFBB75D00309566 /* CaptureDeviceManager.cpp */,
</span><span class="cx">                                 2E3C8C661BFBF8E100309566 /* CaptureDeviceInfo.h */,
</span><span class="lines">@@ -15173,9 +15132,6 @@
</span><span class="cx">                                 07221B4C17CEC32700848E51 /* MediaStream.cpp */,
</span><span class="cx">                                 07221B4D17CEC32700848E51 /* MediaStream.h */,
</span><span class="cx">                                 07221B4E17CEC32700848E51 /* MediaStream.idl */,
</span><del>-                                0705851417FB0E2C005F2BCB /* MediaStreamCapabilities.cpp */,
-                                0705850A17FA4827005F2BCB /* MediaStreamCapabilities.h */,
-                                0705850E17FA6FB1005F2BCB /* MediaStreamCapabilities.idl */,
</del><span class="cx">                                 07221B4F17CEC32700848E51 /* MediaStreamEvent.cpp */,
</span><span class="cx">                                 07221B5017CEC32700848E51 /* MediaStreamEvent.h */,
</span><span class="cx">                                 07221B5117CEC32700848E51 /* MediaStreamEvent.idl */,
</span><span class="lines">@@ -15394,8 +15350,6 @@
</span><span class="cx">                                 07277E4117D018CC0015534D /* JSMediaStream.h */,
</span><span class="cx">                                 07277E4217D018CC0015534D /* JSMediaStreamAudioDestinationNode.cpp */,
</span><span class="cx">                                 07277E4317D018CC0015534D /* JSMediaStreamAudioDestinationNode.h */,
</span><del>-                                0705851017FA7107005F2BCB /* JSMediaStreamCapabilities.cpp */,
-                                0705851117FA7107005F2BCB /* JSMediaStreamCapabilities.h */,
</del><span class="cx">                                 07277E4417D018CC0015534D /* JSMediaStreamEvent.cpp */,
</span><span class="cx">                                 07277E4517D018CC0015534D /* JSMediaStreamEvent.h */,
</span><span class="cx">                                 07277E4617D018CC0015534D /* JSMediaStreamTrack.cpp */,
</span><span class="lines">@@ -22169,7 +22123,6 @@
</span><span class="cx">                                 AD726FE716D9F204003A4E6D /* JSMediaListCustom.h */,
</span><span class="cx">                                 077B640E1B8F5375003E9AD5 /* JSMediaSessionCustom.cpp */,
</span><span class="cx">                                 07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */,
</span><del>-                                0705851617FB40E9005F2BCB /* JSMediaStreamCapabilitiesCustom.cpp */,
</del><span class="cx">                                 E1A5F99A0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp */,
</span><span class="cx">                                 07C1C0E61BFB90A700BD2256 /* JSMediaTrackSupportedConstraintsCustom.cpp */,
</span><span class="cx">                                 410B7E711045FAB000D8224F /* JSMessageEventCustom.cpp */,
</span><span class="lines">@@ -22753,12 +22706,6 @@
</span><span class="cx">                 CD61FE7B1794CA02004101EB /* MediaSource */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                0705851817FB44B4005F2BCB /* JSAllAudioCapabilities.cpp */,
-                                0705851917FB44B4005F2BCB /* JSAllAudioCapabilities.h */,
-                                0705850017FA10D0005F2BCB /* JSAllVideoCapabilities.cpp */,
-                                0705850117FA10D0005F2BCB /* JSAllVideoCapabilities.h */,
-                                073AB4B517F92ECF006E0D6F /* JSCapabilityRange.cpp */,
-                                073AB4B617F92ECF006E0D6F /* JSCapabilityRange.h */,
</del><span class="cx">                                 CD9DE17217AAC74C00EA386D /* JSMediaSource.cpp */,
</span><span class="cx">                                 CD9DE17317AAC74C00EA386D /* JSMediaSource.h */,
</span><span class="cx">                                 CD9DE17617AAC75B00EA386D /* JSSourceBuffer.cpp */,
</span><span class="lines">@@ -24616,9 +24563,7 @@
</span><span class="cx">                                 E1C4DE690EA75C1E0023CCD6 /* ActiveDOMObject.h in Headers */,
</span><span class="cx">                                 BCF7E491137CD7C7001DDAE7 /* AdjustViewSizeOrNot.h in Headers */,
</span><span class="cx">                                 84D0C4061115F1EA0018AA34 /* AffineTransform.h in Headers */,
</span><del>-                                0705850817FA4689005F2BCB /* AllAudioCapabilities.h in Headers */,
</del><span class="cx">                                 99CC0B4D18BE9849006CEBCC /* AllReplayInputs.h in Headers */,
</span><del>-                                073AB4B317F8BACA006E0D6F /* AllVideoCapabilities.h in Headers */,
</del><span class="cx">                                 CEDA12D7152CA1CB00D9E08D /* AlternativeTextClient.h in Headers */,
</span><span class="cx">                                 CE08C3D2152B599A0021B8C2 /* AlternativeTextController.h in Headers */,
</span><span class="cx">                                 CE7B2DB31586ABAD0098B3FA /* AlternativeTextUIController.h in Headers */,
</span><span class="lines">@@ -24806,7 +24751,6 @@
</span><span class="cx">                                 49C7B9DD1042D32F0009D447 /* CanvasRenderingContext.h in Headers */,
</span><span class="cx">                                 49484FCB102CF23C00187DD3 /* CanvasRenderingContext2D.h in Headers */,
</span><span class="cx">                                 49484FCE102CF23C00187DD3 /* CanvasStyle.h in Headers */,
</span><del>-                                07C59B7617F7D0DB000FBCBB /* CapabilityRange.h in Headers */,
</del><span class="cx">                                 079D0868162F20E800DB8658 /* CaptionUserPreferences.h in Headers */,
</span><span class="cx">                                 079D086B162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h in Headers */,
</span><span class="cx">                                 99CC0B4F18BE9849006CEBCC /* CapturingInputCursor.h in Headers */,
</span><span class="lines">@@ -26041,8 +25985,6 @@
</span><span class="cx">                                 44EFF6431A6FF92700D45EEC /* IOTypesSPI.h in Headers */,
</span><span class="cx">                                 07AC47021952102100EE9723 /* ISOVTTCue.h in Headers */,
</span><span class="cx">                                 418F88050FF957AF0080F045 /* JSAbstractWorker.h in Headers */,
</span><del>-                                0705851B17FB44B4005F2BCB /* JSAllAudioCapabilities.h in Headers */,
-                                0705850317FA10D0005F2BCB /* JSAllVideoCapabilities.h in Headers */,
</del><span class="cx">                                 FDA15ECA12B03F50003A583A /* JSAnalyserNode.h in Headers */,
</span><span class="cx">                                 3198480C1A1E6CE800A13318 /* JSAnimationEvent.h in Headers */,
</span><span class="cx">                                 65DF31DB09D1C123000BE325 /* JSAttr.h in Headers */,
</span><span class="lines">@@ -26070,7 +26012,6 @@
</span><span class="cx">                                 65DF323C09D1DE65001BE325 /* JSCanvasProxy.h in Headers */,
</span><span class="cx">                                 49EED1431051969400099FAB /* JSCanvasRenderingContext.h in Headers */,
</span><span class="cx">                                 49EED1451051969400099FAB /* JSCanvasRenderingContext2D.h in Headers */,
</span><del>-                                073AB4B817F92ECF006E0D6F /* JSCapabilityRange.h in Headers */,
</del><span class="cx">                                 93F9B7A10BA6032600854064 /* JSCDATASection.h in Headers */,
</span><span class="cx">                                 FDA15EA212B03EE1003A583A /* JSChannelMergerNode.h in Headers */,
</span><span class="cx">                                 FDA15EA412B03EE1003A583A /* JSChannelSplitterNode.h in Headers */,
</span><span class="lines">@@ -26293,7 +26234,6 @@
</span><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><del>-                                0705851317FA7107005F2BCB /* JSMediaStreamCapabilities.h in Headers */,
</del><span class="cx">                                 07277E5117D018CC0015534D /* JSMediaStreamEvent.h in Headers */,
</span><span class="cx">                                 07277E5317D018CC0015534D /* JSMediaStreamTrack.h in Headers */,
</span><span class="cx">                                 07277E5517D018CC0015534D /* JSMediaStreamTrackEvent.h in Headers */,
</span><span class="lines">@@ -26785,7 +26725,6 @@
</span><span class="cx">                                 078E094C17D1709600420AA1 /* MediaStreamAudioDestinationNode.h in Headers */,
</span><span class="cx">                                 0783228518013ED800999E0C /* MediaStreamAudioSource.h in Headers */,
</span><span class="cx">                                 FD671A78159BB07000197559 /* MediaStreamAudioSourceNode.h in Headers */,
</span><del>-                                0705850B17FA4827005F2BCB /* MediaStreamCapabilities.h in Headers */,
</del><span class="cx">                                 070F549817F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h in Headers */,
</span><span class="cx">                                 078E093917D16B2C00420AA1 /* MediaStreamCreationClient.h in Headers */,
</span><span class="cx">                                 078E091617D14D1C00420AA1 /* MediaStreamEvent.h in Headers */,
</span><span class="lines">@@ -28707,7 +28646,6 @@
</span><span class="cx">                                 49C7B9DC1042D32F0009D447 /* CanvasRenderingContext.cpp in Sources */,
</span><span class="cx">                                 49484FCA102CF23C00187DD3 /* CanvasRenderingContext2D.cpp in Sources */,
</span><span class="cx">                                 49484FCD102CF23C00187DD3 /* CanvasStyle.cpp in Sources */,
</span><del>-                                070584FF17F9F05E005F2BCB /* CapabilityRange.cpp in Sources */,
</del><span class="cx">                                 072CA86116CB4DC3008AE131 /* CaptionUserPreferences.cpp in Sources */,
</span><span class="cx">                                 079D086C162F21F900DB8658 /* CaptionUserPreferencesMediaAF.cpp in Sources */,
</span><span class="cx">                                 99CC0B4E18BE9849006CEBCC /* CapturingInputCursor.cpp in Sources */,
</span><span class="lines">@@ -29650,8 +29588,6 @@
</span><span class="cx">                                 AD9FF6E11908391D003B61E0 /* IOSurfacePoolCocoa.mm in Sources */,
</span><span class="cx">                                 07AC47011952102100EE9723 /* ISOVTTCue.cpp in Sources */,
</span><span class="cx">                                 418F88040FF957AE0080F045 /* JSAbstractWorker.cpp in Sources */,
</span><del>-                                0705851A17FB44B4005F2BCB /* JSAllAudioCapabilities.cpp in Sources */,
-                                0705850217FA10D0005F2BCB /* JSAllVideoCapabilities.cpp in Sources */,
</del><span class="cx">                                 FDA15EC912B03F50003A583A /* JSAnalyserNode.cpp in Sources */,
</span><span class="cx">                                 31A795C61888BADC00382F90 /* JSANGLEInstancedArrays.cpp in Sources */,
</span><span class="cx">                                 3198480B1A1E6CE400A13318 /* JSAnimationEvent.cpp in Sources */,
</span><span class="lines">@@ -29688,7 +29624,6 @@
</span><span class="cx">                                 49EED1441051969400099FAB /* JSCanvasRenderingContext2D.cpp in Sources */,
</span><span class="cx">                                 49EED14E1051971A00099FAB /* JSCanvasRenderingContext2DCustom.cpp in Sources */,
</span><span class="cx">                                 49EED1501051971A00099FAB /* JSCanvasRenderingContextCustom.cpp in Sources */,
</span><del>-                                073AB4B717F92ECF006E0D6F /* JSCapabilityRange.cpp in Sources */,
</del><span class="cx">                                 93F9B7A00BA6032600854064 /* JSCDATASection.cpp in Sources */,
</span><span class="cx">                                 FDA15EA112B03EE1003A583A /* JSChannelMergerNode.cpp in Sources */,
</span><span class="cx">                                 FDA15EA312B03EE1003A583A /* JSChannelSplitterNode.cpp in Sources */,
</span><span class="lines">@@ -29978,8 +29913,6 @@
</span><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><del>-                                0705851217FA7107005F2BCB /* JSMediaStreamCapabilities.cpp in Sources */,
-                                0705851717FB40E9005F2BCB /* JSMediaStreamCapabilitiesCustom.cpp in Sources */,
</del><span class="cx">                                 07277E5017D018CC0015534D /* JSMediaStreamEvent.cpp in Sources */,
</span><span class="cx">                                 07277E5217D018CC0015534D /* JSMediaStreamTrack.cpp in Sources */,
</span><span class="cx">                                 07277E5417D018CC0015534D /* JSMediaStreamTrackEvent.cpp in Sources */,
</span><span class="lines">@@ -30493,7 +30426,6 @@
</span><span class="cx">                                 078E094B17D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp in Sources */,
</span><span class="cx">                                 0783228418013ED800999E0C /* MediaStreamAudioSource.cpp in Sources */,
</span><span class="cx">                                 FD671A77159BB07000197559 /* MediaStreamAudioSourceNode.cpp in Sources */,
</span><del>-                                0705851517FB0EEA005F2BCB /* MediaStreamCapabilities.cpp in Sources */,
</del><span class="cx">                                 078E090017D14CEE00420AA1 /* MediaStreamEvent.cpp in Sources */,
</span><span class="cx">                                 0711589117DF6F6600EDFE2B /* MediaStreamPrivate.cpp in Sources */,
</span><span class="cx">                                 078E090117D14CEE00420AA1 /* MediaStreamRegistry.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><span class="cx"> #include &quot;MediaSourceSettings.h&quot;
</span><ins>+#include &quot;MediaStreamTrack.h&quot;
</ins><span class="cx"> #include &lt;runtime/JSObject.h&gt;
</span><span class="cx"> #include &lt;runtime/ObjectConstructor.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -75,6 +76,86 @@
</span><span class="cx">     return object;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static JSValue capabilityValue(const CapabilityValueOrRange&amp; value, ExecState&amp; state)
+{
+    if (value.type() == CapabilityValueOrRange::DoubleRange || value.type() == CapabilityValueOrRange::ULongRange) {
+        JSObject* object = constructEmptyObject(&amp;state);
+
+        CapabilityValueOrRange::ValueUnion min = value.rangeMin();
+        CapabilityValueOrRange::ValueUnion max = value.rangeMax();
+        if (value.type() == CapabilityValueOrRange::DoubleRange) {
+            object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;min&quot;), jsNumber(min.asDouble));
+            object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;max&quot;), jsNumber(max.asDouble));
+        } else {
+            object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;min&quot;), jsNumber(min.asULong));
+            object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;max&quot;), jsNumber(max.asULong));
+        }
+
+        return object;
+    }
+
+    if (value.type() == CapabilityValueOrRange::Double)
+        return jsNumber(value.value().asDouble);
+
+    return jsNumber(value.value().asULong);
+}
+
+JSC::JSValue JSMediaStreamTrack::getCapabilities(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;RealtimeMediaSourceCapabilities&gt; capabilities = WTF::getPtr(impl.getCapabilities());
+
+    if (capabilities-&gt;supportsWidth())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;width&quot;), capabilityValue(capabilities-&gt;width(), state), DontDelete | ReadOnly);
+    if (capabilities-&gt;supportsHeight())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;height&quot;), capabilityValue(capabilities-&gt;height(), state), DontDelete | ReadOnly);
+    if (capabilities-&gt;supportsAspectRatio())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;aspectRatio&quot;), capabilityValue(capabilities-&gt;aspectRatio(), state), DontDelete | ReadOnly);
+    if (capabilities-&gt;supportsFrameRate())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;frameRate&quot;), capabilityValue(capabilities-&gt;frameRate(), state), DontDelete | ReadOnly);
+    if (capabilities-&gt;supportsFacingMode()) {
+        const Vector&lt;RealtimeMediaSourceSettings::VideoFacingMode&gt;&amp; modes = capabilities-&gt;facingMode();
+        Vector&lt;String&gt; facingModes;
+        if (modes.size()) {
+
+            facingModes.reserveCapacity(modes.size());
+
+            for (auto&amp; mode : modes)
+                facingModes.append(RealtimeMediaSourceSettings::facingMode(mode));
+        }
+
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;facingMode&quot;), jsArray(&amp;state, castedThis-&gt;globalObject(), facingModes), DontDelete | ReadOnly);
+    }
+    if (capabilities-&gt;supportsVolume())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;volume&quot;), capabilityValue(capabilities-&gt;volume(), state), DontDelete | ReadOnly);
+    if (capabilities-&gt;supportsSampleRate())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;sampleRate&quot;), capabilityValue(capabilities-&gt;sampleRate(), state), DontDelete | ReadOnly);
+    if (capabilities-&gt;supportsSampleSize())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;sampleSize&quot;), capabilityValue(capabilities-&gt;sampleSize(), state), DontDelete | ReadOnly);
+    if (capabilities-&gt;supportsEchoCancellation()) {
+        Vector&lt;String&gt; cancellation;
+        cancellation.reserveCapacity(2);
+
+        cancellation.append(&quot;true&quot;);
+        cancellation.append(capabilities-&gt;echoCancellation() == RealtimeMediaSourceCapabilities::EchoCancellation::ReadWrite ? &quot;true&quot; : &quot;false&quot;);
+
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;echoCancellation&quot;), jsArray(&amp;state, castedThis-&gt;globalObject(), cancellation), DontDelete | ReadOnly);
+    }
+    if (capabilities-&gt;supportsDeviceId())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;deviceId&quot;), jsStringWithCache(&amp;state, capabilities-&gt;deviceId()), DontDelete | ReadOnly);
+    if (capabilities-&gt;supportsGroupId())
+        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;groupId&quot;), jsStringWithCache(&amp;state, capabilities-&gt;groupId()), DontDelete | ReadOnly);
+    
+
+    return object;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceCapabilitiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -35,101 +35,154 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class RealtimeMediaSourceCapabilityRange {
</del><ins>+class CapabilityValueOrRange {
</ins><span class="cx"> public:
</span><del>-    
-    RealtimeMediaSourceCapabilityRange(float min, float max, bool supported = true)
-        : m_type(Float)
</del><ins>+
+    enum Type {
+        Undefined,
+        Double,
+        ULong,
+        DoubleRange,
+        ULongRange,
+    };
+    Type type() const { return m_type; }
+
+    union ValueUnion {
+        unsigned long asULong;
+        double asDouble;
+    };
+
+    CapabilityValueOrRange()
+        : m_type(Undefined)
</ins><span class="cx">     {
</span><del>-        m_min.asFloat = min;
-        m_max.asFloat = max;
-        m_supported = supported;
</del><span class="cx">     }
</span><del>-    
-    RealtimeMediaSourceCapabilityRange(unsigned long min, unsigned long max, bool supported = true)
</del><ins>+
+    CapabilityValueOrRange(double value)
+        : m_type(Double)
+    {
+        m_minOrValue.asDouble = value;
+    }
+
+    CapabilityValueOrRange(unsigned long value)
</ins><span class="cx">         : m_type(ULong)
</span><span class="cx">     {
</span><del>-        m_min.asULong = min;
-        m_max.asULong = max;
-        m_supported = supported;
</del><ins>+        m_minOrValue.asULong = value;
</ins><span class="cx">     }
</span><ins>+
+    CapabilityValueOrRange(double min, double max)
+        : m_type(DoubleRange)
+    {
+        m_minOrValue.asDouble = min;
+        m_max.asDouble = max;
+    }
</ins><span class="cx">     
</span><del>-    RealtimeMediaSourceCapabilityRange()
</del><ins>+    CapabilityValueOrRange(unsigned long min, unsigned long max)
+        : m_type(ULongRange)
</ins><span class="cx">     {
</span><del>-        m_type = Undefined;
-        m_min.asULong = 0;
-        m_max.asULong = 0;
-        m_supported = false;
</del><ins>+        m_minOrValue.asULong = min;
+        m_max.asULong = max;
</ins><span class="cx">     }
</span><del>-    
-    enum Type { Undefined, Float, ULong };
-    
-    union ValueUnion {
-        unsigned long asULong;
-        float asFloat;
-    };
-    
-    const ValueUnion&amp; min() const { return m_min; }
-    const ValueUnion&amp; max() const { return m_max; }
-    Type type() const { return m_type; }
-    bool supported() const { return m_supported; }
-    
</del><ins>+
+    const ValueUnion&amp; rangeMin() const
+    {
+        ASSERT(m_type == DoubleRange || m_type == ULongRange);
+        return m_minOrValue;
+    }
+
+    const ValueUnion&amp; rangeMax() const
+    {
+        ASSERT(m_type == DoubleRange || m_type == ULongRange);
+        return m_max;
+    }
+
+    const ValueUnion&amp; value() const
+    {
+        ASSERT(m_type == Double || m_type == ULong);
+        return m_minOrValue;
+    }
+
</ins><span class="cx"> private:
</span><del>-    ValueUnion m_min;
</del><ins>+    ValueUnion m_minOrValue;
</ins><span class="cx">     ValueUnion m_max;
</span><span class="cx">     Type m_type;
</span><del>-    bool m_supported;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class RealtimeMediaSourceCapabilities : public RefCounted&lt;RealtimeMediaSourceCapabilities&gt; {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt; create()
</del><ins>+    static PassRefPtr&lt;RealtimeMediaSourceCapabilities&gt; create(const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
</ins><span class="cx">     {
</span><del>-        return adoptRef(new RealtimeMediaSourceCapabilities());
</del><ins>+        return adoptRef(new RealtimeMediaSourceCapabilities(supportedConstraints));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ~RealtimeMediaSourceCapabilities() { }
</span><span class="cx"> 
</span><del>-    const Vector&lt;AtomicString&gt;&amp; sourceId() { return m_sourceId; }
-    void setSourceId(const AtomicString&amp; id)  { m_sourceId.reserveCapacity(1); m_sourceId.insert(0, id); }
</del><ins>+    bool supportsWidth() const { return m_supportedConstraints.supportsWidth(); }
+    const CapabilityValueOrRange&amp; width() { return m_width; }
+    void setWidth(const CapabilityValueOrRange&amp; width) { m_width = width; }
</ins><span class="cx"> 
</span><del>-    const Vector&lt;RealtimeMediaSourceSettings::VideoFacingMode&gt;&amp; facingModes() { return m_facingMode; }
</del><ins>+    bool supportsHeight() const { return m_supportedConstraints.supportsHeight(); }
+    const CapabilityValueOrRange&amp; height() { return m_height; }
+    void setHeight(const CapabilityValueOrRange&amp; height) { m_height = height; }
+
+    bool supportsFrameRate() const { return m_supportedConstraints.supportsFrameRate(); }
+    const CapabilityValueOrRange&amp; frameRate() { return m_frameRate; }
+    void setFrameRate(const CapabilityValueOrRange&amp; frameRate) { m_frameRate = frameRate; }
+
+    bool supportsFacingMode() const { return m_supportedConstraints.supportsFacingMode(); }
+    const Vector&lt;RealtimeMediaSourceSettings::VideoFacingMode&gt;&amp; facingMode() { return m_facingMode; }
</ins><span class="cx">     void addFacingMode(RealtimeMediaSourceSettings::VideoFacingMode mode) { m_facingMode.append(mode); }
</span><span class="cx"> 
</span><del>-    const RealtimeMediaSourceCapabilityRange&amp; width() { return m_width; }
-    void setWidthRange(const RealtimeMediaSourceCapabilityRange&amp; width) { m_width = width; }
</del><ins>+    bool supportsAspectRatio() const { return m_supportedConstraints.supportsAspectRatio(); }
+    const CapabilityValueOrRange&amp; aspectRatio() { return m_aspectRatio; }
+    void setAspectRatio(const CapabilityValueOrRange&amp; aspectRatio) { m_aspectRatio = aspectRatio; }
</ins><span class="cx"> 
</span><del>-    const RealtimeMediaSourceCapabilityRange&amp; height() { return m_height; }
-    void setHeightRange(const RealtimeMediaSourceCapabilityRange&amp; height) { m_height = height; }
</del><ins>+    bool supportsVolume() const { return m_supportedConstraints.supportsVolume(); }
+    const CapabilityValueOrRange&amp; volume() { return m_volume; }
+    void setVolume(const CapabilityValueOrRange&amp; volume) { m_volume = volume; }
</ins><span class="cx"> 
</span><del>-    const RealtimeMediaSourceCapabilityRange&amp; frameRate() { return m_frameRate; }
-    void setFrameRateRange(const RealtimeMediaSourceCapabilityRange&amp; frameRate) { m_frameRate = frameRate; }
</del><ins>+    bool supportsSampleRate() const { return m_supportedConstraints.supportsSampleRate(); }
+    const CapabilityValueOrRange&amp; sampleRate() { return m_sampleRate; }
+    void setSampleRate(const CapabilityValueOrRange&amp; sampleRate) { m_sampleRate = sampleRate; }
</ins><span class="cx"> 
</span><del>-    const RealtimeMediaSourceCapabilityRange&amp; aspectRatio() { return m_aspectRatio; }
-    void setAspectRatioRange(const RealtimeMediaSourceCapabilityRange&amp; aspectRatio) { m_aspectRatio = aspectRatio; }
</del><ins>+    bool supportsSampleSize() const { return m_supportedConstraints.supportsSampleSize(); }
+    const CapabilityValueOrRange&amp; sampleSize() { return m_sampleSize; }
+    void setSampleSize(const CapabilityValueOrRange&amp; sampleSize) { m_sampleSize = sampleSize; }
</ins><span class="cx"> 
</span><del>-    const RealtimeMediaSourceCapabilityRange&amp; volume() { return m_volume; }
-    void setVolumeRange(const RealtimeMediaSourceCapabilityRange&amp; volume) { m_volume = volume; }
</del><ins>+    enum class EchoCancellation {
+        ReadOnly = 0,
+        ReadWrite = 1,
+    };
+    bool supportsEchoCancellation() const { return m_supportedConstraints.supportsEchoCancellation(); }
+    EchoCancellation echoCancellation() { return m_echoCancellation; }
+    void setEchoCancellation(EchoCancellation echoCancellation) { m_echoCancellation = echoCancellation; }
</ins><span class="cx"> 
</span><del>-    bool hasVideoSource() { return m_videoSource; }
-    void setHasVideoSource(bool isVideo) { m_videoSource = isVideo; }
</del><ins>+    bool supportsDeviceId() const { return m_supportedConstraints.supportsDeviceId(); }
+    const AtomicString&amp; deviceId() { return m_deviceId; }
+    void setDeviceId(const AtomicString&amp; id)  { m_deviceId = id; }
</ins><span class="cx"> 
</span><ins>+    bool supportsGroupId() const { return m_supportedConstraints.supportsGroupId(); }
+    const AtomicString&amp; groupId() { return m_groupId; }
+    void setGroupId(const AtomicString&amp; id)  { m_groupId = id; }
+    
</ins><span class="cx"> private:
</span><del>-    RealtimeMediaSourceCapabilities()
-        : m_videoSource(false)
</del><ins>+    RealtimeMediaSourceCapabilities(const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
+        : m_supportedConstraints(supportedConstraints)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Vector&lt;AtomicString&gt; m_sourceId;
</del><ins>+    CapabilityValueOrRange m_width;
+    CapabilityValueOrRange m_height;
+    CapabilityValueOrRange m_aspectRatio;
+    CapabilityValueOrRange m_frameRate;
</ins><span class="cx">     Vector&lt;RealtimeMediaSourceSettings::VideoFacingMode&gt; m_facingMode;
</span><ins>+    CapabilityValueOrRange m_volume;
+    CapabilityValueOrRange m_sampleRate;
+    CapabilityValueOrRange m_sampleSize;
+    EchoCancellation m_echoCancellation;
+    AtomicString m_deviceId;
+    AtomicString m_groupId;
</ins><span class="cx"> 
</span><del>-    RealtimeMediaSourceCapabilityRange m_width;
-    RealtimeMediaSourceCapabilityRange m_height;
-    RealtimeMediaSourceCapabilityRange m_frameRate;
-    RealtimeMediaSourceCapabilityRange m_aspectRatio;
-    RealtimeMediaSourceCapabilityRange m_volume;
-
-    bool m_videoSource;
</del><ins>+    const RealtimeMediaSourceSupportedConstraints&amp; m_supportedConstraints;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamRealtimeMediaSourceSettingsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -67,8 +67,8 @@
</span><span class="cx">     void setFacingMode(VideoFacingMode facingMode) { m_facingMode = facingMode; }
</span><span class="cx"> 
</span><span class="cx">     bool supportsVolume() const { return m_supportedConstraints.supportsVolume(); }
</span><del>-    unsigned long volume() const { return m_volume; }
-    void setVolume(unsigned long volume) { m_volume = volume; }
</del><ins>+    double volume() const { return m_volume; }
+    void setVolume(double volume) { m_volume = volume; }
</ins><span class="cx"> 
</span><span class="cx">     bool supportsSampleRate() const { return m_supportedConstraints.supportsSampleRate(); }
</span><span class="cx">     unsigned long sampleRate() const { return m_sampleRate; }
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx">     float m_aspectRatio { 0 };
</span><span class="cx">     float m_frameRate { 0 };
</span><span class="cx">     VideoFacingMode m_facingMode { Unknown };
</span><del>-    unsigned long m_volume { 0 };
</del><ins>+    double m_volume { 0 };
</ins><span class="cx">     unsigned long m_sampleRate { 0 };
</span><span class="cx">     unsigned long m_sampleSize { 0 };
</span><span class="cx">     bool m_echoCancellation { 0 };
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVAudioCaptureSourcemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -77,9 +77,10 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AVAudioCaptureSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp;)
</del><ins>+void AVAudioCaptureSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp; capabilities)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: finish this implementation - https://webkit.org/b/122430
</span><ins>+    capabilities.setVolume(CapabilityValueOrRange(0, 1.0));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AVAudioCaptureSource::initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVMediaCaptureSourcemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -28,7 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_STREAM) &amp;&amp; USE(AVFOUNDATION)
</span><span class="cx"> 
</span><ins>+#import &quot;AVCaptureDeviceManager.h&quot;
</ins><span class="cx"> #import &quot;AudioSourceProvider.h&quot;
</span><ins>+#import &quot;CoreMediaSoftLink.h&quot;
</ins><span class="cx"> #import &quot;Logging.h&quot;
</span><span class="cx"> #import &quot;MediaConstraints.h&quot;
</span><span class="cx"> #import &quot;RealtimeMediaSourceSettings.h&quot;
</span><span class="lines">@@ -39,8 +41,6 @@
</span><span class="cx"> #import &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #import &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> 
</span><del>-#import &quot;CoreMediaSoftLink.h&quot;
-
</del><span class="cx"> typedef AVCaptureConnection AVCaptureConnectionType;
</span><span class="cx"> typedef AVCaptureDevice AVCaptureDeviceType;
</span><span class="cx"> typedef AVCaptureDeviceInput AVCaptureDeviceInputType;
</span><span class="lines">@@ -188,8 +188,9 @@
</span><span class="cx"> RefPtr&lt;RealtimeMediaSourceCapabilities&gt; AVMediaCaptureSource::capabilities()
</span><span class="cx"> {
</span><span class="cx">     if (!m_capabilities) {
</span><del>-        m_capabilities = RealtimeMediaSourceCapabilities::create();
-        m_capabilities-&gt;setSourceId(id());
</del><ins>+        m_capabilities = RealtimeMediaSourceCapabilities::create(AVCaptureDeviceManager::singleton().supportedConstraints());
+        m_capabilities-&gt;setDeviceId(id());
+
</ins><span class="cx">         initializeCapabilities(*m_capabilities.get());
</span><span class="cx">     }
</span><span class="cx">     return m_capabilities;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacAVVideoCaptureSourcemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -108,10 +108,9 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AVVideoCaptureSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp; capabilities)
</del><ins>+void AVVideoCaptureSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp;)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: finish this implementation
</span><del>-    capabilities.setSourceId(id());
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AVVideoCaptureSource::initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreammacWebAudioSourceProviderAVFObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -34,10 +34,7 @@
</span><span class="cx"> #import &quot;CARingBuffer.h&quot;
</span><span class="cx"> #import &quot;Logging.h&quot;
</span><span class="cx"> #import &quot;MediaTimeAVFoundation.h&quot;
</span><del>-#import &lt;AVFoundation/AVAssetTrack.h&gt;
-#import &lt;AVFoundation/AVAudioMix.h&gt;
-#import &lt;AVFoundation/AVMediaFormat.h&gt;
-#import &lt;AVFoundation/AVPlayerItem.h&gt;
</del><ins>+#import &lt;AudioToolbox/AudioToolbox.h&gt;
</ins><span class="cx"> #import &lt;objc/runtime.h&gt;
</span><span class="cx"> #import &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -47,13 +44,8 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;CoreMediaSoftLink.h&quot;
</span><span class="cx"> 
</span><del>-SOFT_LINK_FRAMEWORK(AVFoundation)
</del><span class="cx"> SOFT_LINK_FRAMEWORK(AudioToolbox)
</span><span class="cx"> 
</span><del>-SOFT_LINK_CLASS(AVFoundation, AVPlayerItem)
-SOFT_LINK_CLASS(AVFoundation, AVMutableAudioMix)
-SOFT_LINK_CLASS(AVFoundation, AVMutableAudioMixInputParameters)
-
</del><span class="cx"> SOFT_LINK(AudioToolbox, AudioConverterConvertComplexBuffer, OSStatus, (AudioConverterRef inAudioConverter, UInt32 inNumberPCMFrames, const AudioBufferList* inInputData, AudioBufferList* outOutputData), (inAudioConverter, inNumberPCMFrames, inInputData, outOutputData))
</span><span class="cx"> SOFT_LINK(AudioToolbox, AudioConverterNew, OSStatus, (const AudioStreamBasicDescription* inSourceFormat, const AudioStreamBasicDescription* inDestinationFormat, AudioConverterRef* outAudioConverter), (inSourceFormat, inDestinationFormat, outAudioConverter))
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeAudioSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -57,12 +57,14 @@
</span><span class="cx"> 
</span><span class="cx"> void MockRealtimeAudioSource::initializeCapabilities(RealtimeMediaSourceCapabilities&amp; capabilities)
</span><span class="cx"> {
</span><del>-    capabilities.setVolumeRange(RealtimeMediaSourceCapabilityRange(0UL, 100UL, true));
</del><ins>+    capabilities.setVolume(CapabilityValueOrRange(0, 1.0));
+    capabilities.setEchoCancellation(RealtimeMediaSourceCapabilities::EchoCancellation::ReadWrite);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockRealtimeAudioSource::initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
</span><span class="cx"> {
</span><span class="cx">     supportedConstraints.setSupportsVolume(true);
</span><ins>+    supportedConstraints.setSupportsEchoCancellation(true);
</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 (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -95,8 +95,8 @@
</span><span class="cx">     if (m_capabilities)
</span><span class="cx">         return m_capabilities;
</span><span class="cx"> 
</span><del>-    m_capabilities = RealtimeMediaSourceCapabilities::create();
-    m_capabilities-&gt;setSourceId(id());
</del><ins>+    m_capabilities = RealtimeMediaSourceCapabilities::create(supportedConstraints());
+    m_capabilities-&gt;setDeviceId(id());
</ins><span class="cx">     initializeCapabilities(*m_capabilities.get());
</span><span class="cx"> 
</span><span class="cx">     return m_capabilities;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmockMockRealtimeVideoSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp (193388 => 193389)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp        2015-12-04 00:29:13 UTC (rev 193388)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp        2015-12-04 00:34:55 UTC (rev 193389)
</span><span class="lines">@@ -103,10 +103,10 @@
</span><span class="cx"> {
</span><span class="cx">     capabilities.addFacingMode(RealtimeMediaSourceSettings::User);
</span><span class="cx">     capabilities.addFacingMode(RealtimeMediaSourceSettings::Environment);
</span><del>-    capabilities.setWidthRange(RealtimeMediaSourceCapabilityRange(320UL, 1920UL, true));
-    capabilities.setHeightRange(RealtimeMediaSourceCapabilityRange(240UL, 1080UL, true));
-    capabilities.setFrameRateRange(RealtimeMediaSourceCapabilityRange(15.0f, 60.0f, true));
-    capabilities.setAspectRatioRange(RealtimeMediaSourceCapabilityRange(4 / 3.0f, 16 / 9.0f, true));
</del><ins>+    capabilities.setWidth(CapabilityValueOrRange(320UL, 1920UL));
+    capabilities.setHeight(CapabilityValueOrRange(240UL, 1080UL));
+    capabilities.setFrameRate(CapabilityValueOrRange(15.0, 60.0));
+    capabilities.setAspectRatio(CapabilityValueOrRange(4 / 3.0, 16 / 9.0));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MockRealtimeVideoSource::initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
</span></span></pre>
</div>
</div>

</body>
</html>