| OLD | NEW | 
|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> | 
| 2 <html> | 2 <html> | 
| 3 <head> | 3 <head> | 
| 4   <script src="../../resources/js-test.js"></script> | 4 <script src="../../resources/testharness.js"></script> | 
|  | 5 <script src="../../resources/testharnessreport.js"></script> | 
| 5 </head> | 6 </head> | 
| 6 <body> | 7 <body> | 
| 7 <script> | 8 <script> | 
| 8 if (window.testRunner) { |  | 
| 9     testRunner.dumpAsText(); |  | 
| 10     testRunner.waitUntilDone(); |  | 
| 11 } |  | 
| 12 |  | 
| 13 var barrier = 2; | 9 var barrier = 2; | 
| 14 function frameLoaded() | 10 function frameLoaded() | 
| 15 { | 11 { | 
| 16     barrier--; | 12     barrier--; | 
| 17     if (barrier == 0) | 13     if (barrier == 0) | 
| 18         runTest(); | 14         runTest(); | 
| 19 } | 15 } | 
| 20 | 16 | 
| 21 function runTest() | 17 function runTest() | 
| 22 { | 18 { | 
| 23     debug("check if re-parenting canvas keeps its context.") | 19     test(function(t) { | 
| 24     canvasTest(document.getElementById("frame1"), true); | 20         canvasTest(document.getElementById("frame1"), true); | 
| 25     debug("check if detaching canvas loses its context.") | 21     }, 'check if re-parenting canvas keeps its context.'); | 
| 26     canvasTest(document.getElementById("frame2"), false); |  | 
| 27 | 22 | 
| 28     if (window.testRunner) | 23     test(function(t) { | 
| 29         testRunner.notifyDone(); | 24         canvasTest(document.getElementById("frame2"), false); | 
|  | 25     }, 'check if detaching canvas loses its context.'); | 
| 30 } | 26 } | 
| 31 | 27 | 
| 32 var data; | 28 var data; | 
| 33 function canvasTest(frame, adoptCanvas) | 29 function canvasTest(frame, adoptCanvas) | 
| 34 { | 30 { | 
| 35     var parent = document.getElementById("parent"); | 31     var parent = document.getElementById("parent"); | 
| 36     var canvas = frame.contentDocument.getElementById('mycanvas'); | 32     var canvas = frame.contentDocument.getElementById('mycanvas'); | 
| 37     var ctx = canvas.getContext('2d'); | 33     var ctx = canvas.getContext('2d'); | 
| 38 | 34 | 
| 39     var imageData; | 35     var imageData; | 
| 40     imageData = ctx.getImageData(100, 100, 1, 1); | 36     imageData = ctx.getImageData(100, 100, 1, 1); | 
| 41     data = imageData.data; | 37     data = imageData.data; | 
| 42     shouldBe('data[0]', '255'); | 38     assert_equals(data[0], 255); | 
| 43     shouldBe('data[1]', '0'); | 39     assert_equals(data[1], 0); | 
| 44     shouldBe('data[2]', '0'); | 40     assert_equals(data[2], 0); | 
| 45 | 41 | 
| 46     if (adoptCanvas) | 42     if (adoptCanvas) | 
| 47         parent.appendChild(canvas); | 43         parent.appendChild(canvas); | 
| 48     parent.removeChild(frame); | 44     parent.removeChild(frame); | 
| 49 | 45 | 
| 50     imageData = ctx.getImageData(100, 100, 1, 1); | 46     imageData = ctx.getImageData(100, 100, 1, 1); | 
| 51     data = imageData.data; | 47     data = imageData.data; | 
| 52     if (adoptCanvas) { | 48     if (adoptCanvas) { | 
| 53         shouldBe('data[0]', '255'); | 49         assert_equals(data[0], 255); | 
| 54     } else { | 50     } else { | 
| 55         // GC causes active DOM stop and canvas loses its context. | 51         // GC causes active DOM stop and canvas loses its context. | 
| 56         shouldBe('data[0]', '0'); | 52         assert_equals(data[0], 0); | 
| 57     } | 53     } | 
| 58     shouldBe('data[1]', '0'); | 54     assert_equals(data[1], 0); | 
| 59     shouldBe('data[2]', '0'); | 55     assert_equals(data[2], 0); | 
| 60 } | 56 } | 
| 61 </script> | 57 </script> | 
| 62 <div id="parent"> | 58 <div id="parent"> | 
| 63     <iframe id="frame1" src="resources/canvas-fill-for-iframe.html" onload="fram
    eLoaded()"></iframe> | 59     <iframe id="frame1" src="resources/canvas-fill-for-iframe.html" onload="fram
    eLoaded()"></iframe> | 
| 64     <iframe id="frame2" src="resources/canvas-fill-for-iframe.html" onload="fram
    eLoaded()"></iframe> | 60     <iframe id="frame2" src="resources/canvas-fill-for-iframe.html" onload="fram
    eLoaded()"></iframe> | 
| 65 </div> | 61 </div> | 
| 66 </body> | 62 </body> | 
| 67 </html> | 63 </html> | 
| OLD | NEW | 
|---|