<!DOCTYPE html>
<html>
<head>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

function runTest() {
    document.designMode="on";
    document.open();
    window.getSelection().addRange(document.createRange());

    var initialValue = document.queryCommandValue('StyleWithCSS');
    document.execCommand("StyleWithCSS", false, !eval(initialValue));
    document.writeln('hello');

    document.open();
    window.getSelection().addRange(document.createRange());
    var valueAfterFirstNegation = document.queryCommandValue('StyleWithCSS');

    document.execCommand("StyleWithCSS", false, !eval(valueAfterFirstNegation));
    document.writeln('world');
    var valueAfterSecondNegation = document.queryCommandValue('StyleWithCSS');

    document.open();
    document.writeln('This test ensures WebKit executes StyleWithCSS properly even in an empty document.<br>');
    document.write('First negation:' + (initialValue !== valueAfterFirstNegation ? 'PASS' : 'FAIL') + '<br>');
    document.write('Second negation:' + (valueAfterFirstNegation !== valueAfterSecondNegation ? 'PASS' : 'FAIL') + '<br>');
}
</script>
</head>
<body onload="runTest()"></body>
</html>
