Skip to content

Commit

Permalink
Import close-watcher WPT tests
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=266379

Reviewed by Tim Nguyen.

Upstream commit: web-platform-tests/wpt@43ae6cd

* LayoutTests/imported/w3c/resources/import-expectations.json:
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/META.yml: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/abortsignal-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/abortsignal.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/basic-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/basic.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/README.md: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keydown-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keydown.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keypress-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keypress.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keyup-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/keyup.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/not-user-activation-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/not-user-activation.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/synthetic-keyboard-event-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/synthetic-keyboard-event.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/esc-key/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/event-properties-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/event-properties.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/frame-removal-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/frame-removal.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/inside-event-listeners-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/inside-event-listeners.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/resources/helpers.js: Added.
(window.createRecordingCloseWatcher):
(window.createBlessedRecordingCloseWatcher.async t):
(window.destroyCloseWatcher):
(window.sendEscKey):
(window.maybeTopLayerBless):
(window.waitForPotentialCloseEvent):
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/resources/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/README.md: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate-preventDefault.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate-preventDefault_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate-preventDefault_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-closerequest-n.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-closerequest-n_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-closerequest-n_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-destroy-n.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-destroy-n_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n-destroy-n_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/n_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-CloseWatcher.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-activate-CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-activate-CloseWatcher.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-activate-dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-activate-dialog.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nn-dialog.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-CloseWatcher-dialog-popover-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-CloseWatcher-dialog-popover.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-CloseWatcher.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-dialog.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-popovers-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-popovers.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny-activate-preventDefault.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny-activate-preventDefault_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny-activate-preventDefault_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ny_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn-popovers-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn-popovers.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyn_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn-destroy.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn-destroy_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn-destroy_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nynn_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyn-CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyn-CloseWatcher.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyn-dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyn-dialog.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyyn-CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyyn-CloseWatcher.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyyn-dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/nyyyn-dialog.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/y.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/y_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/y_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn-activate.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn-activate_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn-activate_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yn_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ynn-CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ynn-CloseWatcher.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ynn-dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/ynn-dialog.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yy.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yy_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yy_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyn.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyn_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyn_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-CloseWatcher-dialog-popover-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-CloseWatcher-dialog-popover.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-activate-CloseWatcher-dialog-popover-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-activate-CloseWatcher-dialog-popover.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-popovers-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-popovers.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy_CloseWatcher-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/user-activation/yyy_dialog-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/close-watcher/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-close-request-expected.txt:
* LayoutTests/TestExpectations:

Canonical link: https://commits.webkit.org/279060@main
  • Loading branch information
lukewarlow committed May 21, 2024
1 parent c77bdbf commit 4e0e3b8
Show file tree
Hide file tree
Showing 115 changed files with 2,072 additions and 2 deletions.
25 changes: 25 additions & 0 deletions LayoutTests/TestExpectations
Original file line number Diff line number Diff line change
Expand Up @@ -5513,6 +5513,31 @@ webkit.org/b/266630 imported/w3c/web-platform-tests/trusted-types/WorkerGlobalSc
webkit.org/b/266630 imported/w3c/web-platform-tests/trusted-types/trusted-types-navigation.html [ Pass Failure ]
webkit.org/b/274088 imported/w3c/web-platform-tests/trusted-types/Element-setAttribute-respects-Elements-node-documents-globals-CSP.html [ Pass Failure ]

