blob: 617e71c34ea704193ef4968bbee63d15089f3e6c [file] [log] [blame]
<pre id="console"></pre>
<script>
testRunner.dumpAsText();
function log(message)
{
document.getElementById("console").appendChild(document.createTextNode(message + "\n"));
}
function formatColor(r, g, b, a)
{
return "[" + r + ", " + g + ", " + b + ", " + a + "]";
}
function assertBlack(imageData, i)
{
var r = imageData.data[i * 4];
var g = imageData.data[i * 4 + 1];
var b = imageData.data[i * 4 + 2];
var a = imageData.data[i * 4 + 3];
if (r == 0 && g == 0 && b == 0 && a == 255)
log("PASS: Pixel " + i + " is black.");
else
log("FAIL: Pixel " + i + " is not black: " + formatColor(r, g, b, a) + ".");
}
function assertGreen(imageData, i)
{
var r = imageData.data[i * 4];
var g = imageData.data[i * 4 + 1];
var b = imageData.data[i * 4 + 2];
var a = imageData.data[i * 4 + 3];
if (r == 0 && g == 255 && b == 0 && a == 255)
log("PASS: Pixel " + i + " is green.");
else
log("FAIL: Pixel " + i + " is not green: " + formatColor(r, g, b, a) + ".");
}
function assertBlue(imageData, i)
{
var r = imageData.data[i * 4];
var g = imageData.data[i * 4 + 1];
var b = imageData.data[i * 4 + 2];
var a = imageData.data[i * 4 + 3];
if (r == 0 && g == 0 && b == 255 && a == 255)
log("PASS: Pixel " + i + " is blue.");
else
log("FAIL: Pixel " + i + " is not blue: " + formatColor(r, g, b, a) + ".");
}
if (!window.testRunner)
log("This test requires WebKitTestRunner or DumpRenderTree.");
testRunner.waitUntilDone();
testRunner.setBackingScaleFactor(2, function() {
var canvas = document.createElement("canvas");
canvas.width = 8;
canvas.height = 8;
var context = canvas.getContext("2d");
if (context.webkitBackingStorePixelRatio === 2) {
context.fillStyle = "#0f0";
context.fillRect(0, 0, 4, 8);
context.fillStyle = "#00f";
context.fillRect(4, 0, 4, 8);
log("Testing getImageDataHD");
var imageData = context.webkitGetImageDataHD(7, 0, 2, 1);
assertGreen(imageData, 0);
assertBlue(imageData, 1);
log("\nTesting putImageDataHD");
context.fillStyle = "#000";
context.fillRect(0, 0, 8, 8);
imageData = context.createImageData(8, 8);
for (var i = 0; i < 128; i += 4) {
imageData.data[i] = 0;
imageData.data[i + 1] = 255;
imageData.data[i + 2] = 0;
imageData.data[i + 3] = 255;
}
for (var i = 128; i < 256; i += 4) {
imageData.data[i] = 0;
imageData.data[i + 1] = 0;
imageData.data[i + 2] = 255;
imageData.data[i + 3] = 255;
}
context.webkitPutImageDataHD(imageData, 2, 2);
imageData = context.getImageData(2, 0, 1, 1);
assertBlack(imageData, 0);
imageData = context.getImageData(2, 1, 1, 1);
assertGreen(imageData, 0);
imageData = context.getImageData(2, 2, 1, 1);
assertGreen(imageData, 0);
imageData = context.getImageData(2, 3, 1, 1);
assertBlue(imageData, 0);
imageData = context.getImageData(2, 4, 1, 1);
assertBlue(imageData, 0);
imageData = context.getImageData(2, 5, 1, 1);
assertBlack(imageData, 0);
} else
log("High-DPI canvas is not enabled.");
testRunner.notifyDone();
});
</script>