Index: third_party/WebKit/LayoutTests/http/tests/security/webgl-cross-origin-ImageBitmap-blocked.html |
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/webgl-cross-origin-ImageBitmap-blocked.html b/third_party/WebKit/LayoutTests/http/tests/security/webgl-cross-origin-ImageBitmap-blocked.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c5ff6ebaf8ea6a9d348367977c52a72fb303a6c3 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/http/tests/security/webgl-cross-origin-ImageBitmap-blocked.html |
@@ -0,0 +1,53 @@ |
+<!DOCTYPE html> |
+<html> |
+<body> |
+<script src="/js-test-resources/js-test.js"></script> |
+<script> |
+description("WebGL's tex(Sub)Image2D should throw a SecurityError exception when the ImageBitmap is not origin clean."); |
+ |
+window.jsTestIsAsync = true; |
+var gl; |
+var bitmap; |
+ |
+var image = document.createElement('img'); |
+image.src = 'http://localhost:8080/security/resources/abe.png'; |
+ |
+image.addEventListener('load', function() { |
+ var canvas = document.createElement("canvas"); |
+ canvas.width = 10; |
+ canvas.height = 10; |
+ |
+ gl = canvas.getContext("webgl"); |
+ var texture = gl.createTexture(); |
+ shouldBe("gl.getError()", "gl.NO_ERROR"); |
+ gl.bindTexture(gl.TEXTURE_2D, texture); |
+ shouldBe("gl.getError()", "gl.NO_ERROR"); |
+ |
+ // ImageBitmap created from a clean canvas should be origin clean |
+ createImageBitmap(canvas, 0, 0, 10, 10).then(imageBitmap => { |
+ bitmap = imageBitmap; |
+ shouldNotThrow("gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, bitmap)"); |
+ shouldBe("gl.getError()", "gl.NO_ERROR"); |
+ shouldNotThrow("gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, bitmap)"); |
+ shouldBe("gl.getError()", "gl.NO_ERROR"); |
+ |
+ // Test tainted ImageBitmap |
+ createImageBitmap(image, 0, 0, 10, 10).then(imageBitmap => { |
+ bitmap = imageBitmap; |
+ shouldThrow("gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, bitmap)"); |
+ shouldBe("gl.getError()", "gl.NO_ERROR"); |
+ shouldThrow("gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, bitmap)"); |
+ shouldBe("gl.getError()", "gl.NO_ERROR"); |
+ finishJSTest(); |
+ }, () => { |
+ testFailed("Unexpected failure"); |
+ finishJSTest(); |
+ }); |
+ }, () => { |
+ testFailed("Unexpected failure"); |
+ finishJSTest(); |
+ }); |
+}); |
+</script> |
+</body> |
+</html> |