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

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

<h3>Log Message</h3>
<pre>Reduce special handling of XPathNSResolver type in the bindings
https://bugs.webkit.org/show_bug.cgi?id=157454

Reviewed by Darin Adler.

Reduce special handling of XPathNSResolver type in the bindings.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
Add new JSXPathNSResolverCustom.cpp file.

* bindings/js/JSDOMStringListCustom.cpp:
(WebCore::JSDOMStringList::toWrapped):
Take the ExecState by reference instead of pointer.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::toWrapped):
Update to take an ExecState&amp; parameter. The bindings now pass
an ExecState to all custom toWrapped() methods for consistency
and flexibility.

* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::convertValue):
Pass an ExecState now that those toWrapped() methods expect
it.

* bindings/js/JSEventTargetCustom.cpp:
(WebCore::JSEventTarget::toWrapped):
Update to take an ExecState&amp; parameter.

* bindings/js/JSIDBDatabaseCustom.cpp:
(WebCore::JSIDBDatabase::transaction):
Pass ExecState by reference instead of pointer.

* bindings/js/JSMessageEventCustom.cpp:
(WebCore::handleInitMessageEvent):
Pass ExecState to JSDOMWindow::toWrapped().

* bindings/js/JSXPathNSResolverCustom.cpp: Added.
(WebCore::JSXPathNSResolver::toWrapped):
Provide a custom implementation of JSXPathNSResolver::toWrapped()
instead of having the custom code in the bindings generator.

* bindings/scripts/CodeGeneratorJS.pm:
(AddIncludesForType):
Drop special includes for XPathNSResolver as they are no longer needed.

(GenerateHeader):
Drop special casing of certain types for generating the toWrapped()
declaration by:
1. Relying on GetNativeType() for the return value as certain types
   return a RefPtr instead of a raw pointer.
2. Adding an extra ExecState parameter when a custom implementation of
   toWrapped() is provided, given that some of them need it.

(GenerateParametersCheck):
Drop custom code for XPathNSResolver and use the normal code path for
this type now. The custom code now resides in the custom implementation
of JSXPathNSResolver::toWrapped(), in custom bindings.

(JSValueToNative):
- Drop NodeFilter from the nativeType hash map as it was updated to
  be a callback interface a while back.
- Add XPathNSResolver to nativeType hash map so that we now to use
  a RefPtr&lt;&gt; instead of a raw pointer in the bindings. We should
  probably add an IDL extended attribute for this at some point.
- Drop special casing for DOMStringList which was outdated since there
  is no toDOMStringList() function. DOMStringList has a custom
  toWrapped() function instead nowadays so we now call this one
  instead. We apparently do not have any DOMStringList parameters
  outside our bindings tests at the moment, which is why no one
  noticed.
- Pass an ExecState to toWrapped() if the interface has the
  JSCustomToNativeObject IDL extended attribute.

* bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
* bindings/scripts/test/GObject/WebKitDOMTestObj.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/ObjC/DOMTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.mm:
* bindings/scripts/test/TestObj.idl:
Add bindings test coverage for having an operation with an
XPathNSResolver parameter.

* dom/Document.idl:
* xml/XPathEvaluator.idl:
Drop some unnecessary default parameter values.

* xml/XPathNSResolver.idl:
Add JSCustomToNativeObject IDL extended attribute so that we can
provide our own custom implementation of JSXPathNSResolver::toWrapped(),
instead of having the custom code in the bindings generator.

