Commit 081f3890 authored by Liviu Tinta's avatar Liviu Tinta Committed by Commit Bot

Fix mouse-pointer-preventdefault for Firefox/Safari

Safari and Firefox fire pointerevents & compatible mouse
events in a different order than Chrome. The order matches the
PointerEvents specification for all browsers. Modify the test to
reflect this difference in the browser implementation.

Bug: 1085549, 1085647
Change-Id: I43ed0bbbabb0abbcbd93fbab7e5d8ee98a902611
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2359588Reviewed-by: default avatarMustaq Ahmed <mustaq@chromium.org>
Commit-Queue: Liviu Tinta <liviutinta@chromium.org>
Cr-Commit-Position: refs/heads/master@{#801077}
parent 77e908f1
......@@ -18,126 +18,126 @@ div.box {
<script>
var receivedEvents = [];
var receivedMouseEvents = [];
var receivedPointerEvents = [];
var mouseEventList = ["mousedown", "mouseup", "mouseenter", "mouseleave", "mouseover", "mouseout", "mousemove"];
var pointerEventList = ["pointerdown", "pointerup", "pointerenter", "pointerleave", "pointerover", "pointerout", "pointermove"];
var preventDefaultList = ["none"].concat(pointerEventList);
var eventToPreventDefault = "";
var seqNo = 0;
function init() {
var targetDiv = document.getElementById("target");
mouseEventList.forEach(function(eventName) {
targetDiv.addEventListener(eventName, function(event) {
++seqNo;
receivedEvents.push(`${seqNo}.${eventName}@target`);
receivedEvents.push(eventName);
receivedMouseEvents.push(eventName);
});
});
pointerEventList.forEach(function(eventName) {
targetDiv.addEventListener(eventName, function(event) {
var preventDefaultMsg = "";
if (event.type == eventToPreventDefault) {
event.preventDefault();
preventDefaultMsg = "_prevented_default";
}
++seqNo;
receivedEvents.push(`${seqNo}.${eventName}@target${preventDefaultMsg}`);
receivedEvents.push(eventName);
receivedPointerEvents.push(eventName);
});
});
}
var expectedEvents = new Map([
["none", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"
var expectedPointerEvents = new Map([
["none", ["pointerover", "pointerenter", "pointermove", "pointerdown", "pointerup",
"pointerdown", "pointermove", "pointerout", "pointerleave",
"pointerover", "pointerenter", "pointermove", "pointerup", "pointerout",
"pointerleave"
]],
["pointerdown", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target_prevented_default", "8.pointerup@target",
"9.pointerdown@target_prevented_default",
"10.pointermove@target", "11.pointerout@target", "12.pointerleave@target",
"13.mouseout@target", "14.mouseleave@target", "15.pointerover@target",
"16.pointerenter@target", "17.mouseover@target", "18.mouseenter@target",
"19.pointermove@target", "20.pointerup@target", "21.pointerout@target",
"22.pointerleave@target", "23.mouseout@target", "24.mouseleave@target"
["pointerdown", ["pointerover", "pointerenter", "pointermove", "pointerdown",
"pointerup", "pointerdown", "pointermove", "pointerout", "pointerleave",
"pointerover", "pointerenter", "pointermove", "pointerup", "pointerout",
"pointerleave"
]],
["pointerup", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target_prevented_default",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target_prevented_default", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
["pointerenter", ["1.pointerover@target", "2.pointerenter@target_prevented_default", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target_prevented_default", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
["pointerleave", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target_prevented_default", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target_prevented_default", "29.mouseout@target", "30.mouseleave@target"]],
["pointerover", ["1.pointerover@target_prevented_default", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target_prevented_default", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
["pointerout", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target_prevented_default",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target_prevented_default",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
["pointermove", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
"4.mouseenter@target", "5.pointermove@target_prevented_default", "6.mousemove@target",
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
"13.pointermove@target_prevented_default", "14.mousemove@target", "15.pointerout@target",
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
"22.mouseenter@target", "23.pointermove@target_prevented_default", "24.mousemove@target",
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]]
]);
["pointerup", ["pointerover", "pointerenter", "pointermove", "pointerdown",
"pointerup", "pointerdown", "pointermove", "pointerout", "pointerleave",
"pointerover", "pointerenter", "pointermove", "pointerup",
"pointerout", "pointerleave"
]],
["pointerenter", ["pointerover", "pointerenter", "pointermove",
"pointerdown", "pointerup", "pointerdown", "pointermove",
"pointerout", "pointerleave", "pointerover", "pointerenter",
"pointermove", "pointerup", "pointerout", "pointerleave"
]],
["pointerleave", ["pointerover", "pointerenter", "pointermove",
"pointerdown", "pointerup", "pointerdown", "pointermove",
"pointerout", "pointerleave", "pointerover", "pointerenter",
"pointermove", "pointerup", "pointerout", "pointerleave"
]],
["pointerover", ["pointerover", "pointerenter", "pointermove",
"pointerdown", "pointerup", "pointerdown", "pointermove",
"pointerout", "pointerleave", "pointerover", "pointerenter",
"pointermove", "pointerup", "pointerout",
"pointerleave"
]],
["pointerout", ["pointerover", "pointerenter", "pointermove",
"pointerdown", "pointerup", "pointerdown", "pointermove",
"pointerout", "pointerleave", "pointerover", "pointerenter",
"pointermove", "pointerup", "pointerout",
"pointerleave"
]],
["pointermove", ["pointerover", "pointerenter", "pointermove",
"pointerdown", "pointerup", "pointerdown", "pointermove",
"pointerout", "pointerleave", "pointerover", "pointerenter",
"pointermove", "pointerup", "pointerout", "pointerleave"
]]
]);
var expectedMouseEvents = new Map([
["none", ["mouseover", "mouseenter", "mousemove", "mousedown", "mouseup",
"mousedown", "mousemove", "mouseout", "mouseleave",
"mouseover", "mouseenter", "mousemove", "mouseup", "mouseout", "mouseleave"
]],
["pointerdown", ["mouseover", "mouseenter", "mousemove",
"mouseout", "mouseleave", "mouseover", "mouseenter",
"mouseout", "mouseleave"
]],
["pointerup", ["mouseover", "mouseenter", "mousemove",
"mousedown", "mouseup", "mousedown", "mousemove",
"mouseout", "mouseleave", "mouseover",
"mouseenter", "mousemove", "mouseup", "mouseout", "mouseleave"
]],
["pointerenter", ["mouseover", "mouseenter", "mousemove", "mousedown",
"mouseup", "mousedown", "mousemove", "mouseout", "mouseleave",
"mouseover", "mouseenter", "mousemove", "mouseup", "mouseout", "mouseleave"
]],
["pointerleave", ["mouseover", "mouseenter", "mousemove", "mousedown",
"mouseup", "mousedown", "mousemove", "mouseout", "mouseleave",
"mouseover", "mouseenter", "mousemove", "mouseup",
"mouseout", "mouseleave"
]],
["pointerover", ["mouseover", "mouseenter", "mousemove",
"mousedown", "mouseup", "mousedown", "mousemove", "mouseout",
"mouseleave", "mouseover", "mouseenter", "mousemove", "mouseup",
"mouseout", "mouseleave"
]],
["pointerout", ["mouseover", "mouseenter", "mousemove",
"mousedown", "mouseup", "mousedown", "mousemove",
"mouseout", "mouseleave", "mouseover", "mouseenter",
"mousemove", "mouseup", "mouseout", "mouseleave"
]],
["pointermove", ["mouseover", "mouseenter", "mousemove",
"mousedown", "mouseup", "mousedown", "mousemove",
"mouseout", "mouseleave", "mouseover", "mouseenter",
"mousemove", "mouseup", "mouseout", "mouseleave"
]]
]);
async function runTestForDefaultEvent(preventDefaultEvent) {
promise_test((test)=>
new Promise(async (resolve, reject)=>{
test.add_cleanup(()=>{
receivedEvents = [];
seqNo = 0;
receivedPointerEvents = [];
receivedMouseEvents = [];
eventToPreventDefault = "";
});
eventToPreventDefault = preventDefaultEvent;
......@@ -150,7 +150,12 @@ async function runTestForDefaultEvent(preventDefaultEvent) {
reject(e);
}
test.step(()=>{
assert_array_equals(expectedEvents.get(preventDefaultEvent), receivedEvents);});
if(eventToPreventDefault === 'none'){
assert_true(arePointerEventsBeforeCompatMouseEvents(receivedEvents), "There are no compatible mouse events for all pointer events:" + receivedEvents);
}
assert_array_equals(expectedPointerEvents.get(preventDefaultEvent), receivedPointerEvents);
assert_array_equals(expectedMouseEvents.get(preventDefaultEvent), receivedMouseEvents);
});
resolve();
}), `Verifies the effect of pointer event prevent-default on ${preventDefaultEvent}`);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment