| <!DOCTYPE html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/canvas-tests.js"></script> |
| <link rel="help" href="https://html.spec.whatwg.org/#offscreencontext2d-commit"> |
| <script> |
| |
| function verifyPlaceholder(placeholder, expectedR, expectedG, expectedB, expectedA, expectedClrStr) |
| { |
| var canvas = document.createElement('canvas'); |
| canvas.width = canvas.height = 10; |
| var ctx = canvas.getContext('2d'); |
| ctx.drawImage(placeholder, 0, 0); |
| _assertPixel(canvas, 5,5, expectedR, expectedG, expectedB, expectedA, "5,5", expectedClrStr); |
| } |
| |
| test(function() { |
| var placeholder = document.createElement('canvas'); |
| placeholder.width = placeholder.height = 10; |
| var offscreenCanvas = placeholder.transferControlToOffscreen(); |
| var ctx = offscreenCanvas.getContext('2d'); |
| ctx.fillStyle = "#0f0"; |
| ctx.fillRect(0, 0, 10, 10); |
| // commit() propagation is taken care of by an async task, which means the |
| // place holder contents should still be transparent black at this moment. |
| verifyPlaceholder(placeholder, 0,0,0,0, "0,0,0,0"); |
| // Set timeout acts as a sync barrier to allow commit to propagate |
| setTimeout(function() { |
| verifyPlaceholder(placeholder, 0,255,0,255, "0,255,0,255"); |
| }, 0); |
| }, "Test that calling OffscreenCanvas's commit pushes its contents to its placeholder."); |
| |
| test(function() { |
| var offscreenCanvas = new OffscreenCanvas(10, 10); |
| var ctx = offscreenCanvas.getContext('2d'); |
| ctx.fillStyle = "#0f0"; |
| ctx.fillRect(0, 0, 10, 10); |
| ctx.commit(); |
| }, "Test that calling commit on an OffscreenCanvas that is not transferred from a HTMLCanvasElement is a noop."); |
| |
| </script> |