<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/elements-test.js"></script>
<script>

function test()
{
    InspectorTest.selectNodeAndWaitForStyles("container", step1);

    function step1()
    {
        InspectorTest.addResult("Before disable");
        InspectorTest.dumpSelectedElementStyles(true, true);

        InspectorTest.toggleStyleProperty("font-weight", false);
        InspectorTest.waitForStyles("container", step2);
    }

    function step2()
    {
        InspectorTest.addResult("After disable");
        InspectorTest.dumpSelectedElementStyles(true, true);

        var treeItem = InspectorTest.getElementStylePropertyTreeItem("font-weight");
        treeItem.applyStyleText("color: green", true);
        InspectorTest.waitForStyles("container", step3);
    }

    function step3()
    {
        InspectorTest.addResult("After change");
        InspectorTest.dumpSelectedElementStyles(true, true);
        InspectorTest.completeTest();
    }
}
</script>
</head>

<body onload="runTest()">
<p>
Tests that changing a disabled property enables it as well.
</p>

<div id="container" style="font-weight:bold">
</div>

<div id="other">
</div>

</body>
</html>
