<!DOCTYPE html>
<canvas id="canvas" width="1" height="1"></canvas>
<script src="../../resources/js-test.js"></script>
<script>
jsTestIsAsync = true;
description("Tests that non-opaque pixels are faithfully preserved in conversions between ImageData and ImageBitmap");
var imageData = new ImageData(new Uint8ClampedArray([12, 34, 56, 64]), 1, 1);
var newImageData;
createImageBitmap(imageData).then(imageBitmap => {
var context = document.getElementById("canvas").getContext("2d");
context.drawImage(imageBitmap, 0, 0);
newImageData = context.getImageData(0, 0, 1, 1);
// newImageData is not necessary the same as imageData because of
// multiplying and dividing by alpha during the round trip, but
// they should be close.
// The alpha channel should be exactly the same.
shouldBeCloseTo("newImageData.data[0]", "imageData.data[0]", 5);
shouldBeCloseTo("newImageData.data[1]", "imageData.data[1]", 5);
shouldBeCloseTo("newImageData.data[2]", "imageData.data[2]", 5);
shouldBe("newImageData.data[3]", "imageData.data[3]");
finishJSTest();
});
</script>