| 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..af6ea5e62df4c42b73ce1b39a8575f2b06e3a6f4
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/events/touch/gesture/gesture-tap-mouse-events-between-frames.html
|
| @@ -0,0 +1,137 @@
|
| +<!DOCTYPE HTML>
|
| +<script src="../../../../resources/js-test.js"></script>
|
| +<script src="../../resources/record-events.js"></script>
|
| +<style>
|
| +body { margin: 0px; }
|
| +div.box { padding: 40px; }
|
| +#yellow { background-color: yellow; }
|
| +#console { padding: 0px; }
|
| +iframe { margin: 0px; border: 0px; width: 100%; height: 320px; }
|
| +</style>
|
| +<div class="box" id="yellow"><iframe src='resources/gesture-tap-mouse-events-between-frames-iframe1.html' id='frameA'></iframe></div>
|
| +<div id="console"></div>
|
| +<script>
|
| +description("Verifies that mouse events are fired on tapping of gesture across frames in the correct order.");
|
| +var frameA, frameB, frameC, frameD, frameE;
|
| +
|
| +var yellowEnterOrder = [
|
| + ["yellow", "mouseover"],
|
| + ["yellow", "mouseenter"],
|
| + ["greenyellow", "mouseover"],
|
| + ["greenyellow", "mouseenter"]];
|
| +
|
| +var greenEnterOrder = [
|
| + ["limegreen", "mouseover"],
|
| + ["limegreen", "mouseenter"],
|
| + ["green", "mouseover"],
|
| + ["green", "mouseenter"]];
|
| +
|
| +var greenLeaveOrder = [
|
| + ["green", "mouseout"],
|
| + ["green", "mouseleave"],
|
| + ["limegreen", "mouseout"],
|
| + ["limegreen", "mouseleave"],
|
| + ["greenyellow", "mouseout"],
|
| + ["greenyellow", "mouseover"]];
|
| +
|
| +var pinkEnterOrder = [
|
| + ["pink", "mouseover"],
|
| + ["pink", "mouseenter"],
|
| + ["hotpink", "mouseover"],
|
| + ["hotpink", "mouseenter"]];
|
| +
|
| +var pinkLeaveOrder = [
|
| + ["hotpink", "mouseout"],
|
| + ["hotpink", "mouseleave"],
|
| + ["pink", "mouseout"],
|
| + ["pink", "mouseleave"],
|
| + ["greenyellow", "mouseout"],
|
| + ["greenyellow", "mouseover"]];
|
| +
|
| +function getElementById(obj)
|
| +{
|
| + if (obj.frame)
|
| + return obj.frame.contentDocument.getElementById(obj.id);
|
| + return document.getElementById(obj.id);
|
| +}
|
| +
|
| +function init() {
|
| + frameA = document.getElementById("frameA");
|
| + frameB = frameA.contentDocument.getElementById("frameB");
|
| + frameC = frameB.contentDocument.getElementById("frameC");
|
| + frameD = frameA.contentDocument.getElementById("frameD");
|
| + frameE = frameD.contentDocument.getElementById("frameE");
|
| +
|
| + var ids = [
|
| + { id : "yellow" },
|
| + { id : "greenyellow", frame : frameA },
|
| + { id : "limegreen", frame: frameB },
|
| + { id : "green", frame: frameC },
|
| + { id : "pink", frame: frameD },
|
| + { id : "hotpink", frame: frameE }];
|
| +
|
| + var elements = [];
|
| + ids.forEach(function(id) {
|
| + var element = getElementById(id);
|
| + elements.push(element);
|
| + });
|
| + registerElementsAndEventsToRecord(elements, ["mouseover", "mouseout", "mouseenter", "mouseleave"]);
|
| +}
|
| +
|
| +function doGesture(obj, base)
|
| +{
|
| + debug("-- sending gestureTap to " + obj.id + " --");
|
| + var element = getElementById( { id : obj.id, frame : obj.frame });
|
| +
|
| + var x = base.x + element.offsetLeft + element.offsetWidth / 2;
|
| + var y = base.y + element.offsetTop + element.offsetHeight / 2;
|
| + eventSender.gestureTap(x, y);
|
| +}
|
| +
|
| +function runTests()
|
| +{
|
| + init();
|
| + if (window.eventSender) {
|
| + debug("--- Tap tests ---");
|
| +
|
| + var expectedOrder = [];
|
| + beginRecordingEvents();
|
| +
|
| + var greenX = frameA.offsetLeft + frameB.offsetLeft + frameC.offsetLeft;;
|
| + var greenY = frameA.offsetTop + frameB.offsetTop + frameC.offsetTop;;
|
| +
|
| + doGesture({id: "green", frame: frameC}, {x: greenX, y: greenY});
|
| + expectedOrder = expectedOrder.concat(yellowEnterOrder, greenEnterOrder);
|
| + checkThatEventsFiredInOrder(expectedOrder);
|
| +
|
| + doGesture({id: "green", frame: frameC}, {x: greenX, y: greenY});
|
| + debug("There should not be any mouse event.");
|
| + checkThatEventsFiredInOrder(expectedOrder);
|
| +
|
| + var pinkX = frameA.offsetLeft + frameD.offsetLeft + frameE.offsetLeft;;
|
| + var pinkY = frameA.offsetTop + frameD.offsetTop + frameE.offsetTop;;
|
| + doGesture({id: "hotpink", frame: frameE }, {x: pinkX, y: pinkY});
|
| + expectedOrder = expectedOrder.concat(greenLeaveOrder, pinkEnterOrder);
|
| + checkThatEventsFiredInOrder(expectedOrder);
|
| +
|
| + doGesture({id: "hotpink", frame: frameE }, {x: pinkX, y: pinkY});
|
| + debug("There should not be any mouse event.");
|
| + checkThatEventsFiredInOrder(expectedOrder);
|
| +
|
| + doGesture({id: "green", frame: frameC}, {x: greenX, y: greenY});
|
| + 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>
|
|
|