<!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>[211403] trunk/Source</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/211403">211403</a></dd>
<dt>Author</dt> <dd>weinig@apple.com</dd>
<dt>Date</dt> <dd>2017-01-30 19:37:34 -0800 (Mon, 30 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>JSDOMBinding is too big. Split it up!
https://bugs.webkit.org/show_bug.cgi?id=167601

Reviewed by Darin Adler.

Source/WebCore:

Splits JSDOMBinding.h/cpp up a bit by splitting out:
- JSDOMBindingCaller.h
- JSDOMBindingSecurity.h/cpp
- JSDOMExceptionHandling.h/cpp
- JSDOMWrapperCache.h/cpp

Also:
- Moves all constructor objects to JSDOMConstructor.h/cpp,  
- Moves special DOMWindow accessors to JSDOMWindowBase.
- Deletes unused CallbackFunction.h/cpp

* CMakeLists.txt:
* Modules/webdatabase/Database.cpp:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/CallbackFunction.cpp: Removed.
* bindings/js/CallbackFunction.h: Removed.
* bindings/js/DOMConstructorWithDocument.h: Removed.
* bindings/js/JSCryptoCustom.cpp:
* bindings/js/JSCustomXPathNSResolver.cpp:
* bindings/js/JSDOMBinding.cpp:
* bindings/js/JSDOMBinding.h:
* bindings/js/JSDOMBindingCaller.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
* bindings/js/JSDOMBindingSecurity.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
* bindings/js/JSDOMBindingSecurity.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
* bindings/js/JSDOMConstructor.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
* bindings/js/JSDOMConstructor.h:
* bindings/js/JSDOMConvert.h:
* bindings/js/JSDOMExceptionHandling.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
* bindings/js/JSDOMExceptionHandling.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::callerDOMWindow): Moved from JSDOMBinding.h
(WebCore::activeDOMWindow): Moved from JSDOMBinding.h
(WebCore::firstDOMWindow): Moved from JSDOMBinding.h
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSDOMWindowCustom.cpp:
* bindings/js/JSDOMWindowProperties.cpp:
* bindings/js/JSDOMWrapperCache.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
* bindings/js/JSDOMWrapperCache.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
* bindings/js/JSEventTargetCustom.h:
* bindings/js/JSHTMLElementCustom.cpp:
* bindings/js/JSLocationCustom.cpp:
* bindings/js/JSMutationObserverCustom.cpp:
* bindings/js/JSSQLStatementErrorCallbackCustom.cpp:
* bindings/js/JSStorageCustom.cpp:
* bindings/js/JSWorkerCustom.cpp:
* bindings/js/JSXPathNSResolverCustom.cpp:
* bindings/js/ScheduledAction.cpp:
* bindings/js/ScriptController.cpp:
* bindings/js/ScriptController.h:
* bindings/js/ScriptGlobalObject.cpp:
(WebCore::ScriptGlobalObject::set):
* bindings/js/StructuredClone.cpp:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GenerateCallWith):
(GenerateParametersCheck):
(GenerateCallbackImplementationContent):
(NativeToJSValue):
* bridge/objc/WebScriptObject.mm:
* html/HTMLFrameElementBase.cpp:
* html/HTMLVideoElement.cpp:
* inspector/InspectorController.cpp:
* inspector/InspectorDOMAgent.cpp:
* inspector/PageScriptDebugServer.cpp:
* inspector/WorkerScriptDebugServer.cpp:

Source/WebKit2:

