<!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>[209674] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/209674">209674</a></dd>
<dt>Author</dt> <dd>weinig@apple.com</dd>
<dt>Date</dt> <dd>2016-12-10 14:13:58 -0800 (Sat, 10 Dec 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[WebIDL] Merge JSDictionary into Dictionary, and remove unused bits
https://bugs.webkit.org/show_bug.cgi?id=165641

Reviewed by Dan Bernstein.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
Remove JSDictionary.h/cpp

* Modules/mediastream/RTCDataChannel.cpp:
Remove unused #include of Dictionary.h

* Modules/mediastream/RTCPeerConnection.cpp:
* Modules/mediastream/RTCPeerConnection.h:
Replace unnecessary #include of Dictionary in a header with forward declaration.

* bindings/js/Dictionary.cpp:
(WebCore::Dictionary::Dictionary):
(WebCore::Dictionary::tryGetProperty):
(WebCore::Dictionary::getOwnPropertyNames):
(WebCore::Dictionary::convertValue):
(WebCore::Dictionary::asJSObject&lt;Notification&gt;): Deleted.
(WebCore::Dictionary::getOwnPropertiesAsStringHashMap): Deleted.
(WebCore::Dictionary::getWithUndefinedOrNullCheck): Deleted.
* bindings/js/Dictionary.h:
(WebCore::Dictionary::isObject):
(WebCore::Dictionary::isUndefinedOrNull):
(WebCore::Dictionary::execState):
(WebCore::Dictionary::initializerObject):
(WebCore::Dictionary::isValid):
(WebCore::Dictionary::convertValue):
(WebCore::Dictionary::get):
(WebCore::Dictionary::tryGetPropertyAndResult):
(WebCore::Dictionary::getEventListener): Deleted.
Merge JSDictionary into Dictionary. Remove all unused functions (some getters, lots
of convertValue overrides). Modernize to taste.

* bindings/js/JSCryptoAlgorithmDictionary.cpp:
(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):
(WebCore::getHashAlgorithm):
(WebCore::createHmacParams):
(WebCore::createHmacKeyParams):
(WebCore::createRsaKeyGenParams):
(WebCore::createRsaOaepParams):
(WebCore::createRsaSsaParams):
Update for rename. JSDictionary is now Dictionary.

* bindings/js/JSDictionary.cpp: Removed.
* bindings/js/JSDictionary.h: Removed.

* dom/MutationObserver.cpp:
Remove unused #include of Dictionary.h</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDataChannelcpp">trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCPeerConnectioncpp">trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCPeerConnectionh">trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsDictionarycpp">trunk/Source/WebCore/bindings/js/Dictionary.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsDictionaryh">trunk/Source/WebCore/bindings/js/Dictionary.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSBindingsAllInOnecpp">trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCryptoAlgorithmDictionarycpp">trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp</a></li>
<li><a href="#trunkSourceWebCoredomMutationObservercpp">trunk/Source/WebCore/dom/MutationObserver.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorebindingsjsJSDictionarycpp">trunk/Source/WebCore/bindings/js/JSDictionary.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDictionaryh">trunk/Source/WebCore/bindings/js/JSDictionary.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -1123,7 +1123,6 @@
</span><span class="cx">     bindings/js/JSDataTransferCustom.cpp
</span><span class="cx">     bindings/js/JSDeviceMotionEventCustom.cpp
</span><span class="cx">     bindings/js/JSDeviceOrientationEventCustom.cpp
</span><del>-    bindings/js/JSDictionary.cpp
</del><span class="cx">     bindings/js/JSDocumentCustom.cpp
</span><span class="cx">     bindings/js/JSDocumentFragmentCustom.cpp
</span><span class="cx">     bindings/js/JSElementCustom.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/ChangeLog        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -1,3 +1,59 @@
</span><ins>+2016-12-10  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        [WebIDL] Merge JSDictionary into Dictionary, and remove unused bits
+        https://bugs.webkit.org/show_bug.cgi?id=165641
+
+        Reviewed by Dan Bernstein.
+
+        * CMakeLists.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSBindingsAllInOne.cpp:
+        Remove JSDictionary.h/cpp
+
+        * Modules/mediastream/RTCDataChannel.cpp:
+        Remove unused #include of Dictionary.h
+
+        * Modules/mediastream/RTCPeerConnection.cpp:
+        * Modules/mediastream/RTCPeerConnection.h:
+        Replace unnecessary #include of Dictionary in a header with forward declaration.
+
+        * bindings/js/Dictionary.cpp:
+        (WebCore::Dictionary::Dictionary):
+        (WebCore::Dictionary::tryGetProperty):
+        (WebCore::Dictionary::getOwnPropertyNames):
+        (WebCore::Dictionary::convertValue):
+        (WebCore::Dictionary::asJSObject&lt;Notification&gt;): Deleted.
+        (WebCore::Dictionary::getOwnPropertiesAsStringHashMap): Deleted.
+        (WebCore::Dictionary::getWithUndefinedOrNullCheck): Deleted.
+        * bindings/js/Dictionary.h:
+        (WebCore::Dictionary::isObject):
+        (WebCore::Dictionary::isUndefinedOrNull):
+        (WebCore::Dictionary::execState):
+        (WebCore::Dictionary::initializerObject):
+        (WebCore::Dictionary::isValid):
+        (WebCore::Dictionary::convertValue):
+        (WebCore::Dictionary::get):
+        (WebCore::Dictionary::tryGetPropertyAndResult):
+        (WebCore::Dictionary::getEventListener): Deleted.
+        Merge JSDictionary into Dictionary. Remove all unused functions (some getters, lots
+        of convertValue overrides). Modernize to taste.
+
+        * bindings/js/JSCryptoAlgorithmDictionary.cpp:
+        (WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):
+        (WebCore::getHashAlgorithm):
+        (WebCore::createHmacParams):
+        (WebCore::createHmacKeyParams):
+        (WebCore::createRsaKeyGenParams):
+        (WebCore::createRsaOaepParams):
+        (WebCore::createRsaSsaParams):
+        Update for rename. JSDictionary is now Dictionary.
+
+        * bindings/js/JSDictionary.cpp: Removed.
+        * bindings/js/JSDictionary.h: Removed.
+
+        * dom/MutationObserver.cpp:
+        Remove unused #include of Dictionary.h
+
</ins><span class="cx"> 2016-12-10  Dave Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [CSS Parser] Move CSSParserValues.h/.cpp to CSSParserSelector.h/.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDataChannelcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #include &quot;RTCDataChannel.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Blob.h&quot;
</span><del>-#include &quot;Dictionary.h&quot;
</del><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span><span class="cx"> #include &quot;MessageEvent.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCPeerConnectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_RTC)
</span><span class="cx"> 
</span><ins>+#include &quot;Dictionary.h&quot;
</ins><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCPeerConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #if ENABLE(WEB_RTC)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ActiveDOMObject.h&quot;
</span><del>-#include &quot;Dictionary.h&quot;
</del><span class="cx"> #include &quot;EventTarget.h&quot;
</span><span class="cx"> #include &quot;MediaStream.h&quot;
</span><span class="cx"> #include &quot;RTCDataChannel.h&quot;
</span><span class="lines">@@ -47,6 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class Dictionary;
</ins><span class="cx"> class MediaStreamTrack;
</span><span class="cx"> class PeerConnectionBackend;
</span><span class="cx"> class RTCConfiguration;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -5489,8 +5489,6 @@
</span><span class="cx">                 BCE1C4400D9830F4003B02F2 /* JSLocationCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE1C43F0D9830F4003B02F2 /* JSLocationCustom.cpp */; };
</span><span class="cx">                 BCE32B9C1517C0B200F542EC /* RenderMultiColumnSet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE32B9B1517C0B100F542EC /* RenderMultiColumnSet.h */; };
</span><span class="cx">                 BCE32B9E1517C22700F542EC /* RenderMultiColumnSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE32B9D1517C22700F542EC /* RenderMultiColumnSet.cpp */; };
</span><del>-                BCE4389C140B1BA8005E437E /* JSDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE4389B140B1BA7005E437E /* JSDictionary.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                BCE438A2140C0DC0005E437E /* JSDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE438A1140C0DBF005E437E /* JSDictionary.cpp */; };
</del><span class="cx">                 BCE4413312F748E2009B84B8 /* RenderCombineText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE4413112F748E2009B84B8 /* RenderCombineText.cpp */; };
</span><span class="cx">                 BCE4413412F748E2009B84B8 /* RenderCombineText.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE4413212F748E2009B84B8 /* RenderCombineText.h */; };
</span><span class="cx">                 BCE658FF0EA9248A007E4533 /* Theme.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE658FE0EA9248A007E4533 /* Theme.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -13384,8 +13382,6 @@
</span><span class="cx">                 BCE1C43F0D9830F4003B02F2 /* JSLocationCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSLocationCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCE32B9B1517C0B100F542EC /* RenderMultiColumnSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMultiColumnSet.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCE32B9D1517C22700F542EC /* RenderMultiColumnSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMultiColumnSet.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                BCE4389B140B1BA7005E437E /* JSDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDictionary.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                BCE438A1140C0DBF005E437E /* JSDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDictionary.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 BCE4413112F748E2009B84B8 /* RenderCombineText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderCombineText.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCE4413212F748E2009B84B8 /* RenderCombineText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderCombineText.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BCE658FE0EA9248A007E4533 /* Theme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Theme.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -21937,8 +21933,6 @@
</span><span class="cx">                                 E125F83C182411E700D84CD9 /* JSCryptoOperationData.h */,
</span><span class="cx">                                 9BD4E9141C462872005065BC /* JSCustomElementInterface.cpp */,
</span><span class="cx">                                 9BD4E9151C462872005065BC /* JSCustomElementInterface.h */,
</span><del>-                                BCE438A1140C0DBF005E437E /* JSDictionary.cpp */,
-                                BCE4389B140B1BA7005E437E /* JSDictionary.h */,
</del><span class="cx">                                 93B70D4709EB0C7C009D8468 /* JSDOMBinding.cpp */,
</span><span class="cx">                                 93B70D4809EB0C7C009D8468 /* JSDOMBinding.h */,
</span><span class="cx">                                 413C2C331BC29A7B0075204C /* JSDOMConstructor.h */,
</span><span class="lines">@@ -26090,7 +26084,6 @@
</span><span class="cx">                                 FDA15ED212B03F94003A583A /* JSDelayNode.h in Headers */,
</span><span class="cx">                                 31FB1A66120A5D3F00DC02A0 /* JSDeviceMotionEvent.h in Headers */,
</span><span class="cx">                                 59A86008119DAFA100DEF1EF /* JSDeviceOrientationEvent.h in Headers */,
</span><del>-                                BCE4389C140B1BA8005E437E /* JSDictionary.h in Headers */,
</del><span class="cx">                                 659DDC8309E198BA001BF3C6 /* JSDocument.h in Headers */,
</span><span class="cx">                                 1221E05E1C02B444006A1A00 /* JSDocumentAnimation.h in Headers */,
</span><span class="cx">                                 ADDA94C219687AA500453029 /* JSDocumentCustom.h in Headers */,
</span><span class="lines">@@ -29827,7 +29820,6 @@
</span><span class="cx">                                 31FB1A6C120A5D6900DC02A0 /* JSDeviceMotionEventCustom.cpp in Sources */,
</span><span class="cx">                                 59A86006119DAF7F00DEF1EF /* JSDeviceOrientationEvent.cpp in Sources */,
</span><span class="cx">                                 590E1B4B11E4EF700069F784 /* JSDeviceOrientationEventCustom.cpp in Sources */,
</span><del>-                                BCE438A2140C0DC0005E437E /* JSDictionary.cpp in Sources */,
</del><span class="cx">                                 659DDC8209E198BA001BF3C6 /* JSDocument.cpp in Sources */,
</span><span class="cx">                                 1221E05D1C02B444006A1A00 /* JSDocumentAnimation.cpp in Sources */,
</span><span class="cx">                                 49C7BA8D1042F5B10009D447 /* JSDocumentCustom.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/Dictionary.cpp (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/Dictionary.cpp        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/bindings/js/Dictionary.cpp        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -26,10 +26,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;Dictionary.h&quot;
</span><span class="cx"> 
</span><del>-#if ENABLE(NOTIFICATIONS)
-#include &quot;JSNotification.h&quot;
-#include &quot;Notification.h&quot;
-#endif
</del><ins>+#include &quot;ArrayValue.h&quot;
+#include &quot;JSDOMConvert.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> 
</span><span class="lines">@@ -36,63 +34,46 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> Dictionary::Dictionary()
</span><del>-    : m_dictionary(0, 0)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Dictionary::Dictionary(JSC::ExecState* exec, JSC::JSValue value)
-    : m_dictionary(exec, value.isObject() ? value.getObject() : 0)
</del><ins>+Dictionary::Dictionary(ExecState* state, JSObject* initializerObject)
+    : m_state(state)
</ins><span class="cx"> {
</span><ins>+    if (state &amp;&amp; initializerObject)
+        m_initializerObject = Strong&lt;JSObject&gt;(state-&gt;vm(), initializerObject);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-
-#if ENABLE(NOTIFICATIONS)
-template&lt;&gt;
-JSObject* Dictionary::asJSObject&lt;Notification&gt;(Notification* object) const
</del><ins>+Dictionary::Dictionary(ExecState* state, JSValue value)
+    : Dictionary(state, value.isObject() ? value.getObject() : nullptr)
</ins><span class="cx"> {
</span><del>-    return asObject(toJS(m_dictionary.execState(), jsCast&lt;JSDOMGlobalObject*&gt;(m_dictionary.execState()-&gt;lexicalGlobalObject()), object));
</del><span class="cx"> }
</span><del>-#endif
</del><span class="cx"> 
</span><del>-bool Dictionary::getOwnPropertiesAsStringHashMap(HashMap&lt;String, String&gt;&amp; map) const
</del><ins>+Dictionary::GetPropertyResult Dictionary::tryGetProperty(const char* propertyName, JSValue&amp; finalResult) const
</ins><span class="cx"> {
</span><del>-    if (!m_dictionary.isValid())
-        return false;
</del><ins>+    ASSERT(isValid());
</ins><span class="cx"> 
</span><del>-    JSObject* object =  m_dictionary.initializerObject();
-    ExecState* exec = m_dictionary.execState();
-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    PropertyNameArray propertyNames(exec, PropertyNameMode::Strings);
-    JSObject::getOwnPropertyNames(object, exec, propertyNames, EnumerationMode());
-    for (PropertyNameArray::const_iterator it = propertyNames.begin(); it != propertyNames.end(); ++it) {
-        String stringKey = it-&gt;string();
-        if (stringKey.isEmpty())
-            continue;
-        JSValue value = object-&gt;get(exec, *it);
-        if (UNLIKELY(scope.exception()))
-            continue;
-        String stringValue = value.toString(exec)-&gt;value(exec);
-        if (LIKELY(!scope.exception()))
-            map.set(stringKey, stringValue);
-    }
-
-    return true;
</del><ins>+    auto scope = DECLARE_THROW_SCOPE(m_state-&gt;vm());
+    auto identifier = Identifier::fromString(m_state, propertyName);
+    bool propertyFound = m_initializerObject.get()-&gt;getPropertySlot(m_state, identifier, [&amp;] (bool propertyFound, PropertySlot&amp; slot) -&gt; bool {
+        if (!propertyFound)
+            return false;
+        finalResult = slot.getValue(m_state, identifier);
+        return true;
+    });
+    RETURN_IF_EXCEPTION(scope, ExceptionThrown);
+    return propertyFound ? PropertyFound : NoPropertyFound;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Dictionary::getOwnPropertyNames(Vector&lt;String&gt;&amp; names) const
</span><span class="cx"> {
</span><del>-    if (!m_dictionary.isValid())
</del><ins>+    if (!isValid())
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    JSObject* object =  m_dictionary.initializerObject();
-    ExecState* exec = m_dictionary.execState();
-
-    PropertyNameArray propertyNames(exec, PropertyNameMode::Strings);
-    JSObject::getOwnPropertyNames(object, exec, propertyNames, EnumerationMode());
-    for (PropertyNameArray::const_iterator it = propertyNames.begin(); it != propertyNames.end(); ++it) {
-        String stringKey = it-&gt;string();
</del><ins>+    PropertyNameArray propertyNames(m_state, PropertyNameMode::Strings);
+    JSObject::getOwnPropertyNames(m_initializerObject.get(), m_state, propertyNames, EnumerationMode());
+    for (auto&amp; identifier : propertyNames) {
+        auto stringKey = identifier.string();
</ins><span class="cx">         if (!stringKey.isEmpty())
</span><span class="cx">             names.append(stringKey);
</span><span class="cx">     }
</span><span class="lines">@@ -100,9 +81,55 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Dictionary::getWithUndefinedOrNullCheck(const char* propertyName, String&amp; value) const
</del><ins>+// MARK: - Value conversions
+
+void Dictionary::convertValue(ExecState&amp; state, JSValue value, bool&amp; result)
</ins><span class="cx"> {
</span><del>-    return m_dictionary.getWithUndefinedOrNullCheck(propertyName, value);
</del><ins>+    result = convert&lt;IDLBoolean&gt;(state, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-};
</del><ins>+void Dictionary::convertValue(ExecState&amp; state, JSValue value, int&amp; result)
+{
+    result = convert&lt;IDLLong&gt;(state, value);
+}
+
+void Dictionary::convertValue(ExecState&amp; state, JSValue value, unsigned&amp; result)
+{
+    result = convert&lt;IDLUnsignedLong&gt;(state, value);
+}
+
+void Dictionary::convertValue(ExecState&amp; state, JSValue value, unsigned short&amp; result)
+{
+    result = convert&lt;IDLUnsignedShort&gt;(state, value);
+}
+
+void Dictionary::convertValue(ExecState&amp; state, JSValue value, double&amp; result)
+{
+    result = convert&lt;IDLDouble&gt;(state, value);
+}
+
+void Dictionary::convertValue(ExecState&amp; state, JSValue value, String&amp; result)
+{
+    result = convert&lt;IDLDOMString&gt;(state, value);
+}
+
+void Dictionary::convertValue(ExecState&amp; state, JSValue value, Vector&lt;String&gt;&amp; result)
+{
+    if (value.isUndefinedOrNull())
+        return;
+    result = convert&lt;IDLSequence&lt;IDLDOMString&gt;&gt;(state, value);
+}
+
+void Dictionary::convertValue(ExecState&amp; state, JSValue value, Dictionary&amp; result)
+{
+    result = Dictionary(&amp;state, value);
+}
+
+void Dictionary::convertValue(ExecState&amp; state, JSValue value, ArrayValue&amp; result)
+{
+    if (value.isUndefinedOrNull())
+        return;
+    result = ArrayValue(&amp;state, value);
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsDictionaryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/Dictionary.h (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/Dictionary.h        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/bindings/js/Dictionary.h        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -26,52 +26,74 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;JSDictionary.h&quot;
-#include &quot;JSEventListener.h&quot;
-#include &lt;bindings/ScriptValue.h&gt;
-#include &lt;wtf/HashMap.h&gt;
</del><ins>+#include &lt;heap/Strong.h&gt;
+#include &lt;heap/StrongInlines.h&gt;
+#include &lt;interpreter/CallFrame.h&gt;
+#include &lt;runtime/JSCInlines.h&gt;
+#include &lt;wtf/Forward.h&gt;
+#include &lt;wtf/Optional.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><ins>+class JSObject;
</ins><span class="cx"> class JSValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-class EventListener;
</del><span class="cx"> 
</span><ins>+class ArrayValue;
+
</ins><span class="cx"> class Dictionary {
</span><span class="cx"> public:
</span><span class="cx">     Dictionary();
</span><ins>+    Dictionary(JSC::ExecState*, JSC::JSObject*);
</ins><span class="cx">     Dictionary(JSC::ExecState*, JSC::JSValue);
</span><span class="cx"> 
</span><span class="cx">     // Returns true if a value was found for the provided property.
</span><span class="cx">     template&lt;typename Result&gt; bool get(const char* propertyName, Result&amp;) const;
</span><span class="cx">     template&lt;typename Result&gt; bool get(const String&amp; propertyName, Result&amp;) const;
</span><del>-
</del><span class="cx">     template&lt;typename Result&gt; std::optional&lt;Result&gt; get(const char* propertyName) const;
</span><ins>+    
+    bool isObject() const { return isValid(); }
+    bool isUndefinedOrNull() const { return !isValid(); }
</ins><span class="cx"> 
</span><del>-    template&lt;typename T&gt; RefPtr&lt;EventListener&gt; getEventListener(const char* propertyName, T* target) const;
-    template&lt;typename T&gt; RefPtr&lt;EventListener&gt; getEventListener(const String&amp; propertyName, T* target) const;
-
-    bool isObject() const { return m_dictionary.isValid(); }
-    bool isUndefinedOrNull() const { return !m_dictionary.isValid(); }
-    bool getOwnPropertiesAsStringHashMap(HashMap&lt;String, String&gt;&amp;) const;
</del><span class="cx">     bool getOwnPropertyNames(Vector&lt;String&gt;&amp;) const;
</span><del>-    bool getWithUndefinedOrNullCheck(const char* propertyName, String&amp; value) const;
</del><ins>+    bool getWithUndefinedOrNullCheck(const char* propertyName, String&amp;) const;
</ins><span class="cx"> 
</span><del>-    JSC::ExecState* execState() const { return m_dictionary.execState(); }
-    JSC::JSObject* initializerObject() const { return m_dictionary.initializerObject(); }
</del><ins>+    JSC::ExecState* execState() const { return m_state; }
+    JSC::JSObject* initializerObject() const { return m_initializerObject.get(); }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    template&lt;typename T&gt; JSC::JSObject* asJSObject(T*) const;
-    
-    JSDictionary m_dictionary;
</del><ins>+    bool isValid() const { return m_state &amp;&amp; m_initializerObject; }
+
+    enum GetPropertyResult {
+        ExceptionThrown,
+        NoPropertyFound,
+        PropertyFound
+    };
+
+    template &lt;typename Result&gt;
+    GetPropertyResult tryGetPropertyAndResult(const char* propertyName, Result&amp; context) const;
+    GetPropertyResult tryGetProperty(const char* propertyName, JSC::JSValue&amp;) const;
+
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, bool&amp; result);
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, int&amp; result);
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, unsigned&amp; result);
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, unsigned short&amp; result);
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, double&amp; result);
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, String&amp; result);
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, Vector&lt;String&gt;&amp; result);
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, Dictionary&amp; result);
+    static void convertValue(JSC::ExecState&amp;, JSC::JSValue, ArrayValue&amp; result);
+
+    JSC::ExecState* m_state { nullptr };
+    JSC::Strong&lt;JSC::JSObject&gt; m_initializerObject;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename Result&gt; bool Dictionary::get(const char* propertyName, Result&amp; result) const
</span><span class="cx"> {
</span><del>-    return m_dictionary.isValid() &amp;&amp; m_dictionary.get(propertyName, result);
</del><ins>+    return isValid() &amp;&amp; tryGetPropertyAndResult(propertyName, result) == PropertyFound;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename Result&gt; bool Dictionary::get(const String&amp; propertyName, Result&amp; result) const
</span><span class="lines">@@ -87,17 +109,48 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-template&lt;typename T&gt; RefPtr&lt;EventListener&gt; Dictionary::getEventListener(const char* propertyName, T* target) const
</del><ins>+template &lt;&gt;
+inline bool Dictionary::get(const char* propertyName, JSC::JSValue&amp; finalResult) const
</ins><span class="cx"> {
</span><del>-    JSC::JSValue eventListener;
-    if (!get(propertyName, eventListener) || !eventListener || !eventListener.isObject())
-        return nullptr;
-    return JSEventListener::create(asObject(eventListener), asJSObject(target), true, currentWorld(execState()));
</del><ins>+    return tryGetProperty(propertyName, finalResult) == PropertyFound;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-template&lt;typename T&gt; RefPtr&lt;EventListener&gt; Dictionary::getEventListener(const String&amp; propertyName, T* target) const
</del><ins>+inline bool Dictionary::getWithUndefinedOrNullCheck(const char* propertyName, String&amp; result) const
</ins><span class="cx"> {
</span><del>-    return getEventListener(propertyName.utf8().data(), target);
</del><ins>+    ASSERT(isValid());
+
+    JSC::JSValue value;
+    if (!get(propertyName, value) || value.isUndefinedOrNull())
+        return false;
+
+    result = value.toWTFString(m_state);
+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template &lt;typename Result&gt;
+Dictionary::GetPropertyResult Dictionary::tryGetPropertyAndResult(const char* propertyName, Result&amp; finalResult) const
+{
+    auto scope = DECLARE_THROW_SCOPE(m_state-&gt;vm());
+
+    JSC::JSValue value;
+    GetPropertyResult getPropertyResult = tryGetProperty(propertyName, value);
+    switch (getPropertyResult) {
+    case ExceptionThrown:
+        return getPropertyResult;
+    case PropertyFound: {
+        Result result;
+        convertValue(*m_state, value, result);
+
+        RETURN_IF_EXCEPTION(scope, ExceptionThrown);
+
+        finalResult = result;
+        break;
+    }
+    case NoPropertyFound:
+        break;
+    }
+
+    return getPropertyResult;
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSBindingsAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -65,7 +65,6 @@
</span><span class="cx"> #include &quot;JSDataCueCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSDataTransferCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSDeviceOrientationEventCustom.cpp&quot;
</span><del>-#include &quot;JSDictionary.cpp&quot;
</del><span class="cx"> #include &quot;JSDocumentCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSDocumentFragmentCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSElementCustom.cpp&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCryptoAlgorithmDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -37,11 +37,11 @@
</span><span class="cx"> #include &quot;CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmRsaOaepParamsDeprecated.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmRsaSsaParamsDeprecated.h&quot;
</span><ins>+#include &quot;Dictionary.h&quot;
</ins><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;JSCryptoOperationData.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><del>-#include &quot;JSDictionary.h&quot;
</del><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> 
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">             // This is partially because we don't implement it elsewhere in WebCore yet, and partially because
</span><span class="cx">             // WebCrypto doesn't yet clearly specify what to do with non-present values in most cases anyway.
</span><span class="cx"> 
</span><del>-            JSDictionary dictionary(exec, value.getObject());
</del><ins>+            Dictionary dictionary(exec, value.getObject());
</ins><span class="cx">             dictionary.get(&quot;name&quot;, algorithmName);
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -102,9 +102,9 @@
</span><span class="cx">     return object-&gt;get(exec, Identifier::fromString(exec, name));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool getHashAlgorithm(JSDictionary&amp; dictionary, CryptoAlgorithmIdentifier&amp; result, HashRequirement isRequired)
</del><ins>+static bool getHashAlgorithm(Dictionary&amp; dictionary, CryptoAlgorithmIdentifier&amp; result, HashRequirement isRequired)
</ins><span class="cx"> {
</span><del>-    // FXIME: Teach JSDictionary how to return JSValues, and use that to get hash element value.
</del><ins>+    // FXIME: Teach Dictionary how to return JSValues, and use that to get hash element value.
</ins><span class="cx"> 
</span><span class="cx">     ExecState* exec = dictionary.execState();
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="lines">@@ -186,10 +186,10 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSDictionary jsDictionary(&amp;state, value.getObject());
</del><ins>+    Dictionary dictionary(&amp;state, value.getObject());
</ins><span class="cx">     auto result = adoptRef(*new CryptoAlgorithmHmacParamsDeprecated);
</span><span class="cx"> 
</span><del>-    auto success = getHashAlgorithm(jsDictionary, result-&gt;hash, HashRequirement::Required);
</del><ins>+    auto success = getHashAlgorithm(dictionary, result-&gt;hash, HashRequirement::Required);
</ins><span class="cx">     ASSERT_UNUSED(scope, scope.exception() || success);
</span><span class="cx">     if (!success)
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -207,15 +207,15 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSDictionary jsDictionary(&amp;state, value.getObject());
</del><ins>+    Dictionary dictionary(&amp;state, value.getObject());
</ins><span class="cx">     auto result = adoptRef(*new CryptoAlgorithmHmacKeyParamsDeprecated);
</span><span class="cx"> 
</span><del>-    auto success = getHashAlgorithm(jsDictionary, result-&gt;hash, HashRequirement::Required);
</del><ins>+    auto success = getHashAlgorithm(dictionary, result-&gt;hash, HashRequirement::Required);
</ins><span class="cx">     ASSERT(scope.exception() || success);
</span><span class="cx">     if (!success)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    result-&gt;hasLength = jsDictionary.get(&quot;length&quot;, result-&gt;length);
</del><ins>+    result-&gt;hasLength = dictionary.get(&quot;length&quot;, result-&gt;length);
</ins><span class="cx">     RETURN_IF_EXCEPTION(scope, nullptr);
</span><span class="cx"> 
</span><span class="cx">     return WTFMove(result);
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSDictionary jsDictionary(&amp;state, value.getObject());
</del><ins>+    Dictionary dictionary(&amp;state, value.getObject());
</ins><span class="cx">     auto result = adoptRef(*new CryptoAlgorithmRsaKeyGenParamsDeprecated);
</span><span class="cx"> 
</span><span class="cx">     JSValue modulusLengthValue = getProperty(&amp;state, value.getObject(), &quot;modulusLength&quot;);
</span><span class="lines">@@ -251,7 +251,7 @@
</span><span class="cx">     }
</span><span class="cx">     result-&gt;publicExponent.append(publicExponentArray-&gt;data(), publicExponentArray-&gt;byteLength());
</span><span class="cx"> 
</span><del>-    result-&gt;hasHash = getHashAlgorithm(jsDictionary, result-&gt;hash, HashRequirement::Optional); 
</del><ins>+    result-&gt;hasHash = getHashAlgorithm(dictionary, result-&gt;hash, HashRequirement::Optional); 
</ins><span class="cx"> 
</span><span class="cx">     return WTFMove(result);
</span><span class="cx"> }
</span><span class="lines">@@ -272,10 +272,10 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSDictionary jsDictionary(exec, value.getObject());
</del><ins>+    Dictionary dictionary(exec, value.getObject());
</ins><span class="cx">     auto result = adoptRef(*new CryptoAlgorithmRsaOaepParamsDeprecated);
</span><span class="cx"> 
</span><del>-    auto success = getHashAlgorithm(jsDictionary, result-&gt;hash, HashRequirement::Required);
</del><ins>+    auto success = getHashAlgorithm(dictionary, result-&gt;hash, HashRequirement::Required);
</ins><span class="cx">     ASSERT(scope.exception() || success);
</span><span class="cx">     if (!success)
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -308,10 +308,10 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSDictionary jsDictionary(&amp;state, value.getObject());
</del><ins>+    Dictionary dictionary(&amp;state, value.getObject());
</ins><span class="cx">     auto result = adoptRef(*new CryptoAlgorithmRsaSsaParamsDeprecated);
</span><span class="cx"> 
</span><del>-    auto success = getHashAlgorithm(jsDictionary, result-&gt;hash, HashRequirement::Required);
</del><ins>+    auto success = getHashAlgorithm(dictionary, result-&gt;hash, HashRequirement::Required);
</ins><span class="cx">     ASSERT(scope.exception() || success);
</span><span class="cx">     if (!success)
</span><span class="cx">         return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDictionarycpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/JSDictionary.cpp (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -1,378 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011, 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;JSDictionary.h&quot;
-
-#include &quot;ArrayValue.h&quot;
-#include &quot;DOMWindow.h&quot;
-#include &quot;Dictionary.h&quot;
-#include &quot;JSCSSFontFaceRule.h&quot;
-#include &quot;JSDOMConvert.h&quot;
-#include &quot;JSDOMError.h&quot;
-#include &quot;JSDOMWindow.h&quot;
-#include &quot;JSEventTarget.h&quot;
-#include &quot;JSMessagePort.h&quot;
-#include &quot;JSNode.h&quot;
-#include &quot;JSStorage.h&quot;
-#include &quot;JSTrackCustom.h&quot;
-#include &quot;JSVoidCallback.h&quot;
-#include &quot;SerializedScriptValue.h&quot;
-#include &lt;runtime/JSTypedArrays.h&gt;
-#include &lt;wtf/HashSet.h&gt;
-#include &lt;wtf/MathExtras.h&gt;
-#include &lt;wtf/text/AtomicString.h&gt;
-
-#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
-#include &quot;JSWebKitMediaKeyError.h&quot;
-#endif
-
-#if ENABLE(FETCH_API)
-#include &quot;JSFetchHeaders.h&quot;
-#endif
-
-#if ENABLE(MEDIA_STREAM)
-#include &quot;JSMediaStream.h&quot;
-#include &quot;JSMediaStreamTrack.h&quot;
-#include &quot;JSOverconstrainedError.h&quot;
-#endif
-
-#if ENABLE(WEB_RTC)
-#include &quot;JSRTCRtpReceiver.h&quot;
-#include &quot;JSRTCRtpTransceiver.h&quot;
-#endif
-
-
-#if ENABLE(GAMEPAD)
-#include &quot;JSGamepad.h&quot;
-#endif
-
-#if ENABLE(IOS_TOUCH_EVENTS) || ENABLE(TOUCH_EVENTS)
-#include &quot;JSTouch.h&quot;
-#include &quot;JSTouchList.h&quot;
-#endif
-
-using namespace JSC;
-
-namespace WebCore {
-
-JSDictionary::GetPropertyResult JSDictionary::tryGetProperty(const char* propertyName, JSValue&amp; finalResult) const
-{
-    VM&amp; vm = m_exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-    ASSERT(isValid());
-    Identifier identifier = Identifier::fromString(m_exec, propertyName);
-    bool propertyFound = m_initializerObject.get()-&gt;getPropertySlot(m_exec, identifier, [&amp;] (bool propertyFound, PropertySlot&amp; slot) -&gt; bool {
-        if (!propertyFound)
-            return false;
-        finalResult = slot.getValue(m_exec, identifier);
-        return true;
-    });
-    RETURN_IF_EXCEPTION(scope, ExceptionThrown);
-    return propertyFound ? PropertyFound : NoPropertyFound;
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, bool&amp; result)
-{
-    result = value.toBoolean(exec);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, int&amp; result)
-{
-    result = value.toInt32(exec);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, long int&amp; result)
-{
-    result = value.toInt32(exec);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, unsigned&amp; result)
-{
-    result = value.toUInt32(exec);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, unsigned short&amp; result)
-{
-    result = static_cast&lt;unsigned short&gt;(value.toUInt32(exec));
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, unsigned long&amp; result)
-{
-    result = static_cast&lt;unsigned long&gt;(value.toUInt32(exec));
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, unsigned long long&amp; result)
-{
-    double d = value.toNumber(exec);
-    doubleToInteger(d, result);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, long long&amp; result)
-{
-    double d = value.toNumber(exec);
-    result = llrint(d);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, double&amp; result)
-{
-    result = value.toNumber(exec);
-}
-
-void JSDictionary::convertValue(JSC::ExecState* exec, JSC::JSValue value, Dictionary&amp; result)
-{
-    result = Dictionary(exec, value);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, String&amp; result)
-{
-    result = value.toString(exec)-&gt;value(exec);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, Vector&lt;String&gt;&amp; result)
-{
-    ASSERT(exec);
-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    if (value.isUndefinedOrNull())
-        return;
-
-    unsigned length = 0;
-    JSObject* object = toJSSequence(*exec, value, length);
-    RETURN_IF_EXCEPTION(scope, void());
-
-    for (unsigned i = 0 ; i &lt; length; ++i) {
-        JSValue itemValue = object-&gt;get(exec, i);
-        RETURN_IF_EXCEPTION(scope, void());
-        result.append(itemValue.toString(exec)-&gt;value(exec));
-    }
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, Deprecated::ScriptValue&amp; result)
-{
-    result = Deprecated::ScriptValue(exec-&gt;vm(), value);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, RefPtr&lt;SerializedScriptValue&gt;&amp; result)
-{
-    result = SerializedScriptValue::create(*exec, value);
-}
-
-void JSDictionary::convertValue(ExecState* state, JSValue value, RefPtr&lt;DOMWindow&gt;&amp; result)
-{
-    VM&amp; vm = state-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    auto* window = JSDOMWindow::toWrapped(value);
-    if (UNLIKELY(!window) &amp;&amp; !value.isUndefinedOrNull()) {
-        throwVMTypeError(state, scope, &quot;Dictionary member is not of type Window&quot;);
-        return;
-    }
-    result = window;
-}
-
-void JSDictionary::convertValue(ExecState*, JSValue value, RefPtr&lt;EventTarget&gt;&amp; result)
-{
-    result = JSEventTarget::toWrapped(value);
-}
-
-void JSDictionary::convertValue(ExecState*, JSValue value, RefPtr&lt;Node&gt;&amp; result)
-{
-    result = JSNode::toWrapped(value);
-}
-
-void JSDictionary::convertValue(ExecState*, JSValue value, RefPtr&lt;Storage&gt;&amp; result)
-{
-    result = JSStorage::toWrapped(value);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, Vector&lt;RefPtr&lt;MessagePort&gt;&gt;&amp; result)
-{
-    result = convert&lt;IDLSequence&lt;IDLInterface&lt;MessagePort&gt;&gt;&gt;(*exec, value);
-}
-
-#if ENABLE(VIDEO_TRACK)
-void JSDictionary::convertValue(ExecState*, JSValue value, RefPtr&lt;TrackBase&gt;&amp; result)
-{
-    result = toTrack(value);
-}
-#endif
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, HashSet&lt;AtomicString&gt;&amp; result)
-{
-    ASSERT(exec);
-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    result.clear();
-
-    if (value.isUndefinedOrNull())
-        return;
-
-    unsigned length = 0;
-    JSObject* object = toJSSequence(*exec, value, length);
-    RETURN_IF_EXCEPTION(scope, void());
-
-    for (unsigned i = 0 ; i &lt; length; ++i) {
-        JSValue itemValue = object-&gt;get(exec, i);
-        RETURN_IF_EXCEPTION(scope, void());
-        result.add(itemValue.toString(exec)-&gt;value(exec));
-    }
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, ArrayValue&amp; result)
-{
-    if (value.isUndefinedOrNull())
-        return;
-
-    result = ArrayValue(exec, value);
-}
-
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;Uint8Array&gt;&amp; result)
-{
-    result = toUnsharedUint8Array(value);
-}
-
-#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;WebKitMediaKeyError&gt;&amp; result)
-{
-    result = JSWebKitMediaKeyError::toWrapped(value);
-}
-#endif
-
-#if ENABLE(FETCH_API)
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;FetchHeaders&gt;&amp; result)
-{
-    result = JSFetchHeaders::toWrapped(value);
-}
-#endif
-
-#if ENABLE(MEDIA_STREAM)
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;MediaStream&gt;&amp; result)
-{
-    result = JSMediaStream::toWrapped(value);
-}
-
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;MediaStreamTrack&gt;&amp; result)
-{
-    result = JSMediaStreamTrack::toWrapped(value);
-}
-
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;OverconstrainedError&gt;&amp; result)
-{
-    result = JSOverconstrainedError::toWrapped(value);
-}
-#endif
-
-#if ENABLE(WEB_RTC)
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;RTCRtpReceiver&gt;&amp; result)
-{
-    result = JSRTCRtpReceiver::toWrapped(value);
-}
-
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;RTCRtpTransceiver&gt;&amp; result)
-{
-    result = JSRTCRtpTransceiver::toWrapped(value);
-}
-
-void JSDictionary::convertValue(ExecState* exec, JSValue value, Vector&lt;RefPtr&lt;MediaStream&gt;&gt;&amp; result)
-{
-    ASSERT(exec);
-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    if (value.isUndefinedOrNull())
-        return;
-
-    unsigned length = 0;
-    JSObject* object = toJSSequence(*exec, value, length);
-    RETURN_IF_EXCEPTION(scope, void());
-
-    for (unsigned i = 0 ; i &lt; length; ++i) {
-        JSValue itemValue = object-&gt;get(exec, i);
-        RETURN_IF_EXCEPTION(scope, void());
-
-        auto stream = JSMediaStream::toWrapped(itemValue);
-        if (!stream) {
-            setDOMException(exec, TypeError);
-            return;
-        }
-        result.append(stream);
-    }
-}
-#endif
-
-#if ENABLE(FONT_LOAD_EVENTS)
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;CSSFontFaceRule&gt;&amp; result)
-{
-    result = JSCSSFontFaceRule::toWrapped(value);
-}
-
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;DOMError&gt;&amp; result)
-{
-    result = JSDOMError::toWrapped(value);
-}
-
-void JSDictionary::convertValue(JSC::ExecState* exec, JSC::JSValue value, RefPtr&lt;VoidCallback&gt;&amp; result)
-{
-    if (!value.isFunction())
-        return;
-
-    result = JSVoidCallback::create(asObject(value), jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()));
-}
-#endif
-
-#if ENABLE(GAMEPAD)
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;Gamepad&gt;&amp; result)
-{
-    result = JSGamepad::toWrapped(value);
-}
-#endif
-
-#if ENABLE(TOUCH_EVENTS)
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, RefPtr&lt;TouchList&gt;&amp; result)
-{
-    result = JSTouchList::toWrapped(value);
-}
-#endif
-
-void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, JSC::JSFunction*&amp; result)
-{
-    result = jsDynamicDowncast&lt;JSC::JSFunction*&gt;(value);
-}
-
-bool JSDictionary::getWithUndefinedOrNullCheck(const char* propertyName, String&amp; result) const
-{
-    ASSERT(isValid());
-    JSValue value;
-    if (tryGetProperty(propertyName, value) != PropertyFound || value.isUndefinedOrNull())
-        return false;
-
-    result = value.toWTFString(m_exec);
-    return true;
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDictionaryh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/JSDictionary.h (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDictionary.h        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/bindings/js/JSDictionary.h        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -1,229 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 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
-
-#include &quot;MessagePort.h&quot;
-#include &lt;heap/Strong.h&gt;
-#include &lt;heap/StrongInlines.h&gt;
-#include &lt;interpreter/CallFrame.h&gt;
-#include &lt;runtime/JSCInlines.h&gt;
-#include &lt;runtime/Uint8Array.h&gt;
-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/Optional.h&gt;
-
-namespace Deprecated {
-class ScriptValue;
-}
-
-namespace WebCore {
-
-class ArrayValue;
-class CSSFontFaceRule;
-class Dictionary;
-class DOMError;
-class DOMWindow;
-class EventTarget;
-class Gamepad;
-class FetchHeaders;
-class MediaStream;
-class MediaStreamTrack;
-class OverconstrainedError;
-class RTCRtpReceiver;
-class RTCRtpTransceiver;
-class Node;
-class SerializedScriptValue;
-class Storage;
-class TouchList;
-class TrackBase;
-class VoidCallback;
-class WebKitMediaKeyError;
-
-class JSDictionary {
-public:
-    JSDictionary(JSC::ExecState* exec, JSC::JSObject* initializerObject)
-        : m_exec(exec)
-    {
-        if (exec &amp;&amp; initializerObject)
-            m_initializerObject = JSC::Strong&lt;JSC::JSObject&gt;(exec-&gt;vm(), initializerObject);
-    }
-
-    // Returns false if any exceptions were thrown, regardless of whether the property was found.
-    template &lt;typename Result&gt;
-    bool tryGetProperty(const char* propertyName, Result&amp;) const;
-    template &lt;typename T, typename Result&gt;
-    bool tryGetProperty(const char* propertyName, T* context, void (*setter)(T* context, const Result&amp;)) const;
-
-    // Returns true if the property was found in the dictionary, and the value could be converted to the desired type.
-    template &lt;typename Result&gt;
-    bool get(const char* propertyName, Result&amp;) const;
-    bool getWithUndefinedOrNullCheck(const char* propertyName, String&amp; value) const;
-
-    JSC::ExecState* execState() const { return m_exec; }
-    JSC::JSObject* initializerObject() const { return m_initializerObject.get(); }
-    bool isValid() const { return m_exec &amp;&amp; m_initializerObject; }
-
-private:
-    template &lt;typename Result&gt;
-    struct IdentitySetter {
-        static void identitySetter(Result* context, const Result&amp; result)
-        {
-            *context = result;
-        }
-    };
-
-    enum GetPropertyResult {
-        ExceptionThrown,
-        NoPropertyFound,
-        PropertyFound
-    };
-    
-    template &lt;typename T, typename Result&gt;
-    GetPropertyResult tryGetPropertyAndResult(const char* propertyName, T* context, void (*setter)(T* context, const Result&amp;)) const;
-    GetPropertyResult tryGetProperty(const char* propertyName, JSC::JSValue&amp;) const;
-
-    template &lt;typename T&gt;
-    static void convertValue(JSC::ExecState* execState, JSC::JSValue value, std::optional&lt;T&gt;&amp; result)
-    {
-        if (value.isUndefinedOrNull()) {
-            result = std::nullopt;
-            return;
-        }
-
-        T actualResult;
-        convertValue(execState, value, actualResult);
-        result = actualResult;
-    }
-    
-    static void convertValue(JSC::ExecState*, JSC::JSValue, bool&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, int&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, long int&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, unsigned&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, unsigned short&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, unsigned long&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, unsigned long long&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, long long&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, double&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, Dictionary&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, String&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, Deprecated::ScriptValue&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, Vector&lt;String&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;SerializedScriptValue&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;DOMWindow&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;EventTarget&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;Node&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;Storage&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, Vector&lt;RefPtr&lt;MessagePort&gt;&gt;&amp; result);
-#if ENABLE(VIDEO_TRACK)
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;TrackBase&gt;&amp; result);
-#endif
-    static void convertValue(JSC::ExecState*, JSC::JSValue, HashSet&lt;AtomicString&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, ArrayValue&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;JSC::Uint8Array&gt;&amp; result);
-#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;WebKitMediaKeyError&gt;&amp; result);
-#endif
-#if ENABLE(FETCH_API)
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;FetchHeaders&gt;&amp; result);
-#endif
-#if ENABLE(MEDIA_STREAM)
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;MediaStream&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;MediaStreamTrack&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;OverconstrainedError&gt;&amp; result);
-#endif
-#if ENABLE(WEB_RTC)
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;RTCRtpReceiver&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;RTCRtpTransceiver&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, Vector&lt;RefPtr&lt;MediaStream&gt;&gt;&amp; result);
-#endif
-#if ENABLE(FONT_LOAD_EVENTS)
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;CSSFontFaceRule&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;DOMError&gt;&amp; result);
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;VoidCallback&gt;&amp; result);
-#endif
-#if ENABLE(GAMEPAD)
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;Gamepad&gt;&amp;);
-#endif
-    static void convertValue(JSC::ExecState*, JSC::JSValue, JSC::JSFunction*&amp;);
-#if ENABLE(IOS_TOUCH_EVENTS) || ENABLE(TOUCH_EVENTS)
-    static void convertValue(JSC::ExecState*, JSC::JSValue, RefPtr&lt;TouchList&gt;&amp;);
-#endif
-
-    JSC::ExecState* m_exec;
-    JSC::Strong&lt;JSC::JSObject&gt; m_initializerObject;
-};
-
-template &lt;typename T, typename Result&gt;
-bool JSDictionary::tryGetProperty(const char* propertyName, T* context, void (*setter)(T* context, const Result&amp;)) const
-{
-    return tryGetPropertyAndResult(propertyName, context, setter) != ExceptionThrown;
-}
-
-template &lt;typename Result&gt;
-bool JSDictionary::tryGetProperty(const char* propertyName, Result&amp; finalResult) const
-{
-    return tryGetPropertyAndResult(propertyName, &amp;finalResult, IdentitySetter&lt;Result&gt;::identitySetter) != ExceptionThrown;
-}
-
-template &lt;typename Result&gt;
-bool JSDictionary::get(const char* propertyName, Result&amp; finalResult) const
-{
-    return tryGetPropertyAndResult(propertyName, &amp;finalResult, IdentitySetter&lt;Result&gt;::identitySetter) == PropertyFound;
-}
-
-template &lt;&gt;
-inline bool JSDictionary::get(const char* propertyName, JSC::JSValue&amp; finalResult) const
-{
-    return tryGetProperty(propertyName, finalResult) == PropertyFound;
-}
-
-template &lt;typename T, typename Result&gt;
-JSDictionary::GetPropertyResult JSDictionary::tryGetPropertyAndResult(const char* propertyName, T* context, void (*setter)(T* context, const Result&amp;)) const
-{
-    JSC::VM&amp; vm = m_exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    JSC::JSValue value;
-    GetPropertyResult getPropertyResult = tryGetProperty(propertyName, value);
-    switch (getPropertyResult) {
-    case ExceptionThrown:
-        return getPropertyResult;
-    case PropertyFound: {
-        Result result;
-        convertValue(m_exec, value, result);
-
-        RETURN_IF_EXCEPTION(scope, ExceptionThrown);
-
-        setter(context, result);
-        break;
-    }
-    case NoPropertyFound:
-        break;
-    }
-
-    return getPropertyResult;
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCoredomMutationObservercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MutationObserver.cpp (209673 => 209674)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MutationObserver.cpp        2016-12-10 21:04:05 UTC (rev 209673)
+++ trunk/Source/WebCore/dom/MutationObserver.cpp        2016-12-10 22:13:58 UTC (rev 209674)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;MutationObserver.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Dictionary.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;HTMLSlotElement.h&quot;
</span></span></pre>
</div>
</div>

</body>
</html>