Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit bb23160

Browse files
kevers-googlemoz-wptsync-bot
authored andcommitted
Bug 1932883 [wpt PR 49331] - Refactor pointerevents_iframe-touch-action-none, a=testonly
Automatic update from web-platform-tests Refactor pointerevents_iframe-touch-action-none Problems in the test: * onload only ensures the parent frame is loaded and not the child frame. Fix by explicitly triggering load of the child frame and waiting on completion. * assumes message from child frame will be posted and processed by the time the button is pressed, but this can happen too quickly. Fix by waiting on a message promise from the child frame. * concatenation of events from the child frame is needlessly convoluted and likely the result of copy-paste from another test. 1 flake over 100 runs without fix. 0 flakes over 600 runs with the fix. Bug: 40770210 Change-Id: Icf6640ee87b0d85f93bfa0753794545f1c302462 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6035259 Reviewed-by: Mustaq Ahmed <[email protected]> Commit-Queue: Kevin Ellis <[email protected]> Cr-Commit-Position: refs/heads/main@{#1386777} -- wpt-commits: 97bfee7308f1b4d2443ea91056be7867fb3d8f18 wpt-pr: 49331
1 parent 86d7114 commit bb23160

File tree

1 file changed

+45
-44
lines changed

1 file changed

+45
-44
lines changed
Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,67 @@
11
<html>
22
<head>
3-
<title>iframe touch-action:none attribute</title>
4-
<meta name="viewport" content="width=device-width">
5-
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
6-
<script src="/resources/testharness.js"></script>
7-
<script src="/resources/testharnessreport.js"></script>
8-
<script src="pointerevent_support.js"></script>
9-
<script src="/resources/testdriver.js"></script>
10-
<script src="/resources/testdriver-actions.js"></script>
11-
<script src="/resources/testdriver-vendor.js"></script>
3+
<title>iframe touch-action:none does not prevent panning or zooming inside
4+
the iframe</title>
5+
<meta name="viewport" content="width=device-width">
6+
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
7+
<script src="/resources/testharness.js"></script>
8+
<script src="/resources/testharnessreport.js"></script>
9+
<script src="pointerevent_support.js"></script>
10+
<script src="/resources/testdriver.js"></script>
11+
<script src="/resources/testdriver-actions.js"></script>
12+
<script src="/resources/testdriver-vendor.js"></script>
1213
</head>
13-
<body onload="run()">
14+
<style>
15+
iframe {
16+
touch-action: none;
17+
}
18+
</style>
19+
<body>
1420
<h1>iframe touch-action:none attribute</h1>
1521
<h2 id="pointerTypeDescription"></h2>
16-
<h4>Test Description: Drag your finger in the green rectangle below then tap the "Done" button.</h4>
1722
<br>
18-
<iframe id="target"
19-
style="touch-action:none;"
20-
src="resources/iframe-touch-action-none-subframe.html">
21-
</iframe>
22-
<input type="button" id="btnDone" value="Done">
23+
<iframe id="target"></iframe>
2324
</body>
2425
<script>
25-
var event_log = [];
26+
'use strict';
2627

27-
function resetTestState() {
28-
event_log = [];
28+
function loadFrame() {
29+
return new Promise(resolve => {
30+
const frame = document.getElementById('target');
31+
frame.onload = resolve;
32+
frame.src = 'resources/iframe-touch-action-none-subframe.html';
33+
});
2934
}
3035

31-
function run() {
32-
var test_pointerEvent = setup_pointerevent_test("iframe received pointercancel",
33-
["touch"]);
34-
var actions_promise;
35-
var target = document.getElementById("target");
36-
37-
on_event(document.getElementById("btnDone"), "click", () => {
38-
test_pointerEvent.step(() => {
39-
assert_equals(event_log.join(", "), "pointercancel",
40-
"exactly one pointercancel received");
41-
});
42-
actions_promise.then(() => test_pointerEvent.done());
36+
function messageReceived() {
37+
return new Promise(resolve => {
38+
window.addEventListener('message', (event) => {
39+
if (event.source != target.contentWindow) {
40+
return;
41+
}
42+
if (event.data && event.data.type == "subframe-event") {
43+
resolve(event.data.eventType);
44+
}
4345
});
46+
});
47+
}
4448

45-
on_event(window, "message", function(event) {
46-
if (event.source != target.contentWindow) {
47-
return;
48-
}
49-
if (event.data && event.data.type == "subframe-event") {
50-
event_log.push(event.data.eventType);
51-
}
52-
});
49+
promise_test(async t => {
50+
const target = document.getElementById("target");
51+
await loadFrame();
52+
53+
const messagePromise = messageReceived();
5354

54-
actions_promise = new test_driver.Actions()
55+
await new test_driver.Actions()
5556
.addPointer("pointer1", "touch")
5657
.pointerMove(0, 0, {origin: target})
5758
.pointerDown()
5859
.pointerMove(25, 25, {origin: target})
5960
.pointerUp()
60-
.pointerMove(0, 0, {origin: btnDone})
61-
.pointerDown()
62-
.pointerUp()
6361
.send();
64-
}
62+
63+
const eventType = await messagePromise;
64+
assert_equals(eventType, 'pointercancel');
65+
}, 'touch iframe received pointercancel');
6566
</script>
6667
</html>

0 commit comments

Comments
 (0)