summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html')
-rw-r--r--testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html47
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html b/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html
new file mode 100644
index 0000000000..b7903ed461
--- /dev/null
+++ b/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=author href="mailto:falken@chromium.org">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element">
+<link rel=help href="https://bugs.chromium.org/p/chromium/issues/detail?id=276785">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<dialog></dialog>
+
+<script>
+async_test(t => {
+ document.addEventListener('close', t.step_func_done(() => {
+ t.assert_unreached(`The 'close' event unexpectedly bubbled.`);
+ }));
+
+ closedCount = 0;
+ dialog = document.querySelector('dialog');
+ dialog.addEventListener('close', function(event) {
+ const selfDialog = this;
+ t.step(() => {
+ closedCount++;
+ assert_equals(selfDialog, dialog);
+ assert_false(dialog.open);
+ assert_false(event.cancelable);
+ event.preventDefault();
+
+ if (closedCount == 1) {
+ dialog.show();
+ dialog.close();
+ assert_equals(closedCount, 1, `dialog's close event handler shouldn't be called synchronously.`);
+ } else if (closedCount == 2) {
+ t.done();
+ }
+ });
+ });
+
+ dialog.show();
+ dialog.close();
+
+ // Verify that preventDefault() didn't cancel closing.
+ assert_false(dialog.open);
+
+ // dialog's close event handler shouldn't be called synchronously.
+ assert_equals(closedCount, 0);
+}, "Test that dialog receives a close event upon closing.");
+</script>