Index: LayoutTests/fast/events/mouseenter-mouseleave-on-drag.html |
diff --git a/LayoutTests/fast/events/mouseenter-mouseleave-on-drag.html b/LayoutTests/fast/events/mouseenter-mouseleave-on-drag.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1a5207ff835cfd6c7f3e35ea623aaaf461af1714 |
--- /dev/null |
+++ b/LayoutTests/fast/events/mouseenter-mouseleave-on-drag.html |
@@ -0,0 +1,79 @@ |
+<!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/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; |
+ }); |
+ |
+ targetDiv.addEventListener("mousedown", function(event) { |
+ debug(id + " received mousedown"); |
+ }); |
+ |
+ targetDiv.addEventListener("mouseup", function(event) { |
+ debug(id + " received mouseup"); |
+ }); |
+ }); |
+} |
+ |
+init(); |
+if (window.eventSender) { |
+ eventSender.mouseMoveTo(1, 150); |
+ |
+ eventSender.mouseMoveTo(110, 150); |
+ eventSender.mouseDown(); |
+ |
+ eventSender.mouseMoveTo(140, 150); |
+ eventSender.mouseMoveTo(150, 150); |
+ eventSender.mouseMoveTo(160, 150); |
+ |
+ eventSender.mouseMoveTo(190, 150); |
+ eventSender.mouseUp(); |
+ |
+ eventSender.mouseMoveTo(201, 150); |
+} else { |
+ debug("This test requires eventSender"); |
+} |
+</script> |