Index: third_party/WebKit/LayoutTests/http/tests/security/offscreen-canvas-worker-read-blocked-by-setting.html |
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/offscreen-canvas-worker-read-blocked-by-setting.html b/third_party/WebKit/LayoutTests/http/tests/security/offscreen-canvas-worker-read-blocked-by-setting.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..687b41119c2cd77b35aa80a89b511528d74c494a |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/http/tests/security/offscreen-canvas-worker-read-blocked-by-setting.html |
@@ -0,0 +1,62 @@ |
+<!DOCTYPE html> |
+<title>Block reading offscreen canvas via StrictCanvasTainting setting</title> |
+<script src="/resources/testharness.js"></script> |
+<script src="/resources/testharnessreport.js"></script> |
+<script id='myWorker' type='text/worker'> |
+self.onmessage = function(e) { |
+ var offCanvas = new OffscreenCanvas(100, 100); |
+ var context = offCanvas.getContext('2d'); |
+ |
+ var name1 = ""; |
+ var message1 = message1; |
+ try { |
+ var imageData = context.getImageData(0, 0, 100, 100); |
+ message1 = "getImageData should throw."; |
+ } catch (e) { |
+ name1 = e.name; |
+ message1 = e.message; |
+ } |
+ |
+ var name2 = ""; |
+ var message2; |
+ try { |
+ context.drawImage(e.data, 0, 0, 100, 100); |
+ var imageData = context.getImageData(0, 0, 100, 100); |
+ message2 = "getImageData should throw"; |
+ } catch (e) { |
+ name2 = e.name; |
+ message2 = e.message; |
+ } |
+ |
+ self.postMessage([name1, message1, name2, message2]); |
+}; |
+</script> |
+<script> |
+if (window.testRunner) { |
+ testRunner.overridePreference("WebKitDisableReadingFromCanvas", true); |
+ testRunner.waitUntilDone(); |
+} |
+ |
+ |
+var htmlCanvas = document.createElement('canvas'); |
+htmlCanvas.width = 100; |
+htmlCanvas.height = 100; |
+var htmlCtx = htmlCanvas.getContext('2d'); |
+htmlCtx.fillStyle = "blue"; |
+htmlCtx.fillRect(0, 0, 100, 100); |
+createImageBitmap(htmlCanvas).then(consumeImageBitmap); |
+ |
+function consumeImageBitmap(htmlImage) { |
+ var blob = new Blob([document.getElementById('myWorker').textContent]); |
+ var worker = new Worker(URL.createObjectURL(blob)); |
+ worker.addEventListener('message', msg => { |
+ assert_equals(msg.data[0], "SecurityError", msg.data[1]); |
+ assert_equals(msg.data[2], "SecurityError", msg.data[3]); |
+ |
+ if (window.testRunner) { |
+ testRunner.notifyDone(); |
+ } |
+ }); |
+ worker.postMessage(htmlImage, [htmlImage]); |
+} |
+</script> |