Bug 1883556 [wpt PR 44927] - CloseWatcher: fix Esc key tests, a=testonly

Automatic update from web-platform-tests
CloseWatcher: fix Esc key tests

They were interfering with each other by being in the same file. This
meant that most of the tests weren't really testing anything: which is
good, because the keyup and keypress tests had the opposite of the
correct expectations.

This splits up all the tests, and fixes keyup.html and keypress.html
to expect that such listeners are NOT able to prevent the close request.

Bug: 40054591
Change-Id: Id294cb9f1c6e91bec284e5a09042026e54538664
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5339289
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Domenic Denicola <domenic@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1269315}

--

wpt-commits: b334432d7b67798b90fdef51f5d1430bfbc5f3fd
wpt-pr: 44927
This commit is contained in:
Domenic Denicola 2024-03-12 22:31:14 +00:00 committed by moz-wptsync-bot
parent cc6766a79d
commit 9a5ca5e15c
7 changed files with 114 additions and 77 deletions

View file

@ -1,77 +0,0 @@
<!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 src="resources/helpers.js"></script>
<!--
Tests in this file are around the interaction of the Esc key specifically, not
the general concept of close requests. Ideally, all other tests would work
as-is if you changed the implementation of sendCloseRequest(). These tests
assume that Esc is the close request for the platform being tested.
-->
<body>
<script>
promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
await sendEscKey();
assert_array_equals(events, ["close"]);
}, "Esc key does not count as user activation, so if it is the sole user interaction, that fires close but not cancel");
promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
window.onkeydown = e => e.preventDefault();
await sendEscKey();
assert_array_equals(events, []);
}, "A keydown listener can prevent the Esc keypress from being interpreted as a close request");
promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
window.onkeyup = e => e.preventDefault();
await sendEscKey();
assert_array_equals(events, []);
}, "A keyup listener can prevent the Esc keypress from being interpreted as a close request");
promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
window.onkeypress = e => e.preventDefault();
await sendEscKey();
assert_array_equals(events, []);
}, "A keypress listener can prevent the Esc keypress from being interpreted as a close request");
test(t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
let keydown = new KeyboardEvent('keydown', {'key': 'Escape', 'keyCode': 27});
window.dispatchEvent(keydown);
let keyup = new KeyboardEvent('keyup', {'key': 'Escape', 'keyCode': 27});
window.dispatchEvent(keyup);
assert_array_equals(events, []);
let keyup2 = document.createEvent("Event");
keyup2.initEvent("keyup", true);
window.dispatchEvent(keyup2);
assert_array_equals(events, []);
}, "close via synthesized Esc key must not work");
</script>

View file

@ -0,0 +1,4 @@
Tests in this directory are around the interaction of the Esc key specifically,
not the general concept of close requests. Ideally, all other tests would work
as-is if you changed the implementation of `sendCloseRequest()`. These tests
assume that Esc is the close request for the platform being tested.

View file

@ -0,0 +1,21 @@
<!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 src="../resources/helpers.js"></script>
<body>
<script>
promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
window.onkeydown = e => e.preventDefault();
await sendEscKey();
assert_array_equals(events, []);
}, "A keydown listener can prevent the Esc keypress from being interpreted as a close request");
</script>

View file

@ -0,0 +1,21 @@
<!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 src="../resources/helpers.js"></script>
<body>
<script>
promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
window.onkeypress = e => e.preventDefault();
await sendEscKey();
assert_array_equals(events, ["close"]);
}, "A keypress listener can NOT prevent the Esc keypress from being interpreted as a close request");
</script>

View file

@ -0,0 +1,21 @@
<!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 src="../resources/helpers.js"></script>
<body>
<script>
promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
window.onkeyup = e => e.preventDefault();
await sendEscKey();
assert_array_equals(events, ["close"]);
}, "A keyup listener can NOT prevent the Esc keypress from being interpreted as a close request");
</script>

View file

@ -0,0 +1,19 @@
<!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 src="../resources/helpers.js"></script>
<body>
<script>
promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
await sendEscKey();
assert_array_equals(events, ["close"]);
}, "Esc key does not count as user activation, so if it is the sole user interaction, that fires close but not cancel");
</script>

View file

@ -0,0 +1,28 @@
<!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 src="../resources/helpers.js"></script>
<body>
<script>
test(t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);
let keydown = new KeyboardEvent("keydown", {key: "Escape", keyCode: 27});
window.dispatchEvent(keydown);
let keyup = new KeyboardEvent("keyup", {key: "Escape", keyCode: 27});
window.dispatchEvent(keyup);
assert_array_equals(events, []);
let keyup2 = document.createEvent("Event");
keyup2.initEvent("keyup", true);
window.dispatchEvent(keyup2);
assert_array_equals(events, []);
}, "close via synthesized Esc key must not work");
</script>