<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Test that we can render a CMYK JPEG without color corruption.");

// This is an async test because it has to wait for WebKit to load an image.
jsTestIsAsync = true;

// 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 = 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 avarage 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.
    shouldBeTrue("green > red");
    shouldBeTrue("green > blue");

    // Notify this test has been finished.
    finishJSTest();
}
image.src = "resources/cmyk-jpeg.jpg";
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
