diff options
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.html | 47 |
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> |