<!DOCTYPE html>
<html>
<script src="../../../../resources/js-test-pre.js"></script>

<style type="text/css">
::-webkit-scrollbar {
    width: 0px;
    height: 0px;
}

div { 
    line-height: 100px;
}

#hoverme { 
    background-color: lightblue;
}

#clickme { 
    background-color: lightgreen;
}

#dontclickme {
    background-color: yellow;
    display: none; 
}

#hoverme:hover #dontclickme { 
    display: block;
}
</style>

<body style="margin:0">

<div id='hoverme'>Hover over me
  <div id='dontclickme'>Don't click me</div>
</div>
<div id='clickme'>Click me</div>

<p id="description"></p>
<p>See https://bugs.webkit.org/show_bug.cgi?id=103283 for details.</p>

<div id="console"></div>

<script>
description("Tests that hover effects from a gesture tap down can be cleared by a gesture tap or mousemove outside of the hovered element.");

var clickMe = document.getElementById('clickme');
var dontClickMe = document.getElementById('dontclickme');

function runTests()
{
    if (!window.eventSender) {
        debug('This test requires DRT.');
        return;
    }

    if (!eventSender.gestureTapDown || !eventSender.gestureTap || !eventSender.mouseMoveTo) {
        debug('GestureTapDown, GestureTap, or MouseMoveTo is not supported by this platform');
        return;
    }

    debug("The Don't Click Me div should not be visible.");
    shouldBe("dontClickMe.offsetTop", "0");

    debug("The Don't Click Me div should be visible after a GestureTapDown on the Hover Over Me div.");
    shouldBe(document.elementFromPoint(50, 50).id, "hoverme");
    eventSender.gestureTapDown(50, 50);
    shouldBe("dontClickMe.offsetTop", "100");

    debug("The Don't Click Me div should not be visible after a GestureTap on the Click Me div.");
    shouldBe(document.elementFromPoint(250, 250).id, "clickme");
    eventSender.gestureTap(250, 250);
    shouldBe("dontClickMe.offsetTop", "0");

    debug("The Don't Click Me div should be visible after a GestureTapDown on the Hover Over Me div.");
    shouldBe(document.elementFromPoint(50, 50).id, "hoverme");
    eventSender.gestureTapDown(50, 50);
    shouldBe("dontClickMe.offsetTop", "100");

    debug("The Don't Click Me div should not be visible after a mouse move to below the Click Me div.");
    eventSender.mouseMoveTo(350, 350);
    shouldBe("dontClickMe.offsetTop", "0");
}

runTests();
</script>
<script src="../../../../resources/js-test-post.js"></script>
</body>
</html>
