blob: 05c4342a561a77b81648c173594a16c2e15d723b [file] [log] [blame]
<!DOCTYPE HTML>
<script src="../../resources/js-test.js"></script>
<style>
#outer {
background: grey;
position: absolute;
left: 100px;
top: 100px;
width: 100px;
height: 100px;
}
#inner {
background: red;
position: absolute;
left: 30px;
top: 30px;
width: 40px;
height: 40px;
}
</style>
<div id="outer">
<div id="inner"></div>
</div>
<div id="console"></div>
<script>
description("Verifies that dragging mouse in/out of an element doesn't fire redundant mouseenter or mouseleave events (crbug.com/356090 & crbug.com/470258)");
var wasInside = {};
function init() {
["outer", "inner"].forEach(function(id) {
wasInside[id] = false;
var targetDiv = document.getElementById(id);
targetDiv.addEventListener("mouseenter", function(event) {
debug(id + " received mouseenter");
shouldBeFalse("wasInside['" + id + "']");
wasInside[id] = true;
});
targetDiv.addEventListener("mouseleave", function(event) {
debug(id + " received mouseleave");
shouldBeTrue("wasInside['" + id + "']");
wasInside[id] = false;
});
["mouseover", "mouseout", "mousedown", "mouseup"].forEach(function(eventName) {
targetDiv.addEventListener(eventName, function(event) {
if (event.eventPhase == Event.AT_TARGET)
debug(id + " received " + eventName);
});
});
});
}
init();
if (window.eventSender) {
var y = 150;
debug("--- drag across inner ---");
eventSender.mouseMoveTo(1, y);
eventSender.mouseMoveTo(110, y);
eventSender.mouseDown();
eventSender.mouseMoveTo(140, y);
eventSender.mouseMoveTo(150, y);
eventSender.mouseMoveTo(160, y);
eventSender.mouseMoveTo(190, y);
eventSender.mouseUp();
eventSender.mouseMoveTo(201, y);
debug("");
debug("--- drag into inner ---");
eventSender.mouseMoveTo(190, y);
eventSender.mouseDown();
eventSender.mouseMoveTo(150, y);
eventSender.mouseUp();
debug("");
debug("--- drag out of inner ---");
eventSender.mouseDown();
eventSender.mouseMoveTo(110, y);
eventSender.mouseUp();
debug("");
} else {
debug("This test requires eventSender");
}
</script>