Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/http/tests/security/cross-origin-createImageBitmap-structured-clone.html |
| diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-createImageBitmap-structured-clone.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-createImageBitmap-structured-clone.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b3515cec9b34388147868b80b794d6d022dcb19e |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-createImageBitmap-structured-clone.html |
| @@ -0,0 +1,52 @@ |
| +<!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> |
| +function makeWorker(script) { |
| + var blob = new Blob([script]); |
| + return new Worker(URL.createObjectURL(blob)); |
| +} |
| +var worker = makeWorker(document.getElementById('myWorker').textContent); |
| + |
| +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'); |
| +} |
| + |
| +function postToWorker(message, transferable) { |
| + return new Promise((resolve, reject) => { |
| + function onMessage(e) { |
| + resolve(e.data); |
| + worker.removeEventListener("message", onMessage); |
| + } |
| + worker.postMessage(message, transferable); |
| + worker.addEventListener("message", onMessage); |
| + }); |
| +} |
| + |
| +promise_test(function() { |
| + return new Promise((resolve, reject) => { |
| + var image = new Image(); |
| + image.onload = function() { |
| + createImageBitmap(image).then(imageBitmap => { |
| + var replyPromise = postToWorker(imageBitmap, [imageBitmap]); |
| + resolve(replyPromise); |
|
Justin Novosad
2016/07/26 14:07:52
This is a nested promise. I am pretty sure the tes
xidachen
2016/07/26 15:13:10
Changed to async_test in the new patch.
|
| + }); |
| + } |
| + image.src = 'http://localhost:8080/security/resources/abe.png'; |
|
Justin Novosad
2016/07/26 14:07:52
Not the best thing to hard code 'http://localhost:
xidachen
2016/07/26 15:13:10
Per off-line discussion, will leave the path as lo
|
| + }).then(shouldBeTainted); |
| +}, 'Transfer or structured-clone an ImageBitmap should preserve the originClean flag.'); |
| +</script> |
| +</body> |
| +</html> |