1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/image/test/mochitest/test_drawDiscardedImage.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,85 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=731419 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 731419 - Draw an ostensibly discarded image to a canvas</title> 1.11 + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.12 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 1.13 +</head> 1.14 + 1.15 +<body> 1.16 + 1.17 +<!-- 1.18 + Load an image in an iframe, then draw that image to a canvas. Then set the 1.19 + iframe to display:none (after bug 731419, this causes the image's decoded 1.20 + data to be discarded) and draw the image to a canvas again. We should draw 1.21 + the same image data both times. 1.22 +--> 1.23 + 1.24 +<script> 1.25 + 1.26 +SimpleTest.waitForExplicitFinish(); 1.27 + 1.28 +var data1; 1.29 + 1.30 +function drawImage() 1.31 +{ 1.32 + var canvas = document.getElementById('canvas'); 1.33 + var ctx = canvas.getContext('2d'); 1.34 + var iframeDoc = document.getElementById('iframe').contentDocument; 1.35 + 1.36 + ctx.clearRect(0, 0, canvas.height, canvas.width); 1.37 + ctx.drawImage(iframeDoc.getElementById('image'), 0, 0); 1.38 + return canvas.toDataURL(); 1.39 +} 1.40 + 1.41 +function iframeLoad() 1.42 +{ 1.43 + data1 = drawImage(); 1.44 + document.getElementById('iframe').style.display = 'none'; 1.45 + 1.46 + // Spin the event loop a few times to give the image in the display:none 1.47 + // iframe a chance to be discarded. 1.48 + SimpleTest.executeSoon(function() { 1.49 + SimpleTest.executeSoon(function() { 1.50 + SimpleTest.executeSoon(function() { 1.51 + step2(); 1.52 + }); 1.53 + }); 1.54 + }); 1.55 +} 1.56 + 1.57 +function step2() 1.58 +{ 1.59 + is(drawImage(), data1, "Same image before and after iframe display:none"); 1.60 + SimpleTest.finish(); 1.61 +} 1.62 + 1.63 +</script> 1.64 + 1.65 +<canvas id='canvas'></canvas> 1.66 + 1.67 +<iframe id='iframe' onload='iframeLoad()' src='data:text/html,<img id="image" 1.68 +src="data:image/png;base64, 1.69 +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADRElEQVQ4EQXBTWgcZQCA4ff7ZmZ3 1.70 +NpvNZLObTWpCuoZGIxWJplAKbVUKavUiHrQHaRG1XrV4SNuD4MFcRDwUoR4qEq2gFUlBEWmtppYi 1.71 +acSmMakxtfkx/5tNdmd35/8bn0cAzJ7IXwKGH/q8NDF48vy+7vk/3tzVXDs8nj9cAAiDcD70gwVi 1.72 +vvvr4tsjAAAAAmD2RD4GOL34wge21XHsnHWh9/aUjX1pC4C1UpXrP08zN7vMvvujPx3P/PD+0VH3 1.73 +BoAcTspXAbK9iuGe78+csy70ZnsVvh+xWQ8p1QI8dNK7CiT9CmeO28/4ZsuVX9/IvQwgmzLaU9LS 1.74 +AGh/3KJ5jw6A6ynyL7Xx7UCORiwQGRN0g7C4m4FX9poNV35681ShU6ZbxKDRLJVuZQl9RdSQRB4c 1.75 +OtDGoQNtPGHBuh0SaAa+ZvLjHYt8fwfZrpTl2cFp2ZwVDyQzSgLgVIndGN/tIP/c61y/WWb14gaV 1.76 +asTWioPSDabnfCqVkK7BHKHtPK0n06oFGQHgewJtbw8AujGNkYTNpTJxbYfaygqR0piYkaRkhMya 1.77 +eI2oX9dTQRIFmtrmz7EGpS9vESZjAN7tfo/UL2PouoZwbfxIo9jaoLWlzI7jEPmhLjVEbXs5IPAE 1.78 +jx5M0Z5RZDJwqjCENFN8XBtmOP0FXq1O6NR5snsRtsv4C+voCdHQpcfVtTn/xUKXTrMlyfck6BCC 1.79 +a02fkDZDqirF5JVrRA8ewagu8NbADN6az9btMoTqjnasKDTHjp5PSM3I5DQy7UliZbCz7bCwFDD/ 1.80 +b52h3BCviVHOHv2bvmydyvwOM5MSmch9Ji4/SxMNcaNJTw707zdJmBqeo+G5BuO/V6AzQ5Oo01MI 1.81 +KBaTOOis3rPZrKeqrbn2hwXA10fY7zvicqeZKPQ8YpKxJCgIpEQXisBVhG6MYcQ0pGJp2XWnSpx8 1.82 +52o0ogF8c5/ltMlGIlYHo0qQrq9HxHWFvx3RqCoCFzwn4L+tiIVV5Y5MhWc/mlDnATQAgMkynbMb 1.83 +opoN4z2hUAlPBdpO6FNp+JTtkPVaHE7NYX94K/xqrBT/BvwDIAAAgALQAfT1aWJwtyYea9VEXoAo 1.84 +RfHGYhTfvRfF48BdYB3YAPgfnOuE39kFlREAAAAASUVORK5CYII=">'></iframe> 1.85 + 1.86 +</body> 1.87 +</html> 1.88 +