Index: LayoutTests/fast/events/touch/gesture/gesture-tap-mouse-events-between-frames.html |
diff --git a/LayoutTests/fast/events/touch/gesture/gesture-tap-mouse-events-between-frames.html b/LayoutTests/fast/events/touch/gesture/gesture-tap-mouse-events-between-frames.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1a3e226527883091163304d63fdddb28c12985ff |
--- /dev/null |
+++ b/LayoutTests/fast/events/touch/gesture/gesture-tap-mouse-events-between-frames.html |
@@ -0,0 +1,148 @@ |
+<!DOCTYPE HTML> |
+<script src="../../../../resources/js-test.js"></script> |
+<script src="../../resources/record-events.js"></script> |
+<style> |
+div { |
+ margin: 10px; |
+ padding: 50px; |
+ float: left; |
+} |
+#console { |
+ padding: 0px; |
+ float: none; |
+} |
+#frame { |
+ margin: 0px; |
+ border: 0px; |
+ width: 400px; |
+ height: 400px; |
+} |
+</style> |
+ |
+<div id="gray" style="background-color:gray"> |
+ <div id="lightgreen" style="background-color:lightgreen"> |
+ <div id="green" style="background-color:green;"> |
+ </div> |
+ </div> |
+</div> |
+<iframe src='resources/gesture-tap-mouse-events-between-frames-iframe.html' id='frame'></iframe> |
mustaq
2015/06/08 17:24:24
Please add the *-iframe.html file to the CL.
Miyoung Shin(c)
2015/06/10 12:10:04
Sorry to miss the file. I've added it.
|
+<div id="console"></div> |
+ |
+<script> |
+description("Verifies that tapping on an element sends mouse events to appropriate ancestors of the tapped element in correct order."); |
mustaq
2015/06/08 17:24:24
Please update the description.
Miyoung Shin(c)
2015/06/10 12:10:05
Done.
|
+ |
+var frame = document.getElementById("frame"); |
+var greenEnterOrder = [ |
+ ["green", "mouseover"], |
+ ["lightgreen", "mouseover"], |
+ ["gray", "mouseover"], |
mustaq
2015/06/08 17:24:24
My repro in the bug was a bit too complicated beca
Miyoung Shin(c)
2015/06/10 12:10:04
I've removed the gray and hotpink's divs. (now usi
|
+ ["gray", "mouseenter"], |
+ ["lightgreen", "mouseenter"], |
+ ["green", "mouseenter"], |
+ ["green", "mousedown"], |
+ ["lightgreen", "mousedown"], |
+ ["gray", "mousedown"], |
+ ["green", "mouseup"], |
+ ["lightgreen", "mouseup"], |
+ ["gray", "mouseup"], |
+ ["green", "click"], |
+ ["lightgreen", "click"], |
+ ["gray", "click"]]; |
+ |
+var greenLeaveOrder = [ |
+ ["green", "mouseout"], |
+ ["lightgreen", "mouseout"], |
+ ["gray", "mouseout"], |
+ ["green", "mouseleave"], |
+ ["lightgreen", "mouseleave"], |
+ ["gray", "mouseleave"]]; |
+ |
+var pinkEnterOrder = [ |
+ ["deeppink", "mouseover"], |
+ ["hotpink", "mouseover"], |
+ ["lightpink", "mouseover"], |
+ ["lightpink", "mouseenter"], |
+ ["hotpink", "mouseenter"], |
+ ["deeppink", "mouseenter"], |
+ ["deeppink", "mousedown"], |
+ ["hotpink", "mousedown"], |
+ ["lightpink", "mousedown"], |
+ ["deeppink", "mouseup"], |
+ ["hotpink", "mouseup"], |
+ ["lightpink", "mouseup"], |
+ ["deeppink", "click"], |
+ ["hotpink", "click"], |
+ ["lightpink", "click"]]; |
+ |
+var pinkLeaveOrder = [ |
+ ["deeppink", "mouseout"], |
+ ["hotpink", "mouseout"], |
+ ["lightpink", "mouseout"], |
+ ["deeppink", "mouseleave"], |
+ ["hotpink", "mouseleave"], |
+ ["lightpink", "mouseleave"]]; |
+ |
+function getElementById(id) |
+{ |
+ var element = document.getElementById(id); |
+ if (element == null) |
+ element = frame.contentDocument.getElementById(id); |
+ return element; |
+} |
+ |
+function init() { |
+ var ids = ["gray", "lightgreen", "green", "lightpink", "hotpink", "deeppink"]; |
+ |
+ var elements = []; |
+ ids.forEach(function(id) { |
+ var element = getElementById(id); |
+ elements.push(element); |
+ }); |
+ registerElementsAndEventsToRecord(elements, ["mouseover", "mouseout", "mouseenter", "mouseleave", "mouseup", "mousedown", "click"]); |
+} |
+ |
+function doGesture(id, base) |
+{ |
+ debug("-- sending gestureTap to " + id + " --"); |
+ var element = getElementById(id); |
+ |
+ var x = base.x + element.offsetLeft + element.offsetWidth / 2; |
+ var y = base.y + element.offsetTop + element.offsetHeight / 2; |
+ eventSender.gestureTapDown(x, y); |
+ eventSender.gestureShowPress(x, y); |
+ eventSender.gestureTap(x, y); |
mustaq
2015/06/08 17:24:24
I guess just sending a gestureTap here should be e
Miyoung Shin(c)
2015/06/10 12:10:04
I agree with you. I've removed to check the moused
|
+} |
+ |
+function runTests() |
+{ |
+ init(); |
+ if (window.eventSender) { |
+ debug("--- Tap tests ---"); |
+ |
+ var expectedOrder = []; |
+ beginRecordingEvents(); |
+ doGesture("green", {x: 0, y: 0}); |
+ expectedOrder = expectedOrder.concat(greenEnterOrder); |
+ checkThatEventsFiredInOrder(expectedOrder); |
+ |
mustaq
2015/06/08 17:24:24
Please cover the case of two consecutive taps in a
Miyoung Shin(c)
2015/06/10 12:10:04
Done.
|
+ doGesture("deeppink", {x: frame.offsetLeft, y: frame.offsetTop}); |
+ expectedOrder = expectedOrder.concat(greenLeaveOrder, pinkEnterOrder); |
+ checkThatEventsFiredInOrder(expectedOrder); |
+ |
+ doGesture("green", {x: 0, y: 0}); |
+ expectedOrder = expectedOrder.concat(pinkLeaveOrder, greenEnterOrder); |
+ checkThatEventsFiredInOrder(expectedOrder); |
+ endRecordingEvents(); |
+ } else { |
+ debug("This test requires eventSender"); |
+ } |
+ finishJSTest(); |
+} |
+ |
+if (window.testRunner) { |
+ window.jsTestIsAsync = true; |
+ testRunner.waitUntilDone(); |
+} |
+ |
+window.onload = runTests; |
+</script> |