Fixing flip issue with imageBitmapRenderingContext and ImageBitmap

When importing a flipped imageBitmap into an ImageBitmapRenderginContext
the "imageOrientation" attribute would be ignored.

This CL makes it so the imageBitmapRenderingContext takes into account
orientation.

Bug: 1244465
Change-Id: I0b61a7edfdf3cb11ccc263dcaefd2a8752322b85
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3139358
Reviewed-by: Justin Novosad <junov@chromium.org>
Commit-Queue: Juanmi Huertas <juanmihd@chromium.org>
Cr-Commit-Position: refs/heads/main@{#918187}
diff --git a/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-expected.html b/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-expected.html
new file mode 100644
index 0000000..846a45b
--- /dev/null
+++ b/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-expected.html
@@ -0,0 +1,26 @@
+<body>
+  <p>Test whether the imageOrientation "none" works when creating an ImageBitmap from the ImageData of a canvas, and then transfered to an ImageBitmapRenderingContext.</p>
+  <canvas id="canvas" width="300" height="300"></canvas>
+</body>
+<script>
+
+function drawSquares(ctx) {
+  ctx.fillStyle = 'red';
+  ctx.fillRect(0,0,150,150);
+  ctx.fillStyle = 'green';
+  ctx.fillRect(150,0,300,150);
+  ctx.fillStyle = 'blue';
+  ctx.fillRect(0,150,150,300);
+}
+
+async function runTest() {
+  const canvas = document.getElementById('canvas');
+  canvas.width = 300;
+  canvas.height = 300;
+  const ctx = canvas.getContext('2d');
+  drawSquares(ctx);
+}
+
+runTest();
+
+</script>
\ No newline at end of file
diff --git a/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-flipped-expected.html b/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-flipped-expected.html
new file mode 100644
index 0000000..a0f3c5d
--- /dev/null
+++ b/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-flipped-expected.html
@@ -0,0 +1,26 @@
+<body>
+  <p>Test whether the imageOrientation "flipY" works when creating an ImageBitmap from the ImageData of a canvas, and then transfered to an ImageBitmapRenderingContext.</p>
+  <canvas id="canvas" width="300" height="300"></canvas>
+</body>
+<script>
+
+function drawSquares(ctx) {
+  ctx.fillStyle = 'red';
+  ctx.fillRect(0,0,150,150);
+  ctx.fillStyle = 'green';
+  ctx.fillRect(150,0,300,150);
+  ctx.fillStyle = 'blue';
+  ctx.fillRect(0,150,150,300);
+}
+
+async function runTest() {
+  const canvas = document.getElementById('canvas');
+  canvas.width = 300;
+  canvas.height = 300;
+  const ctx = canvas.getContext('2d');
+  drawSquares(ctx);
+}
+
+runTest();
+
+</script>
\ No newline at end of file
diff --git a/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-flipped.html b/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-flipped.html
new file mode 100644
index 0000000..91bd024
--- /dev/null
+++ b/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap-flipped.html
@@ -0,0 +1,32 @@
+<body>
+  <p>Test whether the imageOrientation "flipY" works when creating an ImageBitmap from the ImageData of a canvas, and then transfered to an ImageBitmapRenderingContext.</p>
+  <canvas id="canvas" width="300" height="300"></canvas>
+</body>
+<script>
+
+function drawSquares(ctx) {
+  ctx.fillStyle = 'red';
+  ctx.fillRect(0,0,150,150);
+  ctx.fillStyle = 'green';
+  ctx.fillRect(150,0,300,150);
+  ctx.fillStyle = 'blue';
+  ctx.fillRect(0,150,150,300);
+}
+
+async function runTest() {
+  const canvas_temp = document.createElement('canvas');
+  canvas_temp.width = 300;
+  canvas_temp.height = 300;
+  const ctx_temp = canvas_temp.getContext('2d');
+  drawSquares(ctx_temp);
+  const imageSource = ctx_temp.getImageData(0, 0, 300, 300);
+  const imageOrientation = 'flipY';
+  imageIDFlipped =  await createImageBitmap(imageSource, 0, 0, 300, 300, { imageOrientation });
+  const canvas = document.getElementById('canvas');
+  const ctx = canvas.getContext('bitmaprenderer');
+  ctx.transferFromImageBitmap(imageIDFlipped);
+}
+
+runTest();
+
+</script>
\ No newline at end of file
diff --git a/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap.html b/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap.html
new file mode 100644
index 0000000..59d27e0
--- /dev/null
+++ b/html/canvas/element/manual/imagebitmap/imageBitmapRendering-transferFromImageBitmap.html
@@ -0,0 +1,32 @@
+<body>
+  <p>Test whether the imageOrientation "none" works when creating an ImageBitmap from the ImageData of a canvas, and then transfered to an ImageBitmapRenderingContext.</p>
+  <canvas id="canvas" width="300" height="300"></canvas>
+</body>
+<script>
+
+function drawSquares(ctx) {
+  ctx.fillStyle = 'red';
+  ctx.fillRect(0,0,150,150);
+  ctx.fillStyle = 'green';
+  ctx.fillRect(150,0,300,150);
+  ctx.fillStyle = 'blue';
+  ctx.fillRect(0,150,150,300);
+}
+
+async function runTest() {
+  const canvas_temp = document.createElement('canvas');
+  canvas_temp.width = 300;
+  canvas_temp.height = 300;
+  const ctx_temp = canvas_temp.getContext('2d');
+  drawSquares(ctx_temp);
+  const imageSource = ctx_temp.getImageData(0, 0, 300, 300);
+  const imageOrientation = 'none';
+  imageIDFlipped =  await createImageBitmap(imageSource, 0, 0, 300, 300, { imageOrientation });
+  const canvas = document.getElementById('canvas');
+  const ctx = canvas.getContext('bitmaprenderer');
+  ctx.transferFromImageBitmap(imageIDFlipped);
+}
+
+runTest();
+
+</script>
\ No newline at end of file