diff --git a/html/canvas/element/manual/imagebitmap/createImageBitmap-exif-orientation.html b/html/canvas/element/manual/imagebitmap/createImageBitmap-exif-orientation.html
index 8b2a33e85b1ff0..ee7023a398839d 100644
--- a/html/canvas/element/manual/imagebitmap/createImageBitmap-exif-orientation.html
+++ b/html/canvas/element/manual/imagebitmap/createImageBitmap-exif-orientation.html
@@ -13,11 +13,11 @@
});
}
-function checkColors(ctx, w, h, expectedColors) {
+function checkColors(ctx, w, h, tileW, tileH, expectedColors) {
let data = ctx.getImageData(0, 0, w, h).data;
for (let [row, col, r, g, b, a] of expectedColors) {
- let x = col * 80 + 40;
- let y = row * 80 + 40;
+ let x = col * tileW + tileW / 2;
+ let y = row * tileH + tileH / 2;
let i = (x + y * w) * 4;
let expected = [r, g, b, a];
@@ -38,7 +38,7 @@
.then((image) => createImageBitmap(image))
.then(t.step_func_done(function(imageBitmap) {
ctx.drawImage(imageBitmap, 0, 0);
- checkColors(ctx, canvas.width, canvas.height, [
+ checkColors(ctx, canvas.width, canvas.height, 80, 80, [
// row, col, r, g, b, a
[0, 0, 255, 0, 0, 255],
[0, 1, 0, 255, 0, 255],
@@ -63,7 +63,7 @@
.then((image) => createImageBitmap(image, { imageOrientation: "flipY" }))
.then(t.step_func_done(function(imageBitmap) {
ctx.drawImage(imageBitmap, 0, 0);
- checkColors(ctx, canvas.width, canvas.height, [
+ checkColors(ctx, canvas.width, canvas.height, 80, 80, [
// row, col, r, g, b, a
[0, 0, 255, 128, 128, 255],
[0, 1, 128, 255, 128, 255],
@@ -88,7 +88,7 @@
.then(image => createImageBitmap(image, 80, 0, 160, 160))
.then(t.step_func_done(function(imageBitmap) {
ctx.drawImage(imageBitmap, 0, 0);
- checkColors(ctx, canvas.width, canvas.height, [
+ checkColors(ctx, canvas.width, canvas.height, 80, 80, [
// row, col, r, g, b, a
[0, 0, 0, 255, 0, 255],
[0, 1, 0, 0, 255, 255],
@@ -109,7 +109,7 @@
.then(image => createImageBitmap(image, 80, 0, 160, 160, { imageOrientation: "flipY" }))
.then(t.step_func_done(function(imageBitmap) {
ctx.drawImage(imageBitmap, 0, 0);
- checkColors(ctx, canvas.width, canvas.height, [
+ checkColors(ctx, canvas.width, canvas.height, 80, 80, [
// row, col, r, g, b, a
[0, 0, 128, 255, 128, 255],
[0, 1, 128, 128, 255, 255],
@@ -118,4 +118,72 @@
]);
}));
}, "createImageBitmap with EXIF rotation, imageOrientation flipY, and cropping");
+
+async_test(function(t) {
+ const canvas = document.createElement("canvas");
+ canvas.width = 160;
+ canvas.height = 80;
+ document.body.append(canvas);
+
+ const ctx = canvas.getContext("2d");
+ loadImage("resources/squares_6.jpg")
+ .then((image) => createImageBitmap(image, { resizeWidth:160, resizeHeight:80} ))
+ .then(t.step_func_done(function(imageBitmap) {
+ ctx.drawImage(imageBitmap, 0, 0);
+ checkColors(ctx, canvas.width, canvas.height, 40, 40, [
+ // row, col, r, g, b, a
+ [0, 0, 255, 0, 0, 255],
+ [0, 1, 0, 255, 0, 255],
+ [0, 2, 0, 0, 255, 255],
+ [0, 3, 0, 0, 0, 255],
+ [1, 0, 255, 128, 128, 255],
+ [1, 1, 128, 255, 128, 255],
+ [1, 2, 128, 128, 255, 255],
+ [1, 3, 128, 128, 128, 255],
+ ]);
+ }));
+}, "createImageBitmap with EXIF rotation, imageOrientation from-image, no cropping, and resize");
+
+async_test(function(t) {
+ const canvas = document.createElement("canvas");
+ canvas.width = 80;
+ canvas.height = 80;
+ document.body.append(canvas);
+
+ const ctx = canvas.getContext("2d");
+ loadImage("resources/squares_6.jpg")
+ .then(image => createImageBitmap(image, 80, 0, 160, 160, { imageOrientation: "flipY", resizeWidth:80, resizeHeight:80 }))
+ .then(t.step_func_done(function(imageBitmap) {
+ ctx.drawImage(imageBitmap, 0, 0);
+ checkColors(ctx, canvas.width, canvas.height, 40, 40, [
+ // row, col, r, g, b, a
+ [0, 0, 128, 255, 128, 255],
+ [0, 1, 128, 128, 255, 255],
+ [1, 0, 0, 255, 0, 255],
+ [1, 1, 0, 0, 255, 255],
+ ]);
+ }));
+}, "createImageBitmap with EXIF rotation, imageOrientation flipY, cropping, and resize");
+
+async_test(function(t) {
+ const canvas = document.createElement("canvas");
+ canvas.width = 80;
+ canvas.height = 40;
+ document.body.append(canvas);
+
+ const ctx = canvas.getContext("2d");
+ loadImage("resources/squares_6.jpg")
+ .then(image => createImageBitmap(image, 80, 0, 160, 160, { imageOrientation: "flipY", resizeWidth:80, resizeHeight:40 }))
+ .then(t.step_func_done(function(imageBitmap) {
+ ctx.drawImage(imageBitmap, 0, 0);
+ checkColors(ctx, canvas.width, canvas.height, 40, 20, [
+ // row, col, r, g, b, a
+ [0, 0, 128, 255, 128, 255],
+ [0, 1, 128, 128, 255, 255],
+ [1, 0, 0, 255, 0, 255],
+ [1, 1, 0, 0, 255, 255],
+ ]);
+ }));
+}, "createImageBitmap with EXIF rotation, imageOrientation flipY, cropping, and nonuniform resize");
+