зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1632222 [wpt PR 23174] - Migrate pointerevents/mouse-on-object.html to wpt, a=testonly
Automatic update from web-platform-tests Migrate pointerevents/mouse-on-object.html to wpt The expected behavior on this test seems to be a hack as it implicitly captures mouse to the object and still sends the mouseup/pointerup to the object when down happened on the object even though up is happening outside of the object. This seems to resolving compat issues on embedded flash objects. Change-Id: Ibd888a989dbcf5e6ff08b35569903967edc957e6 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2160142 Commit-Queue: Navid Zolghadr <nzolghadr@chromium.org> Reviewed-by: Lan Wei <lanwei@chromium.org> Cr-Commit-Position: refs/heads/master@{#762476} -- wpt-commits: 55367a4c706fa32301980773cb2c09cbcd291635 wpt-pr: 23174
This commit is contained in:
Родитель
de4dfdc07a
Коммит
29df1aad8a
|
@ -0,0 +1,64 @@
|
|||
<!DOCTYPE HTML>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script type="text/javascript" src="../pointerevent_support.js"></script>
|
||||
|
||||
<style>
|
||||
#obj {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
padding: 50px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<h1>Verifies that mouse activities on an object fire pointerevents. It expected to get pointerup when the pointerdown happened on the object for compatibility with flash objects.</h1>
|
||||
|
||||
<object id="obj"></object>
|
||||
|
||||
<button id="done"></button>
|
||||
<div id="log"></div>
|
||||
|
||||
<script>
|
||||
var target = document.getElementById("obj");
|
||||
var done = document.getElementById("done");
|
||||
var rect = target.getBoundingClientRect();
|
||||
var done_clicked = false;
|
||||
var receivedEvents = [];
|
||||
["mousedown", "mouseup", "mousemove", "pointerdown", "pointerup", "pointermove"].forEach(function(eventName) {
|
||||
target.addEventListener(eventName, function(event) {
|
||||
receivedEvents.push(event.type);
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById('done').addEventListener('click', (e) => done_clicked = true);
|
||||
|
||||
promise_test(async() => {
|
||||
done_clicked = false;
|
||||
receivedEvents = [];
|
||||
|
||||
await new test_driver.Actions().pointerMove(rect.left+5, rect.top+5).pointerDown(0).pointerUp(0).send().then(() => {
|
||||
return clickInTarget("mouse", done);
|
||||
});
|
||||
await resolveWhen(()=>{return done_clicked;});
|
||||
|
||||
assert_array_equals(receivedEvents, ["pointermove", "mousemove", "pointerdown", "mousedown", "pointerup", "mouseup"],
|
||||
"Click on object should result in the correct sequence of events");
|
||||
}, "Normal click event sequence within object");
|
||||
|
||||
promise_test(async() => {
|
||||
done_clicked = false;
|
||||
receivedEvents = [];
|
||||
|
||||
await new test_driver.Actions().pointerMove(rect.left+5, rect.top+5).pointerDown(0).pointerMove(rect.left-5, rect.top-5).pointerUp(0).send().then(() => {
|
||||
return clickInTarget("mouse", done);
|
||||
});
|
||||
await resolveWhen(()=>{return done_clicked;});
|
||||
|
||||
assert_array_equals(receivedEvents, ["pointermove", "mousemove", "pointerdown", "mousedown", "pointermove", "mousemove", "pointerup", "mouseup"],
|
||||
"Drag from object should result in the correct sequence of events");
|
||||
|
||||
}, "Click and drag outside of object event sequence");
|
||||
</script>
|
|
@ -379,3 +379,16 @@ function moveToDocument(pointerType) {
|
|||
.pointerMove(0, 0)
|
||||
.send();
|
||||
}
|
||||
|
||||
// Returns a promise that only gets resolved when the condition is met.
|
||||
function resolveWhen(condition) {
|
||||
return new Promise((resolve, reject) => {
|
||||
function tick() {
|
||||
if (condition())
|
||||
resolve();
|
||||
else
|
||||
requestAnimationFrame(tick.bind(this));
|
||||
}
|
||||
tick();
|
||||
});
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче