|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id=731419 |
|
5 --> |
|
6 <head> |
|
7 <title>Test for Bug 731419 - Draw an ostensibly discarded image to a canvas</title> |
|
8 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> |
|
10 </head> |
|
11 |
|
12 <body> |
|
13 |
|
14 <!-- |
|
15 Load an image in an iframe, then draw that image to a canvas. Then set the |
|
16 iframe to display:none (after bug 731419, this causes the image's decoded |
|
17 data to be discarded) and draw the image to a canvas again. We should draw |
|
18 the same image data both times. |
|
19 --> |
|
20 |
|
21 <script> |
|
22 |
|
23 SimpleTest.waitForExplicitFinish(); |
|
24 |
|
25 var data1; |
|
26 |
|
27 function drawImage() |
|
28 { |
|
29 var canvas = document.getElementById('canvas'); |
|
30 var ctx = canvas.getContext('2d'); |
|
31 var iframeDoc = document.getElementById('iframe').contentDocument; |
|
32 |
|
33 ctx.clearRect(0, 0, canvas.height, canvas.width); |
|
34 ctx.drawImage(iframeDoc.getElementById('image'), 0, 0); |
|
35 return canvas.toDataURL(); |
|
36 } |
|
37 |
|
38 function iframeLoad() |
|
39 { |
|
40 data1 = drawImage(); |
|
41 document.getElementById('iframe').style.display = 'none'; |
|
42 |
|
43 // Spin the event loop a few times to give the image in the display:none |
|
44 // iframe a chance to be discarded. |
|
45 SimpleTest.executeSoon(function() { |
|
46 SimpleTest.executeSoon(function() { |
|
47 SimpleTest.executeSoon(function() { |
|
48 step2(); |
|
49 }); |
|
50 }); |
|
51 }); |
|
52 } |
|
53 |
|
54 function step2() |
|
55 { |
|
56 is(drawImage(), data1, "Same image before and after iframe display:none"); |
|
57 SimpleTest.finish(); |
|
58 } |
|
59 |
|
60 </script> |
|
61 |
|
62 <canvas id='canvas'></canvas> |
|
63 |
|
64 <iframe id='iframe' onload='iframeLoad()' src='data:text/html,<img id="image" |
|
65 src="data:image/png;base64, |
|
66 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADRElEQVQ4EQXBTWgcZQCA4ff7ZmZ3 |
|
67 NpvNZLObTWpCuoZGIxWJplAKbVUKavUiHrQHaRG1XrV4SNuD4MFcRDwUoR4qEq2gFUlBEWmtppYi |
|
68 acSmMakxtfkx/5tNdmd35/8bn0cAzJ7IXwKGH/q8NDF48vy+7vk/3tzVXDs8nj9cAAiDcD70gwVi |
|
69 vvvr4tsjAAAAAmD2RD4GOL34wge21XHsnHWh9/aUjX1pC4C1UpXrP08zN7vMvvujPx3P/PD+0VH3 |
|
70 BoAcTspXAbK9iuGe78+csy70ZnsVvh+xWQ8p1QI8dNK7CiT9CmeO28/4ZsuVX9/IvQwgmzLaU9LS |
|
71 AGh/3KJ5jw6A6ynyL7Xx7UCORiwQGRN0g7C4m4FX9poNV35681ShU6ZbxKDRLJVuZQl9RdSQRB4c |
|
72 OtDGoQNtPGHBuh0SaAa+ZvLjHYt8fwfZrpTl2cFp2ZwVDyQzSgLgVIndGN/tIP/c61y/WWb14gaV |
|
73 asTWioPSDabnfCqVkK7BHKHtPK0n06oFGQHgewJtbw8AujGNkYTNpTJxbYfaygqR0piYkaRkhMya |
|
74 eI2oX9dTQRIFmtrmz7EGpS9vESZjAN7tfo/UL2PouoZwbfxIo9jaoLWlzI7jEPmhLjVEbXs5IPAE |
|
75 jx5M0Z5RZDJwqjCENFN8XBtmOP0FXq1O6NR5snsRtsv4C+voCdHQpcfVtTn/xUKXTrMlyfck6BCC |
|
76 a02fkDZDqirF5JVrRA8ewagu8NbADN6az9btMoTqjnasKDTHjp5PSM3I5DQy7UliZbCz7bCwFDD/ |
|
77 b52h3BCviVHOHv2bvmydyvwOM5MSmch9Ji4/SxMNcaNJTw707zdJmBqeo+G5BuO/V6AzQ5Oo01MI |
|
78 KBaTOOis3rPZrKeqrbn2hwXA10fY7zvicqeZKPQ8YpKxJCgIpEQXisBVhG6MYcQ0pGJp2XWnSpx8 |
|
79 52o0ogF8c5/ltMlGIlYHo0qQrq9HxHWFvx3RqCoCFzwn4L+tiIVV5Y5MhWc/mlDnATQAgMkynbMb |
|
80 opoN4z2hUAlPBdpO6FNp+JTtkPVaHE7NYX94K/xqrBT/BvwDIAAAgALQAfT1aWJwtyYea9VEXoAo |
|
81 RfHGYhTfvRfF48BdYB3YAPgfnOuE39kFlREAAAAASUVORK5CYII=">'></iframe> |
|
82 |
|
83 </body> |
|
84 </html> |
|
85 |