<!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>[209005] 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/209005">209005</a></dd>
<dt>Author</dt> <dd>bfulgham@apple.com</dd>
<dt>Date</dt> <dd>2016-11-28 12:27:39 -0800 (Mon, 28 Nov 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>ImageData does not match specification
https://bugs.webkit.org/show_bug.cgi?id=164663

Reviewed by Simon Fraser.

The W3C specification https://www.w3.org/TR/2dcontext/ clearly states that
the width and height attributes of the ImageData type should be unsigned.
Our current implementation has signed integer values.

In practice, we have enforced the unsigned requirement by throwing a TypeError
if you attempt to construct an ImageData with negative width or height.

This change simply updates the IDL and impelemntation to match the spec.

Test coverage is already provided by fast/canvas/canvas-imageData.html

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readTerminal): Serialize as uint32_t values.
* html/ImageData.idl: Revise width and height to be unsigned long.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsSerializedScriptValuecpp">trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlImageDataidl">trunk/Source/WebCore/html/ImageData.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209004 => 209005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-28 20:18:01 UTC (rev 209004)
+++ trunk/Source/WebCore/ChangeLog        2016-11-28 20:27:39 UTC (rev 209005)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2016-11-28  Brent Fulgham  &lt;bfulgham@apple.com&gt;
+
+        ImageData does not match specification
+        https://bugs.webkit.org/show_bug.cgi?id=164663
+
+        Reviewed by Simon Fraser.
+
+        The W3C specification https://www.w3.org/TR/2dcontext/ clearly states that
+        the width and height attributes of the ImageData type should be unsigned.
+        Our current implementation has signed integer values.
+
+        In practice, we have enforced the unsigned requirement by throwing a TypeError
+        if you attempt to construct an ImageData with negative width or height.
+
+        This change simply updates the IDL and impelemntation to match the spec.
+
+        Test coverage is already provided by fast/canvas/canvas-imageData.html
+
+        * bindings/js/SerializedScriptValue.cpp:
+        (WebCore::CloneDeserializer::readTerminal): Serialize as uint32_t values.
+        * html/ImageData.idl: Revise width and height to be unsigned long.
+
</ins><span class="cx"> 2016-11-28  Dave Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [CSS Parser] flex-basis should be pixel units not percentages.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsSerializedScriptValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp (209004 => 209005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2016-11-28 20:18:01 UTC (rev 209004)
+++ trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2016-11-28 20:27:39 UTC (rev 209005)
</span><span class="lines">@@ -2264,10 +2264,10 @@
</span><span class="cx">             return getJSValue(FileList::create(WTFMove(files)).get());
</span><span class="cx">         }
</span><span class="cx">         case ImageDataTag: {
</span><del>-            int32_t width;
</del><ins>+            uint32_t width;
</ins><span class="cx">             if (!read(width))
</span><span class="cx">                 return JSValue();
</span><del>-            int32_t height;
</del><ins>+            uint32_t height;
</ins><span class="cx">             if (!read(height))
</span><span class="cx">                 return JSValue();
</span><span class="cx">             uint32_t length;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlImageDataidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ImageData.idl (209004 => 209005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ImageData.idl        2016-11-28 20:18:01 UTC (rev 209004)
+++ trunk/Source/WebCore/html/ImageData.idl        2016-11-28 20:27:39 UTC (rev 209005)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008-2009, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="cx">     ImplementationLacksVTable,
</span><span class="cx"> ] interface ImageData {
</span><del>-    readonly attribute long width;
-    readonly attribute long height;
</del><ins>+    readonly attribute unsigned long width;
+    readonly attribute unsigned long height;
</ins><span class="cx">     readonly attribute Uint8ClampedArray data;
</span><span class="cx"> };
</span></span></pre>
</div>
</div>

</body>
</html>