<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script src="resources/not-hover-active-quirks-utility.js"></script>
<style id="testStyle">
</style>
</head>
<body>
<testing id="target" class="aClass otherClass" webkit="rocks" style="background-color:green; width:200px; height:200px;display:block;"></testing>
<div id="start" style="background-color:gray; height:200px; width:200px; display:block; text-align:center; color:white;">START</div>
<div id="console"></div>
</div>
</body>
<script>
description('Test the :not(:active) and :not(:hover) selector when the document is in quirks mode. To test manually, make sure not to move the cursor over the green rectangle and press the gray START div until the test is finished.');

if (window.eventSender) {
    var start = document.getElementById('start');
    var x = start.offsetLeft + start.offsetWidth / 2;
    var y = start.offsetTop + start.offsetHeight / 2;
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseDown();
    test(':active');
    test(':hover');
    eventSender.mouseUp()
} else {
    // For some reasons, the test does not work well without the timeout on Firefox.
    document.getElementById('start').addEventListener('mousedown', function(ev) {
        setTimeout(function () {
            test(':active');
            test(':hover');
        }, 250);
    });
}

</script>
<script src="../../resources/js-test-post.js"></script>
</html>
