| 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>
|
|
|