<!DOCTYPE html>
<title>Test that we can render a CMYK JPEG without color corruption.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script type="text/javascript">
async_test(function(t) {
// The colors used for verifying the test results.
var red = 0, green = 0, blue = 0, alpha = 0;
// Create a canvas element. This element is used for pasting a CMYK JPEG and
// reading its pixels.
var canvas = document.createElement("canvas");
canvas.width = 64;
canvas.height = 64;
// Create an image object and load a CMYK JPEG.
var image = new Image();
image.onload = t.step_func_done(function() {
// Paste the loaded JPEG ('resources/cmyk-jpeg.jpg') to the canvas.
var context = canvas.getContext("2d");
context.drawImage(image, 0, 0);
// Read the pixels in the canvas and calculate their average values.
// (DumpRenderTree always allows to read them.)
var data = context.getImageData(0, 0, canvas.width, canvas.height);
var pixels = canvas.width * canvas.height;
for (var i = 0; i < pixels * 4; i += 4) {
red += data.data[i + 0];
green += data.data[i + 1];
blue += data.data[i + 2];
alpha += data.data[i + 3];
}
red /= pixels;
green /= pixels;
blue /= pixels;
alpha /= pixels;
// Even though the output colors depend on color-profiles (i.e. they depend
// on devices), green must be the most prominent color because the source
// image only consists of green. So, we test it.
assert_greater_than(green, red);
assert_greater_than(green, blue);
});
image.src = "resources/cmyk-jpeg.jpg";
});
</script>