<head>
<script>
var output = [];

function test(id, expected) {
    var adjust = window.getComputedStyle(document.getElementById(id)).webkitPrintColorAdjust;
    if (adjust == expected)
        output.push("SUCCESS");
    else
        output.push("FAILURE.  -webkit-print-color-adjust was " + adjust + ", it should have been " + expected);
}

function runTests() {
    if (window.testRunner)
        window.testRunner.dumpAsText();

    test("economy", "economy");
    test("exact", "exact");

    document.body.innerHTML = output.join("\n");
}

</script>
</head>
<body onLoad="runTests();" style="white-space: pre-wrap;">
<div id="economy" style="-webkit-print-color-adjust:economy;"></div>
<div id="exact" style="-webkit-print-color-adjust:exact;"></div>
</body>
