-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a WPT for coalesced event attributes on redispatch.
The test is tentative due to: w3c/pointerevents#514 Bug: 353538500 Change-Id: Id3ead2029e84a3100573558adbd7c14c272e821f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5823713 Reviewed-by: Robert Flack <[email protected]> Commit-Queue: Mustaq Ahmed <[email protected]> Cr-Commit-Position: refs/heads/main@{#1350816}
- Loading branch information
1 parent
0e3495a
commit ab72b1d
Showing
1 changed file
with
99 additions
and
0 deletions.
There are no files selected for viewing
99 changes: 99 additions & 0 deletions
99
pointerevents/coalesced_events_attributes_on_redispatch.https.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
<!doctype html> | ||
<!-- | ||
Tentative due to: | ||
https://github.com/w3c/pointerevents/issues/514 | ||
--> | ||
<title>Coalesced event properties after JS redispatches a trusted event</title> | ||
<meta name="variant" content="?mouse"> | ||
<meta name="variant" content="?pen"> | ||
<meta name="variant" content="?touch"> | ||
<meta name="viewport" content="width=device-width"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/testdriver.js"></script> | ||
<script src="/resources/testdriver-actions.js"></script> | ||
<script src="/resources/testdriver-vendor.js"></script> | ||
<script src="pointerevent_support.js"></script> | ||
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> | ||
<style> | ||
div { | ||
width: 100px; | ||
height: 100px; | ||
} | ||
</style> | ||
<div id="target"></div> | ||
<div id="target2"></div> | ||
|
||
<script> | ||
"use strict"; | ||
const pointer_type = location.search.substring(1); | ||
const target = document.getElementById("target"); | ||
const target2 = document.getElementById("target2"); | ||
|
||
let received_num_coalesced; | ||
|
||
function checkListAttributesBeforeRedispatch(event) { | ||
assert_equals(event.type, "pointermove"); | ||
assert_equals(event.isTrusted, true); | ||
assert_equals(event.target, target); | ||
|
||
received_num_coalesced = event.getCoalescedEvents().length; | ||
assert_greater_than_equal(received_num_coalesced, 1, | ||
"pointermove.getCoalescedEvents() has at least 1 entry"); | ||
|
||
for (const coalesced_event of event.getCoalescedEvents()) { | ||
assert_equals(coalesced_event.isTrusted, true, | ||
"coalesced_event.isTrusted is true"); | ||
assert_equals(coalesced_event.target, target, | ||
"coalesced_event.target matches dispatch target"); | ||
} | ||
} | ||
|
||
// This WPT minimally tests redispatched event attributes. For trusted | ||
// event tests, see coalesced_events_attributes.https.html. | ||
function checkListAttributesAfterRedispatch(event) { | ||
assert_equals(event.type, "pointermove"); | ||
assert_equals(event.isTrusted, false); | ||
assert_equals(event.target, target2); | ||
|
||
assert_greater_than_equal(event.getCoalescedEvents().length, | ||
received_num_coalesced, | ||
"pointermove.getCoalescedEvents() has the same number of entries"); | ||
|
||
for (const coalesced_event of event.getCoalescedEvents()) { | ||
assert_equals(coalesced_event.isTrusted, true, | ||
"coalesced_event.isTrusted maintains its original value"); | ||
assert_equals(coalesced_event.target, target, | ||
"coalesced_event.target maintains its original value"); | ||
} | ||
} | ||
|
||
promise_test(async () => { | ||
// We need "touch-action:none" to guarantee pointermove events. | ||
target.classList.add("touchActionNone"); | ||
|
||
let pointermove_promise = getEvent("pointermove", target); | ||
let pointerup_promise = getEvent("pointerup", target); | ||
|
||
await new test_driver.Actions() | ||
.addPointer("TestPointer", pointer_type) | ||
.pointerMove(0, 0, {origin: target}) | ||
.pointerDown() | ||
.pointerMove(20, 20, {origin: target}) | ||
.pointerUp() | ||
.send(); | ||
|
||
let pointermove_event = await pointermove_promise; | ||
await pointerup_promise; | ||
|
||
checkListAttributesBeforeRedispatch(pointermove_event); | ||
|
||
let pointermove_promise2 = getEvent("pointermove", target2); | ||
target2.dispatchEvent(pointermove_event); | ||
let pointermove_event2 = await pointermove_promise2; | ||
|
||
checkListAttributesAfterRedispatch(pointermove_event2); | ||
|
||
target.classList.remove("touchActionNone"); | ||
}, "Coalesced list in pointerdown/move/up events"); | ||
</script> |