# Close watchers aren't implemented yet
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate-preventDefault.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/ny-activate-preventDefault.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/n-activate.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/yn-activate.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/n-closerequest-n.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/nn-activate-dialog.html [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/nn-dialog.html [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-dialog.html [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/ynn-dialog.html [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/nyyn-dialog.html [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/nyyyn-dialog.html [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/n-destroy-n.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/y.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/n.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/ny.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/yn.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/yyn.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/yy.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/yyy.html?dialog [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/nnn-popovers.html [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/nyn-popovers.html [ Skip ]
webkit.org/b/263305 imported/w3c/web-platform-tests/close-watcher/user-activation/yyy-popovers.html [ Skip ]


# These tests are image failures
imported/w3c/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-000.html [ Skip ]
imported/w3c/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-001.html [ Skip ]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"web-platform-tests/clear-site-data": "import",
"web-platform-tests/client-hints": "skip",
"web-platform-tests/clipboard-apis": "import",
"web-platform-tests/close-watcher": "skip",
"web-platform-tests/close-watcher": "import",
"web-platform-tests/common": "import",
"web-platform-tests/compat": "import",
"web-platform-tests/compression": "import",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
spec: https://wicg.github.io/close-watcher/
suggested_reviewers:
- domenic
- natechapin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

FAIL already-aborted AbortSignal then requestClose() fires no events Can't find variable: CloseWatcher
FAIL abortController.abort() then requestClose() fires no events Can't find variable: CloseWatcher
FAIL requestClose() then abortController.abort() fires only one close event Can't find variable: CloseWatcher
FAIL already-aborted AbortSignal then Esc key fires no events promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"
FAIL abortController.abort() then close via Esc key fires no events promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"
FAIL Esc key then abortController.abort() fires only one close event promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"
FAIL abortController.abort()ing a free CloseWatcher allows a new one to be created without a user activation Can't find variable: CloseWatcher
FAIL abortController.abort() inside oncancel promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"
FAIL abortController.abort() inside onclose is benign Can't find variable: CloseWatcher

Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
<!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>
// TODO(domenic): maybe update createRecordingCloseWatcher() to allow passing args and use it?

test(() => {
let watcher = new CloseWatcher({ signal: AbortSignal.abort() });
let oncancel_called = false;
let onclose_called = false;
watcher.oncancel = () => oncancel_called = true;
watcher.onclose = () => onclose_called = true;

watcher.requestClose();

assert_false(oncancel_called);
assert_false(onclose_called);
}, "already-aborted AbortSignal then requestClose() fires no events");

test(() => {
let controller = new AbortController();
let watcher = new CloseWatcher({ signal: controller.signal });
let oncancel_called = false;
let onclose_called = false;
watcher.oncancel = () => oncancel_called = true;
watcher.onclose = () => onclose_called = true;

controller.abort();
watcher.requestClose();

assert_false(oncancel_called);
assert_false(onclose_called);
}, "abortController.abort() then requestClose() fires no events");

test(() => {
let controller = new AbortController();
let watcher = new CloseWatcher({ signal: controller.signal });
let oncancel_call_count_ = 0;
let onclose_call_count_ = 0;
watcher.oncancel = () => oncancel_call_count_++;
watcher.onclose = () => onclose_call_count_++;

watcher.requestClose();
controller.abort();

assert_equals(oncancel_call_count_, 1);
assert_equals(onclose_call_count_, 1);
}, "requestClose() then abortController.abort() fires only one close event");

promise_test(async () => {
let watcher = new CloseWatcher({ signal: AbortSignal.abort() });
let oncancel_called = false;
let onclose_called = false;
watcher.oncancel = () => oncancel_called = true;
watcher.onclose = () => onclose_called = true;

await sendCloseRequest();

assert_false(oncancel_called);
assert_false(onclose_called);
}, "already-aborted AbortSignal then Esc key fires no events");

promise_test(async t => {
let controller = new AbortController();
let watcher = new CloseWatcher({ signal: controller.signal });
let oncancel_called = false;
let onclose_called = false;
watcher.oncancel = () => oncancel_called = true;
watcher.onclose = () => onclose_called = true;

controller.abort();
await sendCloseRequest();

assert_false(oncancel_called);
assert_false(onclose_called);
}, "abortController.abort() then close via Esc key fires no events");

promise_test(async t => {
let controller = new AbortController();
let watcher = new CloseWatcher({ signal: controller.signal });
let oncancel_call_count_ = 0;
let onclose_call_count_ = 0;
watcher.oncancel = () => oncancel_call_count_++;
watcher.onclose = () => onclose_call_count_++;

await sendCloseRequest();
controller.abort();

assert_equals(oncancel_call_count_, 1);
assert_equals(onclose_call_count_, 1);
}, "Esc key then abortController.abort() fires only one close event");

test(t => {
let controller = new AbortController();
let watcher = new CloseWatcher({ signal: controller.signal });
controller.abort();
let watcher2 = new CloseWatcher();
t.add_cleanup(() => watcher2.destroy());
}, "abortController.abort()ing a free CloseWatcher allows a new one to be created without a user activation");

promise_test(async t => {
let controller = new AbortController();
let watcher = new CloseWatcher({ signal: controller.signal });
watcher.oncancel = () => { controller.abort(); }
watcher.onclose = t.unreached_func("onclose");
await test_driver.bless("give user activation so that cancel will fire", () => {
watcher.requestClose();
});
}, "abortController.abort() inside oncancel");

test(t => {
let controller = new AbortController();
let watcher = new CloseWatcher({ signal: controller.signal });
watcher.onclose = () => { controller.abort(); }
watcher.requestClose();
}, "abortController.abort() inside onclose is benign");
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

FAIL requestClose() with no user activation Can't find variable: CloseWatcher
FAIL destroy() then requestClose() Can't find variable: CloseWatcher
FAIL close() then requestClose() Can't find variable: CloseWatcher
FAIL requestClose() then destroy() Can't find variable: CloseWatcher
FAIL close() then destroy() Can't find variable: CloseWatcher
FAIL destroy() then close request promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"
FAIL Close request then destroy() promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"

Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<!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);

watcher.requestClose();

assert_array_equals(events, ["cancel[cancelable=false]", "close"]);
}, "requestClose() with no user activation");

test(t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);

watcher.destroy();
watcher.requestClose();

assert_array_equals(events, []);
}, "destroy() then requestClose()");

test(t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);

watcher.close();
assert_array_equals(events, ["close"]);

watcher.requestClose();
assert_array_equals(events, ["close"]);
}, "close() then requestClose()");

test(t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);

watcher.requestClose();
assert_array_equals(events, ["cancel[cancelable=false]", "close"]);

watcher.destroy();
assert_array_equals(events, ["cancel[cancelable=false]", "close"]);
}, "requestClose() then destroy()");

