<!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>[200316] 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/200316">200316</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-05-01 21:21:19 -0700 (Sun, 01 May 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Pass reference instead of pointer to IDL attribute setters if not nullable
https://bugs.webkit.org/show_bug.cgi?id=157250

Reviewed by Darin Adler.

Update the bindings generator so that we pass wrapper types by reference
to attribute setters instead of by raw pointer when the attribute is not
marked as nullable in the IDL.

There is no intended Web-exposed behavior change.

* Modules/speech/SpeechSynthesisUtterance.idl:
* Modules/webaudio/ConvolverNode.idl:
* bindings/js/JSDataCueCustom.cpp:
(WebCore::constructJSDataCue):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* bindings/scripts/CodeGeneratorObjC.pm:
(GenerateImplementation):

* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/ObjC/DOMTestInterface.mm:
* bindings/scripts/test/ObjC/DOMTestObj.mm:
Rebaseline bindings tests.

* dom/Document.cpp:
(WebCore::Document::moveNodeIteratorsToNewDocument):
* dom/NodeIterator.cpp:
(WebCore::NodeIterator::NodePointer::NodePointer):
(WebCore::NodeIterator::NodePointer::moveToNext):
(WebCore::NodeIterator::NodePointer::moveToPrevious):
(WebCore::NodeIterator::NodeIterator):
(WebCore::NodeIterator::~NodeIterator):
(WebCore::NodeIterator::updateForNodeRemoval):
(WebCore::NodeIterator::NodePointer::clear): Deleted.
(WebCore::NodeIterator::nextNode): Deleted.
* dom/NodeIterator.h:
* dom/Traversal.cpp:
(WebCore::NodeIteratorBase::NodeIteratorBase):
* dom/Traversal.h:
(WebCore::NodeIteratorBase::root):
* dom/TreeWalker.cpp:
(WebCore::TreeWalker::setCurrentNode):
(WebCore::TreeWalker::setCurrent):
(WebCore::TreeWalker::parentNode):
(WebCore::TreeWalker::firstChild):
(WebCore::TreeWalker::lastChild):
(WebCore::TreeWalker::traverseSiblings):
(WebCore::TreeWalker::previousNode):
(WebCore::TreeWalker::nextNode):
* dom/TreeWalker.h:
(WebCore::TreeWalker::currentNode):
* dom/TreeWalker.idl:
* html/HTMLAttachmentElement.idl:
* html/HTMLInputElement.idl:
* html/HTMLTableElement.idl:
* html/track/DataCue.cpp:
(WebCore::DataCue::DataCue):
(WebCore::DataCue::setData):
(WebCore::toDataCue): Deleted.
* html/track/DataCue.h:
* html/track/DataCue.idl:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesspeechSpeechSynthesisUtteranceidl">trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioConvolverNodeidl">trunk/Source/WebCore/Modules/webaudio/ConvolverNode.idl</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDataCueCustomcpp">trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorObjCpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp</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="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestInterfacemm">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm</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="#trunkSourceWebCoredomNodeIteratorcpp">trunk/Source/WebCore/dom/NodeIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeIteratorh">trunk/Source/WebCore/dom/NodeIterator.h</a></li>
<li><a href="#trunkSourceWebCoredomTraversalcpp">trunk/Source/WebCore/dom/Traversal.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTraversalh">trunk/Source/WebCore/dom/Traversal.h</a></li>
<li><a href="#trunkSourceWebCoredomTreeWalkercpp">trunk/Source/WebCore/dom/TreeWalker.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTreeWalkerh">trunk/Source/WebCore/dom/TreeWalker.h</a></li>
<li><a href="#trunkSourceWebCoredomTreeWalkeridl">trunk/Source/WebCore/dom/TreeWalker.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAttachmentElementidl">trunk/Source/WebCore/html/HTMLAttachmentElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementidl">trunk/Source/WebCore/html/HTMLInputElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementidl">trunk/Source/WebCore/html/HTMLTableElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmltrackDataCuecpp">trunk/Source/WebCore/html/track/DataCue.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackDataCueh">trunk/Source/WebCore/html/track/DataCue.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackDataCueidl">trunk/Source/WebCore/html/track/DataCue.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/ChangeLog        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -1,3 +1,69 @@
</span><ins>+2016-05-01  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Pass reference instead of pointer to IDL attribute setters if not nullable
+        https://bugs.webkit.org/show_bug.cgi?id=157250
+
+        Reviewed by Darin Adler.
+
+        Update the bindings generator so that we pass wrapper types by reference
+        to attribute setters instead of by raw pointer when the attribute is not
+        marked as nullable in the IDL.
+
+        There is no intended Web-exposed behavior change.
+
+        * Modules/speech/SpeechSynthesisUtterance.idl:
+        * Modules/webaudio/ConvolverNode.idl:
+        * bindings/js/JSDataCueCustom.cpp:
+        (WebCore::constructJSDataCue):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+        * bindings/scripts/CodeGeneratorObjC.pm:
+        (GenerateImplementation):
+
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        * bindings/scripts/test/ObjC/DOMTestInterface.mm:
+        * bindings/scripts/test/ObjC/DOMTestObj.mm:
+        Rebaseline bindings tests.
+
+        * dom/Document.cpp:
+        (WebCore::Document::moveNodeIteratorsToNewDocument):
+        * dom/NodeIterator.cpp:
+        (WebCore::NodeIterator::NodePointer::NodePointer):
+        (WebCore::NodeIterator::NodePointer::moveToNext):
+        (WebCore::NodeIterator::NodePointer::moveToPrevious):
+        (WebCore::NodeIterator::NodeIterator):
+        (WebCore::NodeIterator::~NodeIterator):
+        (WebCore::NodeIterator::updateForNodeRemoval):
+        (WebCore::NodeIterator::NodePointer::clear): Deleted.
+        (WebCore::NodeIterator::nextNode): Deleted.
+        * dom/NodeIterator.h:
+        * dom/Traversal.cpp:
+        (WebCore::NodeIteratorBase::NodeIteratorBase):
+        * dom/Traversal.h:
+        (WebCore::NodeIteratorBase::root):
+        * dom/TreeWalker.cpp:
+        (WebCore::TreeWalker::setCurrentNode):
+        (WebCore::TreeWalker::setCurrent):
+        (WebCore::TreeWalker::parentNode):
+        (WebCore::TreeWalker::firstChild):
+        (WebCore::TreeWalker::lastChild):
+        (WebCore::TreeWalker::traverseSiblings):
+        (WebCore::TreeWalker::previousNode):
+        (WebCore::TreeWalker::nextNode):
+        * dom/TreeWalker.h:
+        (WebCore::TreeWalker::currentNode):
+        * dom/TreeWalker.idl:
+        * html/HTMLAttachmentElement.idl:
+        * html/HTMLInputElement.idl:
+        * html/HTMLTableElement.idl:
+        * html/track/DataCue.cpp:
+        (WebCore::DataCue::DataCue):
+        (WebCore::DataCue::setData):
+        (WebCore::toDataCue): Deleted.
+        * html/track/DataCue.h:
+        * html/track/DataCue.idl:
+
</ins><span class="cx"> 2016-05-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r200264 and r200266.
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesspeechSpeechSynthesisUtteranceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> ] interface SpeechSynthesisUtterance : EventTarget {
</span><span class="cx">     attribute DOMString text;
</span><span class="cx">     attribute DOMString lang;
</span><del>-    attribute SpeechSynthesisVoice voice;
</del><ins>+    attribute SpeechSynthesisVoice? voice; // FIXME: should not be nullable.
</ins><span class="cx">     attribute unrestricted float volume;
</span><span class="cx">     attribute unrestricted float rate;
</span><span class="cx">     attribute unrestricted float pitch;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioConvolverNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/ConvolverNode.idl (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/ConvolverNode.idl        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/Modules/webaudio/ConvolverNode.idl        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -27,6 +27,6 @@
</span><span class="cx">     Conditional=WEB_AUDIO,
</span><span class="cx">     JSGenerateToJSObject
</span><span class="cx"> ] interface ConvolverNode : AudioNode {
</span><del>-    [SetterRaisesException] attribute AudioBuffer buffer;
</del><ins>+    [SetterRaisesException] attribute AudioBuffer? buffer;
</ins><span class="cx">     attribute boolean normalize;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDataCueCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -53,7 +53,6 @@
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 3)
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx"> 
</span><del>-    ExceptionCode ec = 0;
</del><span class="cx">     double startTime(exec-&gt;argument(0).toNumber(exec));
</span><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -84,16 +83,17 @@
</span><span class="cx">     RefPtr&lt;DataCue&gt; object;
</span><span class="cx">     if (valueArgument.isCell() &amp;&amp; valueArgument.asCell()-&gt;inherits(std::remove_pointer&lt;JSArrayBuffer*&gt;::type::info())) {
</span><span class="cx"> 
</span><del>-        ArrayBuffer* data(toArrayBuffer(valueArgument));
</del><ins>+        ArrayBuffer* data = toArrayBuffer(valueArgument);
</ins><span class="cx">         if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">             return JSValue::encode(jsUndefined());
</span><span class="cx"> 
</span><del>-        object = DataCue::create(*context, MediaTime::createWithDouble(startTime), MediaTime::createWithDouble(endTime), data, type, ec);
-        if (ec) {
-            setDOMException(exec, ec);
-            return JSValue::encode(JSValue());
</del><ins>+        if (UNLIKELY(!data)) {
+            setDOMException(exec, TypeError);
+            return JSValue::encode(jsUndefined());
</ins><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        object = DataCue::create(*context, MediaTime::createWithDouble(startTime), MediaTime::createWithDouble(endTime), *data, type);
+
</ins><span class="cx">         return JSValue::encode(asObject(toJS(exec, castedThis-&gt;globalObject(), object.get())));
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -1110,9 +1110,7 @@
</span><span class="cx">         }
</span><span class="cx">         if ($paramIsGDOMType || ($paramIDLType eq &quot;DOMString&quot;)) {
</span><span class="cx">             $paramName = &quot;converted&quot; . $codeGenerator-&gt;WK_ucfirst($paramName);
</span><del>-            if ($prefix ne &quot;set_&quot; &amp;&amp; $codeGenerator-&gt;ShouldPassWrapperByReference($param, $parentNode)) {
-                $paramName = &quot;*$paramName&quot;;
-            }
</del><ins>+            $paramName = &quot;*$paramName&quot; if $codeGenerator-&gt;ShouldPassWrapperByReference($param, $parentNode);
</ins><span class="cx">         }
</span><span class="cx">         if ($paramIDLType eq &quot;NodeFilter&quot; || $paramIDLType eq &quot;XPathNSResolver&quot;) {
</span><span class="cx">             $paramName = &quot;WTF::getPtr(&quot; . $paramName . &quot;)&quot;;
</span><span class="lines">@@ -1497,6 +1495,7 @@
</span><span class="cx">         my $param = new domSignature();
</span><span class="cx">         $param-&gt;name(&quot;value&quot;);
</span><span class="cx">         $param-&gt;type($attribute-&gt;signature-&gt;type);
</span><ins>+        $param-&gt;isNullable($attribute-&gt;signature-&gt;isNullable);
</ins><span class="cx">         my %attributes = ();
</span><span class="cx">         $param-&gt;extendedAttributes(\%attributes);
</span><span class="cx">         my $arrayRef = $function-&gt;parameters;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -2860,6 +2860,14 @@
</span><span class="cx">                     push (@implContent, &quot;        return false;\n&quot;);
</span><span class="cx">                 }
</span><span class="cx"> 
</span><ins>+                my $shouldPassByReference = ShouldPassWrapperByReference($attribute-&gt;signature, $interface);
+                if ($shouldPassByReference) {
+                    push(@implContent, &quot;    if (UNLIKELY(!nativeValue)) {\n&quot;);
+                    push(@implContent, &quot;        throwVMTypeError(state);\n&quot;);
+                    push(@implContent, &quot;        return false;\n&quot;);
+                    push(@implContent, &quot;    }\n&quot;);
+                }
+
</ins><span class="cx">                 if ($type eq &quot;double&quot; or $type eq &quot;float&quot;) {
</span><span class="cx">                     push(@implContent, &quot;    if (UNLIKELY(!std::isfinite(nativeValue))) {\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;        throwVMTypeError(state);\n&quot;);
</span><span class="lines">@@ -2903,7 +2911,7 @@
</span><span class="cx">                     } elsif ($codeGenerator-&gt;IsEnumType($type) and not $codeGenerator-&gt;IsStringBasedEnumType($type)) {
</span><span class="cx">                         push(@arguments, &quot;nativeValue.value()&quot;);
</span><span class="cx">                     } else {
</span><del>-                        push(@arguments, &quot;nativeValue&quot;);
</del><ins>+                        push(@arguments, $shouldPassByReference ? &quot;*nativeValue&quot; : &quot;nativeValue&quot;);
</ins><span class="cx">                     }
</span><span class="cx">                     if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;}) {
</span><span class="cx">                         my $implementedBy = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;};
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorObjCpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -1417,6 +1417,12 @@
</span><span class="cx">                     $arg = &quot;core(&quot; . $arg . &quot;)&quot;;
</span><span class="cx">                 }
</span><span class="cx"> 
</span><ins>+                if ($codeGenerator-&gt;ShouldPassWrapperByReference($attribute-&gt;signature, $interface)) {
+                    push(@implContent, &quot;    if (!$arg)\n&quot;);
+                    push(@implContent, &quot;        WebCore::raiseTypeErrorException();\n&quot;);
+                    $arg = &quot;*$arg&quot;;
+                }
+
</ins><span class="cx">                 my ($functionName, @arguments) = $codeGenerator-&gt;SetterExpression(\%implIncludes, $interfaceName, $attribute);
</span><span class="cx">                 push(@arguments, $arg);
</span><span class="cx">                 push(@arguments, &quot;ec&quot;) if $hasSetterException;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -450,7 +450,7 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_NODE(value));
</span><span class="cx">     WebCore::TestInterface* item = WebKit::core(self);
</span><span class="cx">     WebCore::Node* convertedValue = WebKit::core(value);
</span><del>-    item-&gt;setImplementsNode(convertedValue);
</del><ins>+    item-&gt;setImplementsNode(*convertedValue);
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(self);
</span><span class="cx">     UNUSED_PARAM(value);
</span><span class="lines">@@ -567,7 +567,7 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_NODE(value));
</span><span class="cx">     WebCore::TestInterface* item = WebKit::core(self);
</span><span class="cx">     WebCore::Node* convertedValue = WebKit::core(value);
</span><del>-    WebCore::TestSupplemental::setSupplementalNode(*item, convertedValue);
</del><ins>+    WebCore::TestSupplemental::setSupplementalNode(*item, *convertedValue);
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(self);
</span><span class="cx">     UNUSED_PARAM(value);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -92,6 +92,7 @@
</span><span class="cx">     PROP_UNSIGNED_LONG_LONG_ATTR,
</span><span class="cx">     PROP_STRING_ATTR,
</span><span class="cx">     PROP_TEST_OBJ_ATTR,
</span><ins>+    PROP_TEST_NULLABLE_OBJ_ATTR,
</ins><span class="cx">     PROP_LENIENT_TEST_OBJ_ATTR,
</span><span class="cx">     PROP_UNFORGEABLE_ATTR,
</span><span class="cx">     PROP_STRING_ATTR_TREATING_NULL_AS_EMPTY_STRING,
</span><span class="lines">@@ -327,6 +328,9 @@
</span><span class="cx">     case PROP_TEST_OBJ_ATTR:
</span><span class="cx">         g_value_set_object(value, webkit_dom_test_obj_get_test_obj_attr(self));
</span><span class="cx">         break;
</span><ins>+    case PROP_TEST_NULLABLE_OBJ_ATTR:
+        g_value_set_object(value, webkit_dom_test_obj_get_test_nullable_obj_attr(self));
+        break;
</ins><span class="cx">     case PROP_LENIENT_TEST_OBJ_ATTR:
</span><span class="cx">         g_value_set_object(value, webkit_dom_test_obj_get_lenient_test_obj_attr(self));
</span><span class="cx">         break;
</span><span class="lines">@@ -657,6 +661,16 @@
</span><span class="cx"> 
</span><span class="cx">     g_object_class_install_property(
</span><span class="cx">         gobjectClass,
</span><ins>+        PROP_TEST_NULLABLE_OBJ_ATTR,
+        g_param_spec_object(
+            &quot;test-nullable-obj-attr&quot;,
+            &quot;TestObj:test-nullable-obj-attr&quot;,
+            &quot;read-only WebKitDOMTestObj* TestObj:test-nullable-obj-attr&quot;,
+            WEBKIT_DOM_TYPE_TEST_OBJ,
+            WEBKIT_PARAM_READABLE));
+
+    g_object_class_install_property(
+        gobjectClass,
</ins><span class="cx">         PROP_LENIENT_TEST_OBJ_ATTR,
</span><span class="cx">         g_param_spec_object(
</span><span class="cx">             &quot;lenient-test-obj-attr&quot;,
</span><span class="lines">@@ -2202,9 +2216,28 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(value));
</span><span class="cx">     WebCore::TestObj* item = WebKit::core(self);
</span><span class="cx">     WebCore::TestObj* convertedValue = WebKit::core(value);
</span><del>-    item-&gt;setTestObjAttr(convertedValue);
</del><ins>+    item-&gt;setTestObjAttr(*convertedValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WebKitDOMTestObj* webkit_dom_test_obj_get_test_nullable_obj_attr(WebKitDOMTestObj* self)
+{
+    WebCore::JSMainThreadNullState state;
+    g_return_val_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self), 0);
+    WebCore::TestObj* item = WebKit::core(self);
+    RefPtr&lt;WebCore::TestObj&gt; gobjectResult = WTF::getPtr(item-&gt;testNullableObjAttr());
+    return WebKit::kit(gobjectResult.get());
+}
+
+void webkit_dom_test_obj_set_test_nullable_obj_attr(WebKitDOMTestObj* self, WebKitDOMTestObj* value)
+{
+    WebCore::JSMainThreadNullState state;
+    g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self));
+    g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(value));
+    WebCore::TestObj* item = WebKit::core(self);
+    WebCore::TestObj* convertedValue = WebKit::core(value);
+    item-&gt;setTestNullableObjAttr(convertedValue);
+}
+
</ins><span class="cx"> WebKitDOMTestObj* webkit_dom_test_obj_get_lenient_test_obj_attr(WebKitDOMTestObj* self)
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="lines">@@ -2221,7 +2254,7 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(value));
</span><span class="cx">     WebCore::TestObj* item = WebKit::core(self);
</span><span class="cx">     WebCore::TestObj* convertedValue = WebKit::core(value);
</span><del>-    item-&gt;setLenientTestObjAttr(convertedValue);
</del><ins>+    item-&gt;setLenientTestObjAttr(*convertedValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gchar* webkit_dom_test_obj_get_unforgeable_attr(WebKitDOMTestObj* self)
</span><span class="lines">@@ -2268,7 +2301,7 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(value));
</span><span class="cx">     WebCore::TestObj* item = WebKit::core(self);
</span><span class="cx">     WebCore::TestObj* convertedValue = WebKit::core(value);
</span><del>-    item-&gt;setXMLObjAttr(convertedValue);
</del><ins>+    item-&gt;setXMLObjAttr(*convertedValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> gboolean webkit_dom_test_obj_get_create(WebKitDOMTestObj* self)
</span><span class="lines">@@ -2622,7 +2655,7 @@
</span><span class="cx">     g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(value));
</span><span class="cx">     WebCore::TestObj* item = WebKit::core(self);
</span><span class="cx">     WebCore::TestObj* convertedValue = WebKit::core(value);
</span><del>-    item-&gt;setStrictTypeCheckingAttribute(convertedValue);
</del><ins>+    item-&gt;setStrictTypeCheckingAttribute(*convertedValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> glong webkit_dom_test_obj_get_with_script_state_attribute(WebKitDOMTestObj* self)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -1177,6 +1177,27 @@
</span><span class="cx"> webkit_dom_test_obj_set_test_obj_attr(WebKitDOMTestObj* self, WebKitDOMTestObj* value);
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * webkit_dom_test_obj_get_test_nullable_obj_attr:
+ * @self: A #WebKitDOMTestObj
+ *
+ * Returns: (transfer none): A #WebKitDOMTestObj
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API WebKitDOMTestObj*
+webkit_dom_test_obj_get_test_nullable_obj_attr(WebKitDOMTestObj* self);
+
+/**
+ * webkit_dom_test_obj_set_test_nullable_obj_attr:
+ * @self: A #WebKitDOMTestObj
+ * @value: A #WebKitDOMTestObj
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API void
+webkit_dom_test_obj_set_test_nullable_obj_attr(WebKitDOMTestObj* self, WebKitDOMTestObj* value);
+
+/**
</ins><span class="cx">  * webkit_dom_test_obj_get_lenient_test_obj_attr:
</span><span class="cx">  * @self: A #WebKitDOMTestObj
</span><span class="cx">  *
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -686,7 +686,11 @@
</span><span class="cx">     Node* nativeValue = JSNode::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><del>-    impl.setImplementsNode(nativeValue);
</del><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
+    impl.setImplementsNode(*nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -752,7 +756,11 @@
</span><span class="cx">     Node* nativeValue = JSNode::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><del>-    WebCore::TestSupplemental::setSupplementalNode(impl, nativeValue);
</del><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
+    WebCore::TestSupplemental::setSupplementalNode(impl, *nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</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 (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -430,6 +430,8 @@
</span><span class="cx"> bool setJSTestObjStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><ins>+JSC::EncodedJSValue jsTestObjTestNullableObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+bool setJSTestObjTestNullableObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjLenientTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> bool setJSTestObjLenientTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjUnforgeableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="lines">@@ -743,6 +745,7 @@
</span><span class="cx">     { &quot;unsignedLongLongAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjUnsignedLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjUnsignedLongLongAttr) } },
</span><span class="cx">     { &quot;stringAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttr) } },
</span><span class="cx">     { &quot;testObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestObjAttr) } },
</span><ins>+    { &quot;testNullableObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestNullableObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestNullableObjAttr) } },
</ins><span class="cx">     { &quot;lenientTestObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjLenientTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjLenientTestObjAttr) } },
</span><span class="cx">     { &quot;stringAttrTreatingNullAsEmptyString&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrTreatingNullAsEmptyString), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrTreatingNullAsEmptyString) } },
</span><span class="cx">     { &quot;XMLObjAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjXMLObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjXMLObjAttr) } },
</span><span class="lines">@@ -1329,6 +1332,21 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+EncodedJSValue jsTestObjTestNullableObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
+{
+    UNUSED_PARAM(state);
+    UNUSED_PARAM(thisValue);
+    JSValue decodedThisValue = JSValue::decode(thisValue);
+    auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
+    if (UNLIKELY(!castedThis)) {
+        return throwGetterTypeError(*state, &quot;TestObj&quot;, &quot;testNullableObjAttr&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    JSValue result = toJS(state, castedThis-&gt;globalObject(), WTF::getPtr(impl.testNullableObjAttr()));
+    return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjLenientTestObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -2572,11 +2590,32 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><del>-    impl.setTestObjAttr(nativeValue);
</del><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
+    impl.setTestObjAttr(*nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+bool setJSTestObjTestNullableObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+    JSValue value = JSValue::decode(encodedValue);
+    UNUSED_PARAM(thisValue);
+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        return throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;testNullableObjAttr&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;wrapped();
+    TestObj* nativeValue = JSTestObj::toWrapped(value);
+    if (UNLIKELY(state-&gt;hadException()))
+        return false;
+    impl.setTestNullableObjAttr(nativeValue);
+    return true;
+}
+
+
</ins><span class="cx"> bool setJSTestObjLenientTestObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="lines">@@ -2589,7 +2628,11 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><del>-    impl.setLenientTestObjAttr(nativeValue);
</del><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
+    impl.setLenientTestObjAttr(*nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2623,7 +2666,11 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><del>-    impl.setXMLObjAttr(nativeValue);
</del><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
+    impl.setXMLObjAttr(*nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2829,6 +2876,10 @@
</span><span class="cx">     RefPtr&lt;Float32Array&gt; nativeValue = toFloat32Array(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
</ins><span class="cx">     impl.setTypedArrayAttr(nativeValue.get());
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="lines">@@ -2958,7 +3009,11 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><del>-    impl.setStrictTypeCheckingAttribute(nativeValue);
</del><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
+    impl.setStrictTypeCheckingAttribute(*nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3048,10 +3103,14 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
</ins><span class="cx">     auto* context = jsCast&lt;JSDOMGlobalObject*&gt;(state-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!context)
</span><span class="cx">         return false;
</span><del>-    impl.setWithScriptExecutionContextAttribute(*context, nativeValue);
</del><ins>+    impl.setWithScriptExecutionContextAttribute(*context, *nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3068,7 +3127,11 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><del>-    impl.setWithScriptStateAttributeRaises(*state, nativeValue);
</del><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
+    impl.setWithScriptStateAttributeRaises(*state, *nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3085,10 +3148,14 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
</ins><span class="cx">     auto* context = jsCast&lt;JSDOMGlobalObject*&gt;(state-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!context)
</span><span class="cx">         return false;
</span><del>-    impl.setWithScriptExecutionContextAttributeRaises(*context, nativeValue);
</del><ins>+    impl.setWithScriptExecutionContextAttributeRaises(*context, *nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3105,10 +3172,14 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
</ins><span class="cx">     auto* context = jsCast&lt;JSDOMGlobalObject*&gt;(state-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!context)
</span><span class="cx">         return false;
</span><del>-    impl.setWithScriptExecutionContextAndScriptStateAttribute(*state, *context, nativeValue);
</del><ins>+    impl.setWithScriptExecutionContextAndScriptStateAttribute(*state, *context, *nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3125,10 +3196,14 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
</ins><span class="cx">     auto* context = jsCast&lt;JSDOMGlobalObject*&gt;(state-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!context)
</span><span class="cx">         return false;
</span><del>-    impl.setWithScriptExecutionContextAndScriptStateAttributeRaises(*state, *context, nativeValue);
</del><ins>+    impl.setWithScriptExecutionContextAndScriptStateAttributeRaises(*state, *context, *nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3145,10 +3220,14 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
</ins><span class="cx">     auto* context = jsCast&lt;JSDOMGlobalObject*&gt;(state-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!context)
</span><span class="cx">         return false;
</span><del>-    impl.setWithScriptExecutionContextAndScriptStateWithSpacesAttribute(*state, *context, nativeValue);
</del><ins>+    impl.setWithScriptExecutionContextAndScriptStateWithSpacesAttribute(*state, *context, *nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3165,7 +3244,11 @@
</span><span class="cx">     TestObj* nativeValue = JSTestObj::toWrapped(value);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return false;
</span><del>-    impl.setWithScriptArgumentsAndCallStackAttribute(nativeValue);
</del><ins>+    if (UNLIKELY(!nativeValue)) {
+        throwVMTypeError(state);
+        return false;
+    }
+    impl.setWithScriptArgumentsAndCallStackAttribute(*nativeValue);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestInterfacemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -109,7 +109,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newImplementsNode);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setImplementsNode(core(newImplementsNode));
</del><ins>+    if (!core(newImplementsNode))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setImplementsNode(*core(newImplementsNode));
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -161,7 +163,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newSupplementalNode);
</span><span class="cx"> 
</span><del>-    WebCore::TestSupplemental::setSupplementalNode(*IMPL, core(newSupplementalNode));
</del><ins>+    if (!core(newSupplementalNode))
+        WebCore::raiseTypeErrorException();
+    WebCore::TestSupplemental::setSupplementalNode(*IMPL, *core(newSupplementalNode));
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -75,6 +75,7 @@
</span><span class="cx"> @property unsigned long long unsignedLongLongAttr;
</span><span class="cx"> @property (copy) NSString *stringAttr;
</span><span class="cx"> @property (strong) DOMTestObj *testObjAttr;
</span><ins>+@property (strong) DOMTestObj *testNullableObjAttr;
</ins><span class="cx"> @property (strong) DOMTestObj *lenientTestObjAttr;
</span><span class="cx"> @property (readonly, copy) NSString *unforgeableAttr;
</span><span class="cx"> @property (copy) NSString *stringAttrTreatingNullAsEmptyString;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -112,7 +112,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newTestSubObjEnabledBySetting);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setTestSubObjEnabledBySetting(core(newTestSubObjEnabledBySetting));
</del><ins>+    if (!core(newTestSubObjEnabledBySetting))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setTestSubObjEnabledBySetting(*core(newTestSubObjEnabledBySetting));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (char)byteAttr
</span><span class="lines">@@ -246,9 +248,25 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newTestObjAttr);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setTestObjAttr(core(newTestObjAttr));
</del><ins>+    if (!core(newTestObjAttr))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setTestObjAttr(*core(newTestObjAttr));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (DOMTestObj *)testNullableObjAttr
+{
+    WebCore::JSMainThreadNullState state;
+    return kit(WTF::getPtr(IMPL-&gt;testNullableObjAttr()));
+}
+
+- (void)setTestNullableObjAttr:(DOMTestObj *)newTestNullableObjAttr
+{
+    WebCore::JSMainThreadNullState state;
+    ASSERT(newTestNullableObjAttr);
+
+    IMPL-&gt;setTestNullableObjAttr(core(newTestNullableObjAttr));
+}
+
</ins><span class="cx"> - (DOMTestObj *)lenientTestObjAttr
</span><span class="cx"> {
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="lines">@@ -260,7 +278,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newLenientTestObjAttr);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setLenientTestObjAttr(core(newLenientTestObjAttr));
</del><ins>+    if (!core(newLenientTestObjAttr))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setLenientTestObjAttr(*core(newLenientTestObjAttr));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)unforgeableAttr
</span><span class="lines">@@ -292,7 +312,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newXMLObjAttr);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setXMLObjAttr(core(newXMLObjAttr));
</del><ins>+    if (!core(newXMLObjAttr))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setXMLObjAttr(*core(newXMLObjAttr));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)create
</span><span class="lines">@@ -522,7 +544,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newStrictTypeCheckingAttribute);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setStrictTypeCheckingAttribute(core(newStrictTypeCheckingAttribute));
</del><ins>+    if (!core(newStrictTypeCheckingAttribute))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setStrictTypeCheckingAttribute(*core(newStrictTypeCheckingAttribute));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (int)customAttr
</span><span class="lines">@@ -549,7 +573,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newJsBuiltinAttribute);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setJsBuiltinAttribute(core(newJsBuiltinAttribute));
</del><ins>+    if (!core(newJsBuiltinAttribute))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setJsBuiltinAttribute(*core(newJsBuiltinAttribute));
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -596,7 +622,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newWithScriptExecutionContextAttribute);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setWithScriptExecutionContextAttribute(core(newWithScriptExecutionContextAttribute));
</del><ins>+    if (!core(newWithScriptExecutionContextAttribute))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setWithScriptExecutionContextAttribute(*core(newWithScriptExecutionContextAttribute));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMTestObj *)withScriptStateAttributeRaises
</span><span class="lines">@@ -613,7 +641,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newWithScriptStateAttributeRaises);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setWithScriptStateAttributeRaises(core(newWithScriptStateAttributeRaises));
</del><ins>+    if (!core(newWithScriptStateAttributeRaises))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setWithScriptStateAttributeRaises(*core(newWithScriptStateAttributeRaises));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMTestObj *)withScriptExecutionContextAttributeRaises
</span><span class="lines">@@ -630,7 +660,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newWithScriptExecutionContextAttributeRaises);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setWithScriptExecutionContextAttributeRaises(core(newWithScriptExecutionContextAttributeRaises));
</del><ins>+    if (!core(newWithScriptExecutionContextAttributeRaises))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setWithScriptExecutionContextAttributeRaises(*core(newWithScriptExecutionContextAttributeRaises));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMTestObj *)withScriptExecutionContextAndScriptStateAttribute
</span><span class="lines">@@ -644,7 +676,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newWithScriptExecutionContextAndScriptStateAttribute);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setWithScriptExecutionContextAndScriptStateAttribute(core(newWithScriptExecutionContextAndScriptStateAttribute));
</del><ins>+    if (!core(newWithScriptExecutionContextAndScriptStateAttribute))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setWithScriptExecutionContextAndScriptStateAttribute(*core(newWithScriptExecutionContextAndScriptStateAttribute));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMTestObj *)withScriptExecutionContextAndScriptStateAttributeRaises
</span><span class="lines">@@ -661,7 +695,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newWithScriptExecutionContextAndScriptStateAttributeRaises);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setWithScriptExecutionContextAndScriptStateAttributeRaises(core(newWithScriptExecutionContextAndScriptStateAttributeRaises));
</del><ins>+    if (!core(newWithScriptExecutionContextAndScriptStateAttributeRaises))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setWithScriptExecutionContextAndScriptStateAttributeRaises(*core(newWithScriptExecutionContextAndScriptStateAttributeRaises));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMTestObj *)withScriptExecutionContextAndScriptStateWithSpacesAttribute
</span><span class="lines">@@ -675,7 +711,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newWithScriptExecutionContextAndScriptStateWithSpacesAttribute);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setWithScriptExecutionContextAndScriptStateWithSpacesAttribute(core(newWithScriptExecutionContextAndScriptStateWithSpacesAttribute));
</del><ins>+    if (!core(newWithScriptExecutionContextAndScriptStateWithSpacesAttribute))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setWithScriptExecutionContextAndScriptStateWithSpacesAttribute(*core(newWithScriptExecutionContextAndScriptStateWithSpacesAttribute));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (DOMTestObj *)withScriptArgumentsAndCallStackAttribute
</span><span class="lines">@@ -689,7 +727,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newWithScriptArgumentsAndCallStackAttribute);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setWithScriptArgumentsAndCallStackAttribute(core(newWithScriptArgumentsAndCallStackAttribute));
</del><ins>+    if (!core(newWithScriptArgumentsAndCallStackAttribute))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setWithScriptArgumentsAndCallStackAttribute(*core(newWithScriptArgumentsAndCallStackAttribute));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="lines">@@ -746,7 +786,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newConditionalAttr4);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setConditionalAttr4(core(newConditionalAttr4));
</del><ins>+    if (!core(newConditionalAttr4))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setConditionalAttr4(*core(newConditionalAttr4));
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -762,7 +804,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newConditionalAttr5);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setConditionalAttr5(core(newConditionalAttr5));
</del><ins>+    if (!core(newConditionalAttr5))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setConditionalAttr5(*core(newConditionalAttr5));
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -778,7 +822,9 @@
</span><span class="cx">     WebCore::JSMainThreadNullState state;
</span><span class="cx">     ASSERT(newConditionalAttr6);
</span><span class="cx"> 
</span><del>-    IMPL-&gt;setConditionalAttr6(core(newConditionalAttr6));
</del><ins>+    if (!core(newConditionalAttr6))
+        WebCore::raiseTypeErrorException();
+    IMPL-&gt;setConditionalAttr6(*core(newConditionalAttr6));
</ins><span class="cx"> }
</span><span class="cx"> #endif
</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 (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -63,6 +63,7 @@
</span><span class="cx">     attribute unsigned long long       unsignedLongLongAttr;
</span><span class="cx">     attribute DOMString                stringAttr;
</span><span class="cx">     attribute TestObj                  testObjAttr;
</span><ins>+    attribute TestObj?                 testNullableObjAttr;
</ins><span class="cx">     [LenientThis] attribute TestObj    lenientTestObjAttr;
</span><span class="cx">     [Unforgeable] readonly attribute DOMString unforgeableAttr;
</span><span class="cx">     [TreatNullAs=EmptyString] attribute DOMString stringAttrTreatingNullAsEmptyString;
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -3964,7 +3964,7 @@
</span><span class="cx">     Vector&lt;NodeIterator*&gt; nodeIterators;
</span><span class="cx">     copyToVector(m_nodeIterators, nodeIterators);
</span><span class="cx">     for (auto* it : nodeIterators) {
</span><del>-        if (it-&gt;root() == node) {
</del><ins>+        if (&amp;it-&gt;root() == node) {
</ins><span class="cx">             detachNodeIterator(it);
</span><span class="cx">             newDocument-&gt;attachNodeIterator(it);
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NodeIterator.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NodeIterator.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/dom/NodeIterator.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -33,22 +33,18 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-NodeIterator::NodePointer::NodePointer()
</del><ins>+NodeIterator::NodePointer::NodePointer(Node&amp; node, bool isPointerBeforeNode)
+    : node(&amp;node)
+    , isPointerBeforeNode(isPointerBeforeNode)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-NodeIterator::NodePointer::NodePointer(Node* n, bool b)
-    : node(n)
-    , isPointerBeforeNode(b)
-{
-}
-
</del><span class="cx"> void NodeIterator::NodePointer::clear()
</span><span class="cx"> {
</span><span class="cx">     node = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool NodeIterator::NodePointer::moveToNext(Node* root)
</del><ins>+bool NodeIterator::NodePointer::moveToNext(Node&amp; root)
</ins><span class="cx"> {
</span><span class="cx">     if (!node)
</span><span class="cx">         return false;
</span><span class="lines">@@ -56,11 +52,11 @@
</span><span class="cx">         isPointerBeforeNode = false;
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><del>-    node = NodeTraversal::next(*node, root);
</del><ins>+    node = NodeTraversal::next(*node, &amp;root);
</ins><span class="cx">     return node;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool NodeIterator::NodePointer::moveToPrevious(Node* root)
</del><ins>+bool NodeIterator::NodePointer::moveToPrevious(Node&amp; root)
</ins><span class="cx"> {
</span><span class="cx">     if (!node)
</span><span class="cx">         return false;
</span><span class="lines">@@ -68,7 +64,7 @@
</span><span class="cx">         isPointerBeforeNode = true;
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><del>-    if (node == root) {
</del><ins>+    if (node == &amp;root) {
</ins><span class="cx">         node = nullptr;
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="lines">@@ -80,12 +76,12 @@
</span><span class="cx">     : NodeIteratorBase(rootNode, whatToShow, WTFMove(filter))
</span><span class="cx">     , m_referenceNode(root(), true)
</span><span class="cx"> {
</span><del>-    root()-&gt;document().attachNodeIterator(this);
</del><ins>+    root().document().attachNodeIterator(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> NodeIterator::~NodeIterator()
</span><span class="cx"> {
</span><del>-    root()-&gt;document().detachNodeIterator(this);
</del><ins>+    root().document().detachNodeIterator(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;Node&gt; NodeIterator::nextNode()
</span><span class="lines">@@ -145,11 +141,11 @@
</span><span class="cx"> 
</span><span class="cx"> void NodeIterator::updateForNodeRemoval(Node&amp; removedNode, NodePointer&amp; referenceNode) const
</span><span class="cx"> {
</span><del>-    ASSERT(&amp;root()-&gt;document() == &amp;removedNode.document());
</del><ins>+    ASSERT(&amp;root().document() == &amp;removedNode.document());
</ins><span class="cx"> 
</span><span class="cx">     // Iterator is not affected if the removed node is the reference node and is the root.
</span><span class="cx">     // or if removed node is not the reference node, or the ancestor of the reference node.
</span><del>-    if (!removedNode.isDescendantOf(root()))
</del><ins>+    if (!removedNode.isDescendantOf(&amp;root()))
</ins><span class="cx">         return;
</span><span class="cx">     bool willRemoveReferenceNode = &amp;removedNode == referenceNode.node;
</span><span class="cx">     bool willRemoveReferenceNodeAncestor = referenceNode.node &amp;&amp; referenceNode.node-&gt;isDescendantOf(&amp;removedNode);
</span><span class="lines">@@ -157,12 +153,12 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (referenceNode.isPointerBeforeNode) {
</span><del>-        Node* node = NodeTraversal::next(removedNode, root());
</del><ins>+        Node* node = NodeTraversal::next(removedNode, &amp;root());
</ins><span class="cx">         if (node) {
</span><span class="cx">             // Move out from under the node being removed if the new reference
</span><span class="cx">             // node is a descendant of the node being removed.
</span><span class="cx">             while (node &amp;&amp; node-&gt;isDescendantOf(&amp;removedNode))
</span><del>-                node = NodeTraversal::next(*node, root());
</del><ins>+                node = NodeTraversal::next(*node, &amp;root());
</ins><span class="cx">             if (node)
</span><span class="cx">                 referenceNode.node = node;
</span><span class="cx">         } else {
</span><span class="lines">@@ -196,7 +192,7 @@
</span><span class="cx">                 referenceNode.node = node;
</span><span class="cx">         } else {
</span><span class="cx">             // FIXME: This branch doesn't appear to have any LayoutTests.
</span><del>-            node = NodeTraversal::next(removedNode, root());
</del><ins>+            node = NodeTraversal::next(removedNode, &amp;root());
</ins><span class="cx">             // Move out from under the node being removed if the reference node is
</span><span class="cx">             // a descendant of the node being removed.
</span><span class="cx">             if (willRemoveReferenceNodeAncestor) {
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NodeIterator.h (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NodeIterator.h        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/dom/NodeIterator.h        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -57,12 +57,14 @@
</span><span class="cx"> 
</span><span class="cx">         struct NodePointer {
</span><span class="cx">             RefPtr&lt;Node&gt; node;
</span><del>-            bool isPointerBeforeNode;
-            NodePointer();
-            NodePointer(Node*, bool);
</del><ins>+            bool isPointerBeforeNode { true };
+
+            NodePointer() = default;
+            NodePointer(Node&amp;, bool);
+
</ins><span class="cx">             void clear();
</span><del>-            bool moveToNext(Node* root);
-            bool moveToPrevious(Node* root);
</del><ins>+            bool moveToNext(Node&amp; root);
+            bool moveToPrevious(Node&amp; root);
</ins><span class="cx">         };
</span><span class="cx"> 
</span><span class="cx">         void updateForNodeRemoval(Node&amp; nodeToBeRemoved, NodePointer&amp;) const;
</span></span></pre></div>
<a id="trunkSourceWebCoredomTraversalcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Traversal.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Traversal.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/dom/Traversal.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> NodeIteratorBase::NodeIteratorBase(Node&amp; rootNode, unsigned whatToShow, RefPtr&lt;NodeFilter&gt;&amp;&amp; nodeFilter)
</span><del>-    : m_root(&amp;rootNode)
</del><ins>+    : m_root(rootNode)
</ins><span class="cx">     , m_whatToShow(whatToShow)
</span><span class="cx">     , m_filter(WTFMove(nodeFilter))
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoredomTraversalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Traversal.h (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Traversal.h        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/dom/Traversal.h        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -33,7 +33,9 @@
</span><span class="cx"> 
</span><span class="cx"> class NodeIteratorBase {
</span><span class="cx"> public:
</span><del>-    Node* root() const { return m_root.get(); }
</del><ins>+    Node&amp; root() { return m_root.get(); }
+    const Node&amp; root() const { return m_root.get(); }
+
</ins><span class="cx">     unsigned whatToShow() const { return m_whatToShow; }
</span><span class="cx">     NodeFilter* filter() const { return m_filter.get(); }
</span><span class="cx">     bool expandEntityReferences() const { return false; }
</span><span class="lines">@@ -43,7 +45,7 @@
</span><span class="cx">     short acceptNode(Node*) const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    RefPtr&lt;Node&gt; m_root;
</del><ins>+    Ref&lt;Node&gt; m_root;
</ins><span class="cx">     unsigned m_whatToShow;
</span><span class="cx">     RefPtr&lt;NodeFilter&gt; m_filter;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomTreeWalkercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TreeWalker.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TreeWalker.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/dom/TreeWalker.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -39,31 +39,27 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TreeWalker::setCurrentNode(Node* node, ExceptionCode&amp; ec)
</del><ins>+void TreeWalker::setCurrentNode(Node&amp; node)
</ins><span class="cx"> {
</span><del>-    if (!node) {
-        ec = NOT_SUPPORTED_ERR;
-        return;
-    }
</del><span class="cx">     m_current = node;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline Node* TreeWalker::setCurrent(RefPtr&lt;Node&gt;&amp;&amp; node)
</del><ins>+inline Node* TreeWalker::setCurrent(Ref&lt;Node&gt;&amp;&amp; node)
</ins><span class="cx"> {
</span><del>-    m_current = node;
-    return m_current.get();
</del><ins>+    m_current = WTFMove(node);
+    return m_current.ptr();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Node* TreeWalker::parentNode()
</span><span class="cx"> {
</span><del>-    RefPtr&lt;Node&gt; node = m_current;
-    while (node != root()) {
</del><ins>+    RefPtr&lt;Node&gt; node = m_current.ptr();
+    while (node != &amp;root()) {
</ins><span class="cx">         node = node-&gt;parentNode();
</span><span class="cx">         if (!node)
</span><span class="cx">             return nullptr;
</span><span class="cx">         short acceptNodeResult = acceptNode(node.get());
</span><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
</span><del>-            return setCurrent(WTFMove(node));
</del><ins>+            return setCurrent(node.releaseNonNull());
</ins><span class="cx">     }
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="lines">@@ -74,8 +70,8 @@
</span><span class="cx">         short acceptNodeResult = acceptNode(node.get());
</span><span class="cx">         switch (acceptNodeResult) {
</span><span class="cx">             case NodeFilter::FILTER_ACCEPT:
</span><del>-                m_current = node.release();
-                return m_current.get();
</del><ins>+                m_current = node.releaseNonNull();
+                return m_current.ptr();
</ins><span class="cx">             case NodeFilter::FILTER_SKIP:
</span><span class="cx">                 if (node-&gt;firstChild()) {
</span><span class="cx">                     node = node-&gt;firstChild();
</span><span class="lines">@@ -91,7 +87,7 @@
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">             ContainerNode* parent = node-&gt;parentNode();
</span><del>-            if (!parent || parent == root() || parent == m_current)
</del><ins>+            if (!parent || parent == &amp;root() || parent == m_current.ptr())
</ins><span class="cx">                 return nullptr;
</span><span class="cx">             node = parent;
</span><span class="cx">         } while (node);
</span><span class="lines">@@ -105,8 +101,8 @@
</span><span class="cx">         short acceptNodeResult = acceptNode(node.get());
</span><span class="cx">         switch (acceptNodeResult) {
</span><span class="cx">             case NodeFilter::FILTER_ACCEPT:
</span><del>-                m_current = node.release();
-                return m_current.get();
</del><ins>+                m_current = node.releaseNonNull();
+                return m_current.ptr();
</ins><span class="cx">             case NodeFilter::FILTER_SKIP:
</span><span class="cx">                 if (node-&gt;lastChild()) {
</span><span class="cx">                     node = node-&gt;lastChild();
</span><span class="lines">@@ -122,7 +118,7 @@
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">             ContainerNode* parent = node-&gt;parentNode();
</span><del>-            if (!parent || parent == root() || parent == m_current)
</del><ins>+            if (!parent || parent == &amp;root() || parent == m_current.ptr())
</ins><span class="cx">                 return nullptr;
</span><span class="cx">             node = parent;
</span><span class="cx">         } while (node);
</span><span class="lines">@@ -132,8 +128,8 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;TreeWalker::SiblingTraversalType type&gt; Node* TreeWalker::traverseSiblings()
</span><span class="cx"> {
</span><del>-    RefPtr&lt;Node&gt; node = m_current;
-    if (node == root())
</del><ins>+    RefPtr&lt;Node&gt; node = m_current.ptr();
+    if (node == &amp;root())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto isNext = type == SiblingTraversalType::Next;
</span><span class="lines">@@ -141,8 +137,8 @@
</span><span class="cx">         for (RefPtr&lt;Node&gt; sibling = isNext ? node-&gt;nextSibling() : node-&gt;previousSibling(); sibling; ) {
</span><span class="cx">             short acceptNodeResult = acceptNode(sibling.get());
</span><span class="cx">             if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) {
</span><del>-                m_current = WTFMove(sibling);
-                return m_current.get();
</del><ins>+                m_current = sibling.releaseNonNull();
+                return m_current.ptr();
</ins><span class="cx">             }
</span><span class="cx">             node = sibling;
</span><span class="cx">             sibling = isNext ? sibling-&gt;firstChild() : sibling-&gt;lastChild();
</span><span class="lines">@@ -150,7 +146,7 @@
</span><span class="cx">                 sibling = isNext ? node-&gt;nextSibling() : node-&gt;previousSibling();
</span><span class="cx">         }
</span><span class="cx">         node = node-&gt;parentNode();
</span><del>-        if (!node || node == root())
</del><ins>+        if (!node || node == &amp;root())
</ins><span class="cx">             return nullptr;
</span><span class="cx">         short acceptNodeResult = acceptNode(node.get());
</span><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
</span><span class="lines">@@ -170,8 +166,8 @@
</span><span class="cx"> 
</span><span class="cx"> Node* TreeWalker::previousNode()
</span><span class="cx"> {
</span><del>-    RefPtr&lt;Node&gt; node = m_current;
-    while (node != root()) {
</del><ins>+    RefPtr&lt;Node&gt; node = m_current.ptr();
+    while (node != &amp;root()) {
</ins><span class="cx">         while (Node* previousSibling = node-&gt;previousSibling()) {
</span><span class="cx">             node = previousSibling;
</span><span class="cx">             short acceptNodeResult = acceptNode(node.get());
</span><span class="lines">@@ -184,11 +180,11 @@
</span><span class="cx">                     break;
</span><span class="cx">             }
</span><span class="cx">             if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) {
</span><del>-                m_current = node.release();
-                return m_current.get();
</del><ins>+                m_current = node.releaseNonNull();
+                return m_current.ptr();
</ins><span class="cx">             }
</span><span class="cx">         }
</span><del>-        if (node == root())
</del><ins>+        if (node == &amp;root())
</ins><span class="cx">             return nullptr;
</span><span class="cx">         ContainerNode* parent = node-&gt;parentNode();
</span><span class="cx">         if (!parent)
</span><span class="lines">@@ -196,28 +192,28 @@
</span><span class="cx">         node = parent;
</span><span class="cx">         short acceptNodeResult = acceptNode(node.get());
</span><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
</span><del>-            return setCurrent(WTFMove(node));
</del><ins>+            return setCurrent(node.releaseNonNull());
</ins><span class="cx">     }
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Node* TreeWalker::nextNode()
</span><span class="cx"> {
</span><del>-    RefPtr&lt;Node&gt; node = m_current;
</del><ins>+    RefPtr&lt;Node&gt; node = m_current.ptr();
</ins><span class="cx"> Children:
</span><span class="cx">     while (Node* firstChild = node-&gt;firstChild()) {
</span><span class="cx">         node = firstChild;
</span><span class="cx">         short acceptNodeResult = acceptNode(node.get());
</span><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
</span><del>-            return setCurrent(WTFMove(node));
</del><ins>+            return setCurrent(node.releaseNonNull());
</ins><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_REJECT)
</span><span class="cx">             break;
</span><span class="cx">     }
</span><del>-    while (Node* nextSibling = NodeTraversal::nextSkippingChildren(*node, root())) {
</del><ins>+    while (Node* nextSibling = NodeTraversal::nextSkippingChildren(*node, &amp;root())) {
</ins><span class="cx">         node = nextSibling;
</span><span class="cx">         short acceptNodeResult = acceptNode(node.get());
</span><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
</span><del>-            return setCurrent(WTFMove(node));
</del><ins>+            return setCurrent(node.releaseNonNull());
</ins><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_SKIP)
</span><span class="cx">             goto Children;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoredomTreeWalkerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TreeWalker.h (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TreeWalker.h        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/dom/TreeWalker.h        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -41,9 +41,11 @@
</span><span class="cx">             return adoptRef(*new TreeWalker(rootNode, whatToShow, WTFMove(filter)));
</span><span class="cx">         }                            
</span><span class="cx"> 
</span><del>-        Node* currentNode() const { return m_current.get(); }
-        void setCurrentNode(Node*, ExceptionCode&amp;);
</del><ins>+        Node&amp; currentNode() { return m_current.get(); }
+        const Node&amp; currentNode() const { return m_current.get(); }
</ins><span class="cx"> 
</span><ins>+        void setCurrentNode(Node&amp;);
+
</ins><span class="cx">         Node* parentNode();
</span><span class="cx">         Node* firstChild();
</span><span class="cx">         Node* lastChild();
</span><span class="lines">@@ -57,9 +59,9 @@
</span><span class="cx">         enum class SiblingTraversalType { Previous, Next };
</span><span class="cx">         template&lt;SiblingTraversalType&gt; Node* traverseSiblings();
</span><span class="cx">         
</span><del>-        Node* setCurrent(RefPtr&lt;Node&gt;&amp;&amp;);
</del><ins>+        Node* setCurrent(Ref&lt;Node&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><del>-        RefPtr&lt;Node&gt; m_current;
</del><ins>+        Ref&lt;Node&gt; m_current;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoredomTreeWalkeridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TreeWalker.idl (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TreeWalker.idl        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/dom/TreeWalker.idl        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
</span><span class="cx">     readonly attribute boolean expandEntityReferences;
</span><span class="cx"> #endif
</span><del>-    [SetterRaisesException] attribute Node currentNode;
</del><ins>+    attribute Node currentNode;
</ins><span class="cx"> 
</span><span class="cx">     Node parentNode();
</span><span class="cx">     Node firstChild();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAttachmentElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAttachmentElement.idl (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAttachmentElement.idl        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/html/HTMLAttachmentElement.idl        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -26,5 +26,5 @@
</span><span class="cx"> [
</span><span class="cx">     Conditional=ATTACHMENT_ELEMENT
</span><span class="cx"> ] interface HTMLAttachmentElement : HTMLElement {
</span><del>-    attribute File file;
</del><ins>+    attribute File? file;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.idl (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.idl        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/html/HTMLInputElement.idl        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx">     [Reflect] attribute DOMString dirName;
</span><span class="cx">     [Reflect] attribute boolean disabled;
</span><span class="cx">     readonly attribute HTMLFormElement form;
</span><del>-    attribute FileList files;
</del><ins>+    attribute FileList? files;
</ins><span class="cx">     attribute DOMString formAction;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: These should not use [TreatNullAs=LegacyNullString].
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.idl (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.idl        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/html/HTMLTableElement.idl        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -19,9 +19,9 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> interface HTMLTableElement : HTMLElement {
</span><del>-    [SetterRaisesException, StrictTypeChecking] attribute HTMLTableCaptionElement caption;
-    [SetterRaisesException, StrictTypeChecking] attribute HTMLTableSectionElement tHead;
-    [SetterRaisesException, StrictTypeChecking] attribute HTMLTableSectionElement tFoot;
</del><ins>+    [SetterRaisesException, StrictTypeChecking] attribute HTMLTableCaptionElement? caption;
+    [SetterRaisesException, StrictTypeChecking] attribute HTMLTableSectionElement? tHead;
+    [SetterRaisesException, StrictTypeChecking] attribute HTMLTableSectionElement? tFoot;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute HTMLCollection rows;
</span><span class="cx">     readonly attribute HTMLCollection tBodies;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackDataCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/DataCue.cpp (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/DataCue.cpp        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/html/track/DataCue.cpp        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -36,11 +36,11 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-DataCue::DataCue(ScriptExecutionContext&amp; context, const MediaTime&amp; start, const MediaTime&amp; end, ArrayBuffer* data, const String&amp; type, ExceptionCode&amp; ec)
</del><ins>+DataCue::DataCue(ScriptExecutionContext&amp; context, const MediaTime&amp; start, const MediaTime&amp; end, ArrayBuffer&amp; data, const String&amp; type)
</ins><span class="cx">     : TextTrackCue(context, start, end)
</span><span class="cx">     , m_type(type)
</span><span class="cx"> {
</span><del>-    setData(data, ec);
</del><ins>+    setData(data);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> DataCue::DataCue(ScriptExecutionContext&amp; context, const MediaTime&amp; start, const MediaTime&amp; end, const void* data, unsigned length)
</span><span class="lines">@@ -88,13 +88,8 @@
</span><span class="cx">     return ArrayBuffer::create(*m_data);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DataCue::setData(ArrayBuffer* data, ExceptionCode&amp; ec)
</del><ins>+void DataCue::setData(ArrayBuffer&amp; data)
</ins><span class="cx"> {
</span><del>-    if (!data) {
-        ec = TypeError;
-        return;
-    }
-
</del><span class="cx"> #if ENABLE(DATACUE_VALUE)
</span><span class="cx">     m_platformValue = nullptr;
</span><span class="cx">     if (m_value)
</span><span class="lines">@@ -102,7 +97,7 @@
</span><span class="cx">     m_value = JSC::JSValue();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    m_data = ArrayBuffer::create(*data);
</del><ins>+    m_data = ArrayBuffer::create(data);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> DataCue* toDataCue(TextTrackCue* cue)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackDataCueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/DataCue.h (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/DataCue.h        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/html/track/DataCue.h        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -45,9 +45,9 @@
</span><span class="cx"> 
</span><span class="cx"> class DataCue final : public TextTrackCue {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, const MediaTime&amp; start, const MediaTime&amp; end, ArrayBuffer* data, ExceptionCode&amp; ec)
</del><ins>+    static Ref&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, const MediaTime&amp; start, const MediaTime&amp; end, ArrayBuffer&amp; data)
</ins><span class="cx">     {
</span><del>-        return adoptRef(*new DataCue(context, start, end, data, emptyString(), ec));
</del><ins>+        return adoptRef(*new DataCue(context, start, end, data, emptyString()));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     static Ref&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, const MediaTime&amp; start, const MediaTime&amp; end, const void* data, unsigned length)
</span><span class="lines">@@ -55,9 +55,9 @@
</span><span class="cx">         return adoptRef(*new DataCue(context, start, end, data, length));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    static Ref&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, const MediaTime&amp; start, const MediaTime&amp; end, ArrayBuffer* data, const String&amp; type, ExceptionCode&amp; ec)
</del><ins>+    static Ref&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, const MediaTime&amp; start, const MediaTime&amp; end, ArrayBuffer&amp; data, const String&amp; type)
</ins><span class="cx">     {
</span><del>-        return adoptRef(*new DataCue(context, start, end, data, type, ec));
</del><ins>+        return adoptRef(*new DataCue(context, start, end, data, type));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATACUE_VALUE)
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx">     CueType cueType() const override { return Data; }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ArrayBuffer&gt; data() const;
</span><del>-    void setData(ArrayBuffer*, ExceptionCode&amp;);
</del><ins>+    void setData(ArrayBuffer&amp;);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(DATACUE_VALUE)
</span><span class="cx">     const SerializedPlatformRepresentation* platformValue() const { return m_platformValue.get(); }
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">     bool doesExtendCue(const TextTrackCue&amp;) const override;
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><del>-    DataCue(ScriptExecutionContext&amp;, const MediaTime&amp; start, const MediaTime&amp; end, ArrayBuffer*, const String&amp;, ExceptionCode&amp;);
</del><ins>+    DataCue(ScriptExecutionContext&amp;, const MediaTime&amp; start, const MediaTime&amp; end, ArrayBuffer&amp;, const String&amp;);
</ins><span class="cx">     DataCue(ScriptExecutionContext&amp;, const MediaTime&amp; start, const MediaTime&amp; end, const void*, unsigned);
</span><span class="cx"> #if ENABLE(DATACUE_VALUE)
</span><span class="cx">     DataCue(ScriptExecutionContext&amp;, const MediaTime&amp; start, const MediaTime&amp; end, RefPtr&lt;SerializedPlatformRepresentation&gt;&amp;&amp;, const String&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackDataCueidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/DataCue.idl (200315 => 200316)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/DataCue.idl        2016-05-02 00:32:56 UTC (rev 200315)
+++ trunk/Source/WebCore/html/track/DataCue.idl        2016-05-02 04:21:19 UTC (rev 200316)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> #endif
</span><span class="cx">     ConstructorRaisesException,
</span><span class="cx"> ] interface DataCue : TextTrackCue {
</span><del>-    [SetterRaisesException] attribute ArrayBuffer data;
</del><ins>+    attribute ArrayBuffer data;
</ins><span class="cx"> 
</span><span class="cx"> #if defined(ENABLE_DATACUE_VALUE) &amp;&amp; ENABLE_DATACUE_VALUE
</span><span class="cx">     [CustomGetter, CustomSetter] attribute any value;
</span></span></pre>
</div>
</div>

</body>
</html>