diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-ancestor-is-inert.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-ancestor-is-inert.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-ancestor-is-inert.html | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-ancestor-is-inert.html b/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-ancestor-is-inert.html new file mode 100644 index 0000000000..c6bcb5d4ca --- /dev/null +++ b/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-ancestor-is-inert.html @@ -0,0 +1,101 @@ +<!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=329407"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src="/resources/testdriver-vendor.js"></script> + +<style> +#ancestor { + position: absolute; + height: 50px; + width: 50px; + top: 200px; + left: 100px; + border: 1px solid; +} + +dialog { + height: 50px; + width: 50px; + top: 200px; + left: 200px; + margin: 0; +} + +dialog::backdrop { + display: none; +} +</style> + +<div id="ancestor"> + <dialog></dialog> +</div> + +<script> +promise_test(async () => { + async function clickOn(element) { + const rect = element.getBoundingClientRect(); + const actions = new test_driver.Actions() + .pointerMove(rect.left + rect.width / 2, rect.top + rect.height / 2) + .pointerDown() + .pointerUp(); + await actions.send(); + } + + const div = document.querySelector('#ancestor'); + const dialog = document.querySelector('dialog'); + dialog.showModal(); + + const handledEvent = {}; + document.addEventListener('click', function(event) { + handledEvent['document'] = true; + }); + + document.body.addEventListener('click', function(event) { + handledEvent['body'] = true; + // body should get a event only via bubbling. + if (event.target != dialog) { + assert_unreached('body was targeted for an click event'); + div.style.backgroundColor = 'red'; + } + }); + + div.addEventListener('click', function(event) { + handledEvent['div'] = true; + // div should get a event only via bubbling. + if (event.target != dialog) { + assert_unreached('div was targeted for an click event'); + div.style.backgroundColor = 'red'; + } + }); + + dialog.addEventListener('click', function(event) { + handledEvent['dialog'] = true; + dialog.style.backgroundColor = 'green'; + if (event.target != dialog) { + assert_unreached('dialog was not targeted for a click event'); + dialog.style.backgroundColor = 'red'; + } + }); + + const nodes = [ 'document', 'body', 'div', 'dialog' ]; + nodes.map(function(node) { handledEvent[node] = false; }); + await clickOn(div); + assert_true(handledEvent.document, 'Clicking on ancestor.'); + assert_false(handledEvent.body, 'Clicking on ancestor.'); + assert_false(handledEvent.dialog, 'Clicking on ancestor.'); + assert_false(handledEvent.div, 'Clicking on ancestor.'); + handledEvent.document = false; + + await clickOn(dialog); + assert_true(handledEvent.document, 'Clicking on dialog.'); + assert_true(handledEvent.body, 'Clicking on dialog.'); + assert_true(handledEvent.dialog, 'Clicking on dialog.'); + assert_true(handledEvent.div, 'Clicking on dialog.'); +}, 'Test that ancestors of modal dialog are inert.'); +</script> |