test(t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);

watcher.close();
assert_array_equals(events, ["close"]);

watcher.destroy();
assert_array_equals(events, ["close"]);
}, "close() then destroy()");

promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);

watcher.destroy();
await sendCloseRequest();

assert_array_equals(events, []);
}, "destroy() then close request");

promise_test(async t => {
let events = [];
let watcher = createRecordingCloseWatcher(t, events);

await sendCloseRequest();
watcher.destroy();

assert_array_equals(events, ["cancel[cancelable=false]", "close"]);
}, "Close request then destroy()");
</script>
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

FAIL A keydown listener can prevent the Esc keypress from being interpreted as a close request promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"

Original file line number Diff line number Diff line change
@@ -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>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

FAIL A keypress listener can NOT prevent the Esc keypress from being interpreted as a close request promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"

Original file line number Diff line number Diff line change
@@ -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, ["cancel[cancelable=false]", "close"]);
}, "A keypress listener can NOT prevent the Esc keypress from being interpreted as a close request");
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

FAIL A keyup listener can NOT prevent the Esc keypress from being interpreted as a close request promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"

Original file line number Diff line number Diff line change
@@ -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, ["cancel[cancelable=false]", "close"]);
}, "A keyup listener can NOT prevent the Esc keypress from being interpreted as a close request");
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

FAIL Esc key does not count as user activation, so if it is the sole user interaction, cancel is cancelable=false promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: CloseWatcher"

Original file line number Diff line number Diff line change
@@ -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, ["cancel[cancelable=false]", "close"]);
}, "Esc key does not count as user activation, so if it is the sole user interaction, cancel is cancelable=false");
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

FAIL close via synthesized Esc key must not work Can't find variable: CloseWatcher

Loading

0 comments on commit 4e0e3b8

Please sign in to comment.