<!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>[209959] 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/209959">209959</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2016-12-16 22:42:39 -0800 (Fri, 16 Dec 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove all custom bindings from media streams, using dictionaries instead
https://bugs.webkit.org/show_bug.cgi?id=165943

Reviewed by Sam Weinig.

Source/WebCore:

* CMakeLists.txt: Added and removed files.
* DerivedSources.make: Ditto.

* Modules/mediastream/DoubleRange.h: Added. Moved dictionary here so it can be shared
by both MediaStreamTrack and MediaTrackSupportedConstraints.
* Modules/mediastream/DoubleRange.idl: Ditto.
* Modules/mediastream/LongRange.h: Ditto.
* Modules/mediastream/LongRange.idl: Ditto.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getSupportedConstraints): Changed to return a struct instead
of a reference counted object.
* Modules/mediastream/MediaDevices.h: Updated for the above.
* Modules/mediastream/MediaDevices.idl: Added a conditional on the dictionary in this
file; not needed because the conditional on the interface automatically affects the
entire fiel, but for now the style seems to be to put these on all the dictionaries.

* Modules/mediastream/MediaSourceSettings.cpp: Removed.
* Modules/mediastream/MediaSourceSettings.h: Removed.

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::getSettings): Changed to return a struct instead of a
reference counted object.
(WebCore::capabilityDoubleRange): Added. Helper for getCapabilities.
(WebCore::capabilityIntRange): Ditto.
(WebCore::capabilityStringVector): Ditto.
(WebCore::capabilityBooleanVector): Ditto.
(WebCore::MediaStreamTrack::getCapabilities): Changed to return a struct instead
of a reference counted object.
* Modules/mediastream/MediaStreamTrack.h: Updated for the above changes. Also
defined the structs here in the class.
* Modules/mediastream/MediaStreamTrack.idl: Defined the two dictionaries here and
changed the functions to return them and not use [Custom] any more.

* Modules/mediastream/MediaTrackConstraints.h: Moved DoubleRange and LongRange out
of this file and into their own headers. Also removed the currently unimplemented
latency and channelCount; there are FIXME comments in the IDL file about eventually
adding these to match the specification.
* Modules/mediastream/MediaTrackConstraints.idl: Added conditionals, and removed
the unimplemented latency and channelCount.
style of marking everything consistently.

* Modules/mediastream/MediaTrackSupportedConstraints.h: Replaced this class with
a struct.
* Modules/mediastream/MediaTrackSupportedConstraints.idl: Replaced this interface
with a dictionary.

* WebCore.xcodeproj/project.pbxproj: Added and removed files.

* bindings/js/JSMediaStreamTrackCustom.cpp: Removed.
* bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp: Removed.

* platform/mediastream/MediaStreamTrackPrivate.cpp: Removed include of the
MediaSourceSettings.h header.
* platform/mediastream/MediaStreamTrackPrivate.h: Removed forward declaration of
the MediaSourceSettings class.

LayoutTests:

* fast/mediastream/MediaDevices-getSupportedConstraints-expected.txt: Updated since the
properties in the dictionaries are now in alphabetical order and because of the test change.
* fast/mediastream/MediaDevices-getSupportedConstraints.html: Updated to expect some true
and some false rather than some true and some missing.

* fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt: Updated since the
properties in the dictionaries are now in alphabetical order.
* fast/mediastream/MediaStreamTrack-getSettings-expected.txt: Ditto.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaDevicesgetSupportedConstraintsexpectedtxt">trunk/LayoutTests/fast/mediastream/MediaDevices-getSupportedConstraints-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaDevicesgetSupportedConstraintshtml">trunk/LayoutTests/fast/mediastream/MediaDevices-getSupportedConstraints.html</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamTrackgetCapabilitiesexpectedtxt">trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamTrackgetSettingsexpectedtxt">trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt</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="#trunkSourceWebCoreModulesmediastreamMediaDevicescpp">trunk/Source/WebCore/Modules/mediastream/MediaDevices.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaDevicesh">trunk/Source/WebCore/Modules/mediastream/MediaDevices.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaDevicesidl">trunk/Source/WebCore/Modules/mediastream/MediaDevices.idl</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="#trunkSourceWebCoreModulesmediastreamMediaTrackConstraintsh">trunk/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaTrackConstraintsidl">trunk/Source/WebCore/Modules/mediastream/MediaTrackConstraints.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaTrackSupportedConstraintsh">trunk/Source/WebCore/Modules/mediastream/MediaTrackSupportedConstraints.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaTrackSupportedConstraintsidl">trunk/Source/WebCore/Modules/mediastream/MediaTrackSupportedConstraints.idl</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivatecpp">trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivateh">trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreModulesmediastreamDoubleRangeh">trunk/Source/WebCore/Modules/mediastream/DoubleRange.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamDoubleRangeidl">trunk/Source/WebCore/Modules/mediastream/DoubleRange.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamLongRangeh">trunk/Source/WebCore/Modules/mediastream/LongRange.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamLongRangeidl">trunk/Source/WebCore/Modules/mediastream/LongRange.idl</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaSourceSettingscpp">trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaSourceSettingsh">trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMediaTrackSupportedConstraintsCustomcpp">trunk/Source/WebCore/bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/LayoutTests/ChangeLog        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2016-12-16  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove all custom bindings from media streams, using dictionaries instead
+        https://bugs.webkit.org/show_bug.cgi?id=165943
+
+        Reviewed by Sam Weinig.
+
+        * fast/mediastream/MediaDevices-getSupportedConstraints-expected.txt: Updated since the
+        properties in the dictionaries are now in alphabetical order and because of the test change.
+        * fast/mediastream/MediaDevices-getSupportedConstraints.html: Updated to expect some true
+        and some false rather than some true and some missing.
+
+        * fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt: Updated since the
+        properties in the dictionaries are now in alphabetical order.
+        * fast/mediastream/MediaStreamTrack-getSettings-expected.txt: Ditto.
+
</ins><span class="cx"> 2016-12-16  Sam Weinig  &lt;sam@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix failing test.
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaDevicesgetSupportedConstraintsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaDevices-getSupportedConstraints-expected.txt (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaDevices-getSupportedConstraints-expected.txt        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/LayoutTests/fast/mediastream/MediaDevices-getSupportedConstraints-expected.txt        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -8,13 +8,17 @@
</span><span class="cx"> 
</span><span class="cx"> supportedConstraints = navigator.mediaDevices.getSupportedConstraints()
</span><span class="cx"> 
</span><del>-PASS supportedConstraints.width is true
-PASS supportedConstraints.height is true
</del><span class="cx"> PASS supportedConstraints.aspectRatio is true
</span><ins>+PASS supportedConstraints.deviceId is true
+PASS supportedConstraints.echoCancellation is false
+PASS supportedConstraints.facingMode is true
</ins><span class="cx"> PASS supportedConstraints.frameRate is true
</span><del>-PASS supportedConstraints.facingMode is true
</del><ins>+PASS supportedConstraints.groupId is false
+PASS supportedConstraints.height is true
+PASS supportedConstraints.sampleRate is false
+PASS supportedConstraints.sampleSize is false
</ins><span class="cx"> PASS supportedConstraints.volume is true
</span><del>-PASS supportedConstraints.deviceId is true
</del><ins>+PASS supportedConstraints.width is true
</ins><span class="cx"> 
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaDevicesgetSupportedConstraintshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaDevices-getSupportedConstraints.html (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaDevices-getSupportedConstraints.html        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/LayoutTests/fast/mediastream/MediaDevices-getSupportedConstraints.html        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -18,8 +18,17 @@
</span><span class="cx">             debug(&quot;&quot;);
</span><span class="cx">             evalAndLog(&quot;supportedConstraints = navigator.mediaDevices.getSupportedConstraints()&quot;);
</span><span class="cx">             debug(&quot;&quot;);
</span><del>-            for (var constraint in supportedConstraints)
-                shouldBeTrue(`supportedConstraints.${constraint}`);
</del><ins>+            shouldBeTrue(&quot;supportedConstraints.aspectRatio&quot;);
+            shouldBeTrue(&quot;supportedConstraints.deviceId&quot;);
+            shouldBeFalse(&quot;supportedConstraints.echoCancellation&quot;);
+            shouldBeTrue(&quot;supportedConstraints.facingMode&quot;);
+            shouldBeTrue(&quot;supportedConstraints.frameRate&quot;);
+            shouldBeFalse(&quot;supportedConstraints.groupId&quot;);
+            shouldBeTrue(&quot;supportedConstraints.height&quot;);
+            shouldBeFalse(&quot;supportedConstraints.sampleRate&quot;);
+            shouldBeFalse(&quot;supportedConstraints.sampleSize&quot;);
+            shouldBeTrue(&quot;supportedConstraints.volume&quot;);
+            shouldBeTrue(&quot;supportedConstraints.width&quot;);
</ins><span class="cx">             debug(&quot;&quot;);
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamTrackgetCapabilitiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -4,18 +4,18 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> video track capabilities:
</span><del>-  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 }
</del><ins>+  capabilities.aspectRatio = { max: 1.778, min: 1.333 }
+  capabilities.deviceId = &lt;UUID&gt;
</ins><span class="cx">   capabilities.facingMode = [ user, environment ]
</span><del>-  capabilities.deviceId = &lt;UUID&gt;
</del><ins>+  capabilities.frameRate = { max: 60, min: 15 }
+  capabilities.height = { max: 1080, min: 240 }
+  capabilities.width = { max: 1920, min: 320 }
</ins><span class="cx"> 
</span><span class="cx"> audio track capabilities:
</span><del>-  capabilities.volume = { min: 0, max: 1 }
-  capabilities.sampleRate = { min: 44100, max: 44100 }
</del><ins>+  capabilities.deviceId = &lt;UUID&gt;
</ins><span class="cx">   capabilities.echoCancellation = [ true, true ]
</span><del>-  capabilities.deviceId = &lt;UUID&gt;
</del><ins>+  capabilities.sampleRate = { max: 44100, min: 44100 }
+  capabilities.volume = { max: 1, min: 0 }
</ins><span class="cx"> 
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamTrackgetSettingsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-getSettings-expected.txt        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -4,29 +4,29 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> video track settings:
</span><ins>+  settings.deviceId = &lt;UUID&gt;
+  settings.facingMode = user
+  settings.frameRate = 30
+  settings.height = 480
</ins><span class="cx">   settings.width = 640
</span><del>-  settings.height = 480
-  settings.frameRate = 30
-  settings.facingMode = user
-  settings.deviceId = &lt;UUID&gt;
</del><span class="cx"> 
</span><span class="cx"> audio track settings:
</span><ins>+  settings.deviceId = &lt;UUID&gt;
+  settings.echoCancellation = false
+  settings.sampleRate = 44100
</ins><span class="cx">   settings.volume = 1
</span><del>-  settings.sampleRate = 44100
-  settings.echoCancellation = false
-  settings.deviceId = &lt;UUID&gt;
</del><span class="cx"> 
</span><span class="cx"> According to the spec: &quot;[every setting] MUST be a member of the set defined for that property by getCapabilities()&quot;
</span><span class="cx"> 
</span><ins>+PASS &quot;deviceId&quot; in track.getCapabilities() is true
+PASS &quot;facingMode&quot; in track.getCapabilities() is true
+PASS &quot;frameRate&quot; in track.getCapabilities() is true
+PASS &quot;height&quot; in track.getCapabilities() is true
</ins><span class="cx"> PASS &quot;width&quot; in track.getCapabilities() is true
</span><del>-PASS &quot;height&quot; in track.getCapabilities() is true
-PASS &quot;frameRate&quot; in track.getCapabilities() is true
-PASS &quot;facingMode&quot; in track.getCapabilities() is true
</del><span class="cx"> PASS &quot;deviceId&quot; in track.getCapabilities() is true
</span><ins>+PASS &quot;echoCancellation&quot; in track.getCapabilities() is true
+PASS &quot;sampleRate&quot; in track.getCapabilities() is true
</ins><span class="cx"> PASS &quot;volume&quot; in track.getCapabilities() is true
</span><del>-PASS &quot;sampleRate&quot; in track.getCapabilities() is true
-PASS &quot;echoCancellation&quot; in track.getCapabilities() is true
-PASS &quot;deviceId&quot; in track.getCapabilities() is true
</del><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -212,7 +212,9 @@
</span><span class="cx">     Modules/mediasource/VideoPlaybackQuality.idl
</span><span class="cx"> 
</span><span class="cx">     Modules/mediastream/DOMURLMediaStream.idl
</span><ins>+    Modules/mediastream/DoubleRange.idl
</ins><span class="cx">     Modules/mediastream/HTMLMediaElementMediaStream.idl
</span><ins>+    Modules/mediastream/LongRange.idl
</ins><span class="cx">     Modules/mediastream/MediaDeviceInfo.idl
</span><span class="cx">     Modules/mediastream/MediaDevices.idl
</span><span class="cx">     Modules/mediastream/MediaStream.idl
</span><span class="lines">@@ -902,7 +904,6 @@
</span><span class="cx">     Modules/mediastream/MediaDevicesRequest.cpp
</span><span class="cx">     Modules/mediastream/MediaEndpointPeerConnection.cpp
</span><span class="cx">     Modules/mediastream/MediaEndpointSessionDescription.cpp
</span><del>-    Modules/mediastream/MediaSourceSettings.cpp
</del><span class="cx">     Modules/mediastream/MediaStream.cpp
</span><span class="cx">     Modules/mediastream/MediaStreamEvent.cpp
</span><span class="cx">     Modules/mediastream/MediaStreamRegistry.cpp
</span><span class="lines">@@ -1165,8 +1166,6 @@
</span><span class="cx">     bindings/js/JSMainThreadExecState.cpp
</span><span class="cx">     bindings/js/JSMediaKeySessionCustom.cpp
</span><span class="cx">     bindings/js/JSMediaKeySystemAccessCustom.cpp
</span><del>-    bindings/js/JSMediaStreamTrackCustom.cpp
-    bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp
</del><span class="cx">     bindings/js/JSMessageChannelCustom.cpp
</span><span class="cx">     bindings/js/JSMessageEventCustom.cpp
</span><span class="cx">     bindings/js/JSMessagePortCustom.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/ChangeLog        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,3 +1,67 @@
</span><ins>+2016-12-16  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove all custom bindings from media streams, using dictionaries instead
+        https://bugs.webkit.org/show_bug.cgi?id=165943
+
+        Reviewed by Sam Weinig.
+
+        * CMakeLists.txt: Added and removed files.
+        * DerivedSources.make: Ditto.
+
+        * Modules/mediastream/DoubleRange.h: Added. Moved dictionary here so it can be shared
+        by both MediaStreamTrack and MediaTrackSupportedConstraints.
+        * Modules/mediastream/DoubleRange.idl: Ditto.
+        * Modules/mediastream/LongRange.h: Ditto.
+        * Modules/mediastream/LongRange.idl: Ditto.
+
+        * Modules/mediastream/MediaDevices.cpp:
+        (WebCore::MediaDevices::getSupportedConstraints): Changed to return a struct instead
+        of a reference counted object.
+        * Modules/mediastream/MediaDevices.h: Updated for the above.
+        * Modules/mediastream/MediaDevices.idl: Added a conditional on the dictionary in this
+        file; not needed because the conditional on the interface automatically affects the
+        entire fiel, but for now the style seems to be to put these on all the dictionaries.
+
+        * Modules/mediastream/MediaSourceSettings.cpp: Removed.
+        * Modules/mediastream/MediaSourceSettings.h: Removed.
+
+        * Modules/mediastream/MediaStreamTrack.cpp:
+        (WebCore::MediaStreamTrack::getSettings): Changed to return a struct instead of a
+        reference counted object.
+        (WebCore::capabilityDoubleRange): Added. Helper for getCapabilities.
+        (WebCore::capabilityIntRange): Ditto.
+        (WebCore::capabilityStringVector): Ditto.
+        (WebCore::capabilityBooleanVector): Ditto.
+        (WebCore::MediaStreamTrack::getCapabilities): Changed to return a struct instead
+        of a reference counted object.
+        * Modules/mediastream/MediaStreamTrack.h: Updated for the above changes. Also
+        defined the structs here in the class.
+        * Modules/mediastream/MediaStreamTrack.idl: Defined the two dictionaries here and
+        changed the functions to return them and not use [Custom] any more.
+
+        * Modules/mediastream/MediaTrackConstraints.h: Moved DoubleRange and LongRange out
+        of this file and into their own headers. Also removed the currently unimplemented
+        latency and channelCount; there are FIXME comments in the IDL file about eventually
+        adding these to match the specification.
+        * Modules/mediastream/MediaTrackConstraints.idl: Added conditionals, and removed
+        the unimplemented latency and channelCount.
+        style of marking everything consistently.
+
+        * Modules/mediastream/MediaTrackSupportedConstraints.h: Replaced this class with
+        a struct.
+        * Modules/mediastream/MediaTrackSupportedConstraints.idl: Replaced this interface
+        with a dictionary.
+
+        * WebCore.xcodeproj/project.pbxproj: Added and removed files.
+
+        * bindings/js/JSMediaStreamTrackCustom.cpp: Removed.
+        * bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp: Removed.
+
+        * platform/mediastream/MediaStreamTrackPrivate.cpp: Removed include of the
+        MediaSourceSettings.h header.
+        * platform/mediastream/MediaStreamTrackPrivate.h: Removed forward declaration of
+        the MediaSourceSettings class.
+
</ins><span class="cx"> 2016-12-16  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Possible nullptr dereference when applying pagination to viewport
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/DerivedSources.make        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -145,14 +145,14 @@
</span><span class="cx">     $(WebCore)/Modules/mediasource/DOMURLMediaSource.idl \
</span><span class="cx">     $(WebCore)/Modules/mediasource/MediaSource.idl \
</span><span class="cx">     $(WebCore)/Modules/mediasource/SourceBuffer.idl \
</span><del>-    $(WebCore)/Modules/mediasource/SourceBuffer.idl \
</del><span class="cx">     $(WebCore)/Modules/mediasource/SourceBufferList.idl \
</span><del>-    $(WebCore)/Modules/mediasource/SourceBufferList.idl \
</del><span class="cx">     $(WebCore)/Modules/mediasource/TextTrackMediaSource.idl \
</span><span class="cx">     $(WebCore)/Modules/mediasource/VideoPlaybackQuality.idl \
</span><span class="cx">     $(WebCore)/Modules/mediasource/VideoTrackMediaSource.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/DOMURLMediaStream.idl \
</span><ins>+    $(WebCore)/Modules/mediastream/DoubleRange.idl \
</ins><span class="cx">     $(WebCore)/Modules/mediastream/HTMLMediaElementMediaStream.idl \
</span><ins>+    $(WebCore)/Modules/mediastream/LongRange.idl \
</ins><span class="cx">     $(WebCore)/Modules/mediastream/MediaDeviceInfo.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/MediaDevices.idl \
</span><span class="cx">     $(WebCore)/Modules/mediastream/MediaStream.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamDoubleRangehfromrev209958trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/Modules/mediastream/DoubleRange.h (from rev 209958, trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl) (0 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/DoubleRange.h                                (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/DoubleRange.h        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+/*
+ * Copyright (C) 2016 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. AND ITS CONTRIBUTORS ``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 ITS 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.
+ */
+
+#pragma once
+
+#if ENABLE(MEDIA_STREAM)
+
+#include &lt;wtf/Optional.h&gt;
+
+namespace WebCore {
+
+struct DoubleRange {
+    std::optional&lt;double&gt; max;
+    std::optional&lt;double&gt; min;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamDoubleRangeidlfromrev209958trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/Modules/mediastream/DoubleRange.idl (from rev 209958, trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl) (0 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/DoubleRange.idl                                (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/DoubleRange.idl        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * Copyright (C) 2016 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. AND ITS CONTRIBUTORS ``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 ITS 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,
+    JSGenerateToJSObject,
+] dictionary DoubleRange {
+    double max;
+    double min;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamLongRangehfromrev209958trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/Modules/mediastream/LongRange.h (from rev 209958, trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl) (0 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/LongRange.h                                (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/LongRange.h        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+/*
+ * Copyright (C) 2016 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. AND ITS CONTRIBUTORS ``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 ITS 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.
+ */
+
+#pragma once
+
+#if ENABLE(MEDIA_STREAM)
+
+#include &lt;wtf/Optional.h&gt;
+
+namespace WebCore {
+
+struct LongRange {
+    std::optional&lt;int&gt; max;
+    std::optional&lt;int&gt; min;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamLongRangeidlfromrev209958trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/Modules/mediastream/LongRange.idl (from rev 209958, trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl) (0 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/LongRange.idl                                (rev 0)
+++ trunk/Source/WebCore/Modules/mediastream/LongRange.idl        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * Copyright (C) 2016 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. AND ITS CONTRIBUTORS ``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 ITS 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,
+    JSGenerateToJSObject,
+] dictionary LongRange {
+    long max;
+    long min;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaDevicescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevices.cpp (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaDevices.cpp        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevices.cpp        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -85,9 +85,22 @@
</span><span class="cx">     MediaDevicesRequest::create(*document, WTFMove(promise))-&gt;start();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;MediaTrackSupportedConstraints&gt; MediaDevices::getSupportedConstraints()
</del><ins>+MediaTrackSupportedConstraints MediaDevices::getSupportedConstraints()
</ins><span class="cx"> {
</span><del>-    return MediaTrackSupportedConstraints::create(RealtimeMediaSourceCenter::singleton().supportedConstraints());
</del><ins>+    auto&amp; supported = RealtimeMediaSourceCenter::singleton().supportedConstraints();
+    MediaTrackSupportedConstraints result;
+    result.width = supported.supportsWidth();
+    result.height = supported.supportsHeight();
+    result.aspectRatio = supported.supportsAspectRatio();
+    result.frameRate = supported.supportsFrameRate();
+    result.facingMode = supported.supportsFacingMode();
+    result.volume = supported.supportsVolume();
+    result.sampleRate = supported.supportsSampleRate();
+    result.sampleSize = supported.supportsSampleSize();
+    result.echoCancellation = supported.supportsEchoCancellation();
+    result.deviceId = supported.supportsDeviceId();
+    result.groupId = supported.supportsGroupId();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaDevicesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevices.h (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaDevices.h        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevices.h        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -42,8 +42,9 @@
</span><span class="cx"> class Document;
</span><span class="cx"> class MediaDeviceInfo;
</span><span class="cx"> class MediaStream;
</span><del>-class MediaTrackSupportedConstraints;
</del><span class="cx"> 
</span><ins>+struct MediaTrackSupportedConstraints;
+
</ins><span class="cx"> class MediaDevices : public ScriptWrappable, public RefCounted&lt;MediaDevices&gt;, public ContextDestructionObserver {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;MediaDevices&gt; create(Document&amp;);
</span><span class="lines">@@ -59,7 +60,7 @@
</span><span class="cx">     };
</span><span class="cx">     ExceptionOr&lt;void&gt; getUserMedia(const StreamConstraints&amp;, Promise&amp;&amp;) const;
</span><span class="cx">     void enumerateDevices(EnumerateDevicesPromise&amp;&amp;) const;
</span><del>-    RefPtr&lt;MediaTrackSupportedConstraints&gt; getSupportedConstraints();
</del><ins>+    MediaTrackSupportedConstraints getSupportedConstraints();
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     explicit MediaDevices(Document&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaDevicesidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevices.idl (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaDevices.idl        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevices.idl        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -38,7 +38,9 @@
</span><span class="cx">     Promise&lt;sequence&lt;MediaDeviceInfo&gt;&gt; enumerateDevices();
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-dictionary MediaStreamConstraints {
</del><ins>+[
+    Conditional=MEDIA_STREAM,
+] dictionary MediaStreamConstraints {
</ins><span class="cx">     (boolean or MediaTrackConstraints) video = false;
</span><span class="cx">     (boolean or MediaTrackConstraints) audio = false;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaSourceSettingscpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.cpp (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.cpp        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.cpp        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,50 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;MediaSourceSettings.h&quot;
-
-#if ENABLE(MEDIA_STREAM)
-
-namespace WebCore {
-
-Ref&lt;MediaSourceSettings&gt; MediaSourceSettings::create(const RealtimeMediaSourceSettings&amp; settings)
-{
-    return adoptRef(*new MediaSourceSettings(settings));
-}
-
-MediaSourceSettings::MediaSourceSettings(const RealtimeMediaSourceSettings&amp; settings)
-    : m_sourceSettings(settings)
-{
-}
-
-const AtomicString&amp; MediaSourceSettings::facingMode() const
-{
-    return RealtimeMediaSourceSettings::facingMode(m_sourceSettings.facingMode());
-}
-
-} // namespace WebCore
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaSourceSettingsh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaSourceSettings.h        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,82 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;RealtimeMediaSourceCapabilities.h&quot;
-#include &quot;ScriptWrappable.h&quot;
-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-
-namespace WebCore {
-
-class MediaSourceSettings : public RefCounted&lt;MediaSourceSettings&gt;, public ScriptWrappable {
-public:
-    static Ref&lt;MediaSourceSettings&gt; create(const RealtimeMediaSourceSettings&amp;);
-
-    bool supportsWidth() const { return m_sourceSettings.supportsWidth(); }
-    unsigned long width() const { return m_sourceSettings.width(); }
-
-    bool supportsHeight() const { return m_sourceSettings.supportsHeight(); }
-    unsigned long height() const { return m_sourceSettings.height(); }
-
-    bool supportsAspectRatio() const { return m_sourceSettings.supportsAspectRatio(); }
-    float aspectRatio() const { return m_sourceSettings.aspectRatio(); }
-
-    bool supportsFrameRate() const { return m_sourceSettings.supportsFrameRate(); }
-    float frameRate() const { return m_sourceSettings.frameRate(); }
-
-    bool supportsFacingMode() const { return m_sourceSettings.supportsFacingMode(); }
-    const AtomicString&amp; facingMode() const;
-
-    bool supportsVolume() const { return m_sourceSettings.supportsVolume(); }
-    double volume() const { return m_sourceSettings.volume(); }
-
-    bool supportsSampleRate() const { return m_sourceSettings.supportsSampleRate(); }
-    unsigned long sampleRate() const { return m_sourceSettings.sampleRate(); }
-
-    bool supportsSampleSize() const { return m_sourceSettings.supportsSampleSize(); }
-    unsigned long sampleSize() const { return m_sourceSettings.sampleSize(); }
-
-    bool supportsEchoCancellation() const { return m_sourceSettings.supportsEchoCancellation(); }
-    bool echoCancellation() const { return m_sourceSettings.echoCancellation(); }
-
-    bool supportsDeviceId() const { return m_sourceSettings.supportsDeviceId(); }
-    const AtomicString&amp; deviceId() const { return m_sourceSettings.deviceId(); }
-
-    bool supportsGroupId() const { return m_sourceSettings.supportsGroupId(); }
-    const AtomicString&amp; groupId() const { return m_sourceSettings.groupId(); }
-
-private:
-    explicit MediaSourceSettings(const RealtimeMediaSourceSettings&amp;);
-
-    RealtimeMediaSourceSettings m_sourceSettings;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(MEDIA_STREAM)
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2011 Google Inc. All rights reserved.
</span><span class="cx">  * Copyright (C) 2011, 2015 Ericsson AB. All rights reserved.
</span><del>- * Copyright (C) 2013 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
</span><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span><span class="cx"> #include &quot;JSOverconstrainedError.h&quot;
</span><span class="cx"> #include &quot;MediaConstraintsImpl.h&quot;
</span><del>-#include &quot;MediaSourceSettings.h&quot;
</del><span class="cx"> #include &quot;MediaStream.h&quot;
</span><span class="cx"> #include &quot;MediaStreamPrivate.h&quot;
</span><span class="cx"> #include &quot;NotImplemented.h&quot;
</span><span class="lines">@@ -148,16 +147,122 @@
</span><span class="cx">     m_private-&gt;endTrack();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;MediaSourceSettings&gt; MediaStreamTrack::getSettings() const
</del><ins>+MediaStreamTrack::TrackSettings MediaStreamTrack::getSettings() const
</ins><span class="cx"> {
</span><del>-    return MediaSourceSettings::create(m_private-&gt;settings());
</del><ins>+    auto&amp; settings = m_private-&gt;settings();
+    TrackSettings result;
+    if (settings.supportsWidth())
+        result.width = settings.width();
+    if (settings.supportsHeight())
+        result.height = settings.height();
+    if (settings.supportsAspectRatio() &amp;&amp; settings.aspectRatio()) // FIXME: Why the check for zero here?
+        result.aspectRatio = settings.aspectRatio();
+    if (settings.supportsFrameRate())
+        result.frameRate = settings.frameRate();
+    if (settings.supportsFacingMode())
+        result.facingMode = RealtimeMediaSourceSettings::facingMode(settings.facingMode());
+    if (settings.supportsVolume())
+        result.volume = settings.volume();
+    if (settings.supportsSampleRate())
+        result.sampleRate = settings.sampleRate();
+    if (settings.supportsSampleSize())
+        result.sampleSize = settings.sampleSize();
+    if (settings.supportsEchoCancellation())
+        result.echoCancellation = settings.echoCancellation();
+    if (settings.supportsDeviceId())
+        result.deviceId = settings.deviceId();
+    if (settings.supportsGroupId())
+        result.groupId = settings.groupId();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;RealtimeMediaSourceCapabilities&gt; MediaStreamTrack::getCapabilities() const
</del><ins>+static DoubleRange capabilityDoubleRange(const CapabilityValueOrRange&amp; value)
</ins><span class="cx"> {
</span><del>-    return m_private-&gt;capabilities();
</del><ins>+    DoubleRange range;
+    switch (value.type()) {
+    case CapabilityValueOrRange::Double:
+        range.min = value.value().asDouble;
+        range.max = range.min;
+        break;
+    case CapabilityValueOrRange::DoubleRange:
+        range.min = value.rangeMin().asDouble;
+        range.max = value.rangeMax().asDouble;
+        break;
+    case CapabilityValueOrRange::Undefined:
+    case CapabilityValueOrRange::ULong:
+    case CapabilityValueOrRange::ULongRange:
+        ASSERT_NOT_REACHED();
+    }
+    return range;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static LongRange capabilityIntRange(const CapabilityValueOrRange&amp; value)
+{
+    LongRange range;
+    switch (value.type()) {
+    case CapabilityValueOrRange::ULong:
+        range.min = value.value().asInt;
+        range.max = range.min;
+        break;
+    case CapabilityValueOrRange::ULongRange:
+        range.min = value.rangeMin().asInt;
+        range.max = value.rangeMax().asInt;
+        break;
+    case CapabilityValueOrRange::Undefined:
+    case CapabilityValueOrRange::Double:
+    case CapabilityValueOrRange::DoubleRange:
+        ASSERT_NOT_REACHED();
+    }
+    return range;
+}
+
+static Vector&lt;String&gt; capabilityStringVector(const Vector&lt;RealtimeMediaSourceSettings::VideoFacingMode&gt;&amp; modes)
+{
+    Vector&lt;String&gt; result;
+    result.reserveCapacity(modes.size());
+    for (auto&amp; mode : modes)
+        result.uncheckedAppend(RealtimeMediaSourceSettings::facingMode(mode));
+    return result;
+}
+
+static Vector&lt;bool&gt; capabilityBooleanVector(RealtimeMediaSourceCapabilities::EchoCancellation cancellation)
+{
+    Vector&lt;bool&gt; result;
+    result.reserveCapacity(2);
+    result.uncheckedAppend(true);
+    result.uncheckedAppend(cancellation == RealtimeMediaSourceCapabilities::EchoCancellation::ReadWrite);
+    return result;
+}
+
+MediaStreamTrack::TrackCapabilities MediaStreamTrack::getCapabilities() const
+{
+    auto capabilities = m_private-&gt;capabilities();
+    TrackCapabilities result;
+    if (capabilities-&gt;supportsWidth())
+        result.width = capabilityIntRange(capabilities-&gt;width());
+    if (capabilities-&gt;supportsHeight())
+        result.height = capabilityIntRange(capabilities-&gt;height());
+    if (capabilities-&gt;supportsAspectRatio())
+        result.aspectRatio = capabilityDoubleRange(capabilities-&gt;aspectRatio());
+    if (capabilities-&gt;supportsFrameRate())
+        result.frameRate = capabilityDoubleRange(capabilities-&gt;frameRate());
+    if (capabilities-&gt;supportsFacingMode())
+        result.facingMode = capabilityStringVector(capabilities-&gt;facingMode());
+    if (capabilities-&gt;supportsVolume())
+        result.volume = capabilityDoubleRange(capabilities-&gt;volume());
+    if (capabilities-&gt;supportsSampleRate())
+        result.sampleRate = capabilityIntRange(capabilities-&gt;sampleRate());
+    if (capabilities-&gt;supportsSampleSize())
+        result.sampleSize = capabilityIntRange(capabilities-&gt;sampleSize());
+    if (capabilities-&gt;supportsEchoCancellation())
+        result.echoCancellation = capabilityBooleanVector(capabilities-&gt;echoCancellation());
+    if (capabilities-&gt;supportsDeviceId())
+        result.deviceId = capabilities-&gt;deviceId();
+    if (capabilities-&gt;supportsGroupId())
+        result.groupId = capabilities-&gt;groupId();
+    return result;
+}
+
</ins><span class="cx"> static Ref&lt;MediaConstraintsImpl&gt; createMediaConstraintsImpl(const std::optional&lt;MediaTrackConstraints&gt;&amp; constraints)
</span><span class="cx"> {
</span><span class="cx">     if (!constraints)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2011 Google Inc. All rights reserved.
</span><span class="cx">  * Copyright (C) 2011, 2015 Ericsson AB. All rights reserved.
</span><del>- * Copyright (C) 2013 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
</span><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -30,8 +30,10 @@
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ActiveDOMObject.h&quot;
</span><ins>+#include &quot;DoubleRange.h&quot;
</ins><span class="cx"> #include &quot;EventTarget.h&quot;
</span><span class="cx"> #include &quot;JSDOMPromise.h&quot;
</span><ins>+#include &quot;LongRange.h&quot;
</ins><span class="cx"> #include &quot;MediaStreamTrackPrivate.h&quot;
</span><span class="cx"> #include &quot;MediaTrackConstraints.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -38,8 +40,6 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class AudioSourceProvider;
</span><del>-class MediaConstraints;
-class MediaSourceSettings;
</del><span class="cx"> 
</span><span class="cx"> struct MediaTrackConstraints;
</span><span class="cx"> 
</span><span class="lines">@@ -73,9 +73,36 @@
</span><span class="cx">     Ref&lt;MediaStreamTrack&gt; clone();
</span><span class="cx">     void stopProducingData();
</span><span class="cx"> 
</span><del>-    RefPtr&lt;MediaSourceSettings&gt; getSettings() const;
-    RefPtr&lt;RealtimeMediaSourceCapabilities&gt; getCapabilities() const;
</del><ins>+    struct TrackSettings {
+        std::optional&lt;int&gt; width;
+        std::optional&lt;int&gt; height;
+        std::optional&lt;double&gt; aspectRatio;
+        std::optional&lt;double&gt; frameRate;
+        String facingMode;
+        std::optional&lt;double&gt; volume;
+        std::optional&lt;int&gt; sampleRate;
+        std::optional&lt;int&gt; sampleSize;
+        std::optional&lt;bool&gt; echoCancellation;
+        String deviceId;
+        String groupId;
+    };
+    TrackSettings getSettings() const;
</ins><span class="cx"> 
</span><ins>+    struct TrackCapabilities {
+        std::optional&lt;LongRange&gt; width;
+        std::optional&lt;LongRange&gt; height;
+        std::optional&lt;DoubleRange&gt; aspectRatio;
+        std::optional&lt;DoubleRange&gt; frameRate;
+        std::optional&lt;Vector&lt;String&gt;&gt; facingMode;
+        std::optional&lt;DoubleRange&gt; volume;
+        std::optional&lt;LongRange&gt; sampleRate;
+        std::optional&lt;LongRange&gt; sampleSize;
+        std::optional&lt;Vector&lt;bool&gt;&gt; echoCancellation;
+        String deviceId;
+        String groupId;
+    };
+    TrackCapabilities getCapabilities() const;
+
</ins><span class="cx">     const MediaTrackConstraints&amp; getConstraints() const { return m_constraints; }
</span><span class="cx">     void applyConstraints(const std::optional&lt;MediaTrackConstraints&gt;&amp;, DOMPromise&lt;void&gt;&amp;&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 (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2011 Google Inc. All rights reserved.
</span><del>- * Copyright (C) 2013 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -26,11 +26,11 @@
</span><span class="cx"> enum MediaStreamTrackState { &quot;new&quot;, &quot;live&quot;, &quot;ended&quot; };
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    ActiveDOMObject,
</ins><span class="cx">     Conditional=MEDIA_STREAM,
</span><del>-    ActiveDOMObject,
</del><ins>+    PrivateIdentifier,
+    PublicIdentifier,
</ins><span class="cx">     SkipVTableValidation,
</span><del>-    PrivateIdentifier,
-    PublicIdentifier
</del><span class="cx"> ] interface MediaStreamTrack : EventTarget {
</span><span class="cx">     readonly attribute DOMString kind;
</span><span class="cx">     readonly attribute DOMString id;
</span><span class="lines">@@ -48,9 +48,47 @@
</span><span class="cx">     [ImplementedAs=stopProducingData] void stop();
</span><span class="cx"> 
</span><span class="cx">     MediaTrackConstraints getConstraints();
</span><del>-    [Custom] MediaSourceSettings getSettings();
-    [Custom] MediaTrackCapabilities getCapabilities();
</del><ins>+    MediaTrackSettings getSettings();
+    MediaTrackCapabilities getCapabilities();
</ins><span class="cx">     Promise&lt;void&gt; applyConstraints(optional MediaTrackConstraints constraints);
</span><span class="cx"> 
</span><span class="cx">     attribute EventHandler onoverconstrained;
</span><span class="cx"> };
</span><ins>+
+[
+    Conditional=MEDIA_STREAM,
+    JSGenerateToJSObject,
+] dictionary MediaTrackCapabilities {
+    LongRange width;
+    LongRange height;
+    DoubleRange aspectRatio;
+    DoubleRange frameRate;
+    sequence&lt;DOMString&gt; facingMode;
+    DoubleRange volume;
+    LongRange sampleRate;
+    LongRange sampleSize;
+    sequence&lt;boolean&gt; echoCancellation;
+    // FIXME: add latency
+    // FIXME: add channelCount
+    DOMString deviceId;
+    DOMString groupId;
+};
+
+[
+    Conditional=MEDIA_STREAM,
+    JSGenerateToJSObject,
+] dictionary MediaTrackSettings {
+    long width;
+    long height;
+    double aspectRatio;
+    double frameRate;
+    DOMString facingMode;
+    double volume;
+    long sampleRate;
+    long sampleSize;
+    boolean echoCancellation;
+    // FIXME: add latency
+    // FIXME: add channelCount
+    DOMString deviceId;
+    DOMString groupId;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaTrackConstraintsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaTrackConstraints.h        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -26,7 +26,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx"> 
</span><del>-#include &lt;wtf/Optional.h&gt;
</del><ins>+#include &quot;DoubleRange.h&quot;
+#include &quot;LongRange.h&quot;
</ins><span class="cx"> #include &lt;wtf/Variant.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="lines">@@ -35,16 +36,6 @@
</span><span class="cx"> 
</span><span class="cx"> class MediaConstraintsImpl;
</span><span class="cx"> 
</span><del>-struct DoubleRange {
-    std::optional&lt;double&gt; min;
-    std::optional&lt;double&gt; max;
-};
-
-struct LongRange {
-    std::optional&lt;int&gt; max;
-    std::optional&lt;int&gt; min;
-};
-
</del><span class="cx"> struct ConstrainBooleanParameters {
</span><span class="cx">     std::optional&lt;bool&gt; exact;
</span><span class="cx">     std::optional&lt;bool&gt; ideal;
</span><span class="lines">@@ -80,8 +71,6 @@
</span><span class="cx">     std::optional&lt;ConstrainLong&gt; sampleRate;
</span><span class="cx">     std::optional&lt;ConstrainLong&gt; sampleSize;
</span><span class="cx">     std::optional&lt;ConstrainBoolean&gt; echoCancellation;
</span><del>-    std::optional&lt;ConstrainDouble&gt; latency;
-    std::optional&lt;ConstrainLong&gt; channelCount;
</del><span class="cx">     std::optional&lt;ConstrainDOMString&gt; deviceId;
</span><span class="cx">     std::optional&lt;ConstrainDOMString&gt; groupId;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaTrackConstraintsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaTrackConstraints.idl (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaTrackConstraints.idl        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaTrackConstraints.idl        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    Conditional=MEDIA_STREAM,
</ins><span class="cx">     JSGenerateToJSObject,
</span><span class="cx">     ImplementedAs=MediaTrackConstraintSet
</span><span class="cx"> ] dictionary MediaTrackConstraintSet {
</span><span class="lines">@@ -42,8 +43,8 @@
</span><span class="cx">     ConstrainLong sampleRate;
</span><span class="cx">     ConstrainLong sampleSize;
</span><span class="cx">     ConstrainBoolean echoCancellation;
</span><del>-    ConstrainDouble latency;
-    ConstrainLong channelCount;
</del><ins>+    // FIXME: add latency
+    // FIXME: add channelCount
</ins><span class="cx">     ConstrainDOMString deviceId;
</span><span class="cx">     ConstrainDOMString groupId;
</span><span class="cx"> };
</span><span class="lines">@@ -54,6 +55,7 @@
</span><span class="cx"> typedef (DOMString or sequence&lt;DOMString&gt; or ConstrainDOMStringParameters) ConstrainDOMString;
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    Conditional=MEDIA_STREAM,
</ins><span class="cx">     JSGenerateToJSObject,
</span><span class="cx">     ImplementedAs=ConstrainBooleanParameters
</span><span class="cx"> ] dictionary ConstrainBooleanParameters {
</span><span class="lines">@@ -62,6 +64,7 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    Conditional=MEDIA_STREAM,
</ins><span class="cx">     JSGenerateToJSObject,
</span><span class="cx">     ImplementedAs=ConstrainDOMStringParameters
</span><span class="cx"> ] dictionary ConstrainDOMStringParameters {
</span><span class="lines">@@ -70,6 +73,7 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    Conditional=MEDIA_STREAM,
</ins><span class="cx">     JSGenerateToJSObject,
</span><span class="cx">     ImplementedAs=ConstrainDoubleRange
</span><span class="cx"> ] dictionary ConstrainDoubleRange : DoubleRange {
</span><span class="lines">@@ -78,6 +82,7 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    Conditional=MEDIA_STREAM,
</ins><span class="cx">     JSGenerateToJSObject,
</span><span class="cx">     ImplementedAs=ConstrainLongRange
</span><span class="cx"> ] dictionary ConstrainLongRange : LongRange {
</span><span class="lines">@@ -84,17 +89,3 @@
</span><span class="cx">     long exact;
</span><span class="cx">     long ideal;
</span><span class="cx"> };
</span><del>-
-[
-    ImplementedAs=DoubleRange
-] dictionary DoubleRange {
-    double max;
-    double min;
-};
-
-[
-    ImplementedAs=LongRange
-] dictionary LongRange {
-    long max;
-    long min;
-};
</del></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaTrackSupportedConstraintsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaTrackSupportedConstraints.h (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaTrackSupportedConstraints.h        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaTrackSupportedConstraints.h        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -32,38 +32,20 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx"> 
</span><del>-#include &quot;RealtimeMediaSourceSupportedConstraints.h&quot;
-#include &quot;ScriptWrappable.h&quot;
-#include &lt;wtf/RefCounted.h&gt;
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class MediaTrackSupportedConstraints : public RefCounted&lt;MediaTrackSupportedConstraints&gt;, public ScriptWrappable {
-public:
-    static Ref&lt;MediaTrackSupportedConstraints&gt; create(const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
-    {
-        return adoptRef(*new MediaTrackSupportedConstraints(supportedConstraints));
-    }
-
-    bool supportsWidth() const { return m_supportedConstraints.supportsWidth(); }
-    bool supportsHeight() const { return m_supportedConstraints.supportsHeight(); }
-    bool supportsAspectRatio() const { return m_supportedConstraints.supportsAspectRatio(); }
-    bool supportsFrameRate() const { return m_supportedConstraints.supportsFrameRate(); }
-    bool supportsFacingMode() const { return m_supportedConstraints.supportsFacingMode(); }
-    bool supportsVolume() const { return m_supportedConstraints.supportsVolume(); }
-    bool supportsSampleRate() const { return m_supportedConstraints.supportsSampleRate(); }
-    bool supportsSampleSize() const { return m_supportedConstraints.supportsSampleSize(); }
-    bool supportsEchoCancellation() const { return m_supportedConstraints.supportsEchoCancellation(); }
-    bool supportsDeviceId() const { return m_supportedConstraints.supportsDeviceId(); }
-    bool supportsGroupId() const { return m_supportedConstraints.supportsGroupId(); }
-
-private:
-    explicit MediaTrackSupportedConstraints(const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints)
-        : m_supportedConstraints(supportedConstraints)
-    {
-    }
-
-    RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
</del><ins>+struct MediaTrackSupportedConstraints {
+    bool width;
+    bool height;
+    bool aspectRatio;
+    bool frameRate;
+    bool facingMode;
+    bool volume;
+    bool sampleRate;
+    bool sampleSize;
+    bool echoCancellation;
+    bool deviceId;
+    bool groupId;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaTrackSupportedConstraintsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaTrackSupportedConstraints.idl (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaTrackSupportedConstraints.idl        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/Modules/mediastream/MediaTrackSupportedConstraints.idl        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -30,10 +30,17 @@
</span><span class="cx"> 
</span><span class="cx"> [
</span><span class="cx">     Conditional=MEDIA_STREAM,
</span><del>-    NoInterfaceObject,
-    ImplementationLacksVTable,
-    JSCustomGetOwnPropertySlotAndDescriptor,
-    CustomEnumerateProperty,
-] interface MediaTrackSupportedConstraints {
</del><ins>+    JSGenerateToJSObject,
+] dictionary MediaTrackSupportedConstraints {
+    boolean width = true;
+    boolean height = true;
+    boolean aspectRatio = true;
+    boolean frameRate = true;
+    boolean facingMode = true;
+    boolean volume = true;
+    boolean sampleRate = true;
+    boolean sampleSize = true;
+    boolean echoCancellation = true;
+    boolean deviceId = true;
+    boolean groupId = true;
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -113,7 +113,6 @@
</span><span class="cx">                 071E49701AD5AB5E008A50B4 /* MediaPlaybackTargetMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 071E496F1AD5AB5E008A50B4 /* MediaPlaybackTargetMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0720B0A014D3323500642955 /* GenericEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0720B09E14D3323500642955 /* GenericEventQueue.cpp */; };
</span><span class="cx">                 0720B0A114D3323500642955 /* GenericEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0720B09F14D3323500642955 /* GenericEventQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                072560FB1BFC2482004F9359 /* JSMediaTrackSupportedConstraintsCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C1C0E61BFB90A700BD2256 /* JSMediaTrackSupportedConstraintsCustom.cpp */; };
</del><span class="cx">                 07277E4C17D018CC0015534D /* JSMediaStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07277E4017D018CC0015534D /* JSMediaStream.cpp */; };
</span><span class="cx">                 07277E4D17D018CC0015534D /* JSMediaStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 07277E4117D018CC0015534D /* JSMediaStream.h */; };
</span><span class="cx">                 07277E4E17D018CC0015534D /* JSMediaStreamAudioDestinationNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07277E4217D018CC0015534D /* JSMediaStreamAudioDestinationNode.cpp */; };
</span><span class="lines">@@ -280,9 +279,6 @@
</span><span class="cx">                 07BDD6EC1469B4C2009C9F85 /* JSTrackEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B5A30A14687B8400A81ECE /* JSTrackEventCustom.cpp */; };
</span><span class="cx">                 07C1C0E21BFB600100BD2256 /* MediaTrackSupportedConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C1C0E01BFB600100BD2256 /* MediaTrackSupportedConstraints.h */; };
</span><span class="cx">                 07C1C0E51BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C1C0E41BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                07C59B6817F784BA000FBCBB /* MediaSourceSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6517F784BA000FBCBB /* MediaSourceSettings.cpp */; };
-                07C59B6917F784BA000FBCBB /* MediaSourceSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C59B6617F784BA000FBCBB /* MediaSourceSettings.h */; };
-                07C59B6E17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */; };
</del><span class="cx">                 07CE77D516712A6A00C55A47 /* InbandTextTrackPrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 07D1503B1DDB6965008F7598 /* RealtimeMediaSourcePreview.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D1503A1DDB6688008F7598 /* RealtimeMediaSourcePreview.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 07D637401BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D6373E1BB0B11300256CE9 /* WebAudioSourceProviderAVFObjC.h */; };
</span><span class="lines">@@ -3413,6 +3409,12 @@
</span><span class="cx">                 939B02EE0EA2DBC400C54570 /* WidthIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 939B02EC0EA2DBC400C54570 /* WidthIterator.cpp */; };
</span><span class="cx">                 939B02EF0EA2DBC400C54570 /* WidthIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 939B02ED0EA2DBC400C54570 /* WidthIterator.h */; };
</span><span class="cx">                 93A38B4B0D0E5808006872C2 /* EditorCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93A38B4A0D0E5808006872C2 /* EditorCommand.cpp */; };
</span><ins>+                93A806151E03B51C008A1F26 /* DoubleRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A806111E03B51C008A1F26 /* DoubleRange.h */; };
+                93A806171E03B51C008A1F26 /* LongRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A806131E03B51C008A1F26 /* LongRange.h */; };
+                93A8061D1E03B585008A1F26 /* JSDoubleRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93A806191E03B585008A1F26 /* JSDoubleRange.cpp */; };
+                93A8061E1E03B585008A1F26 /* JSDoubleRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A8061A1E03B585008A1F26 /* JSDoubleRange.h */; };
+                93A8061F1E03B585008A1F26 /* JSLongRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93A8061B1E03B585008A1F26 /* JSLongRange.cpp */; };
+                93A806201E03B585008A1F26 /* JSLongRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A8061C1E03B585008A1F26 /* JSLongRange.h */; };
</ins><span class="cx">                 93B2D8160F9920D2006AE6B2 /* SuddenTermination.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B2D8150F9920D2006AE6B2 /* SuddenTermination.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 93B2D8180F9920EE006AE6B2 /* SuddenTermination.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93B2D8170F9920EE006AE6B2 /* SuddenTermination.mm */; };
</span><span class="cx">                 93B6A0E60B0BCA5C00F5027A /* ContextMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B6A0E50B0BCA5C00F5027A /* ContextMenu.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -7246,10 +7248,6 @@
</span><span class="cx">                 07C1C0E01BFB600100BD2256 /* MediaTrackSupportedConstraints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaTrackSupportedConstraints.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C1C0E11BFB600100BD2256 /* MediaTrackSupportedConstraints.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaTrackSupportedConstraints.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C1C0E41BFB60ED00BD2256 /* RealtimeMediaSourceSupportedConstraints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealtimeMediaSourceSupportedConstraints.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                07C1C0E61BFB90A700BD2256 /* JSMediaTrackSupportedConstraintsCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaTrackSupportedConstraintsCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B6517F784BA000FBCBB /* MediaSourceSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSourceSettings.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B6617F784BA000FBCBB /* MediaSourceSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSourceSettings.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaStreamTrackCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 07C8AD111D073D630087C5CE /* AVFoundationMIMETypeCache.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AVFoundationMIMETypeCache.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07C8AD121D073D630087C5CE /* AVFoundationMIMETypeCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVFoundationMIMETypeCache.h; 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="lines">@@ -11006,6 +11004,14 @@
</span><span class="cx">                 939B02EC0EA2DBC400C54570 /* WidthIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WidthIterator.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 939B02ED0EA2DBC400C54570 /* WidthIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WidthIterator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 93A38B4A0D0E5808006872C2 /* EditorCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EditorCommand.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                93A806111E03B51C008A1F26 /* DoubleRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DoubleRange.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                93A806121E03B51C008A1F26 /* DoubleRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DoubleRange.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                93A806131E03B51C008A1F26 /* LongRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LongRange.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                93A806141E03B51C008A1F26 /* LongRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LongRange.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                93A806191E03B585008A1F26 /* JSDoubleRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDoubleRange.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                93A8061A1E03B585008A1F26 /* JSDoubleRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDoubleRange.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                93A8061B1E03B585008A1F26 /* JSLongRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSLongRange.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                93A8061C1E03B585008A1F26 /* JSLongRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSLongRange.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 93B2D8150F9920D2006AE6B2 /* SuddenTermination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SuddenTermination.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 93B2D8170F9920EE006AE6B2 /* SuddenTermination.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SuddenTermination.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 93B6A0E50B0BCA5C00F5027A /* ContextMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ContextMenu.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -15032,9 +15038,13 @@
</span><span class="cx">                                 073794ED19EE364200E5A045 /* DOMURLMediaStream.cpp */,
</span><span class="cx">                                 15FCC9FD1B4DF85600E72326 /* DOMURLMediaStream.h */,
</span><span class="cx">                                 073794EE19EE364200E5A045 /* DOMURLMediaStream.idl */,
</span><ins>+                                93A806111E03B51C008A1F26 /* DoubleRange.h */,
+                                93A806121E03B51C008A1F26 /* DoubleRange.idl */,
</ins><span class="cx">                                 0779BF0A18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp */,
</span><span class="cx">                                 0779BF0B18453168000B6AE7 /* HTMLMediaElementMediaStream.h */,
</span><span class="cx">                                 0779BF0C18453168000B6AE7 /* HTMLMediaElementMediaStream.idl */,
</span><ins>+                                93A806131E03B51C008A1F26 /* LongRange.h */,
+                                93A806141E03B51C008A1F26 /* LongRange.idl */,
</ins><span class="cx">                                 07221B4A17CEC32700848E51 /* MediaConstraintsImpl.cpp */,
</span><span class="cx">                                 07221B4B17CEC32700848E51 /* MediaConstraintsImpl.h */,
</span><span class="cx">                                 159AE82A1B3A402F0037478B /* MediaDeviceInfo.cpp */,
</span><span class="lines">@@ -15051,8 +15061,6 @@
</span><span class="cx">                                 5E16A2E31BFA64FB0029A21E /* MediaEndpointPeerConnection.h */,
</span><span class="cx">                                 5E4EAB021D07164C0006A184 /* MediaEndpointSessionDescription.cpp */,
</span><span class="cx">                                 5E4EAB031D07164C0006A184 /* MediaEndpointSessionDescription.h */,
</span><del>-                                07C59B6517F784BA000FBCBB /* MediaSourceSettings.cpp */,
-                                07C59B6617F784BA000FBCBB /* MediaSourceSettings.h */,
</del><span class="cx">                                 07221B4C17CEC32700848E51 /* MediaStream.cpp */,
</span><span class="cx">                                 07221B4D17CEC32700848E51 /* MediaStream.h */,
</span><span class="cx">                                 07221B4E17CEC32700848E51 /* MediaStream.idl */,
</span><span class="lines">@@ -15268,6 +15276,10 @@
</span><span class="cx">                 07CFD99317D01405001C4FFC /* MediaStream */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                93A806191E03B585008A1F26 /* JSDoubleRange.cpp */,
+                                93A8061A1E03B585008A1F26 /* JSDoubleRange.h */,
+                                93A8061B1E03B585008A1F26 /* JSLongRange.cpp */,
+                                93A8061C1E03B585008A1F26 /* JSLongRange.h */,
</ins><span class="cx">                                 157CC2611B7C1CA400D8D075 /* JSMediaDeviceInfo.cpp */,
</span><span class="cx">                                 157CC2621B7C1CA400D8D075 /* JSMediaDeviceInfo.h */,
</span><span class="cx">                                 15739BB81B42012200D258C1 /* JSMediaDevices.cpp */,
</span><span class="lines">@@ -22100,8 +22112,6 @@
</span><span class="cx">                                 7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */,
</span><span class="cx">                                 BCE1C43F0D9830F4003B02F2 /* JSLocationCustom.cpp */,
</span><span class="cx">                                 AD726FE716D9F204003A4E6D /* JSMediaListCustom.h */,
</span><del>-                                07C59B6D17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp */,
-                                07C1C0E61BFB90A700BD2256 /* JSMediaTrackSupportedConstraintsCustom.cpp */,
</del><span class="cx">                                 E1A5F99A0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp */,
</span><span class="cx">                                 410B7E711045FAB000D8224F /* JSMessageEventCustom.cpp */,
</span><span class="cx">                                 E1ADED460E76B8DD004A1A5E /* JSMessagePortCustom.cpp */,
</span><span class="lines">@@ -25615,6 +25625,7 @@
</span><span class="cx">                                 7CE6CBFB187F370700D46BF5 /* FormatConverter.h in Headers */,
</span><span class="cx">                                 F50664F8157F52DC00AC226F /* FormController.h in Headers */,
</span><span class="cx">                                 514C76700CE923A1007EF3CD /* FormData.h in Headers */,
</span><ins>+                                93A8061E1E03B585008A1F26 /* JSDoubleRange.h in Headers */,
</ins><span class="cx">                                 085B92BB0EFDE73D00E6123C /* FormDataBuilder.h in Headers */,
</span><span class="cx">                                 A8136D380973A8E700D74463 /* FormDataList.h in Headers */,
</span><span class="cx">                                 7EE6846712D26E3800E79415 /* FormDataStreamCFNet.h in Headers */,
</span><span class="lines">@@ -25948,6 +25959,7 @@
</span><span class="cx">                                 510A58E51BAA40B100C19282 /* InProcessIDBServer.h in Headers */,
</span><span class="cx">                                 2EB767571DA19BDF003E23B5 /* InputEvent.h in Headers */,
</span><span class="cx">                                 37E3524D12450C6600BAF5D9 /* InputType.h in Headers */,
</span><ins>+                                93A806151E03B51C008A1F26 /* DoubleRange.h in Headers */,
</ins><span class="cx">                                 C348612415FDE21E007A1CC9 /* InputTypeNames.h in Headers */,
</span><span class="cx">                                 93309DEA099E64920056E581 /* InsertIntoTextNodeCommand.h in Headers */,
</span><span class="cx">                                 93309DEC099E64920056E581 /* InsertLineBreakCommand.h in Headers */,
</span><span class="lines">@@ -26660,6 +26672,7 @@
</span><span class="cx">                                 450CEBF115073BBE002BB149 /* LabelableElement.h in Headers */,
</span><span class="cx">                                 A456FA2711AD4A830020B420 /* LabelsNodeList.h in Headers */,
</span><span class="cx">                                 85EC9AFB0A71A2C600EEEAED /* Language.h in Headers */,
</span><ins>+                                93A806201E03B585008A1F26 /* JSLongRange.h in Headers */,
</ins><span class="cx">                                 7C4C96E31AD44ABF00365A50 /* LaunchServicesSPI.h in Headers */,
</span><span class="cx">                                 2917B5621473496C0052C9D0 /* LayerFlushScheduler.h in Headers */,
</span><span class="cx">                                 2917B5631473496C0052C9D0 /* LayerFlushSchedulerClient.h in Headers */,
</span><span class="lines">@@ -26819,7 +26832,6 @@
</span><span class="cx">                                 CDC8B5A7180474F70016E685 /* MediaSourcePrivateAVFObjC.h in Headers */,
</span><span class="cx">                                 CDDC1E7A18A952F30027A9D4 /* MediaSourcePrivateClient.h in Headers */,
</span><span class="cx">                                 CD61FE681794AADB004101EB /* MediaSourceRegistry.h in Headers */,
</span><del>-                                07C59B6917F784BA000FBCBB /* MediaSourceSettings.h in Headers */,
</del><span class="cx">                                 078E091517D14D1C00420AA1 /* MediaStream.h in Headers */,
</span><span class="cx">                                 078E094C17D1709600420AA1 /* MediaStreamAudioDestinationNode.h in Headers */,
</span><span class="cx">                                 0783228518013ED800999E0C /* MediaStreamAudioSource.h in Headers */,
</span><span class="lines">@@ -27546,6 +27558,7 @@
</span><span class="cx">                                 4150F9F112B6E0E70008C860 /* SliderThumbElement.h in Headers */,
</span><span class="cx">                                 9B532EA41BA928570038A827 /* SlotAssignment.h in Headers */,
</span><span class="cx">                                 4B6FA6F40C39E48C00087011 /* SmartReplace.h in Headers */,
</span><ins>+                                93A806171E03B51C008A1F26 /* LongRange.h in Headers */,
</ins><span class="cx">                                 E4AFD00C0DAF335400F5F55C /* SMILTime.h in Headers */,
</span><span class="cx">                                 E4AFD00E0DAF335500F5F55C /* SMILTimeContainer.h in Headers */,
</span><span class="cx">                                 5C7C88D81D0F1F4A009D2F6D /* SocketProvider.h in Headers */,
</span><span class="lines">@@ -28937,6 +28950,7 @@
</span><span class="cx">                                 7CFDC57C1AC1D80500E24A57 /* ContentExtensionError.cpp in Sources */,
</span><span class="cx">                                 26F0C8971A2E724B002794F8 /* ContentExtensionParser.cpp in Sources */,
</span><span class="cx">                                 26F0C89B1A2EC110002794F8 /* ContentExtensionRule.cpp in Sources */,
</span><ins>+                                93A8061F1E03B585008A1F26 /* JSLongRange.cpp in Sources */,
</ins><span class="cx">                                 26F0C89F1A2EC3BE002794F8 /* ContentExtensionsBackend.cpp in Sources */,
</span><span class="cx">                                 51FB67DB1AE6B82B00D06C5A /* ContentExtensionStyleSheet.cpp in Sources */,
</span><span class="cx">                                 A149786E1ABAF33800CEF7E4 /* ContentFilter.cpp in Sources */,
</span><span class="lines">@@ -29328,6 +29342,7 @@
</span><span class="cx">                                 514B3F760C722055000530DF /* FileSystemMac.mm in Sources */,
</span><span class="cx">                                 5160300B0CC4251200C8AC25 /* FileSystemPOSIX.cpp in Sources */,
</span><span class="cx">                                 BC5EB69E0E81DAEB00B25965 /* FillLayer.cpp in Sources */,
</span><ins>+                                93A8061D1E03B585008A1F26 /* JSDoubleRange.cpp in Sources */,
</ins><span class="cx">                                 08C925190FCC7C4A00480DEC /* FilterEffect.cpp in Sources */,
</span><span class="cx">                                 31313F651443B35F006E2A90 /* FilterEffectRenderer.cpp in Sources */,
</span><span class="cx">                                 49ECEB6D1499790D00CDD3A4 /* FilterOperation.cpp in Sources */,
</span><span class="lines">@@ -30073,11 +30088,9 @@
</span><span class="cx">                                 FDBD480C159BC6870093EB4F /* JSMediaStreamAudioSourceNode.cpp in Sources */,
</span><span class="cx">                                 07277E5017D018CC0015534D /* JSMediaStreamEvent.cpp in Sources */,
</span><span class="cx">                                 07277E5217D018CC0015534D /* JSMediaStreamTrack.cpp in Sources */,
</span><del>-                                07C59B6E17F794F6000FBCBB /* JSMediaStreamTrackCustom.cpp in Sources */,
</del><span class="cx">                                 07277E5417D018CC0015534D /* JSMediaStreamTrackEvent.cpp in Sources */,
</span><span class="cx">                                 932CC0D41DFFD667004C0F9F /* JSMediaTrackConstraints.cpp in Sources */,
</span><span class="cx">                                 0787C4691BFBDF6F006DCD7F /* JSMediaTrackSupportedConstraints.cpp in Sources */,
</span><del>-                                072560FB1BFC2482004F9359 /* JSMediaTrackSupportedConstraintsCustom.cpp in Sources */,
</del><span class="cx">                                 E107400D0E77BDC00033AF24 /* JSMessageChannel.cpp in Sources */,
</span><span class="cx">                                 E1A5F99B0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp in Sources */,
</span><span class="cx">                                 75793EC80D0CE72D007FC0AC /* JSMessageEvent.cpp in Sources */,
</span><span class="lines">@@ -30618,7 +30631,6 @@
</span><span class="cx">                                 CD3A495E17A9D01B00274E42 /* MediaSource.cpp in Sources */,
</span><span class="cx">                                 CDC8B5A6180474F70016E685 /* MediaSourcePrivateAVFObjC.mm in Sources */,
</span><span class="cx">                                 CD61FE671794AADB004101EB /* MediaSourceRegistry.cpp in Sources */,
</span><del>-                                07C59B6817F784BA000FBCBB /* MediaSourceSettings.cpp in Sources */,
</del><span class="cx">                                 078E08FF17D14CEE00420AA1 /* MediaStream.cpp in Sources */,
</span><span class="cx">                                 078E094B17D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp in Sources */,
</span><span class="cx">                                 0783228418013ED800999E0C /* MediaStreamAudioSource.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,169 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;JSMediaStreamTrack.h&quot;
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;Dictionary.h&quot;
-#include &quot;ExceptionCode.h&quot;
-#include &quot;JSDOMBinding.h&quot;
-#include &quot;MediaSourceSettings.h&quot;
-#include &quot;MediaStreamTrack.h&quot;
-#include &quot;WebCoreJSClientData.h&quot;
-#include &lt;runtime/JSObject.h&gt;
-#include &lt;runtime/ObjectConstructor.h&gt;
-
-using namespace JSC;
-
-namespace WebCore {
-
-JSC::JSValue JSMediaStreamTrack::getSettings(ExecState&amp; state)
-{
-    VM&amp; vm = state.vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    JSValue thisValue = state.thisValue();
-    JSMediaStreamTrack* castedThis = jsDynamicDowncast&lt;JSMediaStreamTrack*&gt;(thisValue);
-    if (UNLIKELY(!castedThis))
-        return JSValue::decode(throwThisTypeError(state, scope, &quot;MediaStreamTrack&quot;, &quot;getSettings&quot;));
-
-    JSObject* object = constructEmptyObject(&amp;state);
-    auto&amp; impl = castedThis-&gt;wrapped();
-    RefPtr&lt;MediaSourceSettings&gt; settings = WTF::getPtr(impl.getSettings());
-
-    if (settings-&gt;supportsWidth())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;width&quot;), jsNumber(settings-&gt;width()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsHeight())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;height&quot;), jsNumber(settings-&gt;height()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsAspectRatio() &amp;&amp; settings-&gt;aspectRatio())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;aspectRatio&quot;), jsDoubleNumber(settings-&gt;aspectRatio()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsFrameRate())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;frameRate&quot;), jsDoubleNumber(settings-&gt;frameRate()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsFacingMode())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;facingMode&quot;), jsStringWithCache(&amp;state, settings-&gt;facingMode()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsVolume())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;volume&quot;), jsDoubleNumber(settings-&gt;volume()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsSampleRate())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;sampleRate&quot;), jsNumber(settings-&gt;sampleRate()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsSampleSize())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;sampleSize&quot;), jsNumber(settings-&gt;sampleSize()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsEchoCancellation())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;echoCancellation&quot;), jsBoolean(settings-&gt;echoCancellation()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsDeviceId())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;deviceId&quot;), jsStringWithCache(&amp;state, settings-&gt;deviceId()), DontDelete | ReadOnly);
-    if (settings-&gt;supportsGroupId())
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;groupId&quot;), jsStringWithCache(&amp;state, settings-&gt;groupId()), DontDelete | ReadOnly);
-    
-    return object;
-}
-
-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.asInt));
-            object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;max&quot;), jsNumber(max.asInt));
-        }
-
-        return object;
-    }
-
-    if (value.type() == CapabilityValueOrRange::Double)
-        return jsNumber(value.value().asDouble);
-
-    return jsNumber(value.value().asInt);
-}
-
-JSC::JSValue JSMediaStreamTrack::getCapabilities(ExecState&amp; state)
-{
-    VM&amp; vm = state.vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    JSValue thisValue = state.thisValue();
-    JSMediaStreamTrack* castedThis = jsDynamicDowncast&lt;JSMediaStreamTrack*&gt;(thisValue);
-    if (UNLIKELY(!castedThis))
-        return JSValue::decode(throwThisTypeError(state, scope, &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;), toJS&lt;IDLSequence&lt;IDLDOMString&gt;&gt;(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.reserveInitialCapacity(2);
-
-        cancellation.uncheckedAppend(&quot;true&quot;);
-        cancellation.uncheckedAppend(capabilities-&gt;echoCancellation() == RealtimeMediaSourceCapabilities::EchoCancellation::ReadWrite ? &quot;true&quot; : &quot;false&quot;);
-
-        object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;echoCancellation&quot;), toJS&lt;IDLSequence&lt;IDLDOMString&gt;&gt;(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;
-}
-
-} // namespace WebCore
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMediaTrackSupportedConstraintsCustomcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -1,81 +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;
-#include &quot;JSMediaTrackSupportedConstraints.h&quot;
-
-#if ENABLE(MEDIA_STREAM)
-
-#include &quot;JSDOMBinding.h&quot;
-#include &quot;JSDOMWrapper.h&quot;
-#include &quot;RealtimeMediaSourceCenter.h&quot;
-
-using namespace JSC;
-
-namespace WebCore {
-
-#define FOR_EACH_CONSTRAINT_PROPERTY(macro) \
-    macro(width, Width) \
-    macro(height, Height) \
-    macro(aspectRatio, AspectRatio) \
-    macro(frameRate, FrameRate) \
-    macro(facingMode, FacingMode) \
-    macro(volume, Volume) \
-    macro(sampleRate, SampleRate) \
-    macro(sampleSize, SampleSize) \
-    macro(echoCancellation, EchoCancellation) \
-    macro(deviceId, DeviceId) \
-    macro(groupId, GroupId)
-
-bool JSMediaTrackSupportedConstraints::getOwnPropertySlotDelegate(ExecState*, PropertyName propertyName, PropertySlot&amp; slot)
-{
-#define CHECK_PROPERTY(lowerName, capitalName) \
-    if (AtomicString(#lowerName, AtomicString::ConstructFromLiteral) == propertyNameToAtomicString(propertyName)) { \
-        slot.setValue(this, DontDelete | ReadOnly, jsBoolean(wrapped().supports##capitalName())); \
-        return true; \
-    }
-
-    FOR_EACH_CONSTRAINT_PROPERTY(CHECK_PROPERTY)
-
-    return false;
-}
-
-void JSMediaTrackSupportedConstraints::getOwnPropertyNames(JSObject* object, ExecState* state, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
-{
-#define MAYBE_ADD_PROPERTY(lowerName, capitalName) \
-    if (supportedConstraints.supports##capitalName()) \
-        propertyNames.add(Identifier::fromString(state, AtomicString(#lowerName, AtomicString::ConstructFromLiteral)));
-
-    static const RealtimeMediaSourceSupportedConstraints&amp; supportedConstraints = RealtimeMediaSourceCenter::singleton().supportedConstraints();
-
-    FOR_EACH_CONSTRAINT_PROPERTY(MAYBE_ADD_PROPERTY)
-
-    auto* thisObject = jsCast&lt;JSMediaTrackSupportedConstraints*&gt;(object);
-    Base::getOwnPropertyNames(thisObject, state, propertyNames, mode);
-}
-
-} // namespace WebCore
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #include &quot;AudioSourceProvider.h&quot;
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><del>-#include &quot;MediaSourceSettings.h&quot;
</del><span class="cx"> #include &quot;UUID.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamMediaStreamTrackPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h (209958 => 209959)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h        2016-12-17 05:05:17 UTC (rev 209958)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h        2016-12-17 06:42:39 UTC (rev 209959)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> class AudioSourceProvider;
</span><span class="cx"> class GraphicsContext;
</span><span class="cx"> class MediaSample;
</span><del>-class MediaSourceSettings;
</del><span class="cx"> class RealtimeMediaSourceCapabilities;
</span><span class="cx"> 
</span><span class="cx"> class MediaStreamTrackPrivate : public RefCounted&lt;MediaStreamTrackPrivate&gt;, public RealtimeMediaSource::Observer {
</span></span></pre>
</div>
</div>

</body>
</html>