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/popovers/popover-stacking-anchor-attribute.tentative.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/popovers/popover-stacking-anchor-attribute.tentative.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/popovers/popover-stacking-anchor-attribute.tentative.html | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/popovers/popover-stacking-anchor-attribute.tentative.html b/testing/web-platform/tests/html/semantics/popovers/popover-stacking-anchor-attribute.tentative.html new file mode 100644 index 0000000000..6895b8625a --- /dev/null +++ b/testing/web-platform/tests/html/semantics/popovers/popover-stacking-anchor-attribute.tentative.html @@ -0,0 +1,104 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" href="mailto:masonf@chromium.org"> +<link rel=help href="https://www.w3.org/TR/css-anchor-position-1/#implicit"> +<link rel=help href="https://html.spec.whatwg.org/multipage/popover.html"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<!-- Once this test is made non-tentative, it can be folded back into popover-stacking.html --> + +<div class="example"> + <p>anchor attribute relationship</p> + <div id=anchor1 popover class=ancestor><p>Ancestor popover</p></div> + <div anchor=anchor1 popover class=child><p>Child popover</p></div> +</div> + +<div class="example"> + <p>indirect anchor attribute relationship</p> + <div popover class=ancestor> + <p>Ancestor popover</p> + <div> + <div> + <span id=anchor2>Anchor</span> + </div> + </div> + </div> + <div anchor=anchor2 popover class=child><p>Child popover</p></div> +</div> + +<!-- Other examples --> + +<div popover id=p1 anchor=b1><p>This is popover #1</p> + <button id=b2 onclick='p2.showPopover()'>Popover 2</button> + <button id=b4 onclick='p4.showPopover()'>Popover 4</button> +</div> +<div popover id=p2 anchor=b2><p>This is popover #2</p> + <button id=b3 onclick='p3.showPopover()'>Popover 3</button> +</div> +<div popover id=p3 anchor=b3><p>This is popover #3</p></div> +<div popover id=p4 anchor=b4><p>This is popover #4</p></div> +<button id=b1 onclick='p1.showPopover()'>Popover 1</button> + +<dialog id=d1>This is a dialog<button onclick='this.parentElement.close()'>Close</button></dialog> +<button id=b5 onclick='d1.showPopover()'>Dialog</button> + +<script> + // Test basic ancestor relationships + for(let example of document.querySelectorAll('.example')) { + const descr = example.querySelector('p').textContent; + const ancestor = example.querySelector('[popover].ancestor'); + const child = example.querySelector('[popover].child'); + const clickToActivate = example.querySelector('.clickme'); + test(function() { + assert_true(!!descr && !!ancestor && !!child); + assert_false(ancestor.matches(':popover-open')); + assert_false(child.matches(':popover-open')); + ancestor.showPopover(); + if (clickToActivate) + clickToActivate.click(); + else + child.showPopover(); + assert_true(child.matches(':popover-open')); + assert_true(ancestor.matches(':popover-open')); + ancestor.hidePopover(); + assert_false(ancestor.matches(':popover-open')); + assert_false(child.matches(':popover-open')); + },descr); + } + + const popovers = [p1, p2, p3, p4]; + + function assertState(...states) { + assert_equals(popovers.length,states.length); + for(let i=0;i<popovers.length;++i) { + assert_equals(popovers[i].matches(':popover-open'),states[i],`Popover #${i+1} incorrect state`); + } + } + test(function() { + assertState(false,false,false,false); + p1.showPopover(); + assertState(true,false,false,false); + p2.showPopover(); + assertState(true,true,false,false); + p3.showPopover(); + assertState(true,true,true,false); + // P4 is a sibling of P2, so showing it should + // close P2 and P3. + p4.showPopover(); + assertState(true,false,false,true); + // P2 should close P4 now. + p2.showPopover(); + assertState(true,true,false,false); + // Hiding P1 should hide all. + p1.hidePopover(); + assertState(false,false,false,false); + }, "more complex nesting, all using anchor ancestry") +</script> + +<style> + #p1 { top:350px; } + #p2 { top:350px; left:200px; } + #p3 { top:500px; } + #p4 { top:500px;left:200px; } +</style> |