| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script id="myWorker" type="text/worker"> |
| self.onmessage = function(e) { |
| postMessage(e.data); |
| }; |
| </script> |
| <script> |
| async_test(function(t) { |
| function makeWorker(script) { |
| var blob = new Blob([script]); |
| return new Worker(URL.createObjectURL(blob)); |
| } |
| var worker = makeWorker(document.getElementById('myWorker').textContent); |
| var returnedBitmap; |
| |
| var image = new Image(); |
| image.onload = function() { |
| shouldBeTainted(image); |
| createImageBitmap(image).then(imageBitmap => { |
| worker.postMessage({data:imageBitmap}, [imageBitmap]); |
| worker.onmessage = t.step_func(onMessage); |
| }); |
| } |
| image.src = 'http://localhost:8080/security/resources/abe.png'; |
| |
| function onMessage(e) { |
| returnedBitmap = e.data.data; |
| shouldBeTainted(returnedBitmap); |
| t.done(); |
| } |
| |
| function shouldBeTainted(imageBitmap) { |
| var canvas = document.createElement("canvas"); |
| canvas.width = 10; |
| canvas.height = 10; |
| var context = canvas.getContext("2d"); |
| context.drawImage(imageBitmap, 0, 0, 10, 10); |
| assert_throws(null, function () { context.getImageData(0, 0, 10, 10); }, 'ImageBitmap should be tainted'); |
| } |
| }, 'Transfer and structured-clone an ImageBitmap should preserve the originClean flag.'); |
| </script> |
| </body> |
| </html> |