Chromium Code Reviews| 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> |