<!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>[199371] 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/199371">199371</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2016-04-12 10:08:31 -0700 (Tue, 12 Apr 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove UsePointersEvenForNonNullableObjectArguments from SVG lists
https://bugs.webkit.org/show_bug.cgi?id=156494

Reviewed by Chris Dumez.

* bindings/scripts/CodeGenerator.pm:
(ShouldPassWrapperByReference): For now, don't do this for any tear-off classes.
This includes the items stored in most SVG list classes.

* svg/SVGLengthList.idl: Removed UsePointersEvenForNonNullableObjectArguments.
* svg/SVGNumberList.idl: Ditto.
* svg/SVGPointList.idl: Ditto.
* svg/SVGTransformList.idl: Ditto.

* svg/SVGPathSegList.idl: Removed UsePointersEvenForNonNullableObjectArguments.
Marked the arguments nullable, and added FIXMEs about returning later since they
don't really need to be nullable. But fixing this requires some reworking of the
SVG list template and it's not urgent at this time. Preserves behavior where we
get an exception when passing null, it's just an SVG exception instead of TypeError.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorpm">trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLengthListidl">trunk/Source/WebCore/svg/SVGLengthList.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGNumberListidl">trunk/Source/WebCore/svg/SVGNumberList.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPathSegListidl">trunk/Source/WebCore/svg/SVGPathSegList.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPointListidl">trunk/Source/WebCore/svg/SVGPointList.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTransformListidl">trunk/Source/WebCore/svg/SVGTransformList.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (199370 => 199371)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-04-12 16:58:29 UTC (rev 199370)
+++ trunk/Source/WebCore/ChangeLog        2016-04-12 17:08:31 UTC (rev 199371)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2016-04-12  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove UsePointersEvenForNonNullableObjectArguments from SVG lists
+        https://bugs.webkit.org/show_bug.cgi?id=156494
+
+        Reviewed by Chris Dumez.
+
+        * bindings/scripts/CodeGenerator.pm:
+        (ShouldPassWrapperByReference): For now, don't do this for any tear-off classes.
+        This includes the items stored in most SVG list classes.
+
+        * svg/SVGLengthList.idl: Removed UsePointersEvenForNonNullableObjectArguments.
+        * svg/SVGNumberList.idl: Ditto.
+        * svg/SVGPointList.idl: Ditto.
+        * svg/SVGTransformList.idl: Ditto.
+
+        * svg/SVGPathSegList.idl: Removed UsePointersEvenForNonNullableObjectArguments.
+        Marked the arguments nullable, and added FIXMEs about returning later since they
+        don't really need to be nullable. But fixing this requires some reworking of the
+        SVG list template and it's not urgent at this time. Preserves behavior where we
+        get an exception when passing null, it's just an SVG exception instead of TypeError.
+
</ins><span class="cx"> 2016-04-12  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Lazily update tokens in DOMTokenList when the associated attribute value changes
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm (199370 => 199371)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm        2016-04-12 16:58:29 UTC (rev 199370)
+++ trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm        2016-04-12 17:08:31 UTC (rev 199371)
</span><span class="lines">@@ -896,6 +896,7 @@
</span><span class="cx">     return 0 if $parameter-&gt;isNullable;
</span><span class="cx">     return 0 if $parameter-&gt;isOptional and $parameter-&gt;extendedAttributes-&gt;{&quot;Default&quot;} and $parameter-&gt;extendedAttributes-&gt;{&quot;Default&quot;} eq &quot;Undefined&quot;;
</span><span class="cx">     return 0 if !$object-&gt;IsWrapperType($parameter-&gt;type) &amp;&amp; !$object-&gt;IsTypedArrayType($parameter-&gt;type);
</span><ins>+    return 0 if $object-&gt;IsSVGTypeNeedingTearOff($parameter-&gt;type);
</ins><span class="cx">     return 0 if $interface-&gt;extendedAttributes-&gt;{&quot;UsePointersEvenForNonNullableObjectArguments&quot;};
</span><span class="cx">     return 1;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLengthListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLengthList.idl (199370 => 199371)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLengthList.idl        2016-04-12 16:58:29 UTC (rev 199370)
+++ trunk/Source/WebCore/svg/SVGLengthList.idl        2016-04-12 17:08:31 UTC (rev 199371)
</span><span class="lines">@@ -23,9 +23,8 @@
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><del>-[
-    UsePointersEvenForNonNullableObjectArguments,
-] interface SVGLengthList { 
</del><ins>+
+interface SVGLengthList {
</ins><span class="cx">     readonly attribute unsigned long numberOfItems;
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void clear();
</span><span class="lines">@@ -36,4 +35,3 @@
</span><span class="cx">     [StrictTypeChecking, RaisesException] SVGLength removeItem(unsigned long index);
</span><span class="cx">     [StrictTypeChecking, RaisesException] SVGLength appendItem(SVGLength item);
</span><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCoresvgSVGNumberListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGNumberList.idl (199370 => 199371)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGNumberList.idl        2016-04-12 16:58:29 UTC (rev 199370)
+++ trunk/Source/WebCore/svg/SVGNumberList.idl        2016-04-12 17:08:31 UTC (rev 199371)
</span><span class="lines">@@ -23,9 +23,8 @@
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><del>-[
-    UsePointersEvenForNonNullableObjectArguments,
-] interface SVGNumberList {
</del><ins>+
+interface SVGNumberList {
</ins><span class="cx">     readonly attribute unsigned long numberOfItems;
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void clear();
</span><span class="lines">@@ -36,4 +35,3 @@
</span><span class="cx">     [StrictTypeChecking, RaisesException] SVGNumber removeItem(unsigned long index);
</span><span class="cx">     [StrictTypeChecking, RaisesException] SVGNumber appendItem(SVGNumber item);
</span><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPathSegListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPathSegList.idl (199370 => 199371)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPathSegList.idl        2016-04-12 16:58:29 UTC (rev 199370)
+++ trunk/Source/WebCore/svg/SVGPathSegList.idl        2016-04-12 17:08:31 UTC (rev 199371)
</span><span class="lines">@@ -23,17 +23,15 @@
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><del>-[
-    UsePointersEvenForNonNullableObjectArguments,
-] interface SVGPathSegList {
</del><ins>+
+interface SVGPathSegList {
</ins><span class="cx">     readonly attribute unsigned long numberOfItems;
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void clear();
</span><del>-    [StrictTypeChecking, RaisesException] SVGPathSeg initialize(SVGPathSeg newItem);
</del><ins>+    [StrictTypeChecking, RaisesException] SVGPathSeg initialize(SVGPathSeg? newItem); // FIXME: Should not be nullable.
</ins><span class="cx">     [StrictTypeChecking, RaisesException] SVGPathSeg getItem(unsigned long index);
</span><del>-    [StrictTypeChecking, RaisesException] SVGPathSeg insertItemBefore(SVGPathSeg newItem, unsigned long index);
-    [StrictTypeChecking, RaisesException] SVGPathSeg replaceItem(SVGPathSeg newItem, unsigned long index);
</del><ins>+    [StrictTypeChecking, RaisesException] SVGPathSeg insertItemBefore(SVGPathSeg? newItem, unsigned long index); // FIXME: Should not be nullable.
+    [StrictTypeChecking, RaisesException] SVGPathSeg replaceItem(SVGPathSeg? newItem, unsigned long index); // FIXME: Should not be nullable.
</ins><span class="cx">     [StrictTypeChecking, RaisesException] SVGPathSeg removeItem(unsigned long index);
</span><del>-    [StrictTypeChecking, RaisesException] SVGPathSeg appendItem(SVGPathSeg newItem);
</del><ins>+    [StrictTypeChecking, RaisesException] SVGPathSeg appendItem(SVGPathSeg? newItem); // FIXME: Should not be nullable.
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPointListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPointList.idl (199370 => 199371)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPointList.idl        2016-04-12 16:58:29 UTC (rev 199370)
+++ trunk/Source/WebCore/svg/SVGPointList.idl        2016-04-12 17:08:31 UTC (rev 199371)
</span><span class="lines">@@ -22,9 +22,8 @@
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><del>-[
-    UsePointersEvenForNonNullableObjectArguments,
-] interface SVGPointList {
</del><ins>+
+interface SVGPointList {
</ins><span class="cx">     readonly attribute unsigned long numberOfItems;
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void clear();
</span><span class="lines">@@ -35,4 +34,3 @@
</span><span class="cx">     [StrictTypeChecking, RaisesException] SVGPoint removeItem(unsigned long index);
</span><span class="cx">     [StrictTypeChecking, RaisesException] SVGPoint appendItem(SVGPoint item);
</span><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTransformListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTransformList.idl (199370 => 199371)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTransformList.idl        2016-04-12 16:58:29 UTC (rev 199370)
+++ trunk/Source/WebCore/svg/SVGTransformList.idl        2016-04-12 17:08:31 UTC (rev 199371)
</span><span class="lines">@@ -23,9 +23,8 @@
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
</span><span class="cx">  */
</span><del>-[
-    UsePointersEvenForNonNullableObjectArguments,
-] interface SVGTransformList {
</del><ins>+
+interface SVGTransformList {
</ins><span class="cx">     readonly attribute unsigned long numberOfItems;
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void clear();
</span><span class="lines">@@ -40,4 +39,3 @@
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] SVGTransform consolidate();
</span><span class="cx"> };
</span><del>-
</del></span></pre>
</div>
</div>

</body>
</html>