Update imagebitmap tests.
authorMs2ger@igalia.com <Ms2ger@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 Feb 2018 11:16:09 +0000 (11:16 +0000)
committerMs2ger@igalia.com <Ms2ger@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 Feb 2018 11:16:09 +0000 (11:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=182335

Unreviewed test gardening.

LayoutTests/imported/w3c:

* web-platform-tests/2dcontext/imagebitmap/common.sub.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/common.js.
* web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt:
* web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html:
* web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt:
* web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html:
* web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt: Added.
* web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html: Added.
* web-platform-tests/2dcontext/imagebitmap/w3c-import.log:
* web-platform-tests/common/namespaces.js: Added.
* web-platform-tests/common/w3c-import.log:
* web-platform-tests/images/pattern.mp4: Added.
* web-platform-tests/images/pattern.svg: Added.
* web-platform-tests/images/w3c-import.log:

LayoutTests:

* platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt: Removed.
* platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@227958 268f45cc-cd09-0410-ab3c-d52691b4dbfc

18 files changed:
LayoutTests/ChangeLog
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/common.sub.js [moved from LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/common.js with 61% similarity]
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/common/namespaces.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/common/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/images/pattern.mp4 [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/images/pattern.svg [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/images/w3c-import.log
LayoutTests/platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt [deleted file]
LayoutTests/platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt
LayoutTests/platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt [new file with mode: 0644]

index ed45740..bbbeb81 100644 (file)
@@ -1,3 +1,14 @@
+2018-02-01  Ms2ger  <Ms2ger@igalia.com>
+
+        Update imagebitmap tests.
+        https://bugs.webkit.org/show_bug.cgi?id=182335
+
+        Unreviewed test gardening.
+
+        * platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt: Removed.
+        * platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt:
+        * platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt: Added.
+
 2018-02-01  Antti Koivisto  <antti@apple.com>
 
         Invalidate style for sibling combinators accurately on class change
index 782137c..f358f56 100644 (file)
@@ -1,3 +1,24 @@
+2018-02-01  Ms2ger  <Ms2ger@igalia.com>
+
+        Update imagebitmap tests.
+        https://bugs.webkit.org/show_bug.cgi?id=182335
+
+        Unreviewed test gardening.
+
+        * web-platform-tests/2dcontext/imagebitmap/common.sub.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/common.js.
+        * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt:
+        * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html:
+        * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt:
+        * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html:
+        * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt: Added.
+        * web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html: Added.
+        * web-platform-tests/2dcontext/imagebitmap/w3c-import.log:
+        * web-platform-tests/common/namespaces.js: Added.
+        * web-platform-tests/common/w3c-import.log:
+        * web-platform-tests/images/pattern.mp4: Added.
+        * web-platform-tests/images/pattern.svg: Added.
+        * web-platform-tests/images/w3c-import.log:
+
 2018-01-31  Saam Barati  <sbarati@apple.com>
 
         JSC incorrectly interpreting script, sets Global Property instead of Global Lexical variable (LiteralParser / JSONP path)
@@ -38,18 +38,54 @@ function makeVideo() {
         video.oncanplaythrough = function() {
             resolve(video);
         };
-        video.src = "/images/pattern.ogv";
+        video.onerror = reject;
+        video.src = getVideoURI("/images/pattern");
     });
 }
 
-function makeImage() {
-    return new Promise(resolve => {
-        var img = new Image();
-        img.onload = function() {
-            resolve(img);
-        };
-        img.src = "/images/pattern.png";
-    });
+function makeDataUrlVideo() {
+    const toDataUrl = (type, buffer) => {
+        const encoded = btoa(String.fromCodePoint(...new Uint8Array(buffer)));
+        return `data:${type};base64,${encoded}`
+    };
+
+    return fetch(getVideoURI("/images/pattern"))
+        .then(response => Promise.all([response.headers.get("Content-Type"), response.arrayBuffer()]))
+        .then(([type, data]) => {
+            return new Promise(function(resolve, reject) {
+                var video = document.createElement("video");
+                video.oncanplaythrough = function() {
+                    resolve(video);
+                };
+                video.onerror = reject;
+                video.src = toDataUrl(type, data);
+            });
+        });
+}
+
+function makeMakeHTMLImage(src) {
+    return function() {
+        return new Promise(resolve => {
+            var img = new Image();
+            img.onload = function() {
+                resolve(img);
+            };
+            img.src = src;
+        });
+    }
+}
+
+function makeMakeSVGImage(src) {
+    return function() {
+        return new Promise((resolve, reject) => {
+            var image = document.createElementNS(NAMESPACES.svg, "image");
+            image.onload = () => resolve(image);
+            image.onerror = reject;
+            image.setAttribute("externalResourcesRequired", "true");
+            image.setAttributeNS(NAMESPACES.xlink, 'xlink:href', src);
+            document.body.appendChild(image);
+        });
+    }
 }
 
 function makeImageData() {
@@ -99,7 +135,11 @@ function makeBlob() {
 var imageSourceTypes = [
     { name: 'an HTMLCanvasElement', factory: makeCanvas },
     { name: 'an HTMLVideoElement',  factory: makeVideo },
-    { name: 'an HTMLImageElement',  factory: makeImage },
+    { name: 'an HTMLVideoElement from a data URL', factory: makeDataUrlVideo },
+    { name: 'a bitmap HTMLImageElement', factory: makeMakeHTMLImage("/images/pattern.png") },
+    { name: 'a vector HTMLImageElement', factory: makeMakeHTMLImage("/images/pattern.svg") },
+    { name: 'a bitmap SVGImageElement', factory: makeMakeSVGImage("/images/pattern.png") },
+    { name: 'a vector SVGImageElement', factory: makeMakeSVGImage("/images/pattern.svg") },
     { name: 'an OffscreenCanvas',   factory: makeOffscreenCanvas },
     { name: 'an ImageData',         factory: makeImageData },
     { name: 'an ImageBitmap',       factory: makeImageBitmap },
index 21f5842..376da8d 100644 (file)
@@ -1,18 +1,57 @@
 
-Harness Error (TIMEOUT), message = null
-
 PASS createImageBitmap from an HTMLCanvasElement, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from an HTMLCanvasElement scaled down, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from an HTMLCanvasElement scaled up, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from an HTMLCanvasElement resized, and drawImage on the created ImageBitmap 
 FAIL createImageBitmap from an HTMLCanvasElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
-TIMEOUT createImageBitmap from an HTMLVideoElement, and drawImage on the created ImageBitmap Test timed out
-NOTRUN createImageBitmap from an HTMLVideoElement with negative sw/sh, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from an HTMLImageElement, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from an HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from an OffscreenCanvas, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from an OffscreenCanvas with negative sw/sh, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from an ImageData, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from an ImageData with negative sw/sh, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from an ImageBitmap, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from an ImageBitmap with negative sw/sh, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from a Blob, and drawImage on the created ImageBitmap 
-NOTRUN createImageBitmap from a Blob with negative sw/sh, and drawImage on the created ImageBitmap 
+FAIL createImageBitmap from an HTMLVideoElement, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
+FAIL createImageBitmap from an HTMLVideoElement scaled down, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
+FAIL createImageBitmap from an HTMLVideoElement scaled up, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
+FAIL createImageBitmap from an HTMLVideoElement resized, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
+FAIL createImageBitmap from an HTMLVideoElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
+FAIL createImageBitmap from an HTMLVideoElement from a data URL, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
+FAIL createImageBitmap from an HTMLVideoElement from a data URL scaled down, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
+FAIL createImageBitmap from an HTMLVideoElement from a data URL scaled up, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
+FAIL createImageBitmap from an HTMLVideoElement from a data URL resized, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
+FAIL createImageBitmap from an HTMLVideoElement from a data URL with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
+PASS createImageBitmap from a bitmap HTMLImageElement, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from a bitmap HTMLImageElement scaled down, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from a bitmap HTMLImageElement scaled up, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from a bitmap HTMLImageElement resized, and drawImage on the created ImageBitmap 
+FAIL createImageBitmap from a bitmap HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
+PASS createImageBitmap from a vector HTMLImageElement, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from a vector HTMLImageElement scaled down, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from a vector HTMLImageElement scaled up, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from a vector HTMLImageElement resized, and drawImage on the created ImageBitmap 
+FAIL createImageBitmap from a vector HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
+FAIL createImageBitmap from a bitmap SVGImageElement, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a bitmap SVGImageElement scaled down, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a bitmap SVGImageElement scaled up, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a bitmap SVGImageElement resized, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a bitmap SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a vector SVGImageElement, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a vector SVGImageElement scaled down, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a vector SVGImageElement scaled up, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a vector SVGImageElement resized, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from a vector SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL createImageBitmap from an OffscreenCanvas, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
+FAIL createImageBitmap from an OffscreenCanvas scaled down, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
+FAIL createImageBitmap from an OffscreenCanvas scaled up, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
+FAIL createImageBitmap from an OffscreenCanvas resized, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
+FAIL createImageBitmap from an OffscreenCanvas with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
+FAIL createImageBitmap from an ImageData, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ImageData is not implemented"
+FAIL createImageBitmap from an ImageData scaled down, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ImageData is not implemented"
+FAIL createImageBitmap from an ImageData scaled up, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ImageData is not implemented"
+FAIL createImageBitmap from an ImageData resized, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ImageData is not implemented"
+FAIL createImageBitmap from an ImageData with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
+PASS createImageBitmap from an ImageBitmap, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from an ImageBitmap scaled down, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from an ImageBitmap scaled up, and drawImage on the created ImageBitmap 
+PASS createImageBitmap from an ImageBitmap resized, and drawImage on the created ImageBitmap 
+FAIL createImageBitmap from an ImageBitmap with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
+FAIL createImageBitmap from a Blob, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented"
+FAIL createImageBitmap from a Blob scaled down, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented"
+FAIL createImageBitmap from a Blob scaled up, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented"
+FAIL createImageBitmap from a Blob resized, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented"
+FAIL createImageBitmap from a Blob with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
 
index 98b656e..ce6c90e 100644 (file)
@@ -4,29 +4,34 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/common/canvas-tests.js"></script>
-<script src="common.js"></script>
+<script src="/common/media.js"></script>
+<script src="/common/namespaces.js"></script>
+<script src="common.sub.js"></script>
 <link rel="stylesheet" href="/common/canvas-tests.css">
 <body>
 <script>
-function testCanvasDisplayingPattern(canvas)
+function testCanvasDisplayingPattern(canvas, width, height)
 {
     var tolerance = 5; // for creating ImageBitmap from a video, the tolerance needs to be high
-    _assertPixelApprox(canvas, 5,5, 255,0,0,255, "5,5", "255,0,0,255", tolerance);
-    _assertPixelApprox(canvas, 15,5, 0,255,0,255, "15,5", "0,255,0,255", tolerance);
-    _assertPixelApprox(canvas, 5,15, 0,0,255,255, "5,15", "0,0,255,255", tolerance);
-    _assertPixelApprox(canvas, 15,15, 0,0,0,255, "15,15", "0,0,0,255", tolerance);
+    const check = (x, y, r, g, b, a) =>
+        _assertPixelApprox(canvas, x,y, r,g,b,a, `${x},${y}`, `${r},${g},${b},${a}`, tolerance);
+    check(1 * width / 4, 1 * height / 4, 255,0,0,255);
+    check(3 * width / 4, 1 * height / 4, 0,255,0,255);
+    check(1 * width / 4, 3 * height / 4, 0,0,255,255);
+    check(3 * width / 4, 3 * height / 4, 0,0,0,255);
 }
 
-function testDrawImageBitmap(source, args = [])
+function testDrawImageBitmap(source, args = [], { resizeWidth = 20, resizeHeight = 20 } = {})
 {
     var canvas = document.createElement("canvas");
-    canvas.width = 20;
-    canvas.height = 20;
+    canvas.width = resizeWidth;
+    canvas.height = resizeHeight;
     var ctx = canvas.getContext("2d");
-    ctx.clearRect(0, 0, canvas.width, canvas.height);
     return createImageBitmap(source, ...args).then(imageBitmap => {
+        assert_equals(imageBitmap.width, resizeWidth);
+        assert_equals(imageBitmap.height, resizeHeight);
         ctx.drawImage(imageBitmap, 0, 0);
-        testCanvasDisplayingPattern(canvas);
+        testCanvasDisplayingPattern(canvas, resizeWidth, resizeHeight);
     });
 }
 
@@ -39,6 +44,27 @@ for (let { name, factory } of imageSourceTypes) {
 
     promise_test(function() {
         return factory().then(function(img) {
+            const options = { resizeWidth: 10, resizeHeight: 10 };
+            return testDrawImageBitmap(img, [options], options);
+        });
+    }, `createImageBitmap from ${name} scaled down, and drawImage on the created ImageBitmap`);
+
+    promise_test(function() {
+        return factory().then(function(img) {
+            const options = { resizeWidth: 40, resizeHeight: 40 };
+            return testDrawImageBitmap(img, [options], options);
+        });
+    }, `createImageBitmap from ${name} scaled up, and drawImage on the created ImageBitmap`);
+
+    promise_test(function() {
+        return factory().then(function(img) {
+            const options = { resizeWidth: 10, resizeHeight: 40 };
+            return testDrawImageBitmap(img, [options], options);
+        });
+    }, `createImageBitmap from ${name} resized, and drawImage on the created ImageBitmap`);
+
+    promise_test(function() {
+        return factory().then(function(img) {
             return testDrawImageBitmap(img, [20, 20, -20, -20]);
         });
     }, `createImageBitmap from ${name} with negative sw/sh, and drawImage on the created ImageBitmap`);
index 7b8eaa6..5a966ff 100644 (file)
@@ -1,35 +1,52 @@
-
-Harness Error (TIMEOUT), message = null
+CONSOLE MESSAGE: line 137: Canvas area exceeds the maximum limit (width * height > 268435456).
 
 PASS createImageBitmap with a an HTMLCanvasElement source and sw set to 0 
 PASS createImageBitmap with a an HTMLCanvasElement source and sh set to 0 
 FAIL createImageBitmap with a an HTMLCanvasElement source and oversized (unallocatable) crop region assert_unreached: Should have rejected: undefined Reached unreachable code
-TIMEOUT createImageBitmap with a an HTMLVideoElement source and sw set to 0 Test timed out
-NOTRUN createImageBitmap with a an HTMLVideoElement source and sh set to 0 
-NOTRUN createImageBitmap with a an HTMLVideoElement source and oversized (unallocatable) crop region 
-NOTRUN createImageBitmap with a an HTMLImageElement source and sw set to 0 
-NOTRUN createImageBitmap with a an HTMLImageElement source and sh set to 0 
-NOTRUN createImageBitmap with a an HTMLImageElement source and oversized (unallocatable) crop region 
-NOTRUN createImageBitmap with a an OffscreenCanvas source and sw set to 0 
-NOTRUN createImageBitmap with a an OffscreenCanvas source and sh set to 0 
-NOTRUN createImageBitmap with a an OffscreenCanvas source and oversized (unallocatable) crop region 
-NOTRUN createImageBitmap with a an ImageData source and sw set to 0 
-NOTRUN createImageBitmap with a an ImageData source and sh set to 0 
-NOTRUN createImageBitmap with a an ImageData source and oversized (unallocatable) crop region 
-NOTRUN createImageBitmap with a an ImageBitmap source and sw set to 0 
-NOTRUN createImageBitmap with a an ImageBitmap source and sh set to 0 
-NOTRUN createImageBitmap with a an ImageBitmap source and oversized (unallocatable) crop region 
-NOTRUN createImageBitmap with a a Blob source and sw set to 0 
-NOTRUN createImageBitmap with a a Blob source and sh set to 0 
-NOTRUN createImageBitmap with a a Blob source and oversized (unallocatable) crop region 
-NOTRUN createImageBitmap with undefined image source. 
-NOTRUN createImageBitmap with null image source. 
-NOTRUN createImageBitmap with empty image source. 
-NOTRUN createImageBitmap with empty video source. 
-NOTRUN createImageBitmap with an oversized canvas source. 
-NOTRUN createImageBitmap with an invalid OffscreenCanvas source. 
-NOTRUN createImageBitmap with an undecodable blob source. 
-NOTRUN createImageBitmap with a broken image source. 
-NOTRUN createImageBitmap with an available but undecodable image source. 
-NOTRUN createImageBitmap with a closed ImageBitmap. 
+PASS createImageBitmap with a an HTMLVideoElement source and sw set to 0 
+PASS createImageBitmap with a an HTMLVideoElement source and sh set to 0 
+FAIL createImageBitmap with a an HTMLVideoElement source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with HTMLVideoElement is not implemented" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
+PASS createImageBitmap with a an HTMLVideoElement from a data URL source and sw set to 0 
+PASS createImageBitmap with a an HTMLVideoElement from a data URL source and sh set to 0 
+FAIL createImageBitmap with a an HTMLVideoElement from a data URL source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with HTMLVideoElement is not implemented" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
+PASS createImageBitmap with a a bitmap HTMLImageElement source and sw set to 0 
+PASS createImageBitmap with a a bitmap HTMLImageElement source and sh set to 0 
+FAIL createImageBitmap with a a bitmap HTMLImageElement source and oversized (unallocatable) crop region assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS createImageBitmap with a a vector HTMLImageElement source and sw set to 0 
+PASS createImageBitmap with a a vector HTMLImageElement source and sh set to 0 
+FAIL createImageBitmap with a a vector HTMLImageElement source and oversized (unallocatable) crop region assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL createImageBitmap with a a bitmap SVGImageElement source and sw set to 0 assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "RangeError" ("RangeError")
+FAIL createImageBitmap with a a bitmap SVGImageElement source and sh set to 0 assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "RangeError" ("RangeError")
+FAIL createImageBitmap with a a bitmap SVGImageElement source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
+FAIL createImageBitmap with a a vector SVGImageElement source and sw set to 0 assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "RangeError" ("RangeError")
+FAIL createImageBitmap with a a vector SVGImageElement source and sh set to 0 assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "RangeError" ("RangeError")
+FAIL createImageBitmap with a a vector SVGImageElement source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
+FAIL createImageBitmap with a an OffscreenCanvas source and sw set to 0 promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
+FAIL createImageBitmap with a an OffscreenCanvas source and sh set to 0 promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
+FAIL createImageBitmap with a an OffscreenCanvas source and oversized (unallocatable) crop region promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
+PASS createImageBitmap with a an ImageData source and sw set to 0 
+PASS createImageBitmap with a an ImageData source and sh set to 0 
+FAIL createImageBitmap with a an ImageData source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with ImageData is not implemented" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
+PASS createImageBitmap with a an ImageBitmap source and sw set to 0 
+PASS createImageBitmap with a an ImageBitmap source and sh set to 0 
+FAIL createImageBitmap with a an ImageBitmap source and oversized (unallocatable) crop region assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS createImageBitmap with a a Blob source and sw set to 0 
+PASS createImageBitmap with a a Blob source and sh set to 0 
+FAIL createImageBitmap with a a Blob source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
+PASS createImageBitmap with undefined image source. 
+PASS createImageBitmap with null image source. 
+PASS createImageBitmap with CanvasRenderingContext2D image source. 
+PASS createImageBitmap with WebGLRenderingContext image source. 
+PASS createImageBitmap with Uint8Array image source. 
+PASS createImageBitmap with ArrayBuffer image source. 
+PASS createImageBitmap with empty image source. 
+FAIL createImageBitmap with empty video source. assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with HTMLVideoElement is not implemented" that is not a DOMException InvalidStateError: property "code" is equal to undefined, expected 11
+PASS createImageBitmap with an oversized canvas source. 
+FAIL createImageBitmap with an invalid OffscreenCanvas source. assert_throws: function "function () { throw e }" threw object "TypeError: Type error" that is not a DOMException InvalidStateError: property "code" is equal to undefined, expected 11
+FAIL createImageBitmap with an undecodable blob source. assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented" that is not a DOMException InvalidStateError: property "code" is equal to undefined, expected 11
+PASS createImageBitmap with a broken image source. 
+FAIL createImageBitmap with an available but undecodable image source. assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL createImageBitmap with an available but zero height image source. assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL createImageBitmap with an available but zero width image source. assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS createImageBitmap with a closed ImageBitmap. 
 
index 1fe7185..801ec41 100644 (file)
@@ -1,7 +1,9 @@
 <!doctype html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="common.js"></script>
+<script src="/common/media.js"></script>
+<script src="/common/namespaces.js"></script>
+<script src="common.sub.js"></script>
 <script>
 
 function makeOversizedCanvas() {
@@ -28,17 +30,18 @@ function makeInvalidBlob() {
 }
 
 function makeBrokenImage() {
-  return new Promise(resolve => {
+  return new Promise((resolve, reject) => {
     const image = new Image();
     image.src = "data:,x";
+    image.onload = reject;
     image.onerror = () => resolve(image);
   });
 }
 
-function makeAvailableButBrokenImage() {
+function makeAvailableButBrokenImage(path) {
   return new Promise((resolve, reject) => {
     const image = new Image();
-    image.src = "/images/broken.png";
+    image.src = path;
     image.onload = () => resolve(image);
     image.onerror = reject;
   });
@@ -99,6 +102,26 @@ promise_test( t => {
 }, "createImageBitmap with null image source.");
 
 promise_test( t => {
+  var context = document.createElement("canvas").getContext("2d");
+  return promise_rejects(t, new TypeError(), createImageBitmap(context));
+}, "createImageBitmap with CanvasRenderingContext2D image source.");
+
+promise_test( t => {
+  var context = document.createElement("canvas").getContext("webgl");
+  return promise_rejects(t, new TypeError(), createImageBitmap(context));
+}, "createImageBitmap with WebGLRenderingContext image source.");
+
+promise_test( t => {
+  var buffer = new Uint8Array();
+  return promise_rejects(t, new TypeError(), createImageBitmap(buffer));
+}, "createImageBitmap with Uint8Array image source.");
+
+promise_test( t => {
+  var buffer = new ArrayBuffer(8);
+  return promise_rejects(t, new TypeError(), createImageBitmap(buffer));
+}, "createImageBitmap with ArrayBuffer image source.");
+
+promise_test( t => {
   return promise_rejects(t, "InvalidStateError",
     createImageBitmap(new Image()));
 }, "createImageBitmap with empty image source.");
@@ -137,13 +160,27 @@ promise_test( t => {
 }, "createImageBitmap with a broken image source.");
 
 promise_test( t => {
-  return makeAvailableButBrokenImage().then(image => {
+  return makeAvailableButBrokenImage("/images/broken.png").then(image => {
     return promise_rejects(t, "InvalidStateError",
         createImageBitmap(image));
   });
 }, "createImageBitmap with an available but undecodable image source.");
 
 promise_test( t => {
+  return makeAvailableButBrokenImage("/images/red-zeroheight.svg").then(image => {
+    return promise_rejects(t, "InvalidStateError",
+        createImageBitmap(image));
+  });
+}, "createImageBitmap with an available but zero height image source.");
+
+promise_test( t => {
+  return makeAvailableButBrokenImage("/images/red-zerowidth.svg").then(image => {
+    return promise_rejects(t, "InvalidStateError",
+        createImageBitmap(image));
+  });
+}, "createImageBitmap with an available but zero width image source.");
+
+promise_test( t => {
   return makeImageBitmap().then(bitmap => {
     bitmap.close()
     return promise_rejects(t, "InvalidStateError", createImageBitmap(bitmap));
diff --git a/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt
new file mode 100644 (file)
index 0000000..e973e62
--- /dev/null
@@ -0,0 +1,14 @@
+Blocked access to external URL http://www1.localhost:8800/images/red.png
+Blocked access to external URL http://www1.localhost:8800/images/red.png
+Blocked access to external URL http://www1.localhost:8800/media/movie_300.mp4
+Blocked access to external URL http://www1.localhost:8800/media/movie_300.mp4
+Blocked access to external URL http://www1.localhost:8800/images/red.png
+Blocked access to external URL http://www1.localhost:8800/images/red.png
+
+FAIL cross-origin HTMLImageElement promise_test: Unhandled rejection with value: object "[object Event]"
+FAIL cross-origin SVGImageElement promise_test: Unhandled rejection with value: object "[object Event]"
+FAIL cross-origin HTMLVideoElement promise_test: Unhandled rejection with value: object "[object Event]"
+FAIL redirected to cross-origin HTMLVideoElement promise_test: Unhandled rejection with value: object "[object Event]"
+FAIL unclean HTMLCanvasElement promise_test: Unhandled rejection with value: object "[object Event]"
+FAIL unclean ImageBitmap promise_test: Unhandled rejection with value: object "[object Event]"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html b/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
new file mode 100644 (file)
index 0000000..7f5588e
--- /dev/null
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>createImageBitmap: origin-clean flag</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/media.js"></script>
+<script src="/common/namespaces.js"></script>
+<div id=log></div>
+<script>
+const crossOriginImageUrl = "http://{{domains[www1]}}:{{ports[http][0]}}/images/red.png";
+
+function assert_origin_unclean(bitmap) {
+  const context = document.createElement("canvas").getContext("2d");
+  context.drawImage(bitmap, 0, 0);
+  assert_throws("SecurityError", () => {
+    context.getImageData(0, 0, 1, 1);
+  });
+}
+
+function makeImage() {
+  return new Promise((resolve, reject) => {
+    const image = new Image();
+    image.onload = () => resolve(image);
+    image.onerror = reject;
+    image.src = crossOriginImageUrl;
+  });
+}
+
+const arguments = [
+  {
+    name: "cross-origin HTMLImageElement",
+    factory: makeImage,
+  },
+
+  {
+    name: "cross-origin SVGImageElement",
+    factory: () => {
+      return new Promise((resolve, reject) => {
+        const image = document.createElementNS(NAMESPACES.svg, "image");
+        image.onload = () => resolve(image);
+        image.onerror = reject;
+        image.setAttribute("externalResourcesRequired", "true");
+        image.setAttributeNS(NAMESPACES.xlink, 'xlink:href', crossOriginImageUrl);
+        document.body.appendChild(image);
+      });
+    },
+  },
+
+  {
+    name: "cross-origin HTMLVideoElement",
+    factory: () => {
+      return new Promise((resolve, reject) => {
+        const video = document.createElement("video");
+        video.oncanplaythrough = () => resolve(video);
+        video.onerror = reject;
+        video.src = getVideoURI("http://{{domains[www1]}}:{{ports[http][0]}}/media/movie_300");
+      });
+    },
+  },
+
+  {
+    name: "redirected to cross-origin HTMLVideoElement",
+    factory: () => {
+      return new Promise((resolve, reject) => {
+        const video = document.createElement("video");
+        video.oncanplaythrough = () => resolve(video);
+        video.onerror = reject;
+        video.src = "/common/redirect.py?location=" + getVideoURI("http://{{domains[www1]}}:{{ports[http][0]}}/media/movie_300");
+      });
+    },
+  },
+
+  {
+    name: "unclean HTMLCanvasElement",
+    factory: () => {
+      return makeImage().then(image => {
+        const canvas = document.createElement("canvas");
+        const context = canvas.getContext("2d");
+        context.drawImage(image, 0, 0);
+        return canvas;
+      });
+    },
+  },
+
+  {
+    name: "unclean ImageBitmap",
+    factory: () => {
+      return makeImage().then(createImageBitmap);
+    },
+  },
+];
+
+for (let { name, factory } of arguments) {
+  promise_test(function() {
+    return factory().then(createImageBitmap).then(assert_origin_unclean);
+  }, name);
+}
+</script>
index 5d9adb4..01be627 100644 (file)
@@ -14,7 +14,8 @@ Property values requiring vendor prefixes:
 None
 ------------------------------------------------------------------------
 List of files:
-/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/common.js
+/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/common.sub.js
 /LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html
 /LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
+/LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
 /LayoutTests/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html
diff --git a/LayoutTests/imported/w3c/web-platform-tests/common/namespaces.js b/LayoutTests/imported/w3c/web-platform-tests/common/namespaces.js
new file mode 100644 (file)
index 0000000..741bdc1
--- /dev/null
@@ -0,0 +1,4 @@
+var NAMESPACES = {
+  "svg": "http://www.w3.org/2000/svg",
+  "xlink": "http://www.w3.org/1999/xlink",
+};
index 29d1136..4cd25e6 100644 (file)
@@ -43,6 +43,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/common/large.py
 /LayoutTests/imported/w3c/web-platform-tests/common/media.js
 /LayoutTests/imported/w3c/web-platform-tests/common/media.js.headers
+/LayoutTests/imported/w3c/web-platform-tests/common/namespaces.js
 /LayoutTests/imported/w3c/web-platform-tests/common/object-association.js
 /LayoutTests/imported/w3c/web-platform-tests/common/object-association.js.headers
 /LayoutTests/imported/w3c/web-platform-tests/common/performance-timeline-utils.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/images/pattern.mp4 b/LayoutTests/imported/w3c/web-platform-tests/images/pattern.mp4
new file mode 100644 (file)
index 0000000..c866bfe
Binary files /dev/null and b/LayoutTests/imported/w3c/web-platform-tests/images/pattern.mp4 differ
diff --git a/LayoutTests/imported/w3c/web-platform-tests/images/pattern.svg b/LayoutTests/imported/w3c/web-platform-tests/images/pattern.svg
new file mode 100644 (file)
index 0000000..40c6ad3
--- /dev/null
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
+  <rect x="00" y="00" width="10" height="10" fill="#ff0000"/>
+  <rect x="10" y="00" width="10" height="10" fill="#00ff00"/>
+  <rect x="00" y="10" width="10" height="10" fill="#0000ff"/>
+  <rect x="10" y="10" width="10" height="10" fill="#000000"/>
+</svg>
index c265fa3..e6f44cc 100644 (file)
@@ -38,8 +38,10 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/images/green.svg
 /LayoutTests/imported/w3c/web-platform-tests/images/grgr-256x256.png
 /LayoutTests/imported/w3c/web-platform-tests/images/movie_300_frame_0.png
+/LayoutTests/imported/w3c/web-platform-tests/images/pattern.mp4
 /LayoutTests/imported/w3c/web-platform-tests/images/pattern.ogv
 /LayoutTests/imported/w3c/web-platform-tests/images/pattern.png
+/LayoutTests/imported/w3c/web-platform-tests/images/pattern.svg
 /LayoutTests/imported/w3c/web-platform-tests/images/red-16x16.png
 /LayoutTests/imported/w3c/web-platform-tests/images/red-zeroheight.svg
 /LayoutTests/imported/w3c/web-platform-tests/images/red-zerosize.svg
diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt b/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt
deleted file mode 100644 (file)
index 3637b8c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-PASS createImageBitmap from an HTMLCanvasElement, and drawImage on the created ImageBitmap 
-FAIL createImageBitmap from an HTMLCanvasElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
-FAIL createImageBitmap from an HTMLVideoElement, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with HTMLVideoElement is not implemented"
-FAIL createImageBitmap from an HTMLVideoElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
-PASS createImageBitmap from an HTMLImageElement, and drawImage on the created ImageBitmap 
-FAIL createImageBitmap from an HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
-FAIL createImageBitmap from an OffscreenCanvas, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
-FAIL createImageBitmap from an OffscreenCanvas with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
-FAIL createImageBitmap from an ImageData, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ImageData is not implemented"
-FAIL createImageBitmap from an ImageData with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
-PASS createImageBitmap from an ImageBitmap, and drawImage on the created ImageBitmap 
-FAIL createImageBitmap from an ImageBitmap with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
-FAIL createImageBitmap from a Blob, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented"
-FAIL createImageBitmap from a Blob with negative sw/sh, and drawImage on the created ImageBitmap promise_test: Unhandled rejection with value: object "RangeError: Cannot create ImageBitmap with a negative width or height"
-
index 614fc71..e3be46f 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 114: Canvas area exceeds the maximum limit (width * height > 268435456).
+CONSOLE MESSAGE: line 137: Canvas area exceeds the maximum limit (width * height > 268435456).
 
 PASS createImageBitmap with a an HTMLCanvasElement source and sw set to 0 
 PASS createImageBitmap with a an HTMLCanvasElement source and sh set to 0 
@@ -6,9 +6,21 @@ FAIL createImageBitmap with a an HTMLCanvasElement source and oversized (unalloc
 PASS createImageBitmap with a an HTMLVideoElement source and sw set to 0 
 PASS createImageBitmap with a an HTMLVideoElement source and sh set to 0 
 FAIL createImageBitmap with a an HTMLVideoElement source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with HTMLVideoElement is not implemented" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
-PASS createImageBitmap with a an HTMLImageElement source and sw set to 0 
-PASS createImageBitmap with a an HTMLImageElement source and sh set to 0 
-FAIL createImageBitmap with a an HTMLImageElement source and oversized (unallocatable) crop region assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS createImageBitmap with a an HTMLVideoElement from a data URL source and sw set to 0 
+PASS createImageBitmap with a an HTMLVideoElement from a data URL source and sh set to 0 
+FAIL createImageBitmap with a an HTMLVideoElement from a data URL source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with HTMLVideoElement is not implemented" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
+PASS createImageBitmap with a a bitmap HTMLImageElement source and sw set to 0 
+PASS createImageBitmap with a a bitmap HTMLImageElement source and sh set to 0 
+FAIL createImageBitmap with a a bitmap HTMLImageElement source and oversized (unallocatable) crop region assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS createImageBitmap with a a vector HTMLImageElement source and sw set to 0 
+PASS createImageBitmap with a a vector HTMLImageElement source and sh set to 0 
+FAIL createImageBitmap with a a vector HTMLImageElement source and oversized (unallocatable) crop region assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL createImageBitmap with a a bitmap SVGImageElement source and sw set to 0 assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "RangeError" ("RangeError")
+FAIL createImageBitmap with a a bitmap SVGImageElement source and sh set to 0 assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "RangeError" ("RangeError")
+FAIL createImageBitmap with a a bitmap SVGImageElement source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
+FAIL createImageBitmap with a a vector SVGImageElement source and sw set to 0 assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "RangeError" ("RangeError")
+FAIL createImageBitmap with a a vector SVGImageElement source and sh set to 0 assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "RangeError" ("RangeError")
+FAIL createImageBitmap with a a vector SVGImageElement source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: Type error" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
 FAIL createImageBitmap with a an OffscreenCanvas source and sw set to 0 promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
 FAIL createImageBitmap with a an OffscreenCanvas source and sh set to 0 promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
 FAIL createImageBitmap with a an OffscreenCanvas source and oversized (unallocatable) crop region promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'testCtx.fillStyle = "rgb(255, 0, 0)"')"
@@ -23,6 +35,10 @@ PASS createImageBitmap with a a Blob source and sh set to 0
 FAIL createImageBitmap with a a Blob source and oversized (unallocatable) crop region assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented" ("TypeError") expected object "InvalidStateError" ("InvalidStateError")
 PASS createImageBitmap with undefined image source. 
 PASS createImageBitmap with null image source. 
+PASS createImageBitmap with CanvasRenderingContext2D image source. 
+PASS createImageBitmap with WebGLRenderingContext image source. 
+PASS createImageBitmap with Uint8Array image source. 
+PASS createImageBitmap with ArrayBuffer image source. 
 PASS createImageBitmap with empty image source. 
 FAIL createImageBitmap with empty video source. assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with HTMLVideoElement is not implemented" that is not a DOMException InvalidStateError: property "code" is equal to undefined, expected 11
 PASS createImageBitmap with an oversized canvas source. 
@@ -30,5 +46,7 @@ FAIL createImageBitmap with an invalid OffscreenCanvas source. assert_throws: fu
 FAIL createImageBitmap with an undecodable blob source. assert_throws: function "function () { throw e }" threw object "TypeError: createImageBitmap with ArrayBuffer or Blob is not implemented" that is not a DOMException InvalidStateError: property "code" is equal to undefined, expected 11
 PASS createImageBitmap with a broken image source. 
 FAIL createImageBitmap with an available but undecodable image source. promise_test: Unhandled rejection with value: object "[object Event]"
+FAIL createImageBitmap with an available but zero height image source. assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL createImageBitmap with an available but zero width image source. assert_unreached: Should have rejected: undefined Reached unreachable code
 PASS createImageBitmap with a closed ImageBitmap. 
 
diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt b/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub-expected.txt
new file mode 100644 (file)
index 0000000..3319b21
--- /dev/null
@@ -0,0 +1,14 @@
+Blocked access to external URL http://www1.localhost:8800/images/red.png
+Blocked access to external URL http://www1.localhost:8800/images/red.png
+Blocked access to external URL http://www1.localhost:8800/media/movie_300.ogv
+Blocked access to external URL http://www1.localhost:8800/media/movie_300.ogv
+
+Harness Error (TIMEOUT), message = null
+
+FAIL cross-origin HTMLImageElement promise_test: Unhandled rejection with value: object "[object Event]"
+FAIL cross-origin SVGImageElement promise_test: Unhandled rejection with value: object "[object Event]"
+FAIL cross-origin HTMLVideoElement promise_test: Unhandled rejection with value: object "[object Event]"
+TIMEOUT redirected to cross-origin HTMLVideoElement Test timed out
+NOTRUN unclean HTMLCanvasElement 
+NOTRUN unclean ImageBitmap 
+