* Shared/WebCoreArgumentCoders.cpp:
Replace include of JSDOMBinding with JSDOMExceptionHandling.</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="#trunkSourceWebCoreModuleswebdatabaseDatabasecpp">trunk/Source/WebCore/Modules/webdatabase/Database.cpp</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSBindingsAllInOnecpp">trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCustomXPathNSResolvercpp">trunk/Source/WebCore/bindings/js/JSCustomXPathNSResolver.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingcpp">trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMConstructorh">trunk/Source/WebCore/bindings/js/JSDOMConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMConverth">trunk/Source/WebCore/bindings/js/JSDOMConvert.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowBasecpp">trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowBaseh">trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowPropertiescpp">trunk/Source/WebCore/bindings/js/JSDOMWindowProperties.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventTargetCustomh">trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSLocationCustomcpp">trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMutationObserverCustomcpp">trunk/Source/WebCore/bindings/js/JSMutationObserverCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSQLStatementErrorCallbackCustomcpp">trunk/Source/WebCore/bindings/js/JSSQLStatementErrorCallbackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSStorageCustomcpp">trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerCustomcpp">trunk/Source/WebCore/bindings/js/JSWorkerCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSXPathNSResolverCustomcpp">trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScheduledActioncpp">trunk/Source/WebCore/bindings/js/ScheduledAction.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptControllercpp">trunk/Source/WebCore/bindings/js/ScriptController.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptControllerh">trunk/Source/WebCore/bindings/js/ScriptController.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptGlobalObjectcpp">trunk/Source/WebCore/bindings/js/ScriptGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsStructuredClonecpp">trunk/Source/WebCore/bindings/js/StructuredClone.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallbackFunctioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallbackFunctionWithTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallbackInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeobjcWebScriptObjectmm">trunk/Source/WebCore/bridge/objc/WebScriptObject.mm</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementBasecpp">trunk/Source/WebCore/html/HTMLFrameElementBase.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLVideoElementcpp">trunk/Source/WebCore/html/HTMLVideoElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorControllercpp">trunk/Source/WebCore/inspector/InspectorController.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageScriptDebugServercpp">trunk/Source/WebCore/inspector/PageScriptDebugServer.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerScriptDebugServercpp">trunk/Source/WebCore/inspector/WorkerScriptDebugServer.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2Scriptswebkitmessagespy">trunk/Source/WebKit2/Scripts/webkit/messages.py</a></li>
<li><a href="#trunkSourceWebKit2SharedWebCoreArgumentCoderscpp">trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingCallerh">trunk/Source/WebCore/bindings/js/JSDOMBindingCaller.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingSecuritycpp">trunk/Source/WebCore/bindings/js/JSDOMBindingSecurity.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingSecurityh">trunk/Source/WebCore/bindings/js/JSDOMBindingSecurity.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMConstructorcpp">trunk/Source/WebCore/bindings/js/JSDOMConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMExceptionHandlingcpp">trunk/Source/WebCore/bindings/js/JSDOMExceptionHandling.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMExceptionHandlingh">trunk/Source/WebCore/bindings/js/JSDOMExceptionHandling.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWrapperCachecpp">trunk/Source/WebCore/bindings/js/JSDOMWrapperCache.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWrapperCacheh">trunk/Source/WebCore/bindings/js/JSDOMWrapperCache.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorebindingsjsCallbackFunctioncpp">trunk/Source/WebCore/bindings/js/CallbackFunction.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsCallbackFunctionh">trunk/Source/WebCore/bindings/js/CallbackFunction.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsDOMConstructorWithDocumenth">trunk/Source/WebCore/bindings/js/DOMConstructorWithDocument.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 (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/CMakeLists.txt        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -1069,7 +1069,6 @@
</span><span class="cx"> 
</span><span class="cx">     bindings/js/CachedModuleScriptLoader.cpp
</span><span class="cx">     bindings/js/CachedScriptFetcher.cpp
</span><del>-    bindings/js/CallbackFunction.cpp
</del><span class="cx">     bindings/js/CommonVM.cpp
</span><span class="cx">     bindings/js/DOMWrapperWorld.cpp
</span><span class="cx">     bindings/js/GCController.cpp
</span><span class="lines">@@ -1100,6 +1099,9 @@
</span><span class="cx">     bindings/js/JSCustomEventCustom.cpp
</span><span class="cx">     bindings/js/JSCustomXPathNSResolver.cpp
</span><span class="cx">     bindings/js/JSDOMBinding.cpp
</span><ins>+    bindings/js/JSDOMBindingSecurity.cpp
+    bindings/js/JSDOMConstructor.cpp
+    bindings/js/JSDOMExceptionHandling.cpp
</ins><span class="cx">     bindings/js/JSDOMGlobalObject.cpp
</span><span class="cx">     bindings/js/JSDOMGlobalObjectTask.cpp
</span><span class="cx">     bindings/js/JSDOMPromise.cpp
</span><span class="lines">@@ -1109,6 +1111,7 @@
</span><span class="cx">     bindings/js/JSDOMWindowProperties.cpp
</span><span class="cx">     bindings/js/JSDOMWindowShell.cpp
</span><span class="cx">     bindings/js/JSDOMWrapper.cpp
</span><ins>+    bindings/js/JSDOMWrapperCache.cpp
</ins><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 (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/ChangeLog        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -1,3 +1,76 @@
</span><ins>+2017-01-30  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        JSDOMBinding is too big. Split it up!
+        https://bugs.webkit.org/show_bug.cgi?id=167601
+
+        Reviewed by Darin Adler.
+
+        Splits JSDOMBinding.h/cpp up a bit by splitting out:
+        - JSDOMBindingCaller.h
+        - JSDOMBindingSecurity.h/cpp
+        - JSDOMExceptionHandling.h/cpp
+        - JSDOMWrapperCache.h/cpp
+
+        Also:
+        - Moves all constructor objects to JSDOMConstructor.h/cpp,  
+        - Moves special DOMWindow accessors to JSDOMWindowBase.
+        - Deletes unused CallbackFunction.h/cpp
+
+        * CMakeLists.txt:
+        * Modules/webdatabase/Database.cpp:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/CallbackFunction.cpp: Removed.
+        * bindings/js/CallbackFunction.h: Removed.
+        * bindings/js/DOMConstructorWithDocument.h: Removed.
+        * bindings/js/JSCryptoCustom.cpp:
+        * bindings/js/JSCustomXPathNSResolver.cpp:
+        * bindings/js/JSDOMBinding.cpp:
+        * bindings/js/JSDOMBinding.h:
+        * bindings/js/JSDOMBindingCaller.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
+        * bindings/js/JSDOMBindingSecurity.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
+        * bindings/js/JSDOMBindingSecurity.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
+        * bindings/js/JSDOMConstructor.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
+        * bindings/js/JSDOMConstructor.h:
+        * bindings/js/JSDOMConvert.h:
+        * bindings/js/JSDOMExceptionHandling.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
+        * bindings/js/JSDOMExceptionHandling.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
+        * bindings/js/JSDOMWindowBase.cpp:
+        (WebCore::callerDOMWindow): Moved from JSDOMBinding.h
+        (WebCore::activeDOMWindow): Moved from JSDOMBinding.h
+        (WebCore::firstDOMWindow): Moved from JSDOMBinding.h
+        * bindings/js/JSDOMWindowBase.h:
+        * bindings/js/JSDOMWindowCustom.cpp:
+        * bindings/js/JSDOMWindowProperties.cpp:
+        * bindings/js/JSDOMWrapperCache.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
+        * bindings/js/JSDOMWrapperCache.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
+        * bindings/js/JSEventTargetCustom.h:
+        * bindings/js/JSHTMLElementCustom.cpp:
+        * bindings/js/JSLocationCustom.cpp:
+        * bindings/js/JSMutationObserverCustom.cpp:
+        * bindings/js/JSSQLStatementErrorCallbackCustom.cpp:
+        * bindings/js/JSStorageCustom.cpp:
+        * bindings/js/JSWorkerCustom.cpp:
+        * bindings/js/JSXPathNSResolverCustom.cpp:
+        * bindings/js/ScheduledAction.cpp:
+        * bindings/js/ScriptController.cpp:
+        * bindings/js/ScriptController.h:
+        * bindings/js/ScriptGlobalObject.cpp:
+        (WebCore::ScriptGlobalObject::set):
+        * bindings/js/StructuredClone.cpp:
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+        (GenerateCallWith):
+        (GenerateParametersCheck):
+        (GenerateCallbackImplementationContent):
+        (NativeToJSValue):
+        * bridge/objc/WebScriptObject.mm:
+        * html/HTMLFrameElementBase.cpp:
+        * html/HTMLVideoElement.cpp:
+        * inspector/InspectorController.cpp:
+        * inspector/InspectorDOMAgent.cpp:
+        * inspector/PageScriptDebugServer.cpp:
+        * inspector/WorkerScriptDebugServer.cpp:
+
</ins><span class="cx"> 2017-01-30  Andy Estes  &lt;aestes@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [QuickLook] FrameLoaderClient should return the new QuickLookHandleClient it creates
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebdatabaseDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webdatabase/Database.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webdatabase/Database.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/Modules/webdatabase/Database.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> #include &quot;DatabaseThread.h&quot;
</span><span class="cx"> #include &quot;DatabaseTracker.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><ins>+#include &quot;ExceptionCode.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="cx"> #include &quot;SQLError.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -2837,6 +2837,14 @@
</span><span class="cx">                 7C3E510B18DF8F3500C112F7 /* HTMLConverter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C3E510918DF8F3500C112F7 /* HTMLConverter.mm */; };
</span><span class="cx">                 7C3F01C11C8E5ABA00ADD962 /* UserContentProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C3F01C01C8E5AB100ADD962 /* UserContentProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 7C3F01C21C8E5AC200ADD962 /* UserContentProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F01BF1C8E5AB100ADD962 /* UserContentProvider.cpp */; };
</span><ins>+                7C45C9CF1E3EFDF700AAB558 /* JSDOMBindingSecurity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C45C9CA1E3E8D2E00AAB558 /* JSDOMBindingSecurity.cpp */; };
+                7C45C9D01E3EFDFB00AAB558 /* JSDOMWrapperCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C45C9CB1E3E8E4900AAB558 /* JSDOMWrapperCache.cpp */; };
+                7C45C9D11E3EFE0500AAB558 /* JSDOMConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C45C9CD1E3E900B00AAB558 /* JSDOMConstructor.cpp */; };
+                7C45C9D21E3EFE0800AAB558 /* JSDOMExceptionHandling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C45C9CC1E3E8F0800AAB558 /* JSDOMExceptionHandling.cpp */; };
+                7C45C9D31E3FCBD700AAB558 /* JSDOMWrapperCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C45C9C81E3E8B5100AAB558 /* JSDOMWrapperCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                7C45C9D41E3FCBDF00AAB558 /* JSDOMBindingSecurity.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C45C9C91E3E8CD700AAB558 /* JSDOMBindingSecurity.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                7C45C9D51E3FCBE400AAB558 /* JSDOMBindingCaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C45C9C61E3E8ABA00AAB558 /* JSDOMBindingCaller.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                7C45C9D61E3FCBF800AAB558 /* JSDOMExceptionHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C45C9C71E3E8AFF00AAB558 /* JSDOMExceptionHandling.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 7C48A6D0191C9D6500026674 /* WebKitNamespace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C48A6CE191C9D6500026674 /* WebKitNamespace.cpp */; };
</span><span class="cx">                 7C48A6D1191C9D6500026674 /* WebKitNamespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C48A6CF191C9D6500026674 /* WebKitNamespace.h */; };
</span><span class="cx">                 7C4C96DC1AD4483500365A50 /* JSReadableStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4C96D81AD4483500365A50 /* JSReadableStream.cpp */; };
</span><span class="lines">@@ -4564,10 +4572,8 @@
</span><span class="cx">                 B10B6980140C174000BC1C26 /* WebVTTToken.h in Headers */ = {isa = PBXBuildFile; fileRef = B10B697D140C174000BC1C26 /* WebVTTToken.h */; };
</span><span class="cx">                 B10B6981140C174000BC1C26 /* WebVTTTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B10B697E140C174000BC1C26 /* WebVTTTokenizer.cpp */; };
</span><span class="cx">                 B10B6982140C174000BC1C26 /* WebVTTTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = B10B697F140C174000BC1C26 /* WebVTTTokenizer.h */; };
</span><del>-                B1827493134CA4C100B98C2D /* CallbackFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1827492134CA4C100B98C2D /* CallbackFunction.cpp */; };
</del><span class="cx">                 B1AD4E7313A12A4600846B27 /* TextTrackLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B1AD4E7113A12A4600846B27 /* TextTrackLoader.cpp */; };
</span><span class="cx">                 B1AD4E7413A12A4600846B27 /* TextTrackLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B1AD4E7213A12A4600846B27 /* TextTrackLoader.h */; };
</span><del>-                B1D5ECB5134B58DA0087C78F /* CallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = B1D5ECB4134B58DA0087C78F /* CallbackFunction.h */; };
</del><span class="cx">                 B20111070AB7740500DB0E68 /* JSSVGAElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B20111050AB7740500DB0E68 /* JSSVGAElement.cpp */; };
</span><span class="cx">                 B20111080AB7740500DB0E68 /* JSSVGAElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B20111060AB7740500DB0E68 /* JSSVGAElement.h */; };
</span><span class="cx">                 B22279640D00BF220071B782 /* GradientAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277CD0D00BF1F0071B782 /* GradientAttributes.h */; };
</span><span class="lines">@@ -5140,7 +5146,6 @@
</span><span class="cx">                 B543B85717EB758F003BE93A /* SVGPropertyInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B543B85617EB758F003BE93A /* SVGPropertyInfo.cpp */; };
</span><span class="cx">                 B562DB6017D3CD630010AF96 /* HTMLElementTypeHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = B562DB5E17D3CD560010AF96 /* HTMLElementTypeHelpers.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 B562DB6117D3CD660010AF96 /* SVGElementTypeHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = B562DB5F17D3CD560010AF96 /* SVGElementTypeHelpers.h */; };
</span><del>-                B56576E817DA94E200A56BDC /* DOMConstructorWithDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = B56576E717DA94E200A56BDC /* DOMConstructorWithDocument.h */; };
</del><span class="cx">                 B56579B51824D12A00E79F23 /* RenderChildIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = B56579B41824D12A00E79F23 /* RenderChildIterator.h */; };
</span><span class="cx">                 B57CB52D182A3EED0079A647 /* InlineElementBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B57CB52C182A3EED0079A647 /* InlineElementBox.cpp */; };
</span><span class="cx">                 B57CB52E182A3EFC0079A647 /* InlineElementBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B57CB52B182A37F60079A647 /* InlineElementBox.h */; };
</span><span class="lines">@@ -10364,6 +10369,14 @@
</span><span class="cx">                 7C3F01C01C8E5AB100ADD962 /* UserContentProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7C4189AB1B07C170000FA757 /* GlobalEventHandlers.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = GlobalEventHandlers.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7C4189AC1B07CBF2000FA757 /* WindowEventHandlers.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = WindowEventHandlers.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                7C45C9C61E3E8ABA00AAB558 /* JSDOMBindingCaller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMBindingCaller.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                7C45C9C71E3E8AFF00AAB558 /* JSDOMExceptionHandling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMExceptionHandling.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                7C45C9C81E3E8B5100AAB558 /* JSDOMWrapperCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMWrapperCache.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                7C45C9C91E3E8CD700AAB558 /* JSDOMBindingSecurity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMBindingSecurity.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                7C45C9CA1E3E8D2E00AAB558 /* JSDOMBindingSecurity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMBindingSecurity.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                7C45C9CB1E3E8E4900AAB558 /* JSDOMWrapperCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMWrapperCache.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                7C45C9CC1E3E8F0800AAB558 /* JSDOMExceptionHandling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMExceptionHandling.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                7C45C9CD1E3E900B00AAB558 /* JSDOMConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMConstructor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 7C48A6CE191C9D6500026674 /* WebKitNamespace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitNamespace.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7C48A6CF191C9D6500026674 /* WebKitNamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitNamespace.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7C48A6D2191C9D8E00026674 /* WebKitNamespace.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebKitNamespace.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -12336,12 +12349,10 @@
</span><span class="cx">                 B10B697D140C174000BC1C26 /* WebVTTToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVTTToken.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B10B697E140C174000BC1C26 /* WebVTTTokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebVTTTokenizer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B10B697F140C174000BC1C26 /* WebVTTTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVTTTokenizer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                B1827492134CA4C100B98C2D /* CallbackFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CallbackFunction.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 B1A942E115B5CE2200D525D1 /* MediaSourceRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSourceRegistry.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B1A942E215B5CE2200D525D1 /* MediaSourceRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSourceRegistry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B1AD4E7113A12A4600846B27 /* TextTrackLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextTrackLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B1AD4E7213A12A4600846B27 /* TextTrackLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextTrackLoader.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                B1D5ECB4134B58DA0087C78F /* CallbackFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallbackFunction.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 B20111050AB7740500DB0E68 /* JSSVGAElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B20111060AB7740500DB0E68 /* JSSVGAElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGAElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B22277CD0D00BF1F0071B782 /* GradientAttributes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GradientAttributes.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -13055,7 +13066,6 @@
</span><span class="cx">                 B562DB5E17D3CD560010AF96 /* HTMLElementTypeHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLElementTypeHelpers.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B562DB5F17D3CD560010AF96 /* SVGElementTypeHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SVGElementTypeHelpers.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B56576E417DA599F00A56BDC /* JSMainThreadExecStateInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMainThreadExecStateInstrumentation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                B56576E717DA94E200A56BDC /* DOMConstructorWithDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMConstructorWithDocument.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 B56579B41824D12A00E79F23 /* RenderChildIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderChildIterator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B57CB52B182A37F60079A647 /* InlineElementBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineElementBox.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 B57CB52C182A3EED0079A647 /* InlineElementBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InlineElementBox.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -22142,7 +22152,6 @@
</span><span class="cx">                                 BCD533630ED6848900887468 /* CachedScriptSourceProvider.h */,
</span><span class="cx">                                 0F60F3291DFBB10400416D6C /* CommonVM.cpp */,
</span><span class="cx">                                 0F60F32A1DFBB10400416D6C /* CommonVM.h */,
</span><del>-                                B56576E717DA94E200A56BDC /* DOMConstructorWithDocument.h */,
</del><span class="cx">                                 BC53DA471143134D000D817E /* DOMWrapperWorld.cpp */,
</span><span class="cx">                                 BC53DA2D1143121E000D817E /* DOMWrapperWorld.h */,
</span><span class="cx">                                 1432E8480C51493F00B1500F /* GCController.cpp */,
</span><span class="lines">@@ -22161,8 +22170,14 @@
</span><span class="cx">                                 9BD4E9151C462872005065BC /* JSCustomElementInterface.h */,
</span><span class="cx">                                 93B70D4709EB0C7C009D8468 /* JSDOMBinding.cpp */,
</span><span class="cx">                                 93B70D4809EB0C7C009D8468 /* JSDOMBinding.h */,
</span><ins>+                                7C45C9C61E3E8ABA00AAB558 /* JSDOMBindingCaller.h */,
+                                7C45C9CA1E3E8D2E00AAB558 /* JSDOMBindingSecurity.cpp */,
+                                7C45C9C91E3E8CD700AAB558 /* JSDOMBindingSecurity.h */,
+                                7C45C9CD1E3E900B00AAB558 /* JSDOMConstructor.cpp */,
</ins><span class="cx">                                 413C2C331BC29A7B0075204C /* JSDOMConstructor.h */,
</span><span class="cx">                                 930841331CDDB15500B0958C /* JSDOMConvert.h */,
</span><ins>+                                7C45C9CC1E3E8F0800AAB558 /* JSDOMExceptionHandling.cpp */,
+                                7C45C9C71E3E8AFF00AAB558 /* JSDOMExceptionHandling.h */,
</ins><span class="cx">                                 E1C36CBC0EB08062007410BC /* JSDOMGlobalObject.cpp */,
</span><span class="cx">                                 E1C36C020EB076D6007410BC /* JSDOMGlobalObject.h */,
</span><span class="cx">                                 7C2BDD3B17C7F98B0038FF15 /* JSDOMGlobalObjectTask.cpp */,
</span><span class="lines">@@ -22179,6 +22194,8 @@
</span><span class="cx">                                 BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */,
</span><span class="cx">                                 4170A2E91D8C0CC000318452 /* JSDOMWrapper.cpp */,
</span><span class="cx">                                 65E0E9431133C89F00B4CB10 /* JSDOMWrapper.h */,
</span><ins>+                                7C45C9CB1E3E8E4900AAB558 /* JSDOMWrapperCache.cpp */,
+                                7C45C9C81E3E8B5100AAB558 /* JSDOMWrapperCache.h */,
</ins><span class="cx">                                 E3A5872E1DC3F52600F607A6 /* JSDynamicDowncast.h */,
</span><span class="cx">                                 BC60901E0E91B8EC000C68B5 /* JSEventTargetCustom.cpp */,
</span><span class="cx">                                 46B63F6B1C6E8CDF002E914B /* JSEventTargetCustom.h */,
</span><span class="lines">@@ -22575,8 +22592,6 @@
</span><span class="cx">                 BCCE58A71061E82F008FB35A /* Callback Objects */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                B1827492134CA4C100B98C2D /* CallbackFunction.cpp */,
-                                B1D5ECB4134B58DA0087C78F /* CallbackFunction.h */,
</del><span class="cx">                                 1449E286107D4DB400B5793F /* JSCallbackData.cpp */,
</span><span class="cx">                                 1449E24A107D4A8400B5793F /* JSCallbackData.h */,
</span><span class="cx">                                 E10B93C20B73C291003ED890 /* JSCustomXPathNSResolver.cpp */,
</span><span class="lines">@@ -25191,7 +25206,6 @@
</span><span class="cx">                                 93F1995008245E59001E9ABC /* CachePolicy.h in Headers */,
</span><span class="cx">                                 E43AF8E71AC5B7EC00CA717E /* CacheValidation.h in Headers */,
</span><span class="cx">                                 49AE2D97134EE5F90072920A /* CalculationValue.h in Headers */,
</span><del>-                                B1D5ECB5134B58DA0087C78F /* CallbackFunction.h in Headers */,
</del><span class="cx">                                 49484FC2102CF23C00187DD3 /* CanvasGradient.h in Headers */,
</span><span class="cx">                                 4671E0661D67A59600C6B497 /* CanvasPath.h in Headers */,
</span><span class="cx">                                 49484FC5102CF23C00187DD3 /* CanvasPattern.h in Headers */,
</span><span class="lines">@@ -25368,6 +25382,7 @@
</span><span class="cx">                                 E125F8361822F18A00D84CD9 /* CryptoKeyHMAC.h in Headers */,
</span><span class="cx">                                 E1F80B8818317252007885C3 /* CryptoKeyPair.h in Headers */,
</span><span class="cx">                                 E164FAA318315BF400DB4E61 /* CryptoKeyRSA.h in Headers */,
</span><ins>+                                7C45C9D51E3FCBE400AAB558 /* JSDOMBindingCaller.h in Headers */,
</ins><span class="cx">                                 E125F856182C0F8300D84CD9 /* CryptoKeySerialization.h in Headers */,
</span><span class="cx">                                 E125F85A182C1AA600D84CD9 /* CryptoKeySerializationRaw.h in Headers */,
</span><span class="cx">                                 E19727161820549E00592D51 /* CryptoKeyType.h in Headers */,
</span><span class="lines">@@ -25591,7 +25606,6 @@
</span><span class="cx">                                 A8185F3909765766005826D9 /* DocumentType.h in Headers */,
</span><span class="cx">                                 973889A1116EA9DC00ADF313 /* DocumentWriter.h in Headers */,
</span><span class="cx">                                 1A8F6BC30DB55CDC001DB794 /* DOMApplicationCache.h in Headers */,
</span><del>-                                B56576E817DA94E200A56BDC /* DOMConstructorWithDocument.h in Headers */,
</del><span class="cx">                                 BC60D6E90D28D83400B9918F /* DOMCoreException.h in Headers */,
</span><span class="cx">                                 FC9A0F75164094CF003D6B8D /* DOMCSSNamespace.h in Headers */,
</span><span class="cx">                                 9B3A8872145632F9003AE8F5 /* DOMDOMSettableTokenList.h in Headers */,
</span><span class="lines">@@ -26702,6 +26716,7 @@
</span><span class="cx">                                 4496E3A0139813A5003EE32A /* JSSVGMPathElement.h in Headers */,
</span><span class="cx">                                 8542A7970AE5C94300DF58DF /* JSSVGNumber.h in Headers */,
</span><span class="cx">                                 B2FA3DB10AB75A6F000E5AC4 /* JSSVGNumberList.h in Headers */,
</span><ins>+                                7C45C9D31E3FCBD700AAB558 /* JSDOMWrapperCache.h in Headers */,
</ins><span class="cx">                                 B2FA3DB50AB75A6F000E5AC4 /* JSSVGPathElement.h in Headers */,
</span><span class="cx">                                 B2FA3DB70AB75A6F000E5AC4 /* JSSVGPathSeg.h in Headers */,
</span><span class="cx">                                 B2FA3DB90AB75A6F000E5AC4 /* JSSVGPathSegArcAbs.h in Headers */,
</span><span class="lines">@@ -27803,6 +27818,7 @@
</span><span class="cx">                                 97BC6A521505F081001B74AC /* SQLTransactionCallback.h in Headers */,
</span><span class="cx">                                 97BC6A571505F081001B74AC /* SQLTransactionCoordinator.h in Headers */,
</span><span class="cx">                                 97BC6A581505F081001B74AC /* SQLTransactionErrorCallback.h in Headers */,
</span><ins>+                                7C45C9D41E3FCBDF00AAB558 /* JSDOMBindingSecurity.h in Headers */,
</ins><span class="cx">                                 FE36FD1816C7826500F887C1 /* SQLTransactionState.h in Headers */,
</span><span class="cx">                                 FE36FD1716C7826500F887C1 /* SQLTransactionStateMachine.h in Headers */,
</span><span class="cx">                                 1A2E6E5A0CC55213004A2062 /* SQLValue.h in Headers */,
</span><span class="lines">@@ -27852,6 +27868,7 @@
</span><span class="cx">                                 0FF50272102BA96A0066F39A /* StyleMedia.h in Headers */,
</span><span class="cx">                                 BC5EB74E0E81E06700B25965 /* StyleMultiColData.h in Headers */,
</span><span class="cx">                                 E4DACE6A1D12E10B0075980F /* StylePendingResources.h in Headers */,
</span><ins>+                                7C45C9D61E3FCBF800AAB558 /* JSDOMExceptionHandling.h in Headers */,
</ins><span class="cx">                                 A80E6DFC0A199067007FB8C5 /* StyleProperties.h in Headers */,
</span><span class="cx">                                 E1B25107152A0BB00069B779 /* StylePropertyShorthand.h in Headers */,
</span><span class="cx">                                 83C05A5B1A686212007E5DEA /* StylePropertyShorthandFunctions.h in Headers */,
</span><span class="lines">@@ -29092,7 +29109,6 @@
</span><span class="cx">                                 BCB16C270979C3BD00467741 /* CachedXSLStyleSheet.cpp in Sources */,
</span><span class="cx">                                 E43AF8E61AC5B7E800CA717E /* CacheValidation.cpp in Sources */,
</span><span class="cx">                                 49AE2D96134EE5F90072920A /* CalculationValue.cpp in Sources */,
</span><del>-                                B1827493134CA4C100B98C2D /* CallbackFunction.cpp in Sources */,
</del><span class="cx">                                 49484FC1102CF23C00187DD3 /* CanvasGradient.cpp in Sources */,
</span><span class="cx">                                 4671E0651D67A59600C6B497 /* CanvasPath.cpp in Sources */,
</span><span class="cx">                                 49484FC4102CF23C00187DD3 /* CanvasPattern.cpp in Sources */,
</span><span class="lines">@@ -29253,6 +29269,7 @@
</span><span class="cx">                                 FBB0C5B717BBD626003D3677 /* CSSFilterImageValue.cpp in Sources */,
</span><span class="cx">                                 BC64B4D50CB4298A005F2B62 /* CSSFontFace.cpp in Sources */,
</span><span class="cx">                                 409EBDB216B7EE7400CBA3FC /* CSSFontFaceLoadEvent.cpp in Sources */,
</span><ins>+                                7C45C9D11E3EFE0500AAB558 /* JSDOMConstructor.cpp in Sources */,
</ins><span class="cx">                                 A80E6CE70A1989CA007FB8C5 /* CSSFontFaceRule.cpp in Sources */,
</span><span class="cx">                                 C26017A31C72DC9900F74A16 /* CSSFontFaceSet.cpp in Sources */,
</span><span class="cx">                                 BC64B4D70CB4298A005F2B62 /* CSSFontFaceSource.cpp in Sources */,
</span><span class="lines">@@ -29586,6 +29603,7 @@
</span><span class="cx">                                 B2AFFC7C0D00A5C10030074D /* FontCacheMac.mm in Sources */,
</span><span class="cx">                                 B2C3DA600D006CD600EF6F26 /* FontCascade.cpp in Sources */,
</span><span class="cx">                                 B2AFFC800D00A5C10030074D /* FontCascadeCocoa.mm in Sources */,
</span><ins>+                                7C45C9D01E3EFDFB00AAB558 /* JSDOMWrapperCache.cpp in Sources */,
</ins><span class="cx">                                 B2C3DA670D006CD600EF6F26 /* FontCascadeFonts.cpp in Sources */,
</span><span class="cx">                                 7C4EDD741A7B607800198C4D /* FontCocoa.mm in Sources */,
</span><span class="cx">                                 B2AFFC7D0D00A5C10030074D /* FontCustomPlatformData.cpp in Sources */,
</span><span class="lines">@@ -31554,6 +31572,7 @@
</span><span class="cx">                                 B22279A40D00BF220071B782 /* SVGComponentTransferFunctionElement.cpp in Sources */,
</span><span class="cx">                                 B2227B050D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp in Sources */,
</span><span class="cx">                                 B22279A70D00BF220071B782 /* SVGCursorElement.cpp in Sources */,
</span><ins>+                                7C45C9D21E3EFE0800AAB558 /* JSDOMExceptionHandling.cpp in Sources */,
</ins><span class="cx">                                 B22279AD0D00BF220071B782 /* SVGDefsElement.cpp in Sources */,
</span><span class="cx">                                 B22279B00D00BF220071B782 /* SVGDescElement.cpp in Sources */,
</span><span class="cx">                                 B22279B30D00BF220071B782 /* SVGDocument.cpp in Sources */,
</span><span class="lines">@@ -31568,6 +31587,7 @@
</span><span class="cx">                                 B22279CD0D00BF220071B782 /* SVGFEComponentTransferElement.cpp in Sources */,
</span><span class="cx">                                 B22279D00D00BF220071B782 /* SVGFECompositeElement.cpp in Sources */,
</span><span class="cx">                                 1921327411C0E6BB00456238 /* SVGFEConvolveMatrixElement.cpp in Sources */,
</span><ins>+                                7C45C9CF1E3EFDF700AAB558 /* JSDOMBindingSecurity.cpp in Sources */,
</ins><span class="cx">                                 B22279D30D00BF220071B782 /* SVGFEDiffuseLightingElement.cpp in Sources */,
</span><span class="cx">                                 B22279D60D00BF220071B782 /* SVGFEDisplacementMapElement.cpp in Sources */,
</span><span class="cx">                                 B22279D90D00BF220071B782 /* SVGFEDistantLightElement.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsCallbackFunctioncpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/CallbackFunction.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/CallbackFunction.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/CallbackFunction.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -1,52 +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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;CallbackFunction.h&quot;
-
-#include &quot;ExceptionCode.h&quot;
-#include &quot;JSDOMBinding.h&quot;
-#include &lt;runtime/CallData.h&gt;
-
-namespace WebCore {
-
-bool checkFunctionOnlyCallback(JSC::ExecState* state, JSC::JSValue value, CallbackAllowedValueFlags acceptedValues)
-{
-    if (value.isUndefined() &amp;&amp; (acceptedValues &amp; CallbackAllowUndefined))
-        return false;
-
-    if (value.isNull() &amp;&amp; (acceptedValues &amp; CallbackAllowNull))
-        return false;
-
-    JSC::CallData callData;
-    if (getCallData(value, callData) == JSC::CallType::None) {
-        auto scope = DECLARE_THROW_SCOPE(state-&gt;vm());
-        throwTypeMismatchError(*state, scope);
-        return false;
-    }
-
-    return true;
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCorebindingsjsCallbackFunctionh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/CallbackFunction.h (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/CallbackFunction.h        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/CallbackFunction.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -1,55 +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 &lt;runtime/JSObject.h&gt;
-
-namespace JSC {
-class ExecState;
-}
-
-namespace WebCore {
-
-class JSDOMGlobalObject;
-
-enum CallbackAllowedValueFlag {
-    CallbackAllowUndefined = 1,
-    CallbackAllowNull = 1 &lt;&lt; 1
-};
-
-typedef unsigned CallbackAllowedValueFlags;
-
-bool checkFunctionOnlyCallback(JSC::ExecState*, JSC::JSValue, CallbackAllowedValueFlags);
-
-// Creates callback objects for callbacks marked as FunctionOnly in WebIDL.
-template &lt;typename JSCallbackType&gt;
-RefPtr&lt;JSCallbackType&gt; createFunctionOnlyCallback(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, JSC::JSValue value, CallbackAllowedValueFlags acceptedValues = 0)
-{
-    if (checkFunctionOnlyCallback(exec, value, acceptedValues))
-        return JSCallbackType::create(asObject(value), globalObject);
-    return nullptr;
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCorebindingsjsDOMConstructorWithDocumenth"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/DOMConstructorWithDocument.h (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/DOMConstructorWithDocument.h        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/DOMConstructorWithDocument.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -1,49 +0,0 @@
</span><del>-/*
- *  Copyright (C) 2009 Google, Inc. All rights reserved.
- *
- *  This library is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  This library is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this library; if not, write to the Free Software
- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#pragma once
-
-#include &quot;Document.h&quot;
-#include &quot;JSDOMBinding.h&quot;
-
-namespace WebCore {
-
-// Constructors using this base class depend on being in a Document and
-// can never be used from a WorkerGlobalScope.
-class DOMConstructorWithDocument : public DOMConstructorObject {
-    typedef DOMConstructorObject Base;
-public:
-    Document* document() const
-    {
-        return downcast&lt;Document&gt;(scriptExecutionContext());
-    }
-
-protected:
-    DOMConstructorWithDocument(JSC::Structure* structure, JSDOMGlobalObject&amp; globalObject)
-        : DOMConstructorObject(structure, globalObject)
-    {
-    }
-
-    void finishCreation(JSDOMGlobalObject&amp; globalObject)
-    {
-        Base::finishCreation(globalObject.vm());
-        ASSERT(globalObject.scriptExecutionContext()-&gt;isDocument());
-    }
-};
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSBindingsAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> // This all-in-one cpp file cuts down on template bloat to allow us to build our Windows release build.
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CachedModuleScriptLoader.cpp&quot;
</span><del>-#include &quot;CallbackFunction.cpp&quot;
</del><span class="cx"> #include &quot;DOMWrapperWorld.cpp&quot;
</span><span class="cx"> #include &quot;GCController.cpp&quot;
</span><span class="cx"> #include &quot;JSAnimationTimelineCustom.cpp&quot;
</span><span class="lines">@@ -46,6 +45,9 @@
</span><span class="cx"> #include &quot;JSSQLStatementErrorCallbackCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSCustomXPathNSResolver.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.cpp&quot;
</span><ins>+#include &quot;JSDOMBindingSecurity.cpp&quot;
+#include &quot;JSDOMConstructor.cpp&quot;
+#include &quot;JSDOMExceptionHandling.cpp&quot;
</ins><span class="cx"> #include &quot;JSDOMGlobalObject.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMGlobalObjectTask.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMPromise.cpp&quot;
</span><span class="lines">@@ -55,6 +57,7 @@
</span><span class="cx"> #include &quot;JSDOMWindowProperties.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMWindowShell.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMWrapper.cpp&quot;
</span><ins>+#include &quot;JSDOMWrapperCache.cpp&quot;
</ins><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="trunkSourceWebCorebindingsjsJSCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSCryptoCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -26,8 +26,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;JSCrypto.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;ExceptionCode.h&quot;
</del><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &lt;runtime/ArrayBufferView.h&gt;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/JSArrayBufferView.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCustomXPathNSResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCustomXPathNSResolver.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCustomXPathNSResolver.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSCustomXPathNSResolver.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -28,8 +28,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CommonVM.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><del>-#include &quot;ExceptionCode.h&quot;
</del><span class="cx"> #include &quot;Frame.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindowCustom.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -24,42 +24,19 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CachedScript.h&quot;
</span><span class="cx"> #include &quot;CommonVM.h&quot;
</span><del>-#include &quot;DOMConstructorWithDocument.h&quot;
-#include &quot;ExceptionCode.h&quot;
-#include &quot;ExceptionCodeDescription.h&quot;
-#include &quot;ExceptionHeaders.h&quot;
-#include &quot;ExceptionInterfaces.h&quot;
</del><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;HTMLParserIdioms.h&quot;
</span><del>-#include &quot;IDBDatabaseException.h&quot;
</del><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><del>-#include &quot;JSDOMPromise.h&quot;
-#include &quot;JSDOMWindowCustom.h&quot;
-#include &quot;JSExceptionBase.h&quot;
-#include &quot;SecurityOrigin.h&quot;
-#include &lt;bytecode/CodeBlock.h&gt;
-#include &lt;inspector/ScriptCallStack.h&gt;
-#include &lt;inspector/ScriptCallStackFactory.h&gt;
</del><span class="cx"> #include &lt;runtime/DateInstance.h&gt;
</span><del>-#include &lt;runtime/Error.h&gt;
-#include &lt;runtime/ErrorHandlingScope.h&gt;
-#include &lt;runtime/ErrorInstance.h&gt;
-#include &lt;runtime/Exception.h&gt;
-#include &lt;runtime/ExceptionHelpers.h&gt;
-#include &lt;runtime/JSFunction.h&gt;
</del><span class="cx"> #include &lt;stdarg.h&gt;
</span><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><ins>+#include &lt;wtf/text/StringBuilder.h&gt;
</ins><span class="cx"> #include &lt;wtf/unicode/CharacterNames.h&gt;
</span><del>-#include &lt;wtf/text/StringBuilder.h&gt;
</del><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><del>-using namespace Inspector;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(DOMConstructorObject);
-STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(DOMConstructorWithDocument);
-
</del><span class="cx"> void addImpureProperty(const AtomicString&amp; propertyName)
</span><span class="cx"> {
</span><span class="cx">     commonVM().addImpureProperty(propertyName);
</span><span class="lines">@@ -184,170 +161,6 @@
</span><span class="cx">     return static_cast&lt;DateInstance*&gt;(value.toObject(exec))-&gt;internalNumber();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void reportException(ExecState* exec, JSValue exceptionValue, CachedScript* cachedScript)
-{
-    VM&amp; vm = exec-&gt;vm();
-    RELEASE_ASSERT(vm.currentThreadIsHoldingAPILock());
-    auto* exception = jsDynamicDowncast&lt;JSC::Exception*&gt;(vm, exceptionValue);
-    if (!exception) {
-        exception = vm.lastException();
-        if (!exception)
-            exception = JSC::Exception::create(exec-&gt;vm(), exceptionValue, JSC::Exception::DoNotCaptureStack);
-    }
-
-    reportException(exec, exception, cachedScript);
-}
-
-String retrieveErrorMessage(ExecState&amp; state, VM&amp; vm, JSValue exception, CatchScope&amp; catchScope)
-{
-    if (auto* exceptionBase = toExceptionBase(vm, exception))
-        return exceptionBase-&gt;toString();
-
-    // FIXME: &lt;http://webkit.org/b/115087&gt; Web Inspector: WebCore::reportException should not evaluate JavaScript handling exceptions
-    // If this is a custom exception object, call toString on it to try and get a nice string representation for the exception.
-    String errorMessage;
-    if (auto* error = jsDynamicDowncast&lt;ErrorInstance*&gt;(vm, exception))
-        errorMessage = error-&gt;sanitizedToString(&amp;state);
-    else
-        errorMessage = exception.toWTFString(&amp;state);
-
-    // We need to clear any new exception that may be thrown in the toString() call above.
-    // reportException() is not supposed to be making new exceptions.
-    catchScope.clearException();
-    vm.clearLastException();
-    return errorMessage;
-}
-
-void reportException(ExecState* exec, JSC::Exception* exception, CachedScript* cachedScript, ExceptionDetails* exceptionDetails)
-{
-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_CATCH_SCOPE(vm);
-
-    RELEASE_ASSERT(vm.currentThreadIsHoldingAPILock());
-    if (isTerminatedExecutionException(vm, exception))
-        return;
-
-    ErrorHandlingScope errorScope(exec-&gt;vm());
-
-    RefPtr&lt;ScriptCallStack&gt; callStack(createScriptCallStackFromException(exec, exception, ScriptCallStack::maxCallStackSizeToCapture));
-    scope.clearException();
-    vm.clearLastException();
-
-    JSDOMGlobalObject* globalObject = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject());
-    if (JSDOMWindow* window = jsDynamicDowncast&lt;JSDOMWindow*&gt;(vm, globalObject)) {
-        if (!window-&gt;wrapped().isCurrentlyDisplayedInFrame())
-            return;
-    }
-
-    int lineNumber = 0;
-    int columnNumber = 0;
-    String exceptionSourceURL;
-    if (const ScriptCallFrame* callFrame = callStack-&gt;firstNonNativeCallFrame()) {
-        lineNumber = callFrame-&gt;lineNumber();
-        columnNumber = callFrame-&gt;columnNumber();
-        exceptionSourceURL = callFrame-&gt;sourceURL();
-    }
-
-    String errorMessage = retrieveErrorMessage(*exec, vm, exception-&gt;value(), scope);
-    ScriptExecutionContext* scriptExecutionContext = globalObject-&gt;scriptExecutionContext();
-    scriptExecutionContext-&gt;reportException(errorMessage, lineNumber, columnNumber, exceptionSourceURL, exception, callStack-&gt;size() ? callStack : nullptr, cachedScript);
-
-    if (exceptionDetails) {
-        exceptionDetails-&gt;message = errorMessage;
-        exceptionDetails-&gt;lineNumber = lineNumber;
-        exceptionDetails-&gt;columnNumber = columnNumber;
-        exceptionDetails-&gt;sourceURL = exceptionSourceURL;
-    }
-}
-
-void reportCurrentException(ExecState* exec)
-{
-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_CATCH_SCOPE(vm);
-    auto* exception = scope.exception();
-    scope.clearException();
-    reportException(exec, exception);
-}
-
-static JSValue createDOMException(ExecState* exec, ExceptionCode ec, const String* message = nullptr)
-{
-    if (!ec || ec == ExistingExceptionError)
-        return jsUndefined();
-
-    // FIXME: Handle other WebIDL exception types.
-    if (ec == TypeError) {
-        if (!message || message-&gt;isEmpty())
-            return createTypeError(exec);
-        return createTypeError(exec, *message);
-    }
-
-    if (ec == RangeError) {
-        if (!message || message-&gt;isEmpty())
-            return createRangeError(exec, ASCIILiteral(&quot;Bad value&quot;));
-        return createRangeError(exec, *message);
-    }
-
-    if (ec == StackOverflowError)
-        return createStackOverflowError(exec);
-
-    // FIXME: All callers to createDOMException need to pass in the correct global object.
-    // For now, we're going to assume the lexicalGlobalObject. Which is wrong in cases like this:
-    // frames[0].document.createElement(null, null); // throws an exception which should have the subframe's prototypes.
-    JSDOMGlobalObject* globalObject = deprecatedGlobalObjectForPrototype(exec);
-
-    ExceptionCodeDescription description(ec);
-
-    CString messageCString;
-    if (message)
-        messageCString = message-&gt;utf8();
-    if (message &amp;&amp; !message-&gt;isEmpty()) {
-        // It is safe to do this because the char* contents of the CString are copied into a new WTF::String before the CString is destroyed.
-        description.description = messageCString.data();
-    }
-
-    JSValue errorObject;
-    switch (description.type) {
-    case DOMCoreExceptionType:
-#if ENABLE(INDEXED_DATABASE)
-    case IDBDatabaseExceptionType:
-#endif
-        errorObject = toJS(exec, globalObject, DOMCoreException::create(description));
-        break;
-    case FileExceptionType:
-        errorObject = toJS(exec, globalObject, FileException::create(description));
-        break;
-    case SQLExceptionType:
-        errorObject = toJS(exec, globalObject, SQLException::create(description));
-        break;
-    case SVGExceptionType:
-        errorObject = toJS(exec, globalObject, SVGException::create(description));
-        break;
-    case XPathExceptionType:
-        errorObject = toJS(exec, globalObject, XPathException::create(description));
-        break;
-    }
-    
-    ASSERT(errorObject);
-    addErrorInfo(exec, asObject(errorObject), true);
-    return errorObject;
-}
-
-JSValue createDOMException(ExecState* exec, ExceptionCode ec, const String&amp; message)
-{
-    return createDOMException(exec, ec, &amp;message);
-}
-
-JSValue createDOMException(ExecState&amp; state, Exception&amp;&amp; exception)
-{
-    return createDOMException(&amp;state, exception.code(), exception.releaseMessage());
-}
-
-void propagateExceptionSlowPath(JSC::ExecState&amp; state, JSC::ThrowScope&amp; throwScope, Exception&amp;&amp; exception)
-{
-    ASSERT(!throwScope.exception());
-    throwException(&amp;state, throwScope, createDOMException(state, WTFMove(exception)));
-}
-
</del><span class="cx"> bool hasIteratorMethod(JSC::ExecState&amp; state, JSC::JSValue value)
</span><span class="cx"> {
</span><span class="cx">     auto&amp; vm = state.vm();
</span><span class="lines">@@ -365,43 +178,6 @@
</span><span class="cx">     return !applyMethod.isUndefined();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool BindingSecurity::shouldAllowAccessToFrame(ExecState&amp; state, Frame&amp; frame, String&amp; message)
-{
-    if (BindingSecurity::shouldAllowAccessToFrame(&amp;state, &amp;frame, DoNotReportSecurityError))
-        return true;
-    message = frame.document()-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(activeDOMWindow(&amp;state));
-    return false;
-}
-
-bool BindingSecurity::shouldAllowAccessToDOMWindow(ExecState&amp; state, DOMWindow&amp; globalObject, String&amp; message)
-{
-    if (BindingSecurity::shouldAllowAccessToDOMWindow(&amp;state, globalObject, DoNotReportSecurityError))
-        return true;
-    message = globalObject.crossDomainAccessErrorMessage(activeDOMWindow(&amp;state));
-    return false;
-}
-
-void printErrorMessageForFrame(Frame* frame, const String&amp; message)
-{
-    if (!frame)
-        return;
-    frame-&gt;document()-&gt;domWindow()-&gt;printErrorMessage(message);
-}
-
-Structure* getCachedDOMStructure(JSDOMGlobalObject&amp; globalObject, const ClassInfo* classInfo)
-{
-    JSDOMStructureMap&amp; structures = globalObject.structures(NoLockingNecessary);
-    return structures.get(classInfo).get();
-}
-
-Structure* cacheDOMStructure(JSDOMGlobalObject&amp; globalObject, Structure* structure, const ClassInfo* classInfo)
-{
-    auto locker = lockDuringMarking(globalObject.vm().heap, globalObject.gcLock());
-    JSDOMStructureMap&amp; structures = globalObject.structures(locker);
-    ASSERT(!structures.contains(classInfo));
-    return structures.set(classInfo, WriteBarrier&lt;Structure&gt;(globalObject.vm(), &amp;globalObject, structure)).iterator-&gt;value.get();
-}
-
</del><span class="cx"> static const int32_t kMaxInt32 = 0x7fffffff;
</span><span class="cx"> static const int32_t kMinInt32 = -kMaxInt32 - 1;
</span><span class="cx"> static const uint32_t kMaxUInt32 = 0xffffffffU;
</span><span class="lines">@@ -715,320 +491,4 @@
</span><span class="cx">     return n;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-class GetCallerGlobalObjectFunctor {
-public:
-    GetCallerGlobalObjectFunctor() = default;
-
-    StackVisitor::Status operator()(StackVisitor&amp; visitor) const
-    {
-        if (!m_hasSkippedFirstFrame) {
-            m_hasSkippedFirstFrame = true;
-            return StackVisitor::Continue;
-        }
-
-        if (auto* codeBlock = visitor-&gt;codeBlock())
-            m_globalObject = codeBlock-&gt;globalObject();
-        else {
-            ASSERT(visitor-&gt;callee());
-            // FIXME: Callee is not an object if the caller is Web Assembly.
-            // Figure out what to do here. We can probably get the global object
-            // from the top-most Wasm Instance. https://bugs.webkit.org/show_bug.cgi?id=165721
-            if (visitor-&gt;callee()-&gt;isObject())
-                m_globalObject = jsCast&lt;JSObject*&gt;(visitor-&gt;callee())-&gt;globalObject();
-        }
-        return StackVisitor::Done;
-    }
-
-    JSGlobalObject* globalObject() const { return m_globalObject; }
-
-private:
-    mutable bool m_hasSkippedFirstFrame { false };
-    mutable JSGlobalObject* m_globalObject { nullptr };
-};
-
-DOMWindow&amp; callerDOMWindow(ExecState* exec)
-{
-    GetCallerGlobalObjectFunctor iter;
-    exec-&gt;iterate(iter);
-    return iter.globalObject() ? asJSDOMWindow(iter.globalObject())-&gt;wrapped() : firstDOMWindow(exec);
-}
-
-DOMWindow&amp; activeDOMWindow(ExecState* exec)
-{
-    return asJSDOMWindow(exec-&gt;lexicalGlobalObject())-&gt;wrapped();
-}
-
-DOMWindow&amp; firstDOMWindow(ExecState* exec)
-{
-    return asJSDOMWindow(exec-&gt;vmEntryGlobalObject())-&gt;wrapped();
-}
-
-static inline bool canAccessDocument(JSC::ExecState* state, Document* targetDocument, SecurityReportingOption reportingOption)
-{
-    VM&amp; vm = state-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    if (!targetDocument)
-        return false;
-
-    DOMWindow&amp; active = activeDOMWindow(state);
-
-    if (active.document()-&gt;securityOrigin().canAccess(targetDocument-&gt;securityOrigin()))
-        return true;
-
-    switch (reportingOption) {
-    case ThrowSecurityError:
-        throwSecurityError(*state, scope, targetDocument-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(active));
-        break;
-    case LogSecurityError:
-        printErrorMessageForFrame(targetDocument-&gt;frame(), targetDocument-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(active));
-        break;
-    case DoNotReportSecurityError:
-        break;
-    }
-
-    return false;
-}
-
-bool BindingSecurity::shouldAllowAccessToDOMWindow(JSC::ExecState* state, DOMWindow&amp; target, SecurityReportingOption reportingOption)
-{
-    return canAccessDocument(state, target.document(), reportingOption);
-}
-
-bool BindingSecurity::shouldAllowAccessToFrame(JSC::ExecState* state, Frame* target, SecurityReportingOption reportingOption)
-{
-    return target &amp;&amp; canAccessDocument(state, target-&gt;document(), reportingOption);
-}
-
-bool BindingSecurity::shouldAllowAccessToNode(JSC::ExecState&amp; state, Node* target)
-{
-    return !target || canAccessDocument(&amp;state, &amp;target-&gt;document(), LogSecurityError);
-}
-    
-static EncodedJSValue throwTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const String&amp; errorMessage)
-{
-    return throwVMTypeError(&amp;state, scope, errorMessage);
-}
-
-static void appendArgumentMustBe(StringBuilder&amp; builder, unsigned argumentIndex, const char* argumentName, const char* interfaceName, const char* functionName)
-{
-    builder.appendLiteral(&quot;Argument &quot;);
-    builder.appendNumber(argumentIndex + 1);
-    builder.appendLiteral(&quot; ('&quot;);
-    builder.append(argumentName);
-    builder.appendLiteral(&quot;') to &quot;);
-    if (!functionName) {
-        builder.appendLiteral(&quot;the &quot;);
-        builder.append(interfaceName);
-        builder.appendLiteral(&quot; constructor&quot;);
-    } else {
-        builder.append(interfaceName);
-        builder.append('.');
-        builder.append(functionName);
-    }
-    builder.appendLiteral(&quot; must be &quot;);
-}
-
-JSC::EncodedJSValue reportDeprecatedGetterError(JSC::ExecState&amp; state, const char* interfaceName, const char* attributeName)
-{
-    auto&amp; context = *jsCast&lt;JSDOMGlobalObject*&gt;(state.lexicalGlobalObject())-&gt;scriptExecutionContext();
-    context.addConsoleMessage(MessageSource::JS, MessageLevel::Error, makeString(&quot;Deprecated attempt to access property '&quot;, attributeName, &quot;' on a non-&quot;, interfaceName, &quot; object.&quot;));
-    return JSValue::encode(jsUndefined());
-}
-    
-void reportDeprecatedSetterError(JSC::ExecState&amp; state, const char* interfaceName, const char* attributeName)
-{
-    auto&amp; context = *jsCast&lt;JSDOMGlobalObject*&gt;(state.lexicalGlobalObject())-&gt;scriptExecutionContext();
-    context.addConsoleMessage(MessageSource::JS, MessageLevel::Error, makeString(&quot;Deprecated attempt to set property '&quot;, attributeName, &quot;' on a non-&quot;, interfaceName, &quot; object.&quot;));
-}
-
-void throwNotSupportedError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
-{
-    ASSERT(!scope.exception());
-    throwException(&amp;state, scope, createDOMException(&amp;state, NOT_SUPPORTED_ERR));
-}
-
-void throwNotSupportedError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* message)
-{
-    ASSERT(!scope.exception());
-    String messageString(message);
-    throwException(&amp;state, scope, createDOMException(&amp;state, NOT_SUPPORTED_ERR, &amp;messageString));
-}
-
-void throwInvalidStateError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* message)
-{
-    ASSERT(!scope.exception());
-    String messageString(message);
-    throwException(&amp;state, scope, createDOMException(&amp;state, INVALID_STATE_ERR, &amp;messageString));
-}
-
-void throwSecurityError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const String&amp; message)
-{
-    ASSERT(!scope.exception());
-    throwException(&amp;state, scope, createDOMException(&amp;state, SECURITY_ERR, message));
-}
-
-JSC::EncodedJSValue throwArgumentMustBeEnumError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedValues)
-{
-    StringBuilder builder;
-    appendArgumentMustBe(builder, argumentIndex, argumentName, functionInterfaceName, functionName);
-    builder.appendLiteral(&quot;one of: &quot;);
-    builder.append(expectedValues);
-    return throwVMTypeError(&amp;state, scope, builder.toString());
-}
-
-JSC::EncodedJSValue throwArgumentMustBeFunctionError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, unsigned argumentIndex, const char* argumentName, const char* interfaceName, const char* functionName)
-{
-    StringBuilder builder;
-    appendArgumentMustBe(builder, argumentIndex, argumentName, interfaceName, functionName);
-    builder.appendLiteral(&quot;a function&quot;);
-    return throwVMTypeError(&amp;state, scope, builder.toString());
-}
-
-JSC::EncodedJSValue throwArgumentTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedType)
-{
-    StringBuilder builder;
-    appendArgumentMustBe(builder, argumentIndex, argumentName, functionInterfaceName, functionName);
-    builder.appendLiteral(&quot;an instance of &quot;);
-    builder.append(expectedType);
-    return throwVMTypeError(&amp;state, scope, builder.toString());
-}
-
-void throwArrayElementTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
-{
-    throwTypeError(state, scope, ASCIILiteral(&quot;Invalid Array element type&quot;));
-}
-
-void throwAttributeTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName, const char* attributeName, const char* expectedType)
-{
-    throwTypeError(state, scope, makeString(&quot;The &quot;, interfaceName, '.', attributeName, &quot; attribute must be an instance of &quot;, expectedType));
-}
-
-JSC::EncodedJSValue throwRequiredMemberTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* memberName, const char* dictionaryName, const char* expectedType)
-{
-    StringBuilder builder;
-    builder.appendLiteral(&quot;Member &quot;);
-    builder.append(dictionaryName);
-    builder.append('.');
-    builder.append(memberName);
-    builder.appendLiteral(&quot; is required and must be an instance of &quot;);
-    builder.append(expectedType);
-    return throwVMTypeError(&amp;state, scope, builder.toString());
-}
-
-JSC::EncodedJSValue throwConstructorScriptExecutionContextUnavailableError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName)
-{
-    return throwVMError(&amp;state, scope, createReferenceError(&amp;state, makeString(interfaceName, &quot; constructor associated execution context is unavailable&quot;)));
-}
-
-void throwSequenceTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
-{
-    throwTypeError(state, scope, ASCIILiteral(&quot;Value is not a sequence&quot;));
-}
-
-void throwNonFiniteTypeError(ExecState&amp; state, JSC::ThrowScope&amp; scope)
-{
-    throwTypeError(&amp;state, scope, ASCIILiteral(&quot;The provided value is non-finite&quot;));
-}
-
-String makeGetterTypeErrorMessage(const char* interfaceName, const char* attributeName)
-{
-    return makeString(&quot;The &quot;, interfaceName, '.', attributeName, &quot; getter can only be used on instances of &quot;, interfaceName);
-}
-
-JSC::EncodedJSValue throwGetterTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName, const char* attributeName)
-{
-    return throwVMTypeError(&amp;state, scope, makeGetterTypeErrorMessage(interfaceName, attributeName));
-}
-
-JSC::EncodedJSValue rejectPromiseWithGetterTypeError(JSC::ExecState&amp; state, const char* interfaceName, const char* attributeName)
-{
-    return createRejectedPromiseWithTypeError(state, makeGetterTypeErrorMessage(interfaceName, attributeName));
-}
-
-bool throwSetterTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName, const char* attributeName)
-{
-    throwTypeError(state, scope, makeString(&quot;The &quot;, interfaceName, '.', attributeName, &quot; setter can only be used on instances of &quot;, interfaceName));
-    return false;
-}
-
-String makeThisTypeErrorMessage(const char* interfaceName, const char* functionName)
-{
-    return makeString(&quot;Can only call &quot;, interfaceName, '.', functionName, &quot; on instances of &quot;, interfaceName);
-}
-
-EncodedJSValue throwThisTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName, const char* functionName)
-{
-    return throwTypeError(state, scope, makeThisTypeErrorMessage(interfaceName, functionName));
-}
-
-JSC::EncodedJSValue rejectPromiseWithThisTypeError(DeferredPromise&amp; promise, const char* interfaceName, const char* methodName)
-{
-    promise.reject(TypeError, makeThisTypeErrorMessage(interfaceName, methodName));
-    return JSValue::encode(jsUndefined());
-}
-
-JSC::EncodedJSValue rejectPromiseWithThisTypeError(JSC::ExecState&amp; state, const char* interfaceName, const char* methodName)
-{
-    return createRejectedPromiseWithTypeError(state, makeThisTypeErrorMessage(interfaceName, methodName));
-}
-
-void callFunctionWithCurrentArguments(JSC::ExecState&amp; state, JSC::JSObject&amp; thisObject, JSC::JSFunction&amp; function)
-{
-    JSC::CallData callData;
-    JSC::CallType callType = JSC::getCallData(&amp;function, callData);
-    ASSERT(callType != CallType::None);
-
-    JSC::MarkedArgumentBuffer arguments;
-    for (unsigned i = 0; i &lt; state.argumentCount(); ++i)
-        arguments.append(state.uncheckedArgument(i));
-    JSC::call(&amp;state, &amp;function, callType, callData, &amp;thisObject, arguments);
-}
-
-void DOMConstructorJSBuiltinObject::visitChildren(JSC::JSCell* cell, JSC::SlotVisitor&amp; visitor)
-{
-    auto* thisObject = jsCast&lt;DOMConstructorJSBuiltinObject*&gt;(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    Base::visitChildren(thisObject, visitor);
-    visitor.append(thisObject-&gt;m_initializeFunction);
-}
-
-static EncodedJSValue JSC_HOST_CALL callThrowTypeError(ExecState* exec)
-{
-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-    throwTypeError(exec, scope, ASCIILiteral(&quot;Constructor requires 'new' operator&quot;));
-    return JSValue::encode(jsNull());
-}
-
-CallType DOMConstructorObject::getCallData(JSCell*, CallData&amp; callData)
-{
-    callData.native.function = callThrowTypeError;
-    return CallType::Host;
-}
-
-void throwDOMSyntaxError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
-{
-    ASSERT(!scope.exception());
-    throwException(&amp;state, scope, createDOMException(&amp;state, SYNTAX_ERR));
-}
-
-void throwDataCloneError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
-{
-    ASSERT(!scope.exception());
-    throwException(&amp;state, scope, createDOMException(&amp;state, DATA_CLONE_ERR));
-}
-
-void throwIndexSizeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
-{
-    ASSERT(!scope.exception());
-    throwException(&amp;state, scope, createDOMException(&amp;state, INDEX_SIZE_ERR));
-}
-
-void throwTypeMismatchError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
-{
-    ASSERT(!scope.exception());
-    throwException(&amp;state, scope, createDOMException(&amp;state, TYPE_MISMATCH_ERR));
-}
-
</del><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -23,25 +23,14 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;DOMWrapperWorld.h&quot;
-#include &quot;ExceptionCode.h&quot;
</del><span class="cx"> #include &quot;ExceptionOr.h&quot;
</span><del>-#include &quot;JSDOMGlobalObject.h&quot;
-#include &quot;JSDOMWrapper.h&quot;
-#include &quot;JSDynamicDowncast.h&quot;
-#include &quot;ScriptWrappable.h&quot;
-#include &quot;ScriptWrappableInlines.h&quot;
-#include &quot;WebCoreTypedArrayController.h&quot;
</del><ins>+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;cstddef&gt;
</span><span class="cx"> #include &lt;heap/HeapInlines.h&gt;
</span><span class="cx"> #include &lt;heap/SlotVisitorInlines.h&gt;
</span><del>-#include &lt;heap/Weak.h&gt;
-#include &lt;heap/WeakInlines.h&gt;
</del><span class="cx"> #include &lt;runtime/AuxiliaryBarrierInlines.h&gt;
</span><del>-#include &lt;runtime/Error.h&gt;
</del><span class="cx"> #include &lt;runtime/IteratorOperations.h&gt;
</span><span class="cx"> #include &lt;runtime/JSArray.h&gt;
</span><del>-#include &lt;runtime/JSArrayBuffer.h&gt;
</del><span class="cx"> #include &lt;runtime/JSCJSValueInlines.h&gt;
</span><span class="cx"> #include &lt;runtime/JSCellInlines.h&gt;
</span><span class="cx"> #include &lt;runtime/JSObjectInlines.h&gt;
</span><span class="lines">@@ -49,8 +38,6 @@
</span><span class="cx"> #include &lt;runtime/Lookup.h&gt;
</span><span class="cx"> #include &lt;runtime/ObjectConstructor.h&gt;
</span><span class="cx"> #include &lt;runtime/StructureInlines.h&gt;
</span><del>-#include &lt;runtime/TypedArrayInlines.h&gt;
-#include &lt;runtime/TypedArrays.h&gt;
</del><span class="cx"> #include &lt;runtime/WriteBarrier.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="lines">@@ -66,140 +53,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class CachedScript;
-class DeferredPromise;
-class DOMWindow;
-class Frame;
</del><span class="cx"> class URL;
</span><del>-class Node;
</del><span class="cx"> 
</span><del>-struct ExceptionDetails {
-    String message;
-    int lineNumber { 0 };
-    int columnNumber { 0 };
-    String sourceURL;
-};
-
-// Base class for all constructor objects in the JSC bindings.
-class DOMConstructorObject : public JSDOMObject {
-public:
-    typedef JSDOMObject Base;
-    static const unsigned StructureFlags = Base::StructureFlags | JSC::ImplementsHasInstance | JSC::ImplementsDefaultHasInstance | JSC::TypeOfShouldCallGetCallData;
-    static JSC::Structure* createStructure(JSC::VM&amp;, JSC::JSGlobalObject*, JSC::JSValue);
-
-protected:
-    DOMConstructorObject(JSC::Structure*, JSDOMGlobalObject&amp;);
-
-    static String className(const JSObject*);
-    static JSC::CallType getCallData(JSCell*, JSC::CallData&amp;);
-};
-
-class DOMConstructorJSBuiltinObject : public DOMConstructorObject {
-public:
-    typedef DOMConstructorObject Base;
-
-protected:
-    DOMConstructorJSBuiltinObject(JSC::Structure*, JSDOMGlobalObject&amp;);
-    static void visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;);
-
-    JSC::JSFunction* initializeFunction();
-    void setInitializeFunction(JSC::VM&amp;, JSC::JSFunction&amp;);
-
-private:
-    JSC::WriteBarrier&lt;JSC::JSFunction&gt; m_initializeFunction;
-};
-
-DOMWindow&amp; callerDOMWindow(JSC::ExecState*);
-DOMWindow&amp; activeDOMWindow(JSC::ExecState*);
-DOMWindow&amp; firstDOMWindow(JSC::ExecState*);
-
-WEBCORE_EXPORT JSC::EncodedJSValue reportDeprecatedGetterError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName);
-WEBCORE_EXPORT void reportDeprecatedSetterError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName);
-
-void throwAttributeTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName, const char* attributeName, const char* expectedType);
-WEBCORE_EXPORT bool throwSetterTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName, const char* attributeName);
-
-void throwArrayElementTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
-void throwDataCloneError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
-void throwDOMSyntaxError(JSC::ExecState&amp;, JSC::ThrowScope&amp;); // Not the same as a JavaScript syntax error.
-void throwIndexSizeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
-void throwInvalidStateError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* message);
-WEBCORE_EXPORT void throwNonFiniteTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
-void throwNotSupportedError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
-void throwNotSupportedError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* message);
-void throwSecurityError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const String&amp; message);
-WEBCORE_EXPORT void throwSequenceTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
-void throwTypeMismatchError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
-
-WEBCORE_EXPORT JSC::EncodedJSValue throwArgumentMustBeEnumError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedValues);
-JSC::EncodedJSValue throwArgumentMustBeFunctionError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName);
-WEBCORE_EXPORT JSC::EncodedJSValue throwArgumentTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedType);
-WEBCORE_EXPORT JSC::EncodedJSValue throwRequiredMemberTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* memberName, const char* dictionaryName, const char* expectedType);
-JSC::EncodedJSValue throwConstructorScriptExecutionContextUnavailableError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName);
-
-String makeGetterTypeErrorMessage(const char* interfaceName, const char* attributeName);
-String makeThisTypeErrorMessage(const char* interfaceName, const char* attributeName);
-
-WEBCORE_EXPORT JSC::EncodedJSValue throwGetterTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName, const char* attributeName);
-WEBCORE_EXPORT JSC::EncodedJSValue throwThisTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName, const char* functionName);
-
-WEBCORE_EXPORT JSC::EncodedJSValue rejectPromiseWithGetterTypeError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName);
-WEBCORE_EXPORT JSC::EncodedJSValue rejectPromiseWithThisTypeError(DeferredPromise&amp;, const char* interfaceName, const char* operationName);
-WEBCORE_EXPORT JSC::EncodedJSValue rejectPromiseWithThisTypeError(JSC::ExecState&amp;, const char* interfaceName, const char* operationName);
-
-WEBCORE_EXPORT JSC::Structure* getCachedDOMStructure(JSDOMGlobalObject&amp;, const JSC::ClassInfo*);
-WEBCORE_EXPORT JSC::Structure* cacheDOMStructure(JSDOMGlobalObject&amp;, JSC::Structure*, const JSC::ClassInfo*);
-
-template&lt;typename WrapperClass&gt; JSC::Structure* getDOMStructure(JSC::VM&amp;, JSDOMGlobalObject&amp;);
-template&lt;typename WrapperClass&gt; JSC::Structure* deprecatedGetDOMStructure(JSC::ExecState*);
-template&lt;typename WrapperClass&gt; JSC::JSObject* getDOMPrototype(JSC::VM&amp;, JSC::JSGlobalObject*);
-
-void callFunctionWithCurrentArguments(JSC::ExecState&amp;, JSC::JSObject&amp; thisObject, JSC::JSFunction&amp;);
-
-template&lt;typename JSClass&gt; JSC::EncodedJSValue createJSBuiltin(JSC::ExecState&amp;, JSC::JSFunction&amp; initializeFunction, JSDOMGlobalObject&amp;);
-
-JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld&amp;, JSC::ArrayBuffer*);
-void* wrapperKey(JSC::ArrayBuffer*);
-
-JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp;, void*);
-JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp;, ScriptWrappable*);
-JSC::JSArrayBuffer* getInlineCachedWrapper(DOMWrapperWorld&amp;, JSC::ArrayBuffer*);
-
-bool setInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*, JSC::WeakHandleOwner*);
-bool setInlineCachedWrapper(DOMWrapperWorld&amp;, ScriptWrappable*, JSDOMObject* wrapper, JSC::WeakHandleOwner* wrapperOwner);
-bool setInlineCachedWrapper(DOMWrapperWorld&amp;, JSC::ArrayBuffer*, JSC::JSArrayBuffer* wrapper, JSC::WeakHandleOwner* wrapperOwner);
-
-bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*);
-bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, ScriptWrappable*, JSDOMObject* wrapper);
-bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, JSC::ArrayBuffer*, JSC::JSArrayBuffer* wrapper);
-
-template&lt;typename DOMClass&gt; JSC::JSObject* getCachedWrapper(DOMWrapperWorld&amp;, DOMClass&amp;);
-template&lt;typename DOMClass&gt; inline JSC::JSObject* getCachedWrapper(DOMWrapperWorld&amp; world, Ref&lt;DOMClass&gt;&amp; object) { return getCachedWrapper(world, object.get()); }
-template&lt;typename DOMClass, typename WrapperClass&gt; void cacheWrapper(DOMWrapperWorld&amp;, DOMClass*, WrapperClass*);
-template&lt;typename DOMClass, typename WrapperClass&gt; void uncacheWrapper(DOMWrapperWorld&amp;, DOMClass*, WrapperClass*);
-template&lt;typename DOMClass, typename T&gt; auto createWrapper(JSDOMGlobalObject*, Ref&lt;T&gt;&amp;&amp;) -&gt; typename std::enable_if&lt;std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type;
-template&lt;typename DOMClass, typename T&gt; auto createWrapper(JSDOMGlobalObject*, Ref&lt;T&gt;&amp;&amp;) -&gt; typename std::enable_if&lt;!std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type;
-
-template&lt;typename DOMClass&gt; JSC::JSValue wrap(JSC::ExecState*, JSDOMGlobalObject*, DOMClass&amp;);
-
-template&lt;typename JSClass&gt; JSClass&amp; castThisValue(JSC::ExecState&amp;);
-
</del><span class="cx"> void addImpureProperty(const AtomicString&amp;);
</span><span class="cx"> 
</span><del>-const JSC::HashTable&amp; getHashTableForGlobalData(JSC::VM&amp;, const JSC::HashTable&amp; staticTable);
-
-String retrieveErrorMessage(JSC::ExecState&amp;, JSC::VM&amp;, JSC::JSValue exception, JSC::CatchScope&amp;);
-WEBCORE_EXPORT void reportException(JSC::ExecState*, JSC::JSValue exception, CachedScript* = nullptr);
-WEBCORE_EXPORT void reportException(JSC::ExecState*, JSC::Exception*, CachedScript* = nullptr, ExceptionDetails* = nullptr);
-void reportCurrentException(JSC::ExecState*);
-
-JSC::JSValue createDOMException(JSC::ExecState&amp;, Exception&amp;&amp;);
-JSC::JSValue createDOMException(JSC::ExecState*, ExceptionCode, const String&amp;);
-
-// Convert a DOM implementation exception into a JavaScript exception in the execution state.
-void propagateException(JSC::ExecState&amp;, JSC::ThrowScope&amp;, Exception&amp;&amp;);
-WEBCORE_EXPORT void propagateExceptionSlowPath(JSC::ExecState&amp;, JSC::ThrowScope&amp;, Exception&amp;&amp;);
-
</del><span class="cx"> JSC::JSValue jsString(JSC::ExecState*, const URL&amp;); // empty if the URL is null
</span><span class="cx"> 
</span><span class="cx"> JSC::JSValue jsStringOrUndefined(JSC::ExecState*, const String&amp;); // undefined if the string is null
</span><span class="lines">@@ -210,7 +67,6 @@
</span><span class="cx"> JSC::JSValue jsOwnedStringOrNull(JSC::ExecState*, const String&amp;);
</span><span class="cx"> 
</span><span class="cx"> String propertyNameToString(JSC::PropertyName);
</span><del>-
</del><span class="cx"> AtomicString propertyNameToAtomicString(JSC::PropertyName);
</span><span class="cx"> 
</span><span class="cx"> WEBCORE_EXPORT String identifierToByteString(JSC::ExecState&amp;, const JSC::Identifier&amp;);
</span><span class="lines">@@ -254,9 +110,6 @@
</span><span class="cx"> // NaN if the value can't be converted to a date.
</span><span class="cx"> double valueToDate(JSC::ExecState*, JSC::JSValue);
</span><span class="cx"> 
</span><del>-// Validates that the passed object is a sequence type per section 4.1.13 of the WebIDL spec.
-JSC::JSObject* toJSSequence(JSC::ExecState&amp;, JSC::JSValue, unsigned&amp; length);
-
</del><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, JSC::ArrayBuffer&amp;);
</span><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSC::JSGlobalObject*, JSC::ArrayBufferView&amp;);
</span><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, JSC::ArrayBuffer*);
</span><span class="lines">@@ -267,10 +120,6 @@
</span><span class="cx"> template&lt;typename T&gt; JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const Vector&lt;RefPtr&lt;T&gt;&gt;&amp;);
</span><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const JSC::PrivateName&amp;);
</span><span class="cx"> 
</span><del>-JSC::JSValue toJSIterator(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, JSC::JSValue);
-template&lt;typename T&gt; JSC::JSValue toJSIterator(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, const T&amp;);
-JSC::JSValue toJSIteratorEnd(JSC::ExecState&amp;);
-
</del><span class="cx"> RefPtr&lt;JSC::ArrayBufferView&gt; toPossiblySharedArrayBufferView(JSC::VM&amp;, JSC::JSValue);
</span><span class="cx"> RefPtr&lt;JSC::Int8Array&gt; toPossiblySharedInt8Array(JSC::VM&amp;, JSC::JSValue);
</span><span class="cx"> RefPtr&lt;JSC::Int16Array&gt; toPossiblySharedInt16Array(JSC::VM&amp;, JSC::JSValue);
</span><span class="lines">@@ -293,285 +142,16 @@
</span><span class="cx"> RefPtr&lt;JSC::Float32Array&gt; toUnsharedFloat32Array(JSC::VM&amp;, JSC::JSValue);
</span><span class="cx"> RefPtr&lt;JSC::Float64Array&gt; toUnsharedFloat64Array(JSC::VM&amp;, JSC::JSValue);
</span><span class="cx"> 
</span><del>-template&lt;typename T, typename JSType&gt; Vector&lt;Ref&lt;T&gt;&gt; toRefNativeArray(JSC::ExecState&amp;, JSC::JSValue);
-WEBCORE_EXPORT bool hasIteratorMethod(JSC::ExecState&amp;, JSC::JSValue);
-
-enum SecurityReportingOption { DoNotReportSecurityError, LogSecurityError, ThrowSecurityError };
-namespace BindingSecurity {
-    template&lt;typename T&gt; T* checkSecurityForNode(JSC::ExecState&amp;, T&amp;);
-    template&lt;typename T&gt; T* checkSecurityForNode(JSC::ExecState&amp;, T*);
-    template&lt;typename T&gt; ExceptionOr&lt;T*&gt; checkSecurityForNode(JSC::ExecState&amp;, ExceptionOr&lt;T*&gt;&amp;&amp;);
-    template&lt;typename T&gt; ExceptionOr&lt;T*&gt; checkSecurityForNode(JSC::ExecState&amp;, ExceptionOr&lt;T&amp;&gt;&amp;&amp;);
-    bool shouldAllowAccessToDOMWindow(JSC::ExecState*, DOMWindow&amp;, SecurityReportingOption = LogSecurityError);
-    bool shouldAllowAccessToDOMWindow(JSC::ExecState&amp;, DOMWindow&amp;, String&amp; message);
-    bool shouldAllowAccessToFrame(JSC::ExecState*, Frame*, SecurityReportingOption = LogSecurityError);
-    bool shouldAllowAccessToFrame(JSC::ExecState&amp;, Frame&amp;, String&amp; message);
-    bool shouldAllowAccessToNode(JSC::ExecState&amp;, Node*);
-};
-
-void printErrorMessageForFrame(Frame*, const String&amp; message);
-
</del><span class="cx"> String propertyNameToString(JSC::PropertyName);
</span><span class="cx"> AtomicString propertyNameToAtomicString(JSC::PropertyName);
</span><span class="cx"> 
</span><ins>+WEBCORE_EXPORT bool hasIteratorMethod(JSC::ExecState&amp;, JSC::JSValue);
+
</ins><span class="cx"> template&lt;JSC::NativeFunction, int length&gt; JSC::EncodedJSValue nonCachingStaticFunctionGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-enum class CastedThisErrorBehavior { Throw, ReturnEarly, RejectPromise, Assert };
-
-template&lt;typename JSClass&gt;
-struct BindingCaller {
-    using AttributeSetterFunction = bool(JSC::ExecState&amp;, JSClass&amp;, JSC::JSValue, JSC::ThrowScope&amp;);
-    using AttributeGetterFunction = JSC::JSValue(JSC::ExecState&amp;, JSClass&amp;, JSC::ThrowScope&amp;);
-    using OperationCallerFunction = JSC::EncodedJSValue(JSC::ExecState*, JSClass*, JSC::ThrowScope&amp;);
-    using PromiseOperationCallerFunction = JSC::EncodedJSValue(JSC::ExecState*, JSClass*, Ref&lt;DeferredPromise&gt;&amp;&amp;, JSC::ThrowScope&amp;);
-
-    static JSClass* castForAttribute(JSC::ExecState&amp;, JSC::EncodedJSValue);
-    static JSClass* castForOperation(JSC::ExecState&amp;);
-
-    template&lt;PromiseOperationCallerFunction operationCaller, CastedThisErrorBehavior shouldThrow = CastedThisErrorBehavior::RejectPromise&gt;
-    static JSC::EncodedJSValue callPromiseOperation(JSC::ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise, const char* operationName)
-    {
-        ASSERT(state);
-        auto throwScope = DECLARE_THROW_SCOPE(state-&gt;vm());
-        auto* thisObject = castForOperation(*state);
-        if (shouldThrow != CastedThisErrorBehavior::Assert &amp;&amp; UNLIKELY(!thisObject))
-            return rejectPromiseWithThisTypeError(promise.get(), JSClass::info()-&gt;className, operationName);
-        ASSERT(thisObject);
-        ASSERT_GC_OBJECT_INHERITS(thisObject, JSClass::info());
-        // FIXME: We should refactor the binding generated code to use references for state and thisObject.
-        return operationCaller(state, thisObject, WTFMove(promise), throwScope);
-    }
-
-    template&lt;OperationCallerFunction operationCaller, CastedThisErrorBehavior shouldThrow = CastedThisErrorBehavior::Throw&gt;
-    static JSC::EncodedJSValue callOperation(JSC::ExecState* state, const char* operationName)
-    {
-        ASSERT(state);
-        auto throwScope = DECLARE_THROW_SCOPE(state-&gt;vm());
-        auto* thisObject = castForOperation(*state);
-        if (shouldThrow != CastedThisErrorBehavior::Assert &amp;&amp; UNLIKELY(!thisObject)) {
-            if (shouldThrow == CastedThisErrorBehavior::Throw)
-                return throwThisTypeError(*state, throwScope, JSClass::info()-&gt;className, operationName);
-            // For custom promise-returning operations
-            return rejectPromiseWithThisTypeError(*state, JSClass::info()-&gt;className, operationName);
-        }
-        ASSERT(thisObject);
-        ASSERT_GC_OBJECT_INHERITS(thisObject, JSClass::info());
-        // FIXME: We should refactor the binding generated code to use references for state and thisObject.
-        return operationCaller(state, thisObject, throwScope);
-    }
-
-    template&lt;AttributeSetterFunction setter, CastedThisErrorBehavior shouldThrow = CastedThisErrorBehavior::Throw&gt;
-    static bool setAttribute(JSC::ExecState* state, JSC::EncodedJSValue thisValue, JSC::EncodedJSValue encodedValue, const char* attributeName)
-    {
-        ASSERT(state);
-        auto throwScope = DECLARE_THROW_SCOPE(state-&gt;vm());
-        auto* thisObject = castForAttribute(*state, thisValue);
-        if (UNLIKELY(!thisObject))
-            return (shouldThrow == CastedThisErrorBehavior::Throw) ? throwSetterTypeError(*state, throwScope, JSClass::info()-&gt;className, attributeName) : false;
-        return setter(*state, *thisObject, JSC::JSValue::decode(encodedValue), throwScope);
-    }
-
-    template&lt;AttributeGetterFunction getter, CastedThisErrorBehavior shouldThrow = CastedThisErrorBehavior::Throw&gt;
-    static JSC::EncodedJSValue attribute(JSC::ExecState* state, JSC::EncodedJSValue thisValue, const char* attributeName)
-    {
-        ASSERT(state);
-        auto throwScope = DECLARE_THROW_SCOPE(state-&gt;vm());
-        auto* thisObject = castForAttribute(*state, thisValue);
-        if (UNLIKELY(!thisObject)) {
-            if (shouldThrow == CastedThisErrorBehavior::Throw)
-                return throwGetterTypeError(*state, throwScope, JSClass::info()-&gt;className, attributeName);
-            if (shouldThrow == CastedThisErrorBehavior::RejectPromise)
-                return rejectPromiseWithGetterTypeError(*state, JSClass::info()-&gt;className, attributeName);
-            return JSC::JSValue::encode(JSC::jsUndefined());
-        }
-        return JSC::JSValue::encode(getter(*state, *thisObject, throwScope));
-    }
-};
-
-// ExceptionOr handling.
-void propagateException(JSC::ExecState&amp;, JSC::ThrowScope&amp;, ExceptionOr&lt;void&gt;&amp;&amp;);
-template&lt;typename T&gt; JSC::JSValue toJS(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, JSC::ThrowScope&amp;, ExceptionOr&lt;T&gt;&amp;&amp;);
-template&lt;typename T&gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, JSC::ThrowScope&amp;, ExceptionOr&lt;T&gt;&amp;&amp; value);
-
</del><span class="cx"> // Inline functions and template definitions.
</span><span class="cx"> 
</span><del>-inline JSC::Structure* DOMConstructorObject::createStructure(JSC::VM&amp; vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
-{
-    return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
-}
-
-inline DOMConstructorObject::DOMConstructorObject(JSC::Structure* structure, JSDOMGlobalObject&amp; globalObject)
-    : JSDOMObject(structure, globalObject)
-{
-}
-
-inline String DOMConstructorObject::className(const JSObject*)
-{
-    return ASCIILiteral(&quot;Function&quot;);
-}
-
-inline DOMConstructorJSBuiltinObject::DOMConstructorJSBuiltinObject(JSC::Structure* structure, JSDOMGlobalObject&amp; globalObject)
-    : DOMConstructorObject(structure, globalObject)
-{
-}
-
-inline JSC::JSFunction* DOMConstructorJSBuiltinObject::initializeFunction()
-{
-    return m_initializeFunction.get();
-}
-
-inline void DOMConstructorJSBuiltinObject::setInitializeFunction(JSC::VM&amp; vm, JSC::JSFunction&amp; function)
-{
-    m_initializeFunction.set(vm, this, &amp;function);
-}
-
-inline JSDOMGlobalObject* deprecatedGlobalObjectForPrototype(JSC::ExecState* exec)
-{
-    // FIXME: Callers to this function should be using the global object
-    // from which the object is being created, instead of assuming the lexical one.
-    // e.g. subframe.document.body should use the subframe's global object, not the lexical one.
-    return JSC::jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject());
-}
-
-template&lt;typename WrapperClass&gt; inline JSC::Structure* getDOMStructure(JSC::VM&amp; vm, JSDOMGlobalObject&amp; globalObject)
-{
-    if (JSC::Structure* structure = getCachedDOMStructure(globalObject, WrapperClass::info()))
-        return structure;
-    return cacheDOMStructure(globalObject, WrapperClass::createStructure(vm, &amp;globalObject, WrapperClass::createPrototype(vm, &amp;globalObject)), WrapperClass::info());
-}
-
-template&lt;typename WrapperClass&gt; inline JSC::Structure* deprecatedGetDOMStructure(JSC::ExecState* exec)
-{
-    // FIXME: This function is wrong. It uses the wrong global object for creating the prototype structure.
-    return getDOMStructure&lt;WrapperClass&gt;(exec-&gt;vm(), *deprecatedGlobalObjectForPrototype(exec));
-}
-
-template&lt;typename WrapperClass&gt; inline JSC::JSObject* getDOMPrototype(JSC::VM&amp; vm, JSC::JSGlobalObject* globalObject)
-{
-    return JSC::jsCast&lt;JSC::JSObject*&gt;(asObject(getDOMStructure&lt;WrapperClass&gt;(vm, *JSC::jsCast&lt;JSDOMGlobalObject*&gt;(globalObject))-&gt;storedPrototype()));
-}
-
-template&lt;typename JSClass&gt; inline JSC::EncodedJSValue createJSBuiltin(JSC::ExecState&amp; state, JSC::JSFunction&amp; initializeFunction, JSDOMGlobalObject&amp; globalObject)
-{
-    JSC::JSObject* object = JSClass::create(getDOMStructure&lt;JSClass&gt;(globalObject.vm(), globalObject), &amp;globalObject);
-    callFunctionWithCurrentArguments(state, *object, initializeFunction);
-    return JSC::JSValue::encode(object);
-}
-
-inline JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld&amp; world, JSC::ArrayBuffer*)
-{
-    return static_cast&lt;WebCoreTypedArrayController*&gt;(world.vm().m_typedArrayController.get())-&gt;wrapperOwner();
-}
-
-inline void* wrapperKey(JSC::ArrayBuffer* domObject)
-{
-    return domObject;
-}
-
-inline JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp;, void*) { return nullptr; }
-inline bool setInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*, JSC::WeakHandleOwner*) { return false; }
-inline bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*) { return false; }
-
-inline JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp; world, ScriptWrappable* domObject)
-{
-    if (!world.isNormal())
-        return nullptr;
-    return domObject-&gt;wrapper();
-}
-
-inline JSC::JSArrayBuffer* getInlineCachedWrapper(DOMWrapperWorld&amp; world, JSC::ArrayBuffer* buffer)
-{
-    if (!world.isNormal())
-        return nullptr;
-    return buffer-&gt;m_wrapper.get();
-}
-
-inline bool setInlineCachedWrapper(DOMWrapperWorld&amp; world, ScriptWrappable* domObject, JSDOMObject* wrapper, JSC::WeakHandleOwner* wrapperOwner)
-{
-    if (!world.isNormal())
-        return false;
-    domObject-&gt;setWrapper(wrapper, wrapperOwner, &amp;world);
-    return true;
-}
-
-inline bool setInlineCachedWrapper(DOMWrapperWorld&amp; world, JSC::ArrayBuffer* domObject, JSC::JSArrayBuffer* wrapper, JSC::WeakHandleOwner* wrapperOwner)
-{
-    if (!world.isNormal())
-        return false;
-    domObject-&gt;m_wrapper = JSC::Weak&lt;JSC::JSArrayBuffer&gt;(wrapper, wrapperOwner, &amp;world);
-    return true;
-}
-
-inline bool clearInlineCachedWrapper(DOMWrapperWorld&amp; world, ScriptWrappable* domObject, JSDOMObject* wrapper)
-{
-    if (!world.isNormal())
-        return false;
-    domObject-&gt;clearWrapper(wrapper);
-    return true;
-}
-
-inline bool clearInlineCachedWrapper(DOMWrapperWorld&amp; world, JSC::ArrayBuffer* domObject, JSC::JSArrayBuffer* wrapper)
-{
-    if (!world.isNormal())
-        return false;
-    weakClear(domObject-&gt;m_wrapper, wrapper);
-    return true;
-}
-
-template&lt;typename DOMClass&gt; inline JSC::JSObject* getCachedWrapper(DOMWrapperWorld&amp; world, DOMClass&amp; domObject)
-{
-    if (auto* wrapper = getInlineCachedWrapper(world, &amp;domObject))
-        return wrapper;
-    return world.m_wrappers.get(wrapperKey(&amp;domObject));
-}
-
-template&lt;typename DOMClass, typename WrapperClass&gt; inline void cacheWrapper(DOMWrapperWorld&amp; world, DOMClass* domObject, WrapperClass* wrapper)
-{
-    JSC::WeakHandleOwner* owner = wrapperOwner(world, domObject);
-    if (setInlineCachedWrapper(world, domObject, wrapper, owner))
-        return;
-    weakAdd(world.m_wrappers, wrapperKey(domObject), JSC::Weak&lt;JSC::JSObject&gt;(wrapper, owner, &amp;world));
-}
-
-template&lt;typename DOMClass, typename WrapperClass&gt; inline void uncacheWrapper(DOMWrapperWorld&amp; world, DOMClass* domObject, WrapperClass* wrapper)
-{
-    if (clearInlineCachedWrapper(world, domObject, wrapper))
-        return;
-    weakRemove(world.m_wrappers, wrapperKey(domObject), wrapper);
-}
-
-template&lt;typename DOMClass, typename T&gt; inline auto createWrapper(JSDOMGlobalObject* globalObject, Ref&lt;T&gt;&amp;&amp; domObject) -&gt; typename std::enable_if&lt;std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type
-{
-    using WrapperClass = typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass;
-
-    ASSERT(!getCachedWrapper(globalObject-&gt;world(), domObject));
-    auto* domObjectPtr = domObject.ptr();
-    auto* wrapper = WrapperClass::create(getDOMStructure&lt;WrapperClass&gt;(globalObject-&gt;vm(), *globalObject), globalObject, WTFMove(domObject));
-    cacheWrapper(globalObject-&gt;world(), domObjectPtr, wrapper);
-    return wrapper;
-}
-
-template&lt;typename DOMClass, typename T&gt; inline auto createWrapper(JSDOMGlobalObject* globalObject, Ref&lt;T&gt;&amp;&amp; domObject) -&gt; typename std::enable_if&lt;!std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type
-{
-    return createWrapper&lt;DOMClass&gt;(globalObject, static_reference_cast&lt;DOMClass&gt;(WTFMove(domObject)));
-}
-
-template&lt;typename DOMClass&gt; inline JSC::JSValue wrap(JSC::ExecState* state, JSDOMGlobalObject* globalObject, DOMClass&amp; domObject)
-{
-    if (auto* wrapper = getCachedWrapper(globalObject-&gt;world(), domObject))
-        return wrapper;
-    return toJSNewlyCreated(state, globalObject, Ref&lt;DOMClass&gt;(domObject));
-}
-
-template&lt;typename JSClass&gt; inline JSClass&amp; castThisValue(JSC::ExecState&amp; state)
-{
-    auto thisValue = state.thisValue();
-    auto castedThis = jsDynamicDowncast&lt;JSClass*&gt;(state.vm(), thisValue);
-    ASSERT(castedThis);
-    return *castedThis;
-}
-
</del><span class="cx"> inline int32_t finiteInt32Value(JSC::JSValue value, JSC::ExecState* exec, bool&amp; okay)
</span><span class="cx"> {
</span><span class="cx">     double number = value.toNumber(exec);
</span><span class="lines">@@ -579,32 +159,6 @@
</span><span class="cx">     return JSC::toInt32(number);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// Validates that the passed object is a sequence type per section 4.1.13 of the WebIDL spec.
-inline JSC::JSObject* toJSSequence(JSC::ExecState&amp; exec, JSC::JSValue value, unsigned&amp; length)
-{
-    JSC::VM&amp; vm = exec.vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    JSC::JSObject* object = value.getObject();
-    if (!object) {
-        throwSequenceTypeError(exec, scope);
-        return nullptr;
-    }
-
-    JSC::JSValue lengthValue = object-&gt;get(&amp;exec, exec.propertyNames().length);
-    RETURN_IF_EXCEPTION(scope, nullptr);
-
-    if (lengthValue.isUndefinedOrNull()) {
-        throwSequenceTypeError(exec, scope);
-        return nullptr;
-    }
-
-    length = lengthValue.toUInt32(&amp;exec);
-    RETURN_IF_EXCEPTION(scope, nullptr);
-
-    return object;
-}
-
</del><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, JSC::ArrayBuffer&amp; buffer)
</span><span class="cx"> {
</span><span class="cx">     if (auto result = getCachedWrapper(globalObject-&gt;world(), buffer))
</span><span class="lines">@@ -676,21 +230,6 @@
</span><span class="cx">     return JSC::Symbol::create(exec-&gt;vm(), privateName.uid());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline JSC::JSValue toJSIterator(JSC::ExecState&amp; state, JSDOMGlobalObject&amp;, JSC::JSValue value)
-{
-    return createIteratorResultObject(&amp;state, value, false);
-}
-
-template&lt;typename T&gt; inline JSC::JSValue toJSIterator(JSC::ExecState&amp; state, JSDOMGlobalObject&amp; globalObject, const T&amp; value)
-{
-    return createIteratorResultObject(&amp;state, toJS(&amp;state, &amp;globalObject, value), false);
-}
-
-inline JSC::JSValue toJSIteratorEnd(JSC::ExecState&amp; state)
-{
-    return createIteratorResultObject(&amp;state, JSC::jsUndefined(), true);
-}
-
</del><span class="cx"> inline RefPtr&lt;JSC::ArrayBufferView&gt; toPossiblySharedArrayBufferView(JSC::VM&amp; vm, JSC::JSValue value)
</span><span class="cx"> {
</span><span class="cx">     auto* wrapper = jsDynamicDowncast&lt;JSC::JSArrayBufferView*&gt;(vm, value);
</span><span class="lines">@@ -727,30 +266,6 @@
</span><span class="cx"> inline RefPtr&lt;JSC::Float32Array&gt; toUnsharedFloat32Array(JSC::VM&amp; vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView&lt;JSC::Float32Adaptor&gt;(vm, value); }
</span><span class="cx"> inline RefPtr&lt;JSC::Float64Array&gt; toUnsharedFloat64Array(JSC::VM&amp; vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView&lt;JSC::Float64Adaptor&gt;(vm, value); }
</span><span class="cx"> 
</span><del>-template&lt;typename T, typename JST&gt; inline Vector&lt;Ref&lt;T&gt;&gt; toRefNativeArray(JSC::ExecState&amp; state, JSC::JSValue value)
-{
-    JSC::VM&amp; vm = state.vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    if (!value.isObject()) {
-        throwSequenceTypeError(state, scope);
-        return { };
-    }
-
-    Vector&lt;Ref&lt;T&gt;&gt; result;
-    forEachInIterable(&amp;state, value, [&amp;result](JSC::VM&amp; vm, JSC::ExecState* state, JSC::JSValue jsValue) {
-        auto scope = DECLARE_THROW_SCOPE(vm);
-
-        if (jsValue.inherits(vm, JST::info())) {
-            auto* object = JST::toWrapped(vm, jsValue);
-            ASSERT(object);
-            result.append(*object);
-        } else
-            throwArrayElementTypeError(*state, scope);
-    });
-    return result;
-}
-
</del><span class="cx"> inline String propertyNameToString(JSC::PropertyName propertyName)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!propertyName.isSymbol());
</span><span class="lines">@@ -767,59 +282,4 @@
</span><span class="cx">     return JSC::JSValue::encode(JSC::JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), length, propertyName.publicName(), nativeFunction));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ALWAYS_INLINE void propagateException(JSC::ExecState&amp; state, JSC::ThrowScope&amp; throwScope, Exception&amp;&amp; exception)
-{
-    if (throwScope.exception())
-        return;
-    propagateExceptionSlowPath(state, throwScope, WTFMove(exception));
-}
-
-inline void propagateException(JSC::ExecState&amp; state, JSC::ThrowScope&amp; throwScope, ExceptionOr&lt;void&gt;&amp;&amp; value)
-{
-    if (UNLIKELY(value.hasException()))
-        propagateException(state, throwScope, value.releaseException());
-}
-
-template&lt;typename T&gt; inline JSC::JSValue toJS(JSC::ExecState&amp; state, JSDOMGlobalObject&amp; globalObject, JSC::ThrowScope&amp; throwScope, ExceptionOr&lt;T&gt;&amp;&amp; value)
-{
-    if (UNLIKELY(value.hasException())) {
-        propagateException(state, throwScope, value.releaseException());
-        return { };
-    }
-    return toJS(&amp;state, &amp;globalObject, value.releaseReturnValue());
-}
-
-template&lt;typename T&gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState&amp; state, JSDOMGlobalObject&amp; globalObject, JSC::ThrowScope&amp; throwScope, ExceptionOr&lt;T&gt;&amp;&amp; value)
-{
-    if (UNLIKELY(value.hasException())) {
-        propagateException(state, throwScope, value.releaseException());
-        return { };
-    }
-    return toJSNewlyCreated(&amp;state, &amp;globalObject, value.releaseReturnValue());
-}
-
-template&lt;typename T&gt; inline T* BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, T&amp; node)
-{
-    return shouldAllowAccessToNode(state, &amp;node) ? &amp;node : nullptr;
-}
-
-template&lt;typename T&gt; inline T* BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, T* node)
-{
-    return shouldAllowAccessToNode(state, node) ? node : nullptr;
-}
-
-template&lt;typename T&gt; inline ExceptionOr&lt;T*&gt; BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, ExceptionOr&lt;T*&gt;&amp;&amp; value)
-{
-    if (value.hasException())
-        return value.releaseException();
-    return checkSecurityForNode(state, value.releaseReturnValue());
-}
-
-template&lt;typename T&gt; inline ExceptionOr&lt;T*&gt; BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, ExceptionOr&lt;T&amp;&gt;&amp;&amp; value)
-{
-    if (value.hasException())
-        return value.releaseException();
-    return checkSecurityForNode(state, value.releaseReturnValue());
-}
-
</del><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingCallerhfromrev211353trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/bindings/js/JSDOMBindingCaller.h (from rev 211353, trunk/Source/WebCore/bindings/js/JSDOMBinding.h) (0 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBindingCaller.h                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDOMBindingCaller.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -0,0 +1,102 @@
</span><ins>+/*
+ *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2003-2006, 2008-2009, 2013, 2016 Apple Inc. All rights reserved.
+ *  Copyright (C) 2007 Samuel Weinig &lt;sam@webkit.org&gt;
+ *  Copyright (C) 2009 Google, Inc. All rights reserved.
+ *  Copyright (C) 2012 Ericsson AB. All rights reserved.
+ *  Copyright (C) 2013 Michael Pruett &lt;michael@68k.org&gt;
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#pragma once
+
+#include &quot;JSDOMExceptionHandling.h&quot;
+
+namespace WebCore {
+
+enum class CastedThisErrorBehavior { Throw, ReturnEarly, RejectPromise, Assert };
+
+template&lt;typename JSClass&gt;
+struct BindingCaller {
+    using AttributeSetterFunction = bool(JSC::ExecState&amp;, JSClass&amp;, JSC::JSValue, JSC::ThrowScope&amp;);
+    using AttributeGetterFunction = JSC::JSValue(JSC::ExecState&amp;, JSClass&amp;, JSC::ThrowScope&amp;);
+    using OperationCallerFunction = JSC::EncodedJSValue(JSC::ExecState*, JSClass*, JSC::ThrowScope&amp;);
+    using PromiseOperationCallerFunction = JSC::EncodedJSValue(JSC::ExecState*, JSClass*, Ref&lt;DeferredPromise&gt;&amp;&amp;, JSC::ThrowScope&amp;);
+
+    static JSClass* castForAttribute(JSC::ExecState&amp;, JSC::EncodedJSValue);
+    static JSClass* castForOperation(JSC::ExecState&amp;);
+
+    template&lt;PromiseOperationCallerFunction operationCaller, CastedThisErrorBehavior shouldThrow = CastedThisErrorBehavior::RejectPromise&gt;
+    static JSC::EncodedJSValue callPromiseOperation(JSC::ExecState* state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise, const char* operationName)
+    {
+        ASSERT(state);
+        auto throwScope = DECLARE_THROW_SCOPE(state-&gt;vm());
+        auto* thisObject = castForOperation(*state);
+        if (shouldThrow != CastedThisErrorBehavior::Assert &amp;&amp; UNLIKELY(!thisObject))
+            return rejectPromiseWithThisTypeError(promise.get(), JSClass::info()-&gt;className, operationName);
+        ASSERT(thisObject);
+        ASSERT_GC_OBJECT_INHERITS(thisObject, JSClass::info());
+        // FIXME: We should refactor the binding generated code to use references for state and thisObject.
+        return operationCaller(state, thisObject, WTFMove(promise), throwScope);
+    }
+
+    template&lt;OperationCallerFunction operationCaller, CastedThisErrorBehavior shouldThrow = CastedThisErrorBehavior::Throw&gt;
+    static JSC::EncodedJSValue callOperation(JSC::ExecState* state, const char* operationName)
+    {
+        ASSERT(state);
+        auto throwScope = DECLARE_THROW_SCOPE(state-&gt;vm());
+        auto* thisObject = castForOperation(*state);
+        if (shouldThrow != CastedThisErrorBehavior::Assert &amp;&amp; UNLIKELY(!thisObject)) {
+            if (shouldThrow == CastedThisErrorBehavior::Throw)
+                return throwThisTypeError(*state, throwScope, JSClass::info()-&gt;className, operationName);
+            // For custom promise-returning operations
+            return rejectPromiseWithThisTypeError(*state, JSClass::info()-&gt;className, operationName);
+        }
+        ASSERT(thisObject);
+        ASSERT_GC_OBJECT_INHERITS(thisObject, JSClass::info());
+        // FIXME: We should refactor the binding generated code to use references for state and thisObject.
+        return operationCaller(state, thisObject, throwScope);
+    }
+
+    template&lt;AttributeSetterFunction setter, CastedThisErrorBehavior shouldThrow = CastedThisErrorBehavior::Throw&gt;
+    static bool setAttribute(JSC::ExecState* state, JSC::EncodedJSValue thisValue, JSC::EncodedJSValue encodedValue, const char* attributeName)
+    {
+        ASSERT(state);
+        auto throwScope = DECLARE_THROW_SCOPE(state-&gt;vm());
+        auto* thisObject = castForAttribute(*state, thisValue);
+        if (UNLIKELY(!thisObject))
+            return (shouldThrow == CastedThisErrorBehavior::Throw) ? throwSetterTypeError(*state, throwScope, JSClass::info()-&gt;className, attributeName) : false;
+        return setter(*state, *thisObject, JSC::JSValue::decode(encodedValue), throwScope);
+    }
+
+    template&lt;AttributeGetterFunction getter, CastedThisErrorBehavior shouldThrow = CastedThisErrorBehavior::Throw&gt;
+    static JSC::EncodedJSValue attribute(JSC::ExecState* state, JSC::EncodedJSValue thisValue, const char* attributeName)
+    {
+        ASSERT(state);
+        auto throwScope = DECLARE_THROW_SCOPE(state-&gt;vm());
+        auto* thisObject = castForAttribute(*state, thisValue);
+        if (UNLIKELY(!thisObject)) {
+            if (shouldThrow == CastedThisErrorBehavior::Throw)
+                return throwGetterTypeError(*state, throwScope, JSClass::info()-&gt;className, attributeName);
+            if (shouldThrow == CastedThisErrorBehavior::RejectPromise)
+                return rejectPromiseWithGetterTypeError(*state, JSClass::info()-&gt;className, attributeName);
+            return JSC::JSValue::encode(JSC::jsUndefined());
+        }
+        return JSC::JSValue::encode(getter(*state, *thisObject, throwScope));
+    }
+};
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingSecuritycppfromrev211353trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/bindings/js/JSDOMBindingSecurity.cpp (from rev 211353, trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp) (0 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBindingSecurity.cpp                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDOMBindingSecurity.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -0,0 +1,102 @@
</span><ins>+/*
+ *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2004-2011, 2013, 2016 Apple Inc. All rights reserved.
+ *  Copyright (C) 2007 Samuel Weinig &lt;sam@webkit.org&gt;
+ *  Copyright (C) 2013 Michael Pruett &lt;michael@68k.org&gt;
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include &quot;config.h&quot;
+#include &quot;JSDOMBindingSecurity.h&quot;
+
+#include &quot;DOMWindow.h&quot;
+#include &quot;Document.h&quot;
+#include &quot;Frame.h&quot;
+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWindowBase.h&quot;
+#include &quot;SecurityOrigin.h&quot;
+#include &lt;wtf/text/WTFString.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+void printErrorMessageForFrame(Frame* frame, const String&amp; message)
+{
+    if (!frame)
+        return;
+    frame-&gt;document()-&gt;domWindow()-&gt;printErrorMessage(message);
+}
+
+static inline bool canAccessDocument(JSC::ExecState* state, Document* targetDocument, SecurityReportingOption reportingOption)
+{
+    VM&amp; vm = state-&gt;vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
+
+    if (!targetDocument)
+        return false;
+
+    DOMWindow&amp; active = activeDOMWindow(state);
+
+    if (active.document()-&gt;securityOrigin().canAccess(targetDocument-&gt;securityOrigin()))
+        return true;
+
+    switch (reportingOption) {
+    case ThrowSecurityError:
+        throwSecurityError(*state, scope, targetDocument-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(active));
+        break;
+    case LogSecurityError:
+        printErrorMessageForFrame(targetDocument-&gt;frame(), targetDocument-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(active));
+        break;
+    case DoNotReportSecurityError:
+        break;
+    }
+
+    return false;
+}
+
+bool BindingSecurity::shouldAllowAccessToFrame(ExecState&amp; state, Frame&amp; frame, String&amp; message)
+{
+    if (BindingSecurity::shouldAllowAccessToFrame(&amp;state, &amp;frame, DoNotReportSecurityError))
+        return true;
+    message = frame.document()-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(activeDOMWindow(&amp;state));
+    return false;
+}
+
+bool BindingSecurity::shouldAllowAccessToDOMWindow(ExecState&amp; state, DOMWindow&amp; globalObject, String&amp; message)
+{
+    if (BindingSecurity::shouldAllowAccessToDOMWindow(&amp;state, globalObject, DoNotReportSecurityError))
+        return true;
+    message = globalObject.crossDomainAccessErrorMessage(activeDOMWindow(&amp;state));
+    return false;
+}
+
+bool BindingSecurity::shouldAllowAccessToDOMWindow(JSC::ExecState* state, DOMWindow&amp; target, SecurityReportingOption reportingOption)
+{
+    return canAccessDocument(state, target.document(), reportingOption);
+}
+
+bool BindingSecurity::shouldAllowAccessToFrame(JSC::ExecState* state, Frame* target, SecurityReportingOption reportingOption)
+{
+    return target &amp;&amp; canAccessDocument(state, target-&gt;document(), reportingOption);
+}
+
+bool BindingSecurity::shouldAllowAccessToNode(JSC::ExecState&amp; state, Node* target)
+{
+    return !target || canAccessDocument(&amp;state, &amp;target-&gt;document(), LogSecurityError);
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingSecurityhfromrev211353trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/bindings/js/JSDOMBindingSecurity.h (from rev 211353, trunk/Source/WebCore/bindings/js/JSDOMBinding.h) (0 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBindingSecurity.h                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDOMBindingSecurity.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -0,0 +1,82 @@
</span><ins>+/*
+ *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2003-2006, 2008-2009, 2013, 2016 Apple Inc. All rights reserved.
+ *  Copyright (C) 2007 Samuel Weinig &lt;sam@webkit.org&gt;
+ *  Copyright (C) 2009 Google, Inc. All rights reserved.
+ *  Copyright (C) 2012 Ericsson AB. All rights reserved.
+ *  Copyright (C) 2013 Michael Pruett &lt;michael@68k.org&gt;
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#pragma once
+
+#include &quot;ExceptionOr.h&quot;
+#include &lt;wtf/Forward.h&gt;
+
+namespace JSC {
+class ExecState;
+}
+
+namespace WebCore {
+
+class DOMWindow;
+class Frame;
+class Node;
+
+void printErrorMessageForFrame(Frame*, const String&amp; message);
+
+enum SecurityReportingOption { DoNotReportSecurityError, LogSecurityError, ThrowSecurityError };
+
+namespace BindingSecurity {
+
+template&lt;typename T&gt; T* checkSecurityForNode(JSC::ExecState&amp;, T&amp;);
+template&lt;typename T&gt; T* checkSecurityForNode(JSC::ExecState&amp;, T*);
+template&lt;typename T&gt; ExceptionOr&lt;T*&gt; checkSecurityForNode(JSC::ExecState&amp;, ExceptionOr&lt;T*&gt;&amp;&amp;);
+template&lt;typename T&gt; ExceptionOr&lt;T*&gt; checkSecurityForNode(JSC::ExecState&amp;, ExceptionOr&lt;T&amp;&gt;&amp;&amp;);
+
+bool shouldAllowAccessToDOMWindow(JSC::ExecState*, DOMWindow&amp;, SecurityReportingOption = LogSecurityError);
+bool shouldAllowAccessToDOMWindow(JSC::ExecState&amp;, DOMWindow&amp;, String&amp; message);
+bool shouldAllowAccessToFrame(JSC::ExecState*, Frame*, SecurityReportingOption = LogSecurityError);
+bool shouldAllowAccessToFrame(JSC::ExecState&amp;, Frame&amp;, String&amp; message);
+bool shouldAllowAccessToNode(JSC::ExecState&amp;, Node*);
+
+};
+
+template&lt;typename T&gt; inline T* BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, T&amp; node)
+{
+    return shouldAllowAccessToNode(state, &amp;node) ? &amp;node : nullptr;
+}
+
+template&lt;typename T&gt; inline T* BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, T* node)
+{
+    return shouldAllowAccessToNode(state, node) ? node : nullptr;
+}
+
+template&lt;typename T&gt; inline ExceptionOr&lt;T*&gt; BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, ExceptionOr&lt;T*&gt;&amp;&amp; value)
+{
+    if (value.hasException())
+        return value.releaseException();
+    return checkSecurityForNode(state, value.releaseReturnValue());
+}
+
+template&lt;typename T&gt; inline ExceptionOr&lt;T*&gt; BindingSecurity::checkSecurityForNode(JSC::ExecState&amp; state, ExceptionOr&lt;T&amp;&gt;&amp;&amp; value)
+{
+    if (value.hasException())
+        return value.releaseException();
+    return checkSecurityForNode(state, value.releaseReturnValue());
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMConstructorcppfromrev211353trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/bindings/js/JSDOMConstructor.cpp (from rev 211353, trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp) (0 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMConstructor.cpp                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDOMConstructor.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2004-2011, 2013, 2016 Apple Inc. All rights reserved.
+ *  Copyright (C) 2007 Samuel Weinig &lt;sam@webkit.org&gt;
+ *  Copyright (C) 2013 Michael Pruett &lt;michael@68k.org&gt;
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include &quot;config.h&quot;
+#include &quot;JSDOMConstructor.h&quot;
+
+#include &lt;runtime/JSCInlines.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(DOMConstructorObject);
+STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(DOMConstructorWithDocument);
+    
+void callFunctionWithCurrentArguments(JSC::ExecState&amp; state, JSC::JSObject&amp; thisObject, JSC::JSFunction&amp; function)
+{
+    JSC::CallData callData;
+    JSC::CallType callType = JSC::getCallData(&amp;function, callData);
+    ASSERT(callType != CallType::None);
+
+    JSC::MarkedArgumentBuffer arguments;
+    for (unsigned i = 0; i &lt; state.argumentCount(); ++i)
+        arguments.append(state.uncheckedArgument(i));
+    JSC::call(&amp;state, &amp;function, callType, callData, &amp;thisObject, arguments);
+}
+
+void DOMConstructorJSBuiltinObject::visitChildren(JSC::JSCell* cell, JSC::SlotVisitor&amp; visitor)
+{
+    auto* thisObject = jsCast&lt;DOMConstructorJSBuiltinObject*&gt;(cell);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    Base::visitChildren(thisObject, visitor);
+    visitor.append(thisObject-&gt;m_initializeFunction);
+}
+
+static EncodedJSValue JSC_HOST_CALL callThrowTypeError(ExecState* exec)
+{
+    VM&amp; vm = exec-&gt;vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
+    throwTypeError(exec, scope, ASCIILiteral(&quot;Constructor requires 'new' operator&quot;));
+    return JSValue::encode(jsNull());
+}
+
+CallType DOMConstructorObject::getCallData(JSCell*, CallData&amp; callData)
+{
+    callData.native.function = callThrowTypeError;
+    return CallType::Host;
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMConstructor.h (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMConstructor.h        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSDOMConstructor.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -19,11 +19,64 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;DOMConstructorWithDocument.h&quot;
-#include &quot;JSDOMBinding.h&quot;
</del><ins>+#include &quot;Document.h&quot;
+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+// Base class for all constructor objects in the JSC bindings.
+class DOMConstructorObject : public JSDOMObject {
+public:
+    typedef JSDOMObject Base;
+    static const unsigned StructureFlags = Base::StructureFlags | JSC::ImplementsHasInstance | JSC::ImplementsDefaultHasInstance | JSC::TypeOfShouldCallGetCallData;
+    static JSC::Structure* createStructure(JSC::VM&amp;, JSC::JSGlobalObject*, JSC::JSValue);
+
+protected:
+    DOMConstructorObject(JSC::Structure*, JSDOMGlobalObject&amp;);
+
+    static String className(const JSObject*);
+    static JSC::CallType getCallData(JSCell*, JSC::CallData&amp;);
+};
+
+// Constructors using this base class depend on being in a Document and
+// can never be used from a WorkerGlobalScope.
+class DOMConstructorWithDocument : public DOMConstructorObject {
+    typedef DOMConstructorObject Base;
+public:
+    Document* document() const
+    {
+        return downcast&lt;Document&gt;(scriptExecutionContext());
+    }
+
+protected:
+    DOMConstructorWithDocument(JSC::Structure* structure, JSDOMGlobalObject&amp; globalObject)
+        : DOMConstructorObject(structure, globalObject)
+    {
+    }
+
+    void finishCreation(JSDOMGlobalObject&amp; globalObject)
+    {
+        Base::finishCreation(globalObject.vm());
+        ASSERT(globalObject.scriptExecutionContext()-&gt;isDocument());
+    }
+};
+
+class DOMConstructorJSBuiltinObject : public DOMConstructorObject {
+public:
+    typedef DOMConstructorObject Base;
+
+protected:
+    DOMConstructorJSBuiltinObject(JSC::Structure*, JSDOMGlobalObject&amp;);
+    static void visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;);
+
+    JSC::JSFunction* initializeFunction();
+    void setInitializeFunction(JSC::VM&amp;, JSC::JSFunction&amp;);
+
+private:
+    JSC::WriteBarrier&lt;JSC::JSFunction&gt; m_initializeFunction;
+};
+
</ins><span class="cx"> template&lt;typename JSClass&gt; class JSDOMConstructorNotConstructable : public DOMConstructorObject {
</span><span class="cx"> public:
</span><span class="cx">     typedef DOMConstructorObject Base;
</span><span class="lines">@@ -131,6 +184,37 @@
</span><span class="cx">     JSC::FunctionExecutable* initializeExecutable(JSC::VM&amp;);
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+inline JSC::Structure* DOMConstructorObject::createStructure(JSC::VM&amp; vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
+{
+    return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
+}
+
+inline DOMConstructorObject::DOMConstructorObject(JSC::Structure* structure, JSDOMGlobalObject&amp; globalObject)
+    : JSDOMObject(structure, globalObject)
+{
+}
+
+inline String DOMConstructorObject::className(const JSObject*)
+{
+    return ASCIILiteral(&quot;Function&quot;);
+}
+
+inline DOMConstructorJSBuiltinObject::DOMConstructorJSBuiltinObject(JSC::Structure* structure, JSDOMGlobalObject&amp; globalObject)
+    : DOMConstructorObject(structure, globalObject)
+{
+}
+
+inline JSC::JSFunction* DOMConstructorJSBuiltinObject::initializeFunction()
+{
+    return m_initializeFunction.get();
+}
+
+inline void DOMConstructorJSBuiltinObject::setInitializeFunction(JSC::VM&amp; vm, JSC::JSFunction&amp; function)
+{
+    m_initializeFunction.set(vm, this, &amp;function);
+}
+
+
</ins><span class="cx"> template&lt;typename JSClass&gt; inline JSDOMConstructorNotConstructable&lt;JSClass&gt;* JSDOMConstructorNotConstructable&lt;JSClass&gt;::create(JSC::VM&amp; vm, JSC::Structure* structure, JSDOMGlobalObject&amp; globalObject)
</span><span class="cx"> {
</span><span class="cx">     JSDOMConstructorNotConstructable* constructor = new (NotNull, JSC::allocateCell&lt;JSDOMConstructorNotConstructable&gt;(vm.heap)) JSDOMConstructorNotConstructable(structure, globalObject);
</span><span class="lines">@@ -220,6 +304,8 @@
</span><span class="cx">     initializeProperties(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void callFunctionWithCurrentArguments(JSC::ExecState&amp;, JSC::JSObject&amp; thisObject, JSC::JSFunction&amp;);
+
</ins><span class="cx"> template&lt;typename JSClass&gt; inline JSC::EncodedJSValue JSBuiltinConstructor&lt;JSClass&gt;::callConstructor(JSC::ExecState&amp; state, JSC::JSObject&amp; object)
</span><span class="cx"> {
</span><span class="cx">     callFunctionWithCurrentArguments(state, object, *initializeFunction());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMConverth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMConvert.h (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMConvert.h        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSDOMConvert.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;IDBBindingUtilities.h&quot;
</span><span class="cx"> #include &quot;IDLTypes.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &lt;runtime/JSGlobalObjectInlines.h&gt;
</span><span class="cx"> #include &lt;runtime/JSONObject.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMExceptionHandlingcppfromrev211353trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/bindings/js/JSDOMExceptionHandling.cpp (from rev 211353, trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp) (0 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMExceptionHandling.cpp                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDOMExceptionHandling.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -0,0 +1,404 @@
</span><ins>+/*
+ *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2004-2011, 2013, 2016 Apple Inc. All rights reserved.
+ *  Copyright (C) 2007 Samuel Weinig &lt;sam@webkit.org&gt;
+ *  Copyright (C) 2013 Michael Pruett &lt;michael@68k.org&gt;
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include &quot;config.h&quot;
+#include &quot;JSDOMExceptionHandling.h&quot;
+
+#include &quot;CachedScript.h&quot;
+#include &quot;DOMWindow.h&quot;
+#include &quot;ExceptionCodeDescription.h&quot;
+#include &quot;ExceptionHeaders.h&quot;
+#include &quot;ExceptionInterfaces.h&quot;
+#include &quot;JSDOMPromise.h&quot;
+#include &quot;JSDOMWindow.h&quot;
+#include &quot;JSDynamicDowncast.h&quot;
+#include &quot;JSExceptionBase.h&quot;
+#include &lt;inspector/ScriptCallStack.h&gt;
+#include &lt;inspector/ScriptCallStackFactory.h&gt;
+#include &lt;runtime/ErrorHandlingScope.h&gt;
+#include &lt;runtime/Exception.h&gt;
+#include &lt;runtime/ExceptionHelpers.h&gt;
+#include &lt;wtf/text/StringBuilder.h&gt;
+
+#if ENABLE(INDEXED_DATABASE)
+#include &quot;IDBDatabaseException.h&quot;
+#endif
+
+using namespace JSC;
+
+namespace WebCore {
+
+void reportException(ExecState* exec, JSValue exceptionValue, CachedScript* cachedScript)
+{
+    VM&amp; vm = exec-&gt;vm();
+    RELEASE_ASSERT(vm.currentThreadIsHoldingAPILock());
+    auto* exception = jsDynamicDowncast&lt;JSC::Exception*&gt;(vm, exceptionValue);
+    if (!exception) {
+        exception = vm.lastException();
+        if (!exception)
+            exception = JSC::Exception::create(exec-&gt;vm(), exceptionValue, JSC::Exception::DoNotCaptureStack);
+    }
+
+    reportException(exec, exception, cachedScript);
+}
+
+String retrieveErrorMessage(ExecState&amp; state, VM&amp; vm, JSValue exception, CatchScope&amp; catchScope)
+{
+    if (auto* exceptionBase = toExceptionBase(vm, exception))
+        return exceptionBase-&gt;toString();
+
+    // FIXME: &lt;http://webkit.org/b/115087&gt; Web Inspector: WebCore::reportException should not evaluate JavaScript handling exceptions
+    // If this is a custom exception object, call toString on it to try and get a nice string representation for the exception.
+    String errorMessage;
+    if (auto* error = jsDynamicDowncast&lt;ErrorInstance*&gt;(vm, exception))
+        errorMessage = error-&gt;sanitizedToString(&amp;state);
+    else
+        errorMessage = exception.toWTFString(&amp;state);
+
+    // We need to clear any new exception that may be thrown in the toString() call above.
+    // reportException() is not supposed to be making new exceptions.
+    catchScope.clearException();
+    vm.clearLastException();
+    return errorMessage;
+}
+
+void reportException(ExecState* exec, JSC::Exception* exception, CachedScript* cachedScript, ExceptionDetails* exceptionDetails)
+{
+    VM&amp; vm = exec-&gt;vm();
+    auto scope = DECLARE_CATCH_SCOPE(vm);
+
+    RELEASE_ASSERT(vm.currentThreadIsHoldingAPILock());
+    if (isTerminatedExecutionException(vm, exception))
+        return;
+
+    ErrorHandlingScope errorScope(exec-&gt;vm());
+
+    auto callStack = Inspector::createScriptCallStackFromException(exec, exception, Inspector::ScriptCallStack::maxCallStackSizeToCapture);
+    scope.clearException();
+    vm.clearLastException();
+
+    auto* globalObject = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject());
+    if (auto* window = jsDynamicDowncast&lt;JSDOMWindow*&gt;(vm, globalObject)) {
+        if (!window-&gt;wrapped().isCurrentlyDisplayedInFrame())
+            return;
+    }
+
+    int lineNumber = 0;
+    int columnNumber = 0;
+    String exceptionSourceURL;
+    if (auto* callFrame = callStack-&gt;firstNonNativeCallFrame()) {
+        lineNumber = callFrame-&gt;lineNumber();
+        columnNumber = callFrame-&gt;columnNumber();
+        exceptionSourceURL = callFrame-&gt;sourceURL();
+    }
+
+    auto errorMessage = retrieveErrorMessage(*exec, vm, exception-&gt;value(), scope);
+    globalObject-&gt;scriptExecutionContext()-&gt;reportException(errorMessage, lineNumber, columnNumber, exceptionSourceURL, exception, callStack-&gt;size() ? callStack.ptr() : nullptr, cachedScript);
+
+    if (exceptionDetails) {
+        exceptionDetails-&gt;message = errorMessage;
+        exceptionDetails-&gt;lineNumber = lineNumber;
+        exceptionDetails-&gt;columnNumber = columnNumber;
+        exceptionDetails-&gt;sourceURL = exceptionSourceURL;
+    }
+}
+
+void reportCurrentException(ExecState* exec)
+{
+    VM&amp; vm = exec-&gt;vm();
+    auto scope = DECLARE_CATCH_SCOPE(vm);
+    auto* exception = scope.exception();
+    scope.clearException();
+    reportException(exec, exception);
+}
+
+static JSValue createDOMException(ExecState* exec, ExceptionCode ec, const String* message = nullptr)
+{
+    if (!ec || ec == ExistingExceptionError)
+        return jsUndefined();
+
+    // FIXME: Handle other WebIDL exception types.
+    if (ec == TypeError) {
+        if (!message || message-&gt;isEmpty())
+            return createTypeError(exec);
+        return createTypeError(exec, *message);
+    }
+
+    if (ec == RangeError) {
+        if (!message || message-&gt;isEmpty())
+            return createRangeError(exec, ASCIILiteral(&quot;Bad value&quot;));
+        return createRangeError(exec, *message);
+    }
+
+    if (ec == StackOverflowError)
+        return createStackOverflowError(exec);
+
+    // FIXME: All callers to createDOMException need to pass in the correct global object.
+    // For now, we're going to assume the lexicalGlobalObject. Which is wrong in cases like this:
+    // frames[0].document.createElement(null, null); // throws an exception which should have the subframe's prototypes.
+    JSDOMGlobalObject* globalObject = deprecatedGlobalObjectForPrototype(exec);
+
+    ExceptionCodeDescription description(ec);
+
+    CString messageCString;
+    if (message)
+        messageCString = message-&gt;utf8();
+    if (message &amp;&amp; !message-&gt;isEmpty()) {
+        // It is safe to do this because the char* contents of the CString are copied into a new WTF::String before the CString is destroyed.
+        description.description = messageCString.data();
+    }
+
+    JSValue errorObject;
+    switch (description.type) {
+    case DOMCoreExceptionType:
+#if ENABLE(INDEXED_DATABASE)
+    case IDBDatabaseExceptionType:
+#endif
+        errorObject = toJS(exec, globalObject, DOMCoreException::create(description));
+        break;
+    case FileExceptionType:
+        errorObject = toJS(exec, globalObject, FileException::create(description));
+        break;
+    case SQLExceptionType:
+        errorObject = toJS(exec, globalObject, SQLException::create(description));
+        break;
+    case SVGExceptionType:
+        errorObject = toJS(exec, globalObject, SVGException::create(description));
+        break;
+    case XPathExceptionType:
+        errorObject = toJS(exec, globalObject, XPathException::create(description));
+        break;
+    }
+    
+    ASSERT(errorObject);
+    addErrorInfo(exec, asObject(errorObject), true);
+    return errorObject;
+}
+
+JSValue createDOMException(ExecState* exec, ExceptionCode ec, const String&amp; message)
+{
+    return createDOMException(exec, ec, &amp;message);
+}
+
+JSValue createDOMException(ExecState&amp; state, Exception&amp;&amp; exception)
+{
+    return createDOMException(&amp;state, exception.code(), exception.releaseMessage());
+}
+
+void propagateExceptionSlowPath(JSC::ExecState&amp; state, JSC::ThrowScope&amp; throwScope, Exception&amp;&amp; exception)
+{
+    ASSERT(!throwScope.exception());
+    throwException(&amp;state, throwScope, createDOMException(state, WTFMove(exception)));
+}
+    
+static EncodedJSValue throwTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const String&amp; errorMessage)
+{
+    return throwVMTypeError(&amp;state, scope, errorMessage);
+}
+
+static void appendArgumentMustBe(StringBuilder&amp; builder, unsigned argumentIndex, const char* argumentName, const char* interfaceName, const char* functionName)
+{
+    builder.appendLiteral(&quot;Argument &quot;);
+    builder.appendNumber(argumentIndex + 1);
+    builder.appendLiteral(&quot; ('&quot;);
+    builder.append(argumentName);
+    builder.appendLiteral(&quot;') to &quot;);
+    if (!functionName) {
+        builder.appendLiteral(&quot;the &quot;);
+        builder.append(interfaceName);
+        builder.appendLiteral(&quot; constructor&quot;);
+    } else {
+        builder.append(interfaceName);
+        builder.append('.');
+        builder.append(functionName);
+    }
+    builder.appendLiteral(&quot; must be &quot;);
+}
+
+JSC::EncodedJSValue reportDeprecatedGetterError(JSC::ExecState&amp; state, const char* interfaceName, const char* attributeName)
+{
+    auto&amp; context = *jsCast&lt;JSDOMGlobalObject*&gt;(state.lexicalGlobalObject())-&gt;scriptExecutionContext();
+    context.addConsoleMessage(MessageSource::JS, MessageLevel::Error, makeString(&quot;Deprecated attempt to access property '&quot;, attributeName, &quot;' on a non-&quot;, interfaceName, &quot; object.&quot;));
+    return JSValue::encode(jsUndefined());
+}
+    
+void reportDeprecatedSetterError(JSC::ExecState&amp; state, const char* interfaceName, const char* attributeName)
+{
+    auto&amp; context = *jsCast&lt;JSDOMGlobalObject*&gt;(state.lexicalGlobalObject())-&gt;scriptExecutionContext();
+    context.addConsoleMessage(MessageSource::JS, MessageLevel::Error, makeString(&quot;Deprecated attempt to set property '&quot;, attributeName, &quot;' on a non-&quot;, interfaceName, &quot; object.&quot;));
+}
+
+void throwNotSupportedError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
+{
+    ASSERT(!scope.exception());
+    throwException(&amp;state, scope, createDOMException(&amp;state, NOT_SUPPORTED_ERR));
+}
+
+void throwNotSupportedError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* message)
+{
+    ASSERT(!scope.exception());
+    String messageString(message);
+    throwException(&amp;state, scope, createDOMException(&amp;state, NOT_SUPPORTED_ERR, &amp;messageString));
+}
+
+void throwInvalidStateError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* message)
+{
+    ASSERT(!scope.exception());
+    String messageString(message);
+    throwException(&amp;state, scope, createDOMException(&amp;state, INVALID_STATE_ERR, &amp;messageString));
+}
+
+void throwSecurityError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const String&amp; message)
+{
+    ASSERT(!scope.exception());
+    throwException(&amp;state, scope, createDOMException(&amp;state, SECURITY_ERR, message));
+}
+
+JSC::EncodedJSValue throwArgumentMustBeEnumError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedValues)
+{
+    StringBuilder builder;
+    appendArgumentMustBe(builder, argumentIndex, argumentName, functionInterfaceName, functionName);
+    builder.appendLiteral(&quot;one of: &quot;);
+    builder.append(expectedValues);
+    return throwVMTypeError(&amp;state, scope, builder.toString());
+}
+
+JSC::EncodedJSValue throwArgumentMustBeFunctionError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, unsigned argumentIndex, const char* argumentName, const char* interfaceName, const char* functionName)
+{
+    StringBuilder builder;
+    appendArgumentMustBe(builder, argumentIndex, argumentName, interfaceName, functionName);
+    builder.appendLiteral(&quot;a function&quot;);
+    return throwVMTypeError(&amp;state, scope, builder.toString());
+}
+
+JSC::EncodedJSValue throwArgumentTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedType)
+{
+    StringBuilder builder;
+    appendArgumentMustBe(builder, argumentIndex, argumentName, functionInterfaceName, functionName);
+    builder.appendLiteral(&quot;an instance of &quot;);
+    builder.append(expectedType);
+    return throwVMTypeError(&amp;state, scope, builder.toString());
+}
+
+void throwArrayElementTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
+{
+    throwTypeError(state, scope, ASCIILiteral(&quot;Invalid Array element type&quot;));
+}
+
+void throwAttributeTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName, const char* attributeName, const char* expectedType)
+{
+    throwTypeError(state, scope, makeString(&quot;The &quot;, interfaceName, '.', attributeName, &quot; attribute must be an instance of &quot;, expectedType));
+}
+
+JSC::EncodedJSValue throwRequiredMemberTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* memberName, const char* dictionaryName, const char* expectedType)
+{
+    StringBuilder builder;
+    builder.appendLiteral(&quot;Member &quot;);
+    builder.append(dictionaryName);
+    builder.append('.');
+    builder.append(memberName);
+    builder.appendLiteral(&quot; is required and must be an instance of &quot;);
+    builder.append(expectedType);
+    return throwVMTypeError(&amp;state, scope, builder.toString());
+}
+
+JSC::EncodedJSValue throwConstructorScriptExecutionContextUnavailableError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName)
+{
+    return throwVMError(&amp;state, scope, createReferenceError(&amp;state, makeString(interfaceName, &quot; constructor associated execution context is unavailable&quot;)));
+}
+
+void throwSequenceTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
+{
+    throwTypeError(state, scope, ASCIILiteral(&quot;Value is not a sequence&quot;));
+}
+
+void throwNonFiniteTypeError(ExecState&amp; state, JSC::ThrowScope&amp; scope)
+{
+    throwTypeError(&amp;state, scope, ASCIILiteral(&quot;The provided value is non-finite&quot;));
+}
+
+String makeGetterTypeErrorMessage(const char* interfaceName, const char* attributeName)
+{
+    return makeString(&quot;The &quot;, interfaceName, '.', attributeName, &quot; getter can only be used on instances of &quot;, interfaceName);
+}
+
+JSC::EncodedJSValue throwGetterTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName, const char* attributeName)
+{
+    return throwVMTypeError(&amp;state, scope, makeGetterTypeErrorMessage(interfaceName, attributeName));
+}
+
+JSC::EncodedJSValue rejectPromiseWithGetterTypeError(JSC::ExecState&amp; state, const char* interfaceName, const char* attributeName)
+{
+    return createRejectedPromiseWithTypeError(state, makeGetterTypeErrorMessage(interfaceName, attributeName));
+}
+
+bool throwSetterTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName, const char* attributeName)
+{
+    throwTypeError(state, scope, makeString(&quot;The &quot;, interfaceName, '.', attributeName, &quot; setter can only be used on instances of &quot;, interfaceName));
+    return false;
+}
+
+String makeThisTypeErrorMessage(const char* interfaceName, const char* functionName)
+{
+    return makeString(&quot;Can only call &quot;, interfaceName, '.', functionName, &quot; on instances of &quot;, interfaceName);
+}
+
+EncodedJSValue throwThisTypeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope, const char* interfaceName, const char* functionName)
+{
+    return throwTypeError(state, scope, makeThisTypeErrorMessage(interfaceName, functionName));
+}
+
+JSC::EncodedJSValue rejectPromiseWithThisTypeError(DeferredPromise&amp; promise, const char* interfaceName, const char* methodName)
+{
+    promise.reject(TypeError, makeThisTypeErrorMessage(interfaceName, methodName));
+    return JSValue::encode(jsUndefined());
+}
+
+JSC::EncodedJSValue rejectPromiseWithThisTypeError(JSC::ExecState&amp; state, const char* interfaceName, const char* methodName)
+{
+    return createRejectedPromiseWithTypeError(state, makeThisTypeErrorMessage(interfaceName, methodName));
+}
+
+void throwDOMSyntaxError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
+{
+    ASSERT(!scope.exception());
+    throwException(&amp;state, scope, createDOMException(&amp;state, SYNTAX_ERR));
+}
+
+void throwDataCloneError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
+{
+    ASSERT(!scope.exception());
+    throwException(&amp;state, scope, createDOMException(&amp;state, DATA_CLONE_ERR));
+}
+
+void throwIndexSizeError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
+{
+    ASSERT(!scope.exception());
+    throwException(&amp;state, scope, createDOMException(&amp;state, INDEX_SIZE_ERR));
+}
+
+void throwTypeMismatchError(JSC::ExecState&amp; state, JSC::ThrowScope&amp; scope)
+{
+    ASSERT(!scope.exception());
+    throwException(&amp;state, scope, createDOMException(&amp;state, TYPE_MISMATCH_ERR));
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMExceptionHandlinghfromrev211353trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/bindings/js/JSDOMExceptionHandling.h (from rev 211353, trunk/Source/WebCore/bindings/js/JSDOMBinding.h) (0 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMExceptionHandling.h                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDOMExceptionHandling.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -0,0 +1,130 @@
</span><ins>+/*
+ *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2003-2006, 2008-2009, 2013, 2016 Apple Inc. All rights reserved.
+ *  Copyright (C) 2007 Samuel Weinig &lt;sam@webkit.org&gt;
+ *  Copyright (C) 2009 Google, Inc. All rights reserved.
+ *  Copyright (C) 2012 Ericsson AB. All rights reserved.
+ *  Copyright (C) 2013 Michael Pruett &lt;michael@68k.org&gt;
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#pragma once
+
+#include &quot;ExceptionCode.h&quot;
+#include &quot;ExceptionOr.h&quot;
+#include &lt;runtime/Error.h&gt;
+
+namespace JSC {
+class CatchScope;
+}
+
+namespace WebCore {
+
+class CachedScript;
+class DeferredPromise;
+class JSDOMGlobalObject;
+
+struct ExceptionDetails {
+    String message;
+    int lineNumber { 0 };
+    int columnNumber { 0 };
+    String sourceURL;
+};
+
+WEBCORE_EXPORT JSC::EncodedJSValue reportDeprecatedGetterError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName);
+WEBCORE_EXPORT void reportDeprecatedSetterError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName);
+
+void throwAttributeTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName, const char* attributeName, const char* expectedType);
+WEBCORE_EXPORT bool throwSetterTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName, const char* attributeName);
+
+void throwArrayElementTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
+void throwDataCloneError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
+void throwDOMSyntaxError(JSC::ExecState&amp;, JSC::ThrowScope&amp;); // Not the same as a JavaScript syntax error.
+void throwIndexSizeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
+void throwInvalidStateError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* message);
+WEBCORE_EXPORT void throwNonFiniteTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
+void throwNotSupportedError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
+void throwNotSupportedError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* message);
+void throwSecurityError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const String&amp; message);
+WEBCORE_EXPORT void throwSequenceTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
+void throwTypeMismatchError(JSC::ExecState&amp;, JSC::ThrowScope&amp;);
+
+WEBCORE_EXPORT JSC::EncodedJSValue throwArgumentMustBeEnumError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedValues);
+JSC::EncodedJSValue throwArgumentMustBeFunctionError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName);
+WEBCORE_EXPORT JSC::EncodedJSValue throwArgumentTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, unsigned argumentIndex, const char* argumentName, const char* functionInterfaceName, const char* functionName, const char* expectedType);
+WEBCORE_EXPORT JSC::EncodedJSValue throwRequiredMemberTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* memberName, const char* dictionaryName, const char* expectedType);
+JSC::EncodedJSValue throwConstructorScriptExecutionContextUnavailableError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName);
+
+String makeGetterTypeErrorMessage(const char* interfaceName, const char* attributeName);
+String makeThisTypeErrorMessage(const char* interfaceName, const char* attributeName);
+
+WEBCORE_EXPORT JSC::EncodedJSValue throwGetterTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName, const char* attributeName);
+WEBCORE_EXPORT JSC::EncodedJSValue throwThisTypeError(JSC::ExecState&amp;, JSC::ThrowScope&amp;, const char* interfaceName, const char* functionName);
+
+WEBCORE_EXPORT JSC::EncodedJSValue rejectPromiseWithGetterTypeError(JSC::ExecState&amp;, const char* interfaceName, const char* attributeName);
+WEBCORE_EXPORT JSC::EncodedJSValue rejectPromiseWithThisTypeError(DeferredPromise&amp;, const char* interfaceName, const char* operationName);
+WEBCORE_EXPORT JSC::EncodedJSValue rejectPromiseWithThisTypeError(JSC::ExecState&amp;, const char* interfaceName, const char* operationName);
+
+String retrieveErrorMessage(JSC::ExecState&amp;, JSC::VM&amp;, JSC::JSValue exception, JSC::CatchScope&amp;);
+WEBCORE_EXPORT void reportException(JSC::ExecState*, JSC::JSValue exception, CachedScript* = nullptr);
+WEBCORE_EXPORT void reportException(JSC::ExecState*, JSC::Exception*, CachedScript* = nullptr, ExceptionDetails* = nullptr);
+void reportCurrentException(JSC::ExecState*);
+
+JSC::JSValue createDOMException(JSC::ExecState&amp;, Exception&amp;&amp;);
+JSC::JSValue createDOMException(JSC::ExecState*, ExceptionCode, const String&amp;);
+
+// Convert a DOM implementation exception into a JavaScript exception in the execution state.
+void propagateException(JSC::ExecState&amp;, JSC::ThrowScope&amp;, Exception&amp;&amp;);
+WEBCORE_EXPORT void propagateExceptionSlowPath(JSC::ExecState&amp;, JSC::ThrowScope&amp;, Exception&amp;&amp;);
+
+// ExceptionOr handling.
+void propagateException(JSC::ExecState&amp;, JSC::ThrowScope&amp;, ExceptionOr&lt;void&gt;&amp;&amp;);
+template&lt;typename T&gt; JSC::JSValue toJS(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, JSC::ThrowScope&amp;, ExceptionOr&lt;T&gt;&amp;&amp;);
+template&lt;typename T&gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, JSC::ThrowScope&amp;, ExceptionOr&lt;T&gt;&amp;&amp; value);
+
+
+ALWAYS_INLINE void propagateException(JSC::ExecState&amp; state, JSC::ThrowScope&amp; throwScope, Exception&amp;&amp; exception)
+{
+    if (throwScope.exception())
+        return;
+    propagateExceptionSlowPath(state, throwScope, WTFMove(exception));
+}
+
+inline void propagateException(JSC::ExecState&amp; state, JSC::ThrowScope&amp; throwScope, ExceptionOr&lt;void&gt;&amp;&amp; value)
+{
+    if (UNLIKELY(value.hasException()))
+        propagateException(state, throwScope, value.releaseException());
+}
+
+template&lt;typename T&gt; inline JSC::JSValue toJS(JSC::ExecState&amp; state, JSDOMGlobalObject&amp; globalObject, JSC::ThrowScope&amp; throwScope, ExceptionOr&lt;T&gt;&amp;&amp; value)
+{
+    if (UNLIKELY(value.hasException())) {
+        propagateException(state, throwScope, value.releaseException());
+        return { };
+    }
+    return toJS(&amp;state, &amp;globalObject, value.releaseReturnValue());
+}
+
+template&lt;typename T&gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState&amp; state, JSDOMGlobalObject&amp; globalObject, JSC::ThrowScope&amp; throwScope, ExceptionOr&lt;T&gt;&amp;&amp; value)
+{
+    if (UNLIKELY(value.hasException())) {
+        propagateException(state, throwScope, value.releaseException());
+        return { };
+    }
+    return toJSNewlyCreated(&amp;state, &amp;globalObject, value.releaseReturnValue());
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include &quot;DOMWindow.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;InspectorController.h&quot;
</span><ins>+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #include &quot;JSDOMGlobalObjectTask.h&quot;
</span><span class="cx"> #include &quot;JSDOMWindowCustom.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span><span class="lines">@@ -286,6 +287,54 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+DOMWindow&amp; callerDOMWindow(ExecState* exec)
+{
+    class GetCallerGlobalObjectFunctor {
+    public:
+        GetCallerGlobalObjectFunctor() = default;
+
+        StackVisitor::Status operator()(StackVisitor&amp; visitor) const
+        {
+            if (!m_hasSkippedFirstFrame) {
+                m_hasSkippedFirstFrame = true;
+                return StackVisitor::Continue;
+            }
+
+            if (auto* codeBlock = visitor-&gt;codeBlock())
+                m_globalObject = codeBlock-&gt;globalObject();
+            else {
+                ASSERT(visitor-&gt;callee());
+                // FIXME: Callee is not an object if the caller is Web Assembly.
+                // Figure out what to do here. We can probably get the global object
+                // from the top-most Wasm Instance. https://bugs.webkit.org/show_bug.cgi?id=165721
+                if (visitor-&gt;callee()-&gt;isObject())
+                    m_globalObject = jsCast&lt;JSObject*&gt;(visitor-&gt;callee())-&gt;globalObject();
+            }
+            return StackVisitor::Done;
+        }
+
+        JSGlobalObject* globalObject() const { return m_globalObject; }
+
+    private:
+        mutable bool m_hasSkippedFirstFrame { false };
+        mutable JSGlobalObject* m_globalObject { nullptr };
+    };
+
+    GetCallerGlobalObjectFunctor iter;
+    exec-&gt;iterate(iter);
+    return iter.globalObject() ? asJSDOMWindow(iter.globalObject())-&gt;wrapped() : firstDOMWindow(exec);
+}
+
+DOMWindow&amp; activeDOMWindow(ExecState* exec)
+{
+    return asJSDOMWindow(exec-&gt;lexicalGlobalObject())-&gt;wrapped();
+}
+
+DOMWindow&amp; firstDOMWindow(ExecState* exec)
+{
+    return asJSDOMWindow(exec-&gt;vmEntryGlobalObject())-&gt;wrapped();
+}
+
</ins><span class="cx"> void JSDOMWindowBase::fireFrameClearedWatchpointsForWindow(DOMWindow* window)
</span><span class="cx"> {
</span><span class="cx">     JSC::VM&amp; vm = commonVM();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -97,4 +97,8 @@
</span><span class="cx">     JSDOMWindow* toJSDOMWindow(Frame*, DOMWrapperWorld&amp;);
</span><span class="cx">     WEBCORE_EXPORT JSDOMWindow* toJSDOMWindow(JSC::VM&amp;, JSC::JSValue);
</span><span class="cx"> 
</span><ins>+    DOMWindow&amp; callerDOMWindow(JSC::ExecState*);
+    DOMWindow&amp; activeDOMWindow(JSC::ExecState*);
+    DOMWindow&amp; firstDOMWindow(JSC::ExecState*);
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;HTMLCollection.h&quot;
</span><span class="cx"> #include &quot;HTMLDocument.h&quot;
</span><ins>+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #include &quot;JSEvent.h&quot;
</span><span class="cx"> #include &quot;JSEventListener.h&quot;
</span><span class="cx"> #include &quot;JSHTMLAudioElement.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowPropertiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowProperties.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowProperties.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowProperties.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;HTMLDocument.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindowBase.h&quot;
</span><span class="cx"> #include &quot;JSElement.h&quot;
</span><span class="cx"> #include &quot;JSHTMLCollection.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWrapperCachecppfromrev211353trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/bindings/js/JSDOMWrapperCache.cpp (from rev 211353, trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp) (0 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWrapperCache.cpp                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDOMWrapperCache.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2004-2011, 2013, 2016 Apple Inc. All rights reserved.
+ *  Copyright (C) 2007 Samuel Weinig &lt;sam@webkit.org&gt;
+ *  Copyright (C) 2013 Michael Pruett &lt;michael@68k.org&gt;
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include &quot;config.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
+
+#include &lt;runtime/JSCInlines.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+Structure* getCachedDOMStructure(JSDOMGlobalObject&amp; globalObject, const ClassInfo* classInfo)
+{
+    JSDOMStructureMap&amp; structures = globalObject.structures(NoLockingNecessary);
+    return structures.get(classInfo).get();
+}
+
+Structure* cacheDOMStructure(JSDOMGlobalObject&amp; globalObject, Structure* structure, const ClassInfo* classInfo)
+{
+    auto locker = lockDuringMarking(globalObject.vm().heap, globalObject.gcLock());
+    JSDOMStructureMap&amp; structures = globalObject.structures(locker);
+    ASSERT(!structures.contains(classInfo));
+    return structures.set(classInfo, WriteBarrier&lt;Structure&gt;(globalObject.vm(), &amp;globalObject, structure)).iterator-&gt;value.get();
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWrapperCachehfromrev211353trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/bindings/js/JSDOMWrapperCache.h (from rev 211353, trunk/Source/WebCore/bindings/js/JSDOMBinding.h) (0 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWrapperCache.h                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDOMWrapperCache.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -0,0 +1,206 @@
</span><ins>+/*
+ *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
+ *  Copyright (C) 2003-2006, 2008-2009, 2013, 2016 Apple Inc. All rights reserved.
+ *  Copyright (C) 2007 Samuel Weinig &lt;sam@webkit.org&gt;
+ *  Copyright (C) 2009 Google, Inc. All rights reserved.
+ *  Copyright (C) 2012 Ericsson AB. All rights reserved.
+ *  Copyright (C) 2013 Michael Pruett &lt;michael@68k.org&gt;
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#pragma once
+
+#include &quot;DOMWrapperWorld.h&quot;
+#include &quot;JSDOMGlobalObject.h&quot;
+#include &quot;JSDOMWrapper.h&quot;
+#include &quot;JSDynamicDowncast.h&quot;
+#include &quot;ScriptWrappable.h&quot;
+#include &quot;ScriptWrappableInlines.h&quot;
+#include &quot;WebCoreTypedArrayController.h&quot;
+#include &lt;heap/Weak.h&gt;
+#include &lt;heap/WeakInlines.h&gt;
+#include &lt;runtime/JSArrayBuffer.h&gt;
+#include &lt;runtime/TypedArrayInlines.h&gt;
+#include &lt;runtime/TypedArrays.h&gt;
+
+namespace WebCore {
+
+WEBCORE_EXPORT JSC::Structure* getCachedDOMStructure(JSDOMGlobalObject&amp;, const JSC::ClassInfo*);
+WEBCORE_EXPORT JSC::Structure* cacheDOMStructure(JSDOMGlobalObject&amp;, JSC::Structure*, const JSC::ClassInfo*);
+
+template&lt;typename WrapperClass&gt; JSC::Structure* getDOMStructure(JSC::VM&amp;, JSDOMGlobalObject&amp;);
+template&lt;typename WrapperClass&gt; JSC::Structure* deprecatedGetDOMStructure(JSC::ExecState*);
+template&lt;typename WrapperClass&gt; JSC::JSObject* getDOMPrototype(JSC::VM&amp;, JSC::JSGlobalObject*);
+
+JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld&amp;, JSC::ArrayBuffer*);
+void* wrapperKey(JSC::ArrayBuffer*);
+
+JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp;, void*);
+JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp;, ScriptWrappable*);
+JSC::JSArrayBuffer* getInlineCachedWrapper(DOMWrapperWorld&amp;, JSC::ArrayBuffer*);
+
+bool setInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*, JSC::WeakHandleOwner*);
+bool setInlineCachedWrapper(DOMWrapperWorld&amp;, ScriptWrappable*, JSDOMObject* wrapper, JSC::WeakHandleOwner* wrapperOwner);
+bool setInlineCachedWrapper(DOMWrapperWorld&amp;, JSC::ArrayBuffer*, JSC::JSArrayBuffer* wrapper, JSC::WeakHandleOwner* wrapperOwner);
+
+bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*);
+bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, ScriptWrappable*, JSDOMObject* wrapper);
+bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, JSC::ArrayBuffer*, JSC::JSArrayBuffer* wrapper);
+
+template&lt;typename DOMClass&gt; JSC::JSObject* getCachedWrapper(DOMWrapperWorld&amp;, DOMClass&amp;);
+template&lt;typename DOMClass&gt; inline JSC::JSObject* getCachedWrapper(DOMWrapperWorld&amp; world, Ref&lt;DOMClass&gt;&amp; object) { return getCachedWrapper(world, object.get()); }
+template&lt;typename DOMClass, typename WrapperClass&gt; void cacheWrapper(DOMWrapperWorld&amp;, DOMClass*, WrapperClass*);
+template&lt;typename DOMClass, typename WrapperClass&gt; void uncacheWrapper(DOMWrapperWorld&amp;, DOMClass*, WrapperClass*);
+template&lt;typename DOMClass, typename T&gt; auto createWrapper(JSDOMGlobalObject*, Ref&lt;T&gt;&amp;&amp;) -&gt; typename std::enable_if&lt;std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type;
+template&lt;typename DOMClass, typename T&gt; auto createWrapper(JSDOMGlobalObject*, Ref&lt;T&gt;&amp;&amp;) -&gt; typename std::enable_if&lt;!std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type;
+
+template&lt;typename DOMClass&gt; JSC::JSValue wrap(JSC::ExecState*, JSDOMGlobalObject*, DOMClass&amp;);
+
+
+// Inline functions and template definitions.
+
+inline JSDOMGlobalObject* deprecatedGlobalObjectForPrototype(JSC::ExecState* exec)
+{
+    // FIXME: Callers to this function should be using the global object
+    // from which the object is being created, instead of assuming the lexical one.
+    // e.g. subframe.document.body should use the subframe's global object, not the lexical one.
+    return JSC::jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject());
+}
+
+template&lt;typename WrapperClass&gt; inline JSC::Structure* getDOMStructure(JSC::VM&amp; vm, JSDOMGlobalObject&amp; globalObject)
+{
+    if (JSC::Structure* structure = getCachedDOMStructure(globalObject, WrapperClass::info()))
+        return structure;
+    return cacheDOMStructure(globalObject, WrapperClass::createStructure(vm, &amp;globalObject, WrapperClass::createPrototype(vm, &amp;globalObject)), WrapperClass::info());
+}
+
+template&lt;typename WrapperClass&gt; inline JSC::Structure* deprecatedGetDOMStructure(JSC::ExecState* exec)
+{
+    // FIXME: This function is wrong. It uses the wrong global object for creating the prototype structure.
+    return getDOMStructure&lt;WrapperClass&gt;(exec-&gt;vm(), *deprecatedGlobalObjectForPrototype(exec));
+}
+
+template&lt;typename WrapperClass&gt; inline JSC::JSObject* getDOMPrototype(JSC::VM&amp; vm, JSC::JSGlobalObject* globalObject)
+{
+    return JSC::jsCast&lt;JSC::JSObject*&gt;(asObject(getDOMStructure&lt;WrapperClass&gt;(vm, *JSC::jsCast&lt;JSDOMGlobalObject*&gt;(globalObject))-&gt;storedPrototype()));
+}
+
+inline JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld&amp; world, JSC::ArrayBuffer*)
+{
+    return static_cast&lt;WebCoreTypedArrayController*&gt;(world.vm().m_typedArrayController.get())-&gt;wrapperOwner();
+}
+
+inline void* wrapperKey(JSC::ArrayBuffer* domObject)
+{
+    return domObject;
+}
+
+inline JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp;, void*) { return nullptr; }
+inline bool setInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*, JSC::WeakHandleOwner*) { return false; }
+inline bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*) { return false; }
+
+inline JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp; world, ScriptWrappable* domObject)
+{
+    if (!world.isNormal())
+        return nullptr;
+    return domObject-&gt;wrapper();
+}
+
+inline JSC::JSArrayBuffer* getInlineCachedWrapper(DOMWrapperWorld&amp; world, JSC::ArrayBuffer* buffer)
+{
+    if (!world.isNormal())
+        return nullptr;
+    return buffer-&gt;m_wrapper.get();
+}
+
+inline bool setInlineCachedWrapper(DOMWrapperWorld&amp; world, ScriptWrappable* domObject, JSDOMObject* wrapper, JSC::WeakHandleOwner* wrapperOwner)
+{
+    if (!world.isNormal())
+        return false;
+    domObject-&gt;setWrapper(wrapper, wrapperOwner, &amp;world);
+    return true;
+}
+
+inline bool setInlineCachedWrapper(DOMWrapperWorld&amp; world, JSC::ArrayBuffer* domObject, JSC::JSArrayBuffer* wrapper, JSC::WeakHandleOwner* wrapperOwner)
+{
+    if (!world.isNormal())
+        return false;
+    domObject-&gt;m_wrapper = JSC::Weak&lt;JSC::JSArrayBuffer&gt;(wrapper, wrapperOwner, &amp;world);
+    return true;
+}
+
+inline bool clearInlineCachedWrapper(DOMWrapperWorld&amp; world, ScriptWrappable* domObject, JSDOMObject* wrapper)
+{
+    if (!world.isNormal())
+        return false;
+    domObject-&gt;clearWrapper(wrapper);
+    return true;
+}
+
+inline bool clearInlineCachedWrapper(DOMWrapperWorld&amp; world, JSC::ArrayBuffer* domObject, JSC::JSArrayBuffer* wrapper)
+{
+    if (!world.isNormal())
+        return false;
+    weakClear(domObject-&gt;m_wrapper, wrapper);
+    return true;
+}
+
+template&lt;typename DOMClass&gt; inline JSC::JSObject* getCachedWrapper(DOMWrapperWorld&amp; world, DOMClass&amp; domObject)
+{
+    if (auto* wrapper = getInlineCachedWrapper(world, &amp;domObject))
+        return wrapper;
+    return world.m_wrappers.get(wrapperKey(&amp;domObject));
+}
+
+template&lt;typename DOMClass, typename WrapperClass&gt; inline void cacheWrapper(DOMWrapperWorld&amp; world, DOMClass* domObject, WrapperClass* wrapper)
+{
+    JSC::WeakHandleOwner* owner = wrapperOwner(world, domObject);
+    if (setInlineCachedWrapper(world, domObject, wrapper, owner))
+        return;
+    weakAdd(world.m_wrappers, wrapperKey(domObject), JSC::Weak&lt;JSC::JSObject&gt;(wrapper, owner, &amp;world));
+}
+
+template&lt;typename DOMClass, typename WrapperClass&gt; inline void uncacheWrapper(DOMWrapperWorld&amp; world, DOMClass* domObject, WrapperClass* wrapper)
+{
+    if (clearInlineCachedWrapper(world, domObject, wrapper))
+        return;
+    weakRemove(world.m_wrappers, wrapperKey(domObject), wrapper);
+}
+
+template&lt;typename DOMClass, typename T&gt; inline auto createWrapper(JSDOMGlobalObject* globalObject, Ref&lt;T&gt;&amp;&amp; domObject) -&gt; typename std::enable_if&lt;std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type
+{
+    using WrapperClass = typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass;
+
+    ASSERT(!getCachedWrapper(globalObject-&gt;world(), domObject));
+    auto* domObjectPtr = domObject.ptr();
+    auto* wrapper = WrapperClass::create(getDOMStructure&lt;WrapperClass&gt;(globalObject-&gt;vm(), *globalObject), globalObject, WTFMove(domObject));
+    cacheWrapper(globalObject-&gt;world(), domObjectPtr, wrapper);
+    return wrapper;
+}
+
+template&lt;typename DOMClass, typename T&gt; inline auto createWrapper(JSDOMGlobalObject* globalObject, Ref&lt;T&gt;&amp;&amp; domObject) -&gt; typename std::enable_if&lt;!std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type
+{
+    return createWrapper&lt;DOMClass&gt;(globalObject, static_reference_cast&lt;DOMClass&gt;(WTFMove(domObject)));
+}
+
+template&lt;typename DOMClass&gt; inline JSC::JSValue wrap(JSC::ExecState* state, JSDOMGlobalObject* globalObject, DOMClass&amp; domObject)
+{
+    if (auto* wrapper = getCachedWrapper(globalObject-&gt;world(), domObject))
+        return wrapper;
+    return toJSNewlyCreated(state, globalObject, Ref&lt;DOMClass&gt;(domObject));
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventTargetCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -27,6 +27,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;DOMWindow.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLElementCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLElementCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSHTMLElementCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;HTMLFormElement.h&quot;
</span><span class="cx"> #include &quot;JSCustomElementInterface.h&quot;
</span><ins>+#include &quot;JSDOMConstructor.h&quot;
</ins><span class="cx"> #include &quot;JSNodeCustom.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><span class="cx"> #include &lt;runtime/InternalFunction.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSLocationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -24,6 +24,8 @@
</span><span class="cx"> #include &quot;JSLocation.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingSecurity.h&quot;
+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;RuntimeApplicationChecks.h&quot;
</span><span class="cx"> #include &lt;runtime/JSFunction.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMutationObserverCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMutationObserverCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMutationObserverCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSMutationObserverCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;JSMutationObserver.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><ins>+#include &quot;JSDOMConstructor.h&quot;
</ins><span class="cx"> #include &quot;JSMutationCallback.h&quot;
</span><span class="cx"> #include &quot;JSNodeCustom.h&quot;
</span><span class="cx"> #include &quot;MutationObserver.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSQLStatementErrorCallbackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSQLStatementErrorCallbackCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSQLStatementErrorCallbackCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSSQLStatementErrorCallbackCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;JSSQLStatementErrorCallback.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSSQLError.h&quot;
</span><span class="cx"> #include &quot;JSSQLTransaction.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSStorageCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;JSStorage.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &lt;runtime/IdentifierInlines.h&gt;
</span><span class="cx"> #include &lt;runtime/PropertyNameArray.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSWorkerCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -28,7 +28,8 @@
</span><span class="cx"> #include &quot;JSWorker.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Document.h&quot;
</span><del>-#include &quot;JSDOMBinding.h&quot;
</del><ins>+#include &quot;JSDOMConstructor.h&quot;
+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSDOMWindowCustom.h&quot;
</span><span class="cx"> #include &quot;Worker.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSXPathNSResolverCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> #include &quot;JSXPathNSResolver.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSCustomXPathNSResolver.h&quot;
</span><del>-#include &quot;JSDOMBinding.h&quot;
</del><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScheduledActioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScheduledAction.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScheduledAction.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/ScheduledAction.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><del>-#include &quot;JSDOMBinding.h&quot;
</del><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecStateInstrumentation.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptController.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptController.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/ScriptController.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -32,6 +32,8 @@
</span><span class="cx"> #include &quot;GCController.h&quot;
</span><span class="cx"> #include &quot;HTMLPlugInElement.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><ins>+#include &quot;JSDOMBindingSecurity.h&quot;
+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><span class="cx"> #include &quot;JSDocument.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptController.h (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptController.h        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/ScriptController.h        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -56,11 +56,12 @@
</span><span class="cx"> class HTMLDocument;
</span><span class="cx"> class HTMLPlugInElement;
</span><span class="cx"> class LoadableModuleScript;
</span><ins>+class ScriptSourceCode;
</ins><span class="cx"> class SecurityOrigin;
</span><del>-class ScriptSourceCode;
</del><span class="cx"> class Widget;
</span><ins>+struct ExceptionDetails;
</ins><span class="cx"> 
</span><del>-typedef HashMap&lt;void*, RefPtr&lt;JSC::Bindings::RootObject&gt;&gt; RootObjectMap;
</del><ins>+using RootObjectMap = HashMap&lt;void*, RefPtr&lt;JSC::Bindings::RootObject&gt;&gt;;
</ins><span class="cx"> 
</span><span class="cx"> enum ReasonForCallingCanExecuteScripts {
</span><span class="cx">     AboutToExecuteScript,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptGlobalObject.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptGlobalObject.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/ScriptGlobalObject.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -31,7 +31,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;ScriptGlobalObject.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;JSDOMBinding.h&quot;
</del><ins>+#include &quot;JSDOMConvert.h&quot;
+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSInspectorFrontendHost.h&quot;
</span><span class="cx"> #include &lt;runtime/IdentifierInlines.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -45,7 +46,7 @@
</span><span class="cx">     JSLockHolder lock(vm);
</span><span class="cx">     auto scope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx">     auto&amp; globalObject = *jsCast&lt;JSDOMGlobalObject*&gt;(scriptState.lexicalGlobalObject());
</span><del>-    globalObject.putDirect(vm, Identifier::fromString(&amp;vm, name), toJS(&amp;scriptState, &amp;globalObject, value));
</del><ins>+    globalObject.putDirect(vm, Identifier::fromString(&amp;vm, name), toJS&lt;IDLInterface&lt;InspectorFrontendHost&gt;&gt;(scriptState, globalObject, value));
</ins><span class="cx">     if (UNLIKELY(scope.exception())) {
</span><span class="cx">         reportException(&amp;scriptState, scope.exception());
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsStructuredClonecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/StructuredClone.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/StructuredClone.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/js/StructuredClone.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> #include &quot;StructuredClone.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &lt;runtime/JSTypedArrays.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -3013,6 +3013,9 @@
</span><span class="cx">     push(@implContentHeader, GenerateImplementationContentHeader($interface));
</span><span class="cx"> 
</span><span class="cx">     $implIncludes{&quot;JSDOMBinding.h&quot;} = 1;
</span><ins>+    $implIncludes{&quot;JSDOMBindingCaller.h&quot;} = 1;
+    $implIncludes{&quot;JSDOMExceptionHandling.h&quot;} = 1;
+    $implIncludes{&quot;JSDOMWrapperCache.h&quot;} = 1;
</ins><span class="cx">     $implIncludes{&quot;&lt;wtf/GetPtr.h&gt;&quot;} = 1;
</span><span class="cx">     $implIncludes{&quot;&lt;runtime/PropertyNameArray.h&gt;&quot;} = 1 if $indexedGetterFunction;
</span><span class="cx"> 
</span><span class="lines">@@ -3633,6 +3636,7 @@
</span><span class="cx">             if ($interface-&gt;extendedAttributes-&gt;{CheckSecurity} &amp;&amp;
</span><span class="cx">                 !$attribute-&gt;extendedAttributes-&gt;{DoNotCheckSecurity} &amp;&amp;
</span><span class="cx">                 !$attribute-&gt;extendedAttributes-&gt;{DoNotCheckSecurityOnGetter}) {
</span><ins>+                AddToImplIncludes(&quot;JSDOMBindingSecurity.h&quot;);
</ins><span class="cx">                 if ($interfaceName eq &quot;DOMWindow&quot;) {
</span><span class="cx">                     push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(&amp;state, thisObject.wrapped(), ThrowSecurityError))\n&quot;);
</span><span class="cx">                 } else {
</span><span class="lines">@@ -3803,6 +3807,7 @@
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             if ($interface-&gt;extendedAttributes-&gt;{CheckSecurity} &amp;&amp; !$attribute-&gt;extendedAttributes-&gt;{DoNotCheckSecurity} &amp;&amp; !$attribute-&gt;extendedAttributes-&gt;{DoNotCheckSecurityOnSetter}) {
</span><ins>+                AddToImplIncludes(&quot;JSDOMBindingSecurity.h&quot;);
</ins><span class="cx">                 if ($interfaceName eq &quot;DOMWindow&quot;) {
</span><span class="cx">                     push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(&amp;state, thisObject.wrapped(), ThrowSecurityError))\n&quot;);
</span><span class="cx">                 } else {
</span><span class="lines">@@ -4051,6 +4056,7 @@
</span><span class="cx">                 push(@implContent, &quot;    UNUSED_PARAM(throwScope);\n&quot;);
</span><span class="cx"> 
</span><span class="cx">                 if ($interface-&gt;extendedAttributes-&gt;{CheckSecurity} and !$function-&gt;extendedAttributes-&gt;{DoNotCheckSecurity}) {
</span><ins>+                    AddToImplIncludes(&quot;JSDOMBindingSecurity.h&quot;);
</ins><span class="cx">                     if ($interfaceName eq &quot;DOMWindow&quot;) {
</span><span class="cx">                         push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(state, castedThis-&gt;wrapped(), ThrowSecurityError))\n&quot;);
</span><span class="cx">                     } else {
</span><span class="lines">@@ -4477,6 +4483,7 @@
</span><span class="cx">     }
</span><span class="cx">     if ($codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;CallerDocument&quot;)) {
</span><span class="cx">         $implIncludes{&quot;Document.h&quot;} = 1;
</span><ins>+        $implIncludes{&quot;JSDOMWindowBase.h&quot;} = 1;
</ins><span class="cx">         push(@$outputArray, &quot;    auto* document = callerDOMWindow($statePointer).document();\n&quot;);
</span><span class="cx">         push(@$outputArray, &quot;    if (!document)\n&quot;);
</span><span class="cx">         push(@$outputArray, &quot;        return&quot; . ($returnValue ? &quot; &quot; . $returnValue : &quot;&quot;) . &quot;;\n&quot;);
</span><span class="lines">@@ -4488,9 +4495,21 @@
</span><span class="cx">         $implIncludes{&quot;&lt;inspector/ScriptCallStackFactory.h&gt;&quot;} = 1;
</span><span class="cx">         push(@callWithArgs, &quot;WTFMove(scriptArguments)&quot;);
</span><span class="cx">     }
</span><del>-    push(@callWithArgs, &quot;activeDOMWindow($statePointer)&quot;) if $codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;ActiveWindow&quot;);
-    push(@callWithArgs, &quot;firstDOMWindow($statePointer)&quot;) if $codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;FirstWindow&quot;);
-    push(@callWithArgs, &quot;callerDOMWindow($statePointer)&quot;) if $codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;CallerWindow&quot;);
</del><ins>+    if ($codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;ActiveWindow&quot;)) {
+        $implIncludes{&quot;JSDOMWindowBase.h&quot;} = 1;
+        push(@callWithArgs, &quot;activeDOMWindow($statePointer)&quot;);
+        
+    }
+    if ($codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;FirstWindow&quot;)) {
+        $implIncludes{&quot;JSDOMWindowBase.h&quot;} = 1;
+        push(@callWithArgs, &quot;firstDOMWindow($statePointer)&quot;);
+        
+    }
+    if ($codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;CallerWindow&quot;)) {
+        $implIncludes{&quot;JSDOMWindowBase.h&quot;} = 1;
+        push(@callWithArgs, &quot;callerDOMWindow($statePointer)&quot;);
+        
+    }
</ins><span class="cx"> 
</span><span class="cx">     return @callWithArgs;
</span><span class="cx"> }
</span><span class="lines">@@ -4599,8 +4618,6 @@
</span><span class="cx">         $quotedFunctionName = &quot;nullptr&quot;;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    AddToImplIncludes(&quot;JSDOMBinding.h&quot;, $conditional);
-
</del><span class="cx">     my $argumentIndex = 0;
</span><span class="cx">     foreach my $argument (@{$function-&gt;arguments}) {
</span><span class="cx">         my $type = $argument-&gt;type;
</span><span class="lines">@@ -5064,6 +5081,7 @@
</span><span class="cx"> 
</span><span class="cx">             # FIXME: We currently just report the exception. We should probably add an extended attribute to indicate when
</span><span class="cx">             # we want the exception to be rethrown instead.
</span><ins>+            $includesRef-&gt;{&quot;JSDOMExceptionHandling.h&quot;} = 1;
</ins><span class="cx">             push(@$contentRef, &quot;    if (returnedException)\n&quot;);
</span><span class="cx">             push(@$contentRef, &quot;        reportException(state, returnedException);\n&quot;);
</span><span class="cx">             push(@$contentRef, &quot;    return !returnedException;\n&quot;);
</span><span class="lines">@@ -5612,7 +5630,10 @@
</span><span class="cx">     AddToImplIncludesForIDLType($type, $conditional);
</span><span class="cx">     AddToImplIncludes(&quot;JSDOMConvert.h&quot;, $conditional);
</span><span class="cx"> 
</span><del>-    $value = &quot;BindingSecurity::checkSecurityForNode($stateReference, $value)&quot; if $context-&gt;extendedAttributes-&gt;{CheckSecurityForNode};
</del><ins>+    if ($context-&gt;extendedAttributes-&gt;{CheckSecurityForNode}) {
+        AddToImplIncludes(&quot;JSDOMBindingSecurity.h&quot;, $conditional);
+        $value = &quot;BindingSecurity::checkSecurityForNode($stateReference, $value)&quot;;
+    }
</ins><span class="cx"> 
</span><span class="cx">     my $IDLType = GetIDLType($interface, $type, $context);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,7 +22,10 @@
</span><span class="cx"> #include &quot;JSInterfaceName.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,12 @@
</span><span class="cx"> #include &quot;JSTestActiveDOMObject.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSNode.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -24,8 +24,11 @@
</span><span class="cx"> #include &quot;CustomElementReactionQueue.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSTestCEReactionsStringifier.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -23,8 +23,11 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CustomElementReactionQueue.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallbackFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> #include &quot;JSTestCallbackFunction.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSTestNode.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><span class="cx"> #include &quot;SerializedScriptValue.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallbackFunctionWithTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,6 +22,7 @@
</span><span class="cx"> #include &quot;JSTestCallbackFunctionWithTypedefs.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><span class="cx"> #include &lt;runtime/JSArray.h&gt;
</span><span class="cx"> #include &lt;runtime/JSLock.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallbackInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMStringList.h&quot;
</span><span class="cx"> #include &quot;JSTestNode.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,7 +22,10 @@
</span><span class="cx"> #include &quot;JSTestClassWithJSBuiltinConstructor.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;TestClassWithJSBuiltinConstructorBuiltins.h&quot;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,7 +22,10 @@
</span><span class="cx"> #include &quot;JSTestCustomConstructorWithNoInterfaceObject.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestCustomNamedGetter.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -27,8 +27,11 @@
</span><span class="cx"> #include &quot;DOMJITIDLType.h&quot;
</span><span class="cx"> #include &quot;DOMJITIDLTypeFilter.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSElement.h&quot;
</span><span class="cx"> #include &quot;JSNodeList.h&quot;
</span><span class="cx"> #include &lt;interpreter/FrameTracers.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,7 +22,10 @@
</span><span class="cx"> #include &quot;JSTestEventConstructor.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestEventTarget.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSNode.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/PropertyNameArray.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestException.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,7 +22,10 @@
</span><span class="cx"> #include &quot;JSTestGenerateIsReachable.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestGlobalObject.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;RuntimeEnabledFeatures.h&quot;
</span><span class="cx"> #include &quot;WebCoreJSClientData.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -25,8 +25,11 @@
</span><span class="cx"> #include &quot;JSTestInterface.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSTestObj.h&quot;
</span><span class="cx"> #include &quot;TestSupplemental.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestInterfaceLeadingUnderscore.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestIterable.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMIterator.h&quot;
</span><ins>+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,7 +22,10 @@
</span><span class="cx"> #include &quot;JSTestJSBuiltinConstructor.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;TestJSBuiltinConstructorBuiltins.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestMediaQueryListListener.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSMediaQueryListListener.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestNamedConstructor.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,10 +22,13 @@
</span><span class="cx"> #include &quot;JSTestNode.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMIterator.h&quot;
</span><span class="cx"> #include &quot;JSDOMPromise.h&quot;
</span><ins>+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;RuntimeEnabledFeatures.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/ObjectConstructor.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -27,12 +27,17 @@
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;JSBlob.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMIterator.h&quot;
</span><span class="cx"> #include &quot;JSDOMPromise.h&quot;
</span><span class="cx"> #include &quot;JSDOMStringList.h&quot;
</span><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><ins>+#include &quot;JSDOMWindowBase.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindowShell.h&quot;
</span><ins>+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSDocument.h&quot;
</span><span class="cx"> #include &quot;JSElement.h&quot;
</span><span class="cx"> #include &quot;JSEventListener.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -23,8 +23,11 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSBlob.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestOverloadedConstructorsWithSequence.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;runtime/JSArray.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestOverrideBuiltins.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSNode.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestSerialization.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSTestNode.h&quot;
</span><span class="cx"> #include &lt;runtime/FunctionPrototype.h&gt;
</span><span class="cx"> #include &lt;runtime/ObjectConstructor.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -25,8 +25,11 @@
</span><span class="cx"> #include &quot;JSTestSerializedScriptValueInterface.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSMessagePort.h&quot;
</span><span class="cx"> #include &quot;SerializedScriptValue.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -22,8 +22,11 @@
</span><span class="cx"> #include &quot;JSTestTypedefs.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><ins>+#include &quot;JSDOMBindingCaller.h&quot;
</ins><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><span class="cx"> #include &quot;JSDOMConvert.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
+#include &quot;JSDOMWrapperCache.h&quot;
</ins><span class="cx"> #include &quot;JSSVGPoint.h&quot;
</span><span class="cx"> #include &quot;JSTestCallbackFunction.h&quot;
</span><span class="cx"> #include &quot;JSTestCallbackInterface.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeobjcWebScriptObjectmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/objc/WebScriptObject.mm (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/objc/WebScriptObject.mm        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/bridge/objc/WebScriptObject.mm        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;BridgeJSC.h&quot;
</span><span class="cx"> #import &quot;Frame.h&quot;
</span><ins>+#import &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #import &quot;JSDOMWindow.h&quot;
</span><span class="cx"> #import &quot;JSDOMWindowCustom.h&quot;
</span><span class="cx"> #import &quot;JSHTMLElement.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElementBase.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElementBase.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/html/HTMLFrameElementBase.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #include &quot;FrameView.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;HTMLParserIdioms.h&quot;
</span><del>-#include &quot;JSDOMBinding.h&quot;
</del><ins>+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;RenderWidget.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLVideoElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLVideoElement.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLVideoElement.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/html/HTMLVideoElement.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;ChromeClient.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span><ins>+#include &quot;ExceptionCode.h&quot;
</ins><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;HTMLImageLoader.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/inspector/InspectorController.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -54,6 +54,7 @@
</span><span class="cx"> #include &quot;InspectorTimelineAgent.h&quot;
</span><span class="cx"> #include &quot;InspectorWorkerAgent.h&quot;
</span><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><ins>+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><span class="cx"> #include &quot;JSDOMWindowCustom.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -70,6 +70,7 @@
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><ins>+#include &quot;JSDOMBindingSecurity.h&quot;
</ins><span class="cx"> #include &quot;JSEventListener.h&quot;
</span><span class="cx"> #include &quot;JSNode.h&quot;
</span><span class="cx"> #include &quot;MainFrame.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageScriptDebugServercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageScriptDebugServer.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageScriptDebugServer.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/inspector/PageScriptDebugServer.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;FrameView.h&quot;
</span><span class="cx"> #include &quot;InspectorController.h&quot;
</span><span class="cx"> #include &quot;InspectorFrontendClient.h&quot;
</span><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindowCustom.h&quot;
</span><span class="cx"> #include &quot;MainFrame.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="lines">@@ -45,7 +46,6 @@
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-#include &quot;JSDOMWindowBase.h&quot;
</del><span class="cx"> #include &quot;WebCoreThreadInternal.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerScriptDebugServercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerScriptDebugServer.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerScriptDebugServer.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebCore/inspector/WorkerScriptDebugServer.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;WorkerScriptDebugServer.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;JSDOMBinding.h&quot;
</del><ins>+#include &quot;JSDOMExceptionHandling.h&quot;
</ins><span class="cx"> #include &quot;Timer.h&quot;
</span><span class="cx"> #include &quot;WorkerGlobalScope.h&quot;
</span><span class="cx"> #include &quot;WorkerRunLoop.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebKit2/ChangeLog        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2017-01-30  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        JSDOMBinding is too big. Split it up!
+        https://bugs.webkit.org/show_bug.cgi?id=167601
+
+        Reviewed by Darin Adler.
+
+        * Shared/WebCoreArgumentCoders.cpp:
+        Replace include of JSDOMBinding with JSDOMExceptionHandling.
+
</ins><span class="cx"> 2017-01-30  Andy Estes  &lt;aestes@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [QuickLook] FrameLoaderClient should return the new QuickLookHandleClient it creates
</span></span></pre></div>
<a id="trunkSourceWebKit2Scriptswebkitmessagespy"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Scripts/webkit/messages.py (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Scripts/webkit/messages.py        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebKit2/Scripts/webkit/messages.py        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -348,7 +348,7 @@
</span><span class="cx">     special_cases = {
</span><span class="cx">         'String': ['&lt;wtf/text/WTFString.h&gt;'],
</span><span class="cx">         'WebCore::CompositionUnderline': ['&lt;WebCore/Editor.h&gt;'],
</span><del>-        'WebCore::ExceptionDetails': ['&lt;WebCore/JSDOMBinding.h&gt;'],
</del><ins>+        'WebCore::ExceptionDetails': ['&lt;WebCore/JSDOMExceptionHandling.h&gt;'],
</ins><span class="cx">         'WebCore::FileChooserSettings': ['&lt;WebCore/FileChooser.h&gt;'],
</span><span class="cx">         'WebCore::GrammarDetail': ['&lt;WebCore/TextCheckerClient.h&gt;'],
</span><span class="cx">         'WebCore::HasInsecureContent': ['&lt;WebCore/FrameLoaderTypes.h&gt;'],
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebCoreArgumentCoderscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> #include &lt;WebCore/GraphicsLayer.h&gt;
</span><span class="cx"> #include &lt;WebCore/IDBGetResult.h&gt;
</span><span class="cx"> #include &lt;WebCore/Image.h&gt;
</span><del>-#include &lt;WebCore/JSDOMBinding.h&gt;
</del><ins>+#include &lt;WebCore/JSDOMExceptionHandling.h&gt;
</ins><span class="cx"> #include &lt;WebCore/Length.h&gt;
</span><span class="cx"> #include &lt;WebCore/Path.h&gt;
</span><span class="cx"> #include &lt;WebCore/PluginData.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -118,6 +118,7 @@
</span><span class="cx"> #include &lt;WebCore/FloatRect.h&gt;
</span><span class="cx"> #include &lt;WebCore/FocusDirection.h&gt;
</span><span class="cx"> #include &lt;WebCore/JSDOMBinding.h&gt;
</span><ins>+#include &lt;WebCore/JSDOMExceptionHandling.h&gt;
</ins><span class="cx"> #include &lt;WebCore/MIMETypeRegistry.h&gt;
</span><span class="cx"> #include &lt;WebCore/RenderEmbeddedObject.h&gt;
</span><span class="cx"> #include &lt;WebCore/SerializedCryptoKeyWrap.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx"> #include &lt;WebCore/GeolocationClient.h&gt;
</span><span class="cx"> #include &lt;WebCore/GeolocationController.h&gt;
</span><span class="cx"> #include &lt;WebCore/GeolocationPosition.h&gt;
</span><ins>+#include &lt;WebCore/JSDOMExceptionHandling.h&gt;
</ins><span class="cx"> #include &lt;WebCore/JSDOMWindow.h&gt;
</span><span class="cx"> #include &lt;WebCore/JSNotification.h&gt;
</span><span class="cx"> #include &lt;WebCore/MainFrame.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (211402 => 211403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2017-01-31 03:06:05 UTC (rev 211402)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2017-01-31 03:37:34 UTC (rev 211403)
</span><span class="lines">@@ -145,6 +145,7 @@
</span><span class="cx"> #include &lt;WebCore/HistoryItem.h&gt;
</span><span class="cx"> #include &lt;WebCore/HitTestResult.h&gt;
</span><span class="cx"> #include &lt;WebCore/InspectorController.h&gt;
</span><ins>+#include &lt;WebCore/JSDOMExceptionHandling.h&gt;
</ins><span class="cx"> #include &lt;WebCore/JSDOMWindow.h&gt;
</span><span class="cx"> #include &lt;WebCore/KeyboardEvent.h&gt;
</span><span class="cx"> #include &lt;WebCore/LibWebRTCProvider.h&gt;
</span></span></pre>
</div>
</div>

</body>
</html>