* dom/Document.cpp:
(WebCore::Document::createExpression):
(WebCore::Document::evaluate):
* dom/Document.h:
* inspector/InspectorNodeFinder.cpp:
* xml/XPathEvaluator.cpp:
(WebCore::XPathEvaluator::createExpression):
(WebCore::XPathEvaluator::evaluate):
* xml/XPathEvaluator.h:
* xml/XPathExpression.cpp:
(WebCore::XPathExpression::createExpression):
* xml/XPathExpression.h:
* xml/XPathParser.cpp:
(WebCore::XPath::Parser::Parser):
(WebCore::XPath::Parser::parseStatement):
* xml/XPathParser.h:
Take XPathNSResolver parameter as a Ref&lt;XPathNSResolver&gt;&amp;&amp; as this is
what the generated bindings now provide us, given that this sometimes
have to create a wrapper around a JSObject.</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="#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="#trunkSourceWebCorebindingsjsJSDOMStringListCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMStringListCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDictionarycpp">trunk/Source/WebCore/bindings/js/JSDictionary.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventTargetCustomcpp">trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSIDBDatabaseCustomcpp">trunk/Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMessageEventCustomcpp">trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestObjidl">trunk/Source/WebCore/bindings/scripts/test/TestObj.idl</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumenth">trunk/Source/WebCore/dom/Document.h</a></li>
<li><a href="#trunkSourceWebCoredomDocumentidl">trunk/Source/WebCore/dom/Document.idl</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorNodeFindercpp">trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathEvaluatorcpp">trunk/Source/WebCore/xml/XPathEvaluator.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathEvaluatorh">trunk/Source/WebCore/xml/XPathEvaluator.h</a></li>
<li><a href="#trunkSourceWebCorexmlXPathEvaluatoridl">trunk/Source/WebCore/xml/XPathEvaluator.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXPathExpressioncpp">trunk/Source/WebCore/xml/XPathExpression.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathExpressionh">trunk/Source/WebCore/xml/XPathExpression.h</a></li>
<li><a href="#trunkSourceWebCorexmlXPathNSResolveridl">trunk/Source/WebCore/xml/XPathNSResolver.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXPathParsercpp">trunk/Source/WebCore/xml/XPathParser.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathParserh">trunk/Source/WebCore/xml/XPathParser.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorebindingsjsJSXPathNSResolverCustomcpp">trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -1224,6 +1224,7 @@
</span><span class="cx">     bindings/js/JSWorkerGlobalScopeBase.cpp
</span><span class="cx">     bindings/js/JSWorkerGlobalScopeCustom.cpp
</span><span class="cx">     bindings/js/JSXMLHttpRequestCustom.cpp
</span><ins>+    bindings/js/JSXPathNSResolverCustom.cpp
</ins><span class="cx">     bindings/js/JSXPathResultCustom.cpp
</span><span class="cx">     bindings/js/JSXSLTProcessorCustom.cpp
</span><span class="cx">     bindings/js/ReadableStreamController.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/ChangeLog        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -1,3 +1,119 @@
</span><ins>+2016-05-07  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Reduce special handling of XPathNSResolver type in the bindings
+        https://bugs.webkit.org/show_bug.cgi?id=157454
+
+        Reviewed by Darin Adler.
+
+        Reduce special handling of XPathNSResolver type in the bindings.
+
+        * CMakeLists.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSBindingsAllInOne.cpp:
+        Add new JSXPathNSResolverCustom.cpp file.
+
+        * bindings/js/JSDOMStringListCustom.cpp:
+        (WebCore::JSDOMStringList::toWrapped):
+        Take the ExecState by reference instead of pointer.
+
+        * bindings/js/JSDOMWindowCustom.cpp:
+        (WebCore::JSDOMWindow::toWrapped):
+        Update to take an ExecState&amp; parameter. The bindings now pass
+        an ExecState to all custom toWrapped() methods for consistency
+        and flexibility.
+
+        * bindings/js/JSDictionary.cpp:
+        (WebCore::JSDictionary::convertValue):
+        Pass an ExecState now that those toWrapped() methods expect
+        it.
+
+        * bindings/js/JSEventTargetCustom.cpp:
+        (WebCore::JSEventTarget::toWrapped):
+        Update to take an ExecState&amp; parameter.
+
+        * bindings/js/JSIDBDatabaseCustom.cpp:
+        (WebCore::JSIDBDatabase::transaction):
+        Pass ExecState by reference instead of pointer.
+
+        * bindings/js/JSMessageEventCustom.cpp:
+        (WebCore::handleInitMessageEvent):
+        Pass ExecState to JSDOMWindow::toWrapped().
+
+        * bindings/js/JSXPathNSResolverCustom.cpp: Added.
+        (WebCore::JSXPathNSResolver::toWrapped):
+        Provide a custom implementation of JSXPathNSResolver::toWrapped()
+        instead of having the custom code in the bindings generator.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (AddIncludesForType):
+        Drop special includes for XPathNSResolver as they are no longer needed.
+
+        (GenerateHeader):
+        Drop special casing of certain types for generating the toWrapped()
+        declaration by:
+        1. Relying on GetNativeType() for the return value as certain types
+           return a RefPtr instead of a raw pointer.
+        2. Adding an extra ExecState parameter when a custom implementation of
+           toWrapped() is provided, given that some of them need it.
+
+        (GenerateParametersCheck):
+        Drop custom code for XPathNSResolver and use the normal code path for
+        this type now. The custom code now resides in the custom implementation
+        of JSXPathNSResolver::toWrapped(), in custom bindings.
+
+        (JSValueToNative):
+        - Drop NodeFilter from the nativeType hash map as it was updated to
+          be a callback interface a while back.
+        - Add XPathNSResolver to nativeType hash map so that we now to use
+          a RefPtr&lt;&gt; instead of a raw pointer in the bindings. We should
+          probably add an IDL extended attribute for this at some point.
+        - Drop special casing for DOMStringList which was outdated since there
+          is no toDOMStringList() function. DOMStringList has a custom
+          toWrapped() function instead nowadays so we now call this one
+          instead. We apparently do not have any DOMStringList parameters
+          outside our bindings tests at the moment, which is why no one
+          noticed.
+        - Pass an ExecState to toWrapped() if the interface has the
+          JSCustomToNativeObject IDL extended attribute.
+
+        * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
+        * bindings/scripts/test/GObject/WebKitDOMTestObj.h:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        * bindings/scripts/test/ObjC/DOMTestObj.h:
+        * bindings/scripts/test/ObjC/DOMTestObj.mm:
+        * bindings/scripts/test/TestObj.idl:
+        Add bindings test coverage for having an operation with an
+        XPathNSResolver parameter.
+
+        * dom/Document.idl:
+        * xml/XPathEvaluator.idl:
+        Drop some unnecessary default parameter values.
+
+        * xml/XPathNSResolver.idl:
+        Add JSCustomToNativeObject IDL extended attribute so that we can
+        provide our own custom implementation of JSXPathNSResolver::toWrapped(),
+        instead of having the custom code in the bindings generator.
+
+        * dom/Document.cpp:
+        (WebCore::Document::createExpression):
+        (WebCore::Document::evaluate):
+        * dom/Document.h:
+        * inspector/InspectorNodeFinder.cpp:
+        * xml/XPathEvaluator.cpp:
+        (WebCore::XPathEvaluator::createExpression):
+        (WebCore::XPathEvaluator::evaluate):
+        * xml/XPathEvaluator.h:
+        * xml/XPathExpression.cpp:
+        (WebCore::XPathExpression::createExpression):
+        * xml/XPathExpression.h:
+        * xml/XPathParser.cpp:
+        (WebCore::XPath::Parser::Parser):
+        (WebCore::XPath::Parser::parseStatement):
+        * xml/XPathParser.h:
+        Take XPathNSResolver parameter as a Ref&lt;XPathNSResolver&gt;&amp;&amp; as this is
+        what the generated bindings now provide us, given that this sometimes
+        have to create a wrapper around a JSObject.
+
</ins><span class="cx"> 2016-05-07  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix crash introduced by the last patch.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -2873,6 +2873,7 @@
</span><span class="cx">                 8367587F1C56E99B008A1087 /* JSHTMLDataElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 834B86A81C56E93E00F3F0E3 /* JSHTMLDataElement.h */; };
</span><span class="cx">                 836BAD211BD1CA670037356A /* HTMLTableHeaderCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 836BAD1F1BD1CA670037356A /* HTMLTableHeaderCellElement.h */; };
</span><span class="cx">                 836BAD221BD1CA670037356A /* HTMLTableDataCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 836BAD201BD1CA670037356A /* HTMLTableDataCellElement.h */; };
</span><ins>+                836C14431CDEAFD80073493F /* JSXPathNSResolverCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 836C14421CDEAFCA0073493F /* JSXPathNSResolverCustom.cpp */; };
</ins><span class="cx">                 836CB1F61BD1E41800AF1591 /* JSHTMLTableHeaderCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 836CB1F21BD1E41800AF1591 /* JSHTMLTableHeaderCellElement.h */; };
</span><span class="cx">                 836CB1F71BD1E41800AF1591 /* JSHTMLTableHeaderCellElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 836CB1F31BD1E41800AF1591 /* JSHTMLTableHeaderCellElement.cpp */; };
</span><span class="cx">                 836CB1F81BD1E41800AF1591 /* JSHTMLTableDataCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 836CB1F41BD1E41800AF1591 /* JSHTMLTableDataCellElement.h */; };
</span><span class="lines">@@ -10545,6 +10546,7 @@
</span><span class="cx">                 8369E58F1AFDD0300087DF68 /* NonDocumentTypeChildNode.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = NonDocumentTypeChildNode.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 836BAD1F1BD1CA670037356A /* HTMLTableHeaderCellElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTableHeaderCellElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 836BAD201BD1CA670037356A /* HTMLTableDataCellElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTableDataCellElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                836C14421CDEAFCA0073493F /* JSXPathNSResolverCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXPathNSResolverCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 836CB1F21BD1E41800AF1591 /* JSHTMLTableHeaderCellElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLTableHeaderCellElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 836CB1F31BD1E41800AF1591 /* JSHTMLTableHeaderCellElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLTableHeaderCellElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 836CB1F41BD1E41800AF1591 /* JSHTMLTableDataCellElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLTableDataCellElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -22342,6 +22344,7 @@
</span><span class="cx">                                 418C395D1C8F0AAB0051C8A3 /* JSReadableStreamSourceCustom.cpp */,
</span><span class="cx">                                 E1C36D320EB0A094007410BC /* JSWorkerGlobalScopeBase.cpp */,
</span><span class="cx">                                 E1C36D330EB0A094007410BC /* JSWorkerGlobalScopeBase.h */,
</span><ins>+                                836C14421CDEAFCA0073493F /* JSXPathNSResolverCustom.cpp */,
</ins><span class="cx">                                 418C395E1C8F0AAB0051C8A3 /* ReadableStreamController.cpp */,
</span><span class="cx">                                 418C395F1C8F0AAB0051C8A3 /* ReadableStreamController.h */,
</span><span class="cx">                                 BCA378BA0D15F64200B793D6 /* ScheduledAction.cpp */,
</span><span class="lines">@@ -30094,6 +30097,7 @@
</span><span class="cx">                                 DB23C2CB0A508D29002489EB /* IndentOutdentCommand.cpp in Sources */,
</span><span class="cx">                                 517138EF1BED1D1A000D5F01 /* IndexKey.cpp in Sources */,
</span><span class="cx">                                 51EEAA731BEFFAB100218008 /* IndexValueEntry.cpp in Sources */,
</span><ins>+                                836C14431CDEAFD80073493F /* JSXPathNSResolverCustom.cpp in Sources */,
</ins><span class="cx">                                 517138F71BF128BB000D5F01 /* IndexValueStore.cpp in Sources */,
</span><span class="cx">                                 A8CFF5E60A155A05000A4234 /* InlineBox.cpp in Sources */,
</span><span class="cx">                                 B57CB52D182A3EED0079A647 /* InlineElementBox.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSBindingsAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -138,6 +138,7 @@
</span><span class="cx"> #include &quot;JSWorkerGlobalScopeBase.cpp&quot;
</span><span class="cx"> #include &quot;JSWorkerGlobalScopeCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSXMLHttpRequestCustom.cpp&quot;
</span><ins>+#include &quot;JSXPathNSResolverCustom.cpp&quot;
</ins><span class="cx"> #include &quot;JSXPathResultCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSXSLTProcessorCustom.cpp&quot;
</span><span class="cx"> #include &quot;ScheduledAction.cpp&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMStringListCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMStringListCustom.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMStringListCustom.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/js/JSDOMStringListCustom.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-RefPtr&lt;DOMStringList&gt; JSDOMStringList::toWrapped(ExecState* exec, JSValue value)
</del><ins>+RefPtr&lt;DOMStringList&gt; JSDOMStringList::toWrapped(ExecState&amp; state, JSValue value)
</ins><span class="cx"> {
</span><span class="cx">     if (value.inherits(JSDOMStringList::info()))
</span><span class="cx">         return &amp;jsCast&lt;JSDOMStringList*&gt;(asObject(value))-&gt;wrapped();
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">     JSArray* array = asArray(value);
</span><span class="cx">     RefPtr&lt;DOMStringList&gt; stringList = DOMStringList::create();
</span><span class="cx">     for (unsigned i = 0; i &lt; array-&gt;length(); ++i)
</span><del>-        stringList-&gt;append(array-&gt;getIndex(exec, i).toString(exec)-&gt;value(exec));
</del><ins>+        stringList-&gt;append(array-&gt;getIndex(&amp;state, i).toString(&amp;state)-&gt;value(&amp;state));
</ins><span class="cx"> 
</span><span class="cx">     return stringList;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -612,16 +612,16 @@
</span><span class="cx">     return jsNumber(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-DOMWindow* JSDOMWindow::toWrapped(JSValue value)
</del><ins>+DOMWindow* JSDOMWindow::toWrapped(ExecState&amp;, JSValue value)
</ins><span class="cx"> {
</span><span class="cx">     if (!value.isObject())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     JSObject* object = asObject(value);
</span><span class="cx">     if (object-&gt;inherits(JSDOMWindow::info()))
</span><span class="cx">         return &amp;jsCast&lt;JSDOMWindow*&gt;(object)-&gt;wrapped();
</span><span class="cx">     if (object-&gt;inherits(JSDOMWindowShell::info()))
</span><span class="cx">         return &amp;jsCast&lt;JSDOMWindowShell*&gt;(object)-&gt;wrapped();
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDictionary.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -173,14 +173,14 @@
</span><span class="cx">     result = SerializedScriptValue::create(exec, value, 0, 0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSDictionary::convertValue(ExecState*, JSValue value, RefPtr&lt;DOMWindow&gt;&amp; result)
</del><ins>+void JSDictionary::convertValue(ExecState* state, JSValue value, RefPtr&lt;DOMWindow&gt;&amp; result)
</ins><span class="cx"> {
</span><del>-    result = JSDOMWindow::toWrapped(value);
</del><ins>+    result = JSDOMWindow::toWrapped(*state, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSDictionary::convertValue(ExecState*, JSValue value, RefPtr&lt;EventTarget&gt;&amp; result)
</del><ins>+void JSDictionary::convertValue(ExecState* state, JSValue value, RefPtr&lt;EventTarget&gt;&amp; result)
</ins><span class="cx"> {
</span><del>-    result = JSEventTarget::toWrapped(value);
</del><ins>+    result = JSEventTarget::toWrapped(*state, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSDictionary::convertValue(ExecState*, JSValue value, RefPtr&lt;Node&gt;&amp; result)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventTargetCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">     if (value.inherits(JS##interfaceName::info()))                      \
</span><span class="cx">         return &amp;jsCast&lt;JS##interfaceName*&gt;(asObject(value))-&gt;wrapped();
</span><span class="cx"> 
</span><del>-EventTarget* JSEventTarget::toWrapped(JSC::JSValue value)
</del><ins>+EventTarget* JSEventTarget::toWrapped(ExecState&amp;, JSValue value)
</ins><span class="cx"> {
</span><span class="cx">     TRY_TO_UNWRAP_WITH_INTERFACE(DOMWindowShell)
</span><span class="cx">     TRY_TO_UNWRAP_WITH_INTERFACE(DOMWindow)
</span><span class="lines">@@ -74,9 +74,9 @@
</span><span class="cx"> 
</span><span class="cx"> #undef TRY_TO_UNWRAP_WITH_INTERFACE
</span><span class="cx"> 
</span><del>-std::unique_ptr&lt;JSEventTargetWrapper&gt; jsEventTargetCast(JSC::JSValue thisValue)
</del><ins>+std::unique_ptr&lt;JSEventTargetWrapper&gt; jsEventTargetCast(JSValue thisValue)
</ins><span class="cx"> {
</span><del>-    if (auto* target = JSC::jsDynamicCast&lt;JSEventTarget*&gt;(thisValue))
</del><ins>+    if (auto* target = jsDynamicCast&lt;JSEventTarget*&gt;(thisValue))
</ins><span class="cx">         return std::make_unique&lt;JSEventTargetWrapper&gt;(target-&gt;wrapped(), *target);
</span><span class="cx">     if (auto* window = toJSDOMWindow(thisValue))
</span><span class="cx">         return std::make_unique&lt;JSEventTargetWrapper&gt;(window-&gt;wrapped(), *window);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSIDBDatabaseCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;String&gt; scope;
</span><span class="cx">     JSValue scopeArg(exec.argument(0));
</span><del>-    auto domStringList = JSDOMStringList::toWrapped(&amp;exec, scopeArg);
</del><ins>+    auto domStringList = JSDOMStringList::toWrapped(exec, scopeArg);
</ins><span class="cx">     if (exec.hadException())
</span><span class="cx">         return jsUndefined();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMessageEventCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">     bool cancelableArg = state.argument(2).toBoolean(&amp;state);
</span><span class="cx">     const String originArg = state.argument(4).toString(&amp;state)-&gt;value(&amp;state);
</span><span class="cx">     const String lastEventIdArg = state.argument(5).toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    DOMWindow* sourceArg = JSDOMWindow::toWrapped(state.argument(6));
</del><ins>+    DOMWindow* sourceArg = JSDOMWindow::toWrapped(state, state.argument(6));
</ins><span class="cx">     std::unique_ptr&lt;MessagePortArray&gt; messagePorts;
</span><span class="cx">     std::unique_ptr&lt;ArrayBufferArray&gt; arrayBuffers;
</span><span class="cx">     if (!state.argument(7).isUndefinedOrNull()) {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSXPathNSResolverCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp (0 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;JSXPathNSResolver.h&quot;
+
+#include &quot;JSCustomXPathNSResolver.h&quot;
+
+using namespace JSC;
+
+namespace WebCore {
+
+RefPtr&lt;XPathNSResolver&gt; JSXPathNSResolver::toWrapped(ExecState&amp; state, JSValue value)
+{
+    if (value.inherits(JSXPathNSResolver::info()))
+        return &amp;jsCast&lt;JSXPathNSResolver*&gt;(asObject(value))-&gt;wrapped();
+
+    return JSCustomXPathNSResolver::create(&amp;state, value);
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -220,10 +220,7 @@
</span><span class="cx">     return if $codeGenerator-&gt;SkipIncludeHeader($type);
</span><span class="cx">     
</span><span class="cx">     # When we're finished with the one-file-per-class reorganization, we won't need these special cases.
</span><del>-    if ($type eq &quot;XPathNSResolver&quot;) {
-        $includesRef-&gt;{&quot;JSXPathNSResolver.h&quot;} = 1;
-        $includesRef-&gt;{&quot;JSCustomXPathNSResolver.h&quot;} = 1;
-    } elsif ($isCallback &amp;&amp; $codeGenerator-&gt;IsWrapperType($type)) {
</del><ins>+    if ($isCallback &amp;&amp; $codeGenerator-&gt;IsWrapperType($type)) {
</ins><span class="cx">         $includesRef-&gt;{&quot;JS${type}.h&quot;} = 1;
</span><span class="cx">     } elsif ($codeGenerator-&gt;GetArrayOrSequenceType($type)) {
</span><span class="cx">         my $arrayType = $codeGenerator-&gt;GetArrayType($type);
</span><span class="lines">@@ -1115,12 +1112,11 @@
</span><span class="cx"> 
</span><span class="cx">     # JSValue to implementation type
</span><span class="cx">     if (ShouldGenerateToWrapped($hasParent, $interface)) {
</span><del>-        if ($interfaceName eq &quot;NodeFilter&quot;) {
-            push(@headerContent, &quot;    static RefPtr&lt;NodeFilter&gt; toWrapped(JSC::VM&amp;, JSC::JSValue);\n&quot;);
-        } elsif ($interfaceName eq &quot;DOMStringList&quot;) {
-            push(@headerContent, &quot;    static RefPtr&lt;DOMStringList&gt; toWrapped(JSC::ExecState*, JSC::JSValue);\n&quot;);
</del><ins>+        my $nativeType = GetNativeType($interface, $implType);
+        if ($interface-&gt;extendedAttributes-&gt;{&quot;JSCustomToNativeObject&quot;}) {
+            push(@headerContent, &quot;    static $nativeType toWrapped(JSC::ExecState&amp;, JSC::JSValue);\n&quot;);
</ins><span class="cx">         } else {
</span><del>-            push(@headerContent, &quot;    static $implType* toWrapped(JSC::JSValue);\n&quot;);
</del><ins>+            push(@headerContent, &quot;    static $nativeType toWrapped(JSC::JSValue);\n&quot;);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3623,16 +3619,7 @@
</span><span class="cx">         my $name = $parameter-&gt;name;
</span><span class="cx">         my $value = $name;
</span><span class="cx"> 
</span><del>-        if ($argType eq &quot;XPathNSResolver&quot;) {
-            push(@$outputArray, &quot;    RefPtr&lt;XPathNSResolver&gt; customResolver;\n&quot;);
-            push(@$outputArray, &quot;    XPathNSResolver* resolver = JSXPathNSResolver::toWrapped(state-&gt;argument($argsIndex));\n&quot;);
-            push(@$outputArray, &quot;    if (!resolver) {\n&quot;);
-            push(@$outputArray, &quot;        customResolver = JSCustomXPathNSResolver::create(state, state-&gt;argument($argsIndex));\n&quot;);
-            push(@$outputArray, &quot;        if (UNLIKELY(state-&gt;hadException()))\n&quot;);
-            push(@$outputArray, &quot;            return JSValue::encode(jsUndefined());\n&quot;);
-            push(@$outputArray, &quot;        resolver = customResolver.get();\n&quot;);
-            push(@$outputArray, &quot;    }\n&quot;);
-        } elsif ($codeGenerator-&gt;IsCallbackInterface($argType)) {
</del><ins>+        if ($codeGenerator-&gt;IsCallbackInterface($argType)) {
</ins><span class="cx">             my $callbackClassName = GetCallbackClassName($argType);
</span><span class="cx">             $implIncludes{&quot;$callbackClassName.h&quot;} = 1;
</span><span class="cx">             if ($parameter-&gt;isOptional) {
</span><span class="lines">@@ -4242,8 +4229,8 @@
</span><span class="cx">     &quot;DOMTimeStamp&quot; =&gt; &quot;DOMTimeStamp&quot;,
</span><span class="cx">     &quot;Date&quot; =&gt; &quot;double&quot;,
</span><span class="cx">     &quot;Dictionary&quot; =&gt; &quot;Dictionary&quot;,
</span><del>-    &quot;NodeFilter&quot; =&gt; &quot;RefPtr&lt;NodeFilter&gt;&quot;,
</del><span class="cx">     &quot;SerializedScriptValue&quot; =&gt; &quot;RefPtr&lt;SerializedScriptValue&gt;&quot;,
</span><ins>+    &quot;XPathNSResolver&quot; =&gt; &quot;RefPtr&lt;XPathNSResolver&gt;&quot;,
</ins><span class="cx">     &quot;any&quot; =&gt; &quot;JSC::JSValue&quot;,
</span><span class="cx">     &quot;boolean&quot; =&gt; &quot;bool&quot;,
</span><span class="cx">     &quot;byte&quot; =&gt; &quot;int8_t&quot;,
</span><span class="lines">@@ -4433,9 +4420,8 @@
</span><span class="cx"> 
</span><span class="cx">     AddToImplIncludes(&quot;JS$type.h&quot;, $conditional);
</span><span class="cx"> 
</span><del>-    return (&quot;toDOMStringList(state, $value)&quot;, 1) if $type eq &quot;DOMStringList&quot;;
-    return (&quot;JSNodeFilter::toWrapped(state-&gt;vm(), $value)&quot;, 1) if $type eq &quot;NodeFilter&quot;;
-
</del><ins>+    my $extendedAttributes = $codeGenerator-&gt;getInterfaceExtendedAttributesFromName($type);
+    return (&quot;JS${type}::toWrapped(*state, $value)&quot;, 1) if $extendedAttributes-&gt;{&quot;JSCustomToNativeObject&quot;};
</ins><span class="cx">     return (&quot;JS${type}::toWrapped($value)&quot;, 0);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> #include &quot;WebKitDOMTestEnumTypePrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMTestNodePrivate.h&quot;
</span><span class="cx"> #include &quot;WebKitDOMTestObjPrivate.h&quot;
</span><ins>+#include &quot;WebKitDOMXPathNSResolverPrivate.h&quot;
</ins><span class="cx"> #include &quot;gobject/ConvertToUTF8String.h&quot;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -1374,6 +1375,16 @@
</span><span class="cx">     item-&gt;methodWithArgTreatingNullAsEmptyString(convertedArg);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void webkit_dom_test_obj_method_with_xpath_ns_resolver_parameter(WebKitDOMTestObj* self, WebKitDOMXPathNSResolver* resolver)
+{
+    WebCore::JSMainThreadNullState state;
+    g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self));
+    g_return_if_fail(WEBKIT_DOM_IS_XPATH_NS_RESOLVER(resolver));
+    WebCore::TestObj* item = WebKit::core(self);
+    RefPtr&lt;WebCore::XPathNSResolver&gt; convertedResolver = WebKit::core(resolver);
+    item-&gt;methodWithXPathNSResolverParameter(WTF::getPtr(*convertedResolver));
+}
+
</ins><span class="cx"> gchar* webkit_dom_test_obj_nullable_string_method(WebKitDOMTestObj* self)
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="lines">@@ -1804,6 +1815,16 @@
</span><span class="cx">     item-&gt;methodWithOptionalNullableWrapperIsNull(convertedObj);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void webkit_dom_test_obj_method_with_optional_xpath_ns_resolver(WebKitDOMTestObj* self, WebKitDOMXPathNSResolver* resolver)
+{
+    WebCore::JSMainThreadNullState state;
+    g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self));
+    g_return_if_fail(WEBKIT_DOM_IS_XPATH_NS_RESOLVER(resolver));
+    WebCore::TestObj* item = WebKit::core(self);
+    RefPtr&lt;WebCore::XPathNSResolver&gt; convertedResolver = WebKit::core(resolver);
+    item-&gt;methodWithOptionalXPathNSResolver(WTF::getPtr(convertedResolver));
+}
+
</ins><span class="cx"> gchar* webkit_dom_test_obj_conditional_method1(WebKitDOMTestObj* self)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(Condition1)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -277,6 +277,16 @@
</span><span class="cx"> webkit_dom_test_obj_method_with_arg_treating_null_as_empty_string(WebKitDOMTestObj* self, const gchar* arg);
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * webkit_dom_test_obj_method_with_xpath_ns_resolver_parameter:
+ * @self: A #WebKitDOMTestObj
+ * @resolver: A #WebKitDOMXPathNSResolver
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API void
+webkit_dom_test_obj_method_with_xpath_ns_resolver_parameter(WebKitDOMTestObj* self, WebKitDOMXPathNSResolver* resolver);
+
+/**
</ins><span class="cx">  * webkit_dom_test_obj_nullable_string_method:
</span><span class="cx">  * @self: A #WebKitDOMTestObj
</span><span class="cx">  *
</span><span class="lines">@@ -729,6 +739,16 @@
</span><span class="cx"> webkit_dom_test_obj_method_with_optional_nullable_wrapper_is_null(WebKitDOMTestObj* self, WebKitDOMTestObj* obj);
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * webkit_dom_test_obj_method_with_optional_xpath_ns_resolver:
+ * @self: A #WebKitDOMTestObj
+ * @resolver: A #WebKitDOMXPathNSResolver
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API void
+webkit_dom_test_obj_method_with_optional_xpath_ns_resolver(WebKitDOMTestObj* self, WebKitDOMXPathNSResolver* resolver);
+
+/**
</ins><span class="cx">  * webkit_dom_test_obj_conditional_method1:
</span><span class="cx">  * @self: A #WebKitDOMTestObj
</span><span class="cx">  *
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> #include &quot;JSTestNode.h&quot;
</span><span class="cx"> #include &quot;JSTestObj.h&quot;
</span><span class="cx"> #include &quot;JSTestSubObj.h&quot;
</span><ins>+#include &quot;JSXPathNSResolver.h&quot;
</ins><span class="cx"> #include &quot;LifecycleCallbackQueue.h&quot;
</span><span class="cx"> #include &quot;RuntimeEnabledFeatures.h&quot;
</span><span class="cx"> #include &quot;SVGDocument.h&quot;
</span><span class="lines">@@ -527,6 +528,7 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjInstanceFunctionUnforgeableMethod(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString(JSC::ExecState*);
</span><ins>+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameter(JSC::ExecState*);
</ins><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringMethod(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionNullableStringStaticMethod(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringSpecialMethod(JSC::ExecState*);
</span><span class="lines">@@ -581,6 +583,7 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalAny(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapper(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNull(JSC::ExecState*);
</span><ins>+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolver(JSC::ExecState*);
</ins><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(JSC::ExecState*);
</span><span class="lines">@@ -1096,6 +1099,7 @@
</span><span class="cx">     { &quot;objMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionObjMethod), (intptr_t) (0) } },
</span><span class="cx">     { &quot;objMethodWithArgs&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionObjMethodWithArgs), (intptr_t) (3) } },
</span><span class="cx">     { &quot;methodWithArgTreatingNullAsEmptyString&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString), (intptr_t) (1) } },
</span><ins>+    { &quot;methodWithXPathNSResolverParameter&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameter), (intptr_t) (1) } },
</ins><span class="cx">     { &quot;nullableStringMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionNullableStringMethod), (intptr_t) (0) } },
</span><span class="cx">     { &quot;nullableStringSpecialMethod&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionNullableStringSpecialMethod), (intptr_t) (1) } },
</span><span class="cx">     { &quot;methodWithSequenceArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithSequenceArg), (intptr_t) (1) } },
</span><span class="lines">@@ -1158,6 +1162,7 @@
</span><span class="cx">     { &quot;methodWithOptionalAny&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalAny), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalNullableWrapper&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapper), (intptr_t) (0) } },
</span><span class="cx">     { &quot;methodWithOptionalNullableWrapperIsNull&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNull), (intptr_t) (0) } },
</span><ins>+    { &quot;methodWithOptionalXPathNSResolver&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolver), (intptr_t) (0) } },
</ins><span class="cx">     { &quot;methodWithCallbackArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithCallbackArg), (intptr_t) (1) } },
</span><span class="cx">     { &quot;methodWithNonCallbackArgAndCallbackArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg), (intptr_t) (2) } },
</span><span class="cx">     { &quot;methodWithCallbackAndOptionalArg&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg), (intptr_t) (0) } },
</span><span class="lines">@@ -4072,6 +4077,25 @@
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameter(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithXPathNSResolverParameter&quot;);
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    if (UNLIKELY(state-&gt;argumentCount() &lt; 1))
+        return throwVMError(state, createNotEnoughArgumentsError(state));
+    auto resolver = JSXPathNSResolver::toWrapped(*state, state-&gt;argument(0));
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    if (UNLIKELY(!resolver))
+        return throwVMTypeError(state);
+    impl.methodWithXPathNSResolverParameter(*resolver);
+    return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionNullableStringMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><span class="lines">@@ -4904,6 +4928,21 @@
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolver(ExecState* state)
+{
+    JSValue thisValue = state-&gt;thisValue();
+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithOptionalXPathNSResolver&quot;);
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    auto resolver = JSXPathNSResolver::toWrapped(*state, state-&gt;argument(0));
+    if (UNLIKELY(state-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+    impl.methodWithOptionalXPathNSResolver(WTFMove(resolver));
+    return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><span class="lines">@@ -5179,7 +5218,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;wrapped();
</span><span class="cx">     if (UNLIKELY(state-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(state, createNotEnoughArgumentsError(state));
</span><del>-    auto listArg = toDOMStringList(state, state-&gt;argument(0));
</del><ins>+    auto listArg = JSDOMStringList::toWrapped(*state, state-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(WTFMove(listArg));
</span><span class="lines">@@ -5528,7 +5567,7 @@
</span><span class="cx">     if (UNLIKELY(state-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(state, createNotEnoughArgumentsError(state));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    auto values = toDOMStringList(state, state-&gt;argument(0));
</del><ins>+    auto values = JSDOMStringList::toWrapped(*state, state-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     if (UNLIKELY(!values))
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx"> @class DOMany;
</span><span class="cx"> @class NSString;
</span><span class="cx"> @protocol DOMEventListener;
</span><ins>+@protocol DOMXPathNSResolver;
</ins><span class="cx"> 
</span><span class="cx"> enum {
</span><span class="cx">     DOM_CONST_VALUE_0 = 0,
</span><span class="lines">@@ -149,6 +150,7 @@
</span><span class="cx"> - (DOMTestObj *)objMethodWithArgs:(int)longArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg;
</span><span class="cx"> - (int)unforgeableMethod;
</span><span class="cx"> - (void)methodWithArgTreatingNullAsEmptyString:(NSString *)arg;
</span><ins>+- (void)methodWithXPathNSResolverParameter:(id &lt;DOMXPathNSResolver&gt;)resolver;
</ins><span class="cx"> - (NSString *)nullableStringMethod;
</span><span class="cx"> - (NSString *)nullableStringStaticMethod;
</span><span class="cx"> - (NSString *)nullableStringSpecialMethod:(unsigned)index;
</span><span class="lines">@@ -197,6 +199,7 @@
</span><span class="cx"> - (void)methodWithOptionalAny:(DOMany *)a;
</span><span class="cx"> - (void)methodWithOptionalNullableWrapper:(DOMTestObj *)obj;
</span><span class="cx"> - (void)methodWithOptionalNullableWrapperIsNull:(DOMTestObj *)obj;
</span><ins>+- (void)methodWithOptionalXPathNSResolver:(id &lt;DOMXPathNSResolver&gt;)resolver;
</ins><span class="cx"> - (void)classMethod;
</span><span class="cx"> - (int)classMethodWithOptional:(int)arg;
</span><span class="cx"> - (void)classMethod2:(int)arg;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;DOMTestObj.h&quot;
</span><span class="cx"> 
</span><ins>+#import &quot;DOMCustomXPathNSResolver.h&quot;
</ins><span class="cx"> #import &quot;DOMDictionaryInternal.h&quot;
</span><span class="cx"> #import &quot;DOMDocumentInternal.h&quot;
</span><span class="cx"> #import &quot;DOMNodeInternal.h&quot;
</span><span class="lines">@@ -66,6 +67,7 @@
</span><span class="cx"> #import &quot;URL.h&quot;
</span><span class="cx"> #import &quot;WebCoreObjCExtras.h&quot;
</span><span class="cx"> #import &quot;WebScriptObjectPrivate.h&quot;
</span><ins>+#import &quot;XPathNSResolver.h&quot;
</ins><span class="cx"> #import &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #define IMPL reinterpret_cast&lt;WebCore::TestObj*&gt;(_internal)
</span><span class="lines">@@ -1110,6 +1112,24 @@
</span><span class="cx">     IMPL-&gt;methodWithArgTreatingNullAsEmptyString(arg);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)methodWithXPathNSResolverParameter:(id &lt;DOMXPathNSResolver&gt;)resolver
+{
+    WebCore::JSMainThreadNullState state;
+    if (!resolver)
+        WebCore::raiseTypeErrorException();
+    WebCore::XPathNSResolver* nativeResolver = 0;
+    RefPtr&lt;WebCore::XPathNSResolver&gt; customResolver;
+    if (resolver) {
+        if ([resolver isMemberOfClass:[DOMNativeXPathNSResolver class]])
+            nativeResolver = core(static_cast&lt;DOMNativeXPathNSResolver *&gt;(resolver));
+        else {
+            customResolver = WebCore::DOMCustomXPathNSResolver::create(resolver);
+            nativeResolver = WTF::getPtr(customResolver);
+        }
+    }
+    IMPL-&gt;methodWithXPathNSResolverParameter(*WTF::getPtr(nativeResolver));
+}
+
</ins><span class="cx"> - (NSString *)nullableStringMethod
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="lines">@@ -1443,7 +1463,23 @@
</span><span class="cx">     IMPL-&gt;methodWithOptionalNullableWrapperIsNull(core(obj));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)methodWithOptionalXPathNSResolver:(id &lt;DOMXPathNSResolver&gt;)resolver
+{
+    WebCore::JSMainThreadNullState state;
+    WebCore::XPathNSResolver* nativeResolver = 0;
+    RefPtr&lt;WebCore::XPathNSResolver&gt; customResolver;
+    if (resolver) {
+        if ([resolver isMemberOfClass:[DOMNativeXPathNSResolver class]])
+            nativeResolver = core(static_cast&lt;DOMNativeXPathNSResolver *&gt;(resolver));
+        else {
+            customResolver = WebCore::DOMCustomXPathNSResolver::create(resolver);
+            nativeResolver = WTF::getPtr(customResolver);
+        }
+    }
+    IMPL-&gt;methodWithOptionalXPathNSResolver(WTF::getPtr(nativeResolver));
+}
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> - (NSString *)conditionalMethod1
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestObjidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -110,6 +110,7 @@
</span><span class="cx">     TestObj objMethodWithArgs(long longArg, DOMString strArg, TestObj objArg);
</span><span class="cx">     [Unforgeable] long unforgeableMethod();
</span><span class="cx">     void methodWithArgTreatingNullAsEmptyString([TreatNullAs=EmptyString] DOMString arg);
</span><ins>+    void methodWithXPathNSResolverParameter(XPathNSResolver resolver);
</ins><span class="cx"> 
</span><span class="cx">     // Nullable String return values.
</span><span class="cx">     DOMString? nullableStringMethod();
</span><span class="lines">@@ -208,6 +209,7 @@
</span><span class="cx">     void    methodWithOptionalAny(optional any a);
</span><span class="cx">     void    methodWithOptionalNullableWrapper(optional TestObj? obj);
</span><span class="cx">     void    methodWithOptionalNullableWrapperIsNull(optional TestObj? obj = null);
</span><ins>+    void    methodWithOptionalXPathNSResolver(optional XPathNSResolver? resolver);
</ins><span class="cx"> 
</span><span class="cx"> #if defined(TESTING_JS)
</span><span class="cx">     // Callback interface parameters.
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -5081,13 +5081,11 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathExpression&gt; Document::createExpression(const String&amp; expression,
-                                                       XPathNSResolver* resolver,
-                                                       ExceptionCode&amp; ec)
</del><ins>+RefPtr&lt;XPathExpression&gt; Document::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_xpathEvaluator)
</span><span class="cx">         m_xpathEvaluator = XPathEvaluator::create();
</span><del>-    return m_xpathEvaluator-&gt;createExpression(expression, resolver, ec);
</del><ins>+    return m_xpathEvaluator-&gt;createExpression(expression, WTFMove(resolver), ec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;XPathNSResolver&gt; Document::createNSResolver(Node* nodeResolver)
</span><span class="lines">@@ -5097,11 +5095,11 @@
</span><span class="cx">     return m_xpathEvaluator-&gt;createNSResolver(nodeResolver);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathResult&gt; Document::evaluate(const String&amp; expression, Node* contextNode, XPathNSResolver* resolver, unsigned short type, XPathResult* result, ExceptionCode&amp; ec)
</del><ins>+RefPtr&lt;XPathResult&gt; Document::evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, unsigned short type, XPathResult* result, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_xpathEvaluator)
</span><span class="cx">         m_xpathEvaluator = XPathEvaluator::create();
</span><del>-    return m_xpathEvaluator-&gt;evaluate(expression, contextNode, resolver, type, result, ec);
</del><ins>+    return m_xpathEvaluator-&gt;evaluate(expression, contextNode, WTFMove(resolver), type, result, ec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Document::initSecurityContext()
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.h (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.h        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/dom/Document.h        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -952,9 +952,9 @@
</span><span class="cx">     uint64_t domTreeVersion() const { return m_domTreeVersion; }
</span><span class="cx"> 
</span><span class="cx">     // XPathEvaluator methods
</span><del>-    RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, XPathNSResolver*, ExceptionCode&amp;);
</del><ins>+    RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, ExceptionCode&amp;);
</ins><span class="cx">     RefPtr&lt;XPathNSResolver&gt; createNSResolver(Node* nodeResolver);
</span><del>-    RefPtr&lt;XPathResult&gt; evaluate(const String&amp; expression, Node* contextNode, XPathNSResolver*, unsigned short type, XPathResult*, ExceptionCode&amp;);
</del><ins>+    RefPtr&lt;XPathResult&gt; evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, unsigned short type, XPathResult*, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     enum PendingSheetLayout { NoLayoutWithPendingSheets, DidLayoutWithPendingSheets, IgnoreLayoutWithPendingSheets };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.idl (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.idl        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/dom/Document.idl        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -141,16 +141,15 @@
</span><span class="cx"> 
</span><span class="cx">     // DOM Level 3 XPath (XPathEvaluator interface)
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><del>-    [ObjCLegacyUnnamedParameters, RaisesException] XPathExpression createExpression(optional DOMString expression = &quot;undefined&quot;,
-                                                    optional XPathNSResolver? resolver = null);
-    XPathNSResolver    createNSResolver(Node? nodeResolver);
</del><ins>+    [ObjCLegacyUnnamedParameters, RaisesException] XPathExpression createExpression(optional DOMString expression = &quot;undefined&quot;, optional XPathNSResolver? resolver);
+    XPathNSResolver createNSResolver(Node? nodeResolver);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><span class="cx">     [ObjCLegacyUnnamedParameters, RaisesException] XPathResult evaluate(optional DOMString expression = &quot;undefined&quot;,
</span><del>-                                                  optional Node? contextNode = null,
-                                                  optional XPathNSResolver? resolver = null,
</del><ins>+                                                  optional Node? contextNode,
+                                                  optional XPathNSResolver? resolver,
</ins><span class="cx">                                                   optional unsigned short type = 0,
</span><del>-                                                  optional XPathResult? inResult = null);
</del><ins>+                                                  optional XPathResult? inResult);
</ins><span class="cx"> 
</span><span class="cx">     // Common extensions
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNodeFindercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> #include &quot;HTMLFrameOwnerElement.h&quot;
</span><span class="cx"> #include &quot;NodeList.h&quot;
</span><span class="cx"> #include &quot;NodeTraversal.h&quot;
</span><ins>+#include &quot;XPathNSResolver.h&quot;
</ins><span class="cx"> #include &quot;XPathResult.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathEvaluatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathEvaluator.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathEvaluator.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/xml/XPathEvaluator.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -37,11 +37,9 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace XPath;
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathExpression&gt; XPathEvaluator::createExpression(const String&amp; expression,
-                                                             XPathNSResolver* resolver,
-                                                             ExceptionCode&amp; ec)
</del><ins>+RefPtr&lt;XPathExpression&gt; XPathEvaluator::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><del>-    return XPathExpression::createExpression(expression, resolver, ec);
</del><ins>+    return XPathExpression::createExpression(expression, WTFMove(resolver), ec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;XPathNSResolver&gt; XPathEvaluator::createNSResolver(Node* nodeResolver)
</span><span class="lines">@@ -49,12 +47,7 @@
</span><span class="cx">     return NativeXPathNSResolver::create(nodeResolver);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathResult&gt; XPathEvaluator::evaluate(const String&amp; expression,
-                                                 Node* contextNode,
-                                                 XPathNSResolver* resolver,
-                                                 unsigned short type,
-                                                 XPathResult* result,
-                                                 ExceptionCode&amp; ec)
</del><ins>+RefPtr&lt;XPathResult&gt; XPathEvaluator::evaluate(const String&amp; expression, Node* contextNode, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, unsigned short type, XPathResult* result, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!isValidContextNode(contextNode)) {
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="lines">@@ -62,7 +55,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ec = 0;
</span><del>-    RefPtr&lt;XPathExpression&gt; expr = createExpression(expression, resolver, ec);
</del><ins>+    RefPtr&lt;XPathExpression&gt; expr = createExpression(expression, WTFMove(resolver), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return nullptr;
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathEvaluatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathEvaluator.h (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathEvaluator.h        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/xml/XPathEvaluator.h        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -44,10 +44,10 @@
</span><span class="cx">     public:
</span><span class="cx">         static Ref&lt;XPathEvaluator&gt; create() { return adoptRef(*new XPathEvaluator); }
</span><span class="cx">         
</span><del>-        RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, XPathNSResolver*, ExceptionCode&amp;);
</del><ins>+        RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, ExceptionCode&amp;);
</ins><span class="cx">         Ref&lt;XPathNSResolver&gt; createNSResolver(Node* nodeResolver);
</span><span class="cx">         RefPtr&lt;XPathResult&gt; evaluate(const String&amp; expression, Node* contextNode,
</span><del>-            XPathNSResolver*, unsigned short type, XPathResult*, ExceptionCode&amp;);
</del><ins>+            RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, unsigned short type, XPathResult*, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         XPathEvaluator() { }
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathEvaluatoridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathEvaluator.idl (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathEvaluator.idl        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/xml/XPathEvaluator.idl        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -22,15 +22,14 @@
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface XPathEvaluator {
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><del>-    [RaisesException] XPathExpression createExpression(optional DOMString expression = &quot;undefined&quot;,
-                                     optional XPathNSResolver? resolver = null);
</del><ins>+    [RaisesException] XPathExpression createExpression(optional DOMString expression = &quot;undefined&quot;, optional XPathNSResolver? resolver);
</ins><span class="cx"> 
</span><del>-    XPathNSResolver createNSResolver(optional Node? nodeResolver = null);
</del><ins>+    XPathNSResolver createNSResolver(optional Node? nodeResolver);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><span class="cx">     [RaisesException] XPathResult evaluate(optional DOMString expression = &quot;undefined&quot;,
</span><del>-                         optional Node? contextNode = null,
-                         optional XPathNSResolver? resolver = null,
</del><ins>+                         optional Node? contextNode,
+                         optional XPathNSResolver? resolver,
</ins><span class="cx">                          optional unsigned short type = 0,
</span><del>-                         optional XPathResult? inResult = null);
</del><ins>+                         optional XPathResult? inResult);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathExpressioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathExpression.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathExpression.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/xml/XPathExpression.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -45,9 +45,9 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;XPathExpression&gt; XPathExpression::createExpression(const String&amp; expression, XPathNSResolver* resolver, ExceptionCode&amp; ec)
</del><ins>+RefPtr&lt;XPathExpression&gt; XPathExpression::createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><del>-    auto parsedExpression = Parser::parseStatement(expression, resolver, ec);
</del><ins>+    auto parsedExpression = Parser::parseStatement(expression, WTFMove(resolver), ec);
</ins><span class="cx">     if (!parsedExpression)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathExpressionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathExpression.h (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathExpression.h        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/xml/XPathExpression.h        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> 
</span><span class="cx">     class XPathExpression : public RefCounted&lt;XPathExpression&gt; {
</span><span class="cx">     public:
</span><del>-        static RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, XPathNSResolver*, ExceptionCode&amp;);
</del><ins>+        static RefPtr&lt;XPathExpression&gt; createExpression(const String&amp; expression, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, ExceptionCode&amp;);
</ins><span class="cx">         ~XPathExpression();
</span><span class="cx">         
</span><span class="cx">         RefPtr&lt;XPathResult&gt; evaluate(Node* contextNode, unsigned short type, XPathResult*, ExceptionCode&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathNSResolveridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathNSResolver.idl (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathNSResolver.idl        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/xml/XPathNSResolver.idl        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -19,6 +19,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><ins>+    JSCustomToNativeObject,
</ins><span class="cx">     NoInterfaceObject,
</span><span class="cx">     ObjCProtocol,
</span><span class="cx">     SkipVTableValidation,
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathParser.cpp (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathParser.cpp        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/xml/XPathParser.cpp        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -399,9 +399,9 @@
</span><span class="cx">     return token;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Parser::Parser(const String&amp; statement, XPathNSResolver* resolver)
</del><ins>+Parser::Parser(const String&amp; statement, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver)
</ins><span class="cx">     : m_data(statement)
</span><del>-    , m_resolver(resolver)
</del><ins>+    , m_resolver(WTFMove(resolver))
</ins><span class="cx">     , m_nextPos(0)
</span><span class="cx">     , m_lastTokenType(0)
</span><span class="cx">     , m_sawNamespaceError(false)
</span><span class="lines">@@ -456,9 +456,9 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-std::unique_ptr&lt;Expression&gt; Parser::parseStatement(const String&amp; statement, XPathNSResolver* resolver, ExceptionCode&amp; ec)
</del><ins>+std::unique_ptr&lt;Expression&gt; Parser::parseStatement(const String&amp; statement, RefPtr&lt;XPathNSResolver&gt;&amp;&amp; resolver, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><del>-    Parser parser(statement, resolver);
</del><ins>+    Parser parser(statement, WTFMove(resolver));
</ins><span class="cx"> 
</span><span class="cx">     int parseError = xpathyyparse(parser);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathParser.h (200549 => 200550)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathParser.h        2016-05-07 22:29:01 UTC (rev 200549)
+++ trunk/Source/WebCore/xml/XPathParser.h        2016-05-08 04:39:13 UTC (rev 200550)
</span><span class="lines">@@ -43,14 +43,14 @@
</span><span class="cx">         class Parser {
</span><span class="cx">             WTF_MAKE_NONCOPYABLE(Parser);
</span><span class="cx">         public:
</span><del>-            static std::unique_ptr&lt;Expression&gt; parseStatement(const String&amp; statement, XPathNSResolver*, ExceptionCode&amp;);
</del><ins>+            static std::unique_ptr&lt;Expression&gt; parseStatement(const String&amp; statement, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">             int lex(YYSTYPE&amp;);
</span><span class="cx">             bool expandQualifiedName(const String&amp; qualifiedName, String&amp; localName, String&amp; namespaceURI);
</span><span class="cx">             void setParseResult(std::unique_ptr&lt;Expression&gt; expression) { m_result = WTFMove(expression); }
</span><span class="cx"> 
</span><span class="cx">         private:
</span><del>-            Parser(const String&amp;, XPathNSResolver*);
</del><ins>+            Parser(const String&amp;, RefPtr&lt;XPathNSResolver&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">             struct Token;
</span><span class="cx"> 
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">             Token nextTokenInternal();
</span><span class="cx"> 
</span><span class="cx">             const String&amp; m_data;
</span><del>-            XPathNSResolver* m_resolver;
</del><ins>+            RefPtr&lt;XPathNSResolver&gt; m_resolver;
</ins><span class="cx"> 
</span><span class="cx">             unsigned m_nextPos;
</span><span class="cx">             int m_lastTokenType;
</span></span></pre>
</div>
</div>

</body>
</html>