| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Test to ensure that modifications to canvas are not visible from already captured patterns."); |
| // At the time of writing this would fail for Cocoa in case where Canvas backing store image was accessed as |
| // mapped in WP but the modifications would happen in GPUP. At the time, GPUP DOM rendering == off, GPUP Canvas |
| // rendering == on. |
| var ctx = document.createElement('canvas').getContext('2d'); |
| var pcanvas = document.createElement('canvas'); |
| pcanvas.width = 100; |
| pcanvas.height = 100; |
| var pctx = pcanvas.getContext('2d'); |
| |
| var c; |
| |
| pctx.fillStyle = 'lime'; |
| pctx.fillRect(0, 0, 50, 50); |
| |
| // 1. Capture pattern before modification (green). |
| var pattern = ctx.createPattern(pcanvas, 'repeat'); |
| |
| // 2. Modify the canvas that was the pattern source (the source is red, the pattern is expected to be green). |
| pctx.fillStyle = 'red'; |
| pctx.fillRect(0, 0, 50, 50); |
| c = pctx.getImageData(0, 0, 1, 1).data; |
| shouldBe("c[0]", "255"); |
| shouldBe("c[1]", "0"); |
| shouldBe("c[2]", "0"); |
| |
| // 3. Assert that the modification is not visible through the captured pattern. |
| ctx.fillStyle = pattern; |
| ctx.fillRect(0, 0, 100, 100); |
| c = ctx.getImageData(0, 0, 1, 1).data; |
| shouldBe("c[0]", "0"); |
| shouldBe("c[1]", "255"); |
| shouldBe("c[2]", "0"); |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |
| |
| |