<html>
    <head>
        <style>
            div {
                width: 200px;
                height: 200px;
                background-color: red;
            }

            div div {
                position: absolute;
                left: -1000px;
                background-color: green;
            }

            div:hover div {
                left: auto;
            }
        </style>
        <script>
            function log(msg) {
                var console = document.getElementById('console');
                var newNode = document.createElement('li');
                newNode.innerText = msg;
                console.appendChild(newNode);
            }
            var testedHoverState = false;
            function testHoverState() {
                if (testedHoverState)
                    return;
                testedHoverState = true;
                var innerElem = document.getElementById('innerElem');
                var calculatedStyle = window.getComputedStyle(innerElem);
    
                if (calculatedStyle.getPropertyValue('left') == "auto")
                    log("PASSED: Calculated style of inner element is correct");
                else
                    log("FAILED: Calculated style of inner element is wrong, should be 'left: auto'");
            }
        
            function runTest() {
                if (!window.layoutTestController) 
                    return;
                layoutTestController.dumpAsText();
                var targetElem = document.getElementById('targetElem');
                eventSender.mouseMoveTo(targetElem.offsetLeft + targetElem.offsetWidth / 2, 
                                        targetElem.offsetTop + targetElem.offsetHeight / 2);
            }
        </script>
    </head>
    <body onload="runTest()">
        This tests that a style that affects child elements when hovering 
        over a parent element correctly recalculates the child style.  To 
        test manually move the mouse over the red square, it should become 
        green.
        <div id="targetElem" onmousemove="testHoverState()"><div id="innerElem"></div></div>
        <ul id="console"></ul>
    <body>
</html>
