<!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>[182767] trunk/LayoutTests</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/182767">182767</a></dd>
<dt>Author</dt> <dd>said@apple.com</dd>
<dt>Date</dt> <dd>2015-04-13 16:51:36 -0700 (Mon, 13 Apr 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Fix LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image.html on all bots
following http://trac.webkit.org/changeset/182750.
Reviewed by Daniel Bates.
* http/tests/canvas/canvas-tainted-after-draw-image-expected.txt:
* http/tests/canvas/canvas-tainted-after-draw-image.html:
Set window.jsTestIsAsync true and call finishJSTest() to make the test
asynchronous, so the "TEST COMPLETE" message will be output after all the
test messages. Also delete the synchronous tests for data url image and
same-domain image since they can't be reliably tested.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestshttptestscanvascanvastaintedafterdrawimageexpectedtxt">trunk/LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestscanvascanvastaintedafterdrawimagehtml">trunk/LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (182766 => 182767)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-04-13 23:41:17 UTC (rev 182766)
+++ trunk/LayoutTests/ChangeLog        2015-04-13 23:51:36 UTC (rev 182767)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2015-04-13 Said Abou-Hallawa <sabouhallawa@apple.com>
+
+ Fix LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image.html on all bots
+ following http://trac.webkit.org/changeset/182750.
+
+ Reviewed by Daniel Bates.
+
+ * http/tests/canvas/canvas-tainted-after-draw-image-expected.txt:
+ * http/tests/canvas/canvas-tainted-after-draw-image.html:
+ Set window.jsTestIsAsync true and call finishJSTest() to make the test
+ asynchronous, so the "TEST COMPLETE" message will be output after all the
+ test messages. Also delete the synchronous tests for data url image and
+ same-domain image since they can't be reliably tested.
+
</ins><span class="cx"> 2015-04-13 Simon Fraser <simon.fraser@apple.com>
</span><span class="cx">
</span><span class="cx"> Fix compositing/geometry/fixed-transformed.html on Mavericks.
</span></span></pre></div>
<a id="trunkLayoutTestshttptestscanvascanvastaintedafterdrawimageexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image-expected.txt (182766 => 182767)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image-expected.txt        2015-04-13 23:41:17 UTC (rev 182766)
+++ trunk/LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image-expected.txt        2015-04-13 23:51:36 UTC (rev 182767)
</span><span class="lines">@@ -1,10 +1,8 @@
</span><del>-CONSOLE MESSAGE: line 60: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
</del><ins>+CONSOLE MESSAGE: line 58: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
</ins><span class="cx"> Tainting works correctly.
</span><span class="cx"> Tainting works correctly.
</span><span class="cx"> Tainting works correctly.
</span><span class="cx"> Tainting works correctly.
</span><del>-Tainting works correctly.
-Tainting works correctly.
</del><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestshttptestscanvascanvastaintedafterdrawimagehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image.html (182766 => 182767)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image.html        2015-04-13 23:41:17 UTC (rev 182766)
+++ trunk/LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image.html        2015-04-13 23:51:36 UTC (rev 182767)
</span><span class="lines">@@ -24,14 +24,12 @@
</span><span class="cx"> if (typeof incrementLoadedImagesCount.counter == 'undefined')
</span><span class="cx"> incrementLoadedImagesCount.counter = 0;
</span><span class="cx">
</span><del>- if (++incrementLoadedImagesCount.counter == 6) {
- if (window.testRunner)
- testRunner.notifyDone();
- }
</del><ins>+ if (++incrementLoadedImagesCount.counter == 4)
+ finishJSTest();
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- function drawAndGetImageDataSynchronous(id, color, imageSrc, shouldTaint) {
- var context = drawCanvasBackground(id, color);
</del><ins>+ function drawAndGetImageDataSynchronous(id, imageSrc, shouldTaint) {
+ var context = drawCanvasBackground(id, '#f00'); // red
</ins><span class="cx"> var image = new Image();
</span><span class="cx"> image.src = imageSrc;
</span><span class="cx"> context.drawImage(image, 0, 0);
</span><span class="lines">@@ -51,7 +49,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function drawAndGetImageDataAsynchronous(canvasId, imageSrc, shouldTaint) {
</span><del>- var context = drawCanvasBackground(canvasId, '#f00');
</del><ins>+ var context = drawCanvasBackground(canvasId, '#f00'); // red
</ins><span class="cx"> var image = new Image();
</span><span class="cx">
</span><span class="cx"> image.onload = function() {
</span><span class="lines">@@ -69,19 +67,19 @@
</span><span class="cx"> image.src = imageSrc;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (window.testRunner) {
- testRunner.dumpAsText();
- testRunner.waitUntilDone();
- }
-
- drawCanvasBackground("sourceCanvas", '#0f0');
-
- drawAndGetImageDataSynchronous("dataURLSynchronousCanvas", sourceCanvas.toDataURL(), false);
- drawAndGetImageDataAsynchronous("dataURLAsynchronousCanvas", sourceCanvas.toDataURL(), false);
</del><ins>+ window.jsTestIsAsync = true;
</ins><span class="cx">
</span><del>- drawAndGetImageDataSynchronous("sameDomainSynchronousCanvas", "http://127.0.0.1:8000/canvas/resources/100x100-lime-rect.svg", false);
</del><ins>+ drawCanvasBackground("sourceCanvas", '#0f0'); // green
+
+ // The dataURL and same-domain images should not be tainted. We should always be
+ // able to get the image data regardless whether it is drawn or not. But because
+ // we ask for the image data right after we load the image, we do not know the
+ // pixels values. So the synchronous case can't be tested.
+ drawAndGetImageDataAsynchronous("dataURLAsynchronousCanvas", sourceCanvas.toDataURL(), false);
</ins><span class="cx"> drawAndGetImageDataAsynchronous("sameDomainAsynchronousCanvas", "http://127.0.0.1:8000/canvas/resources/100x100-lime-rect.svg", false);
</span><span class="cx">
</span><ins>+ // Cross domain image load should taint the canvas. The image should not be drawn
+ // so the synchronous case can be tested since we know the canvas pixel value.
</ins><span class="cx"> drawAndGetImageDataSynchronous("crossDomainSynchronousCanvas", "http://localhost:8000/canvas/resources/100x100-lime-rect.svg", true);
</span><span class="cx"> drawAndGetImageDataAsynchronous("crossDomainAsynchronousCanvas", "http://localhost:8000/canvas/resources/100x100-lime-rect.svg", true);
</span><span class="cx"> </script>
</span></span></pre>
</div>
</div>
</body>
</html>