Skip to content

Commit 272afd0

Browse files
mfreed7moz-wptsync-bot
authored andcommitted
Bug 1809223 [wpt PR 37814] - Do not fire beforetoggle asynchronously, a=testonly
Automatic update from web-platform-tests Do not fire `beforetoggle` asynchronously Per the discussion at [1], we have decided not to fire async beforetoggle events at all. This means that no event will be fired in this case: ```javascript myPopover.showPopover(); myPopover.remove(); ``` [1] whatwg/html#8221 (comment) Bug: 1307772 Change-Id: Ie6d0f24f1181131fd6e15732020c0575cd3ba865 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4146026 Commit-Queue: Joey Arhar <[email protected]> Reviewed-by: Joey Arhar <[email protected]> Auto-Submit: Mason Freed <[email protected]> Cr-Commit-Position: refs/heads/main@{#1090506} -- wpt-commits: 7c3aacf158efb050bdb81a1dd97ac324eaee799a wpt-pr: 37814
1 parent b91a93d commit 272afd0

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

testing/web-platform/tests/html/semantics/popovers/popover-events.tentative.html

+20-2
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
assert_false(popover.matches(':open'));
6464
assert_equals(1,showCount);
6565
assert_equals(1,hideCount);
66-
}, `Toggle event (${method}) get properly dispatched for popovers`);
66+
}, `Beforetoggle event (${method}) get properly dispatched for popovers`);
6767
}
6868

6969
promise_test(async t => {
@@ -86,6 +86,24 @@
8686
assert_true(popover.matches(':open'));
8787
popover.hidePopover();
8888
assert_false(popover.matches(':open'));
89-
}, 'Toggle event is cancelable for the "opening" transition');
89+
}, 'Beforetoggle event is cancelable for the "opening" transition');
90+
91+
promise_test(async t => {
92+
const popover = document.querySelector('[popover]');
93+
const controller = new AbortController();
94+
const signal = controller.signal;
95+
t.add_cleanup(() => {controller.abort();});
96+
popover.addEventListener('beforetoggle',(e) => {
97+
assert_not_equals(e.newState,"closed",'The "beforetoggle" event was fired for the closing transition');
98+
}, {signal});
99+
assert_false(popover.matches(':open'));
100+
popover.showPopover();
101+
assert_true(popover.matches(':open'));
102+
t.add_cleanup(() => {document.body.appendChild(popover);});
103+
popover.remove();
104+
await waitForRender(); // Check for async events also
105+
await waitForRender(); // Check for async events also
106+
assert_false(popover.matches(':open'));
107+
}, 'Beforetoggle event is not fired for element removal');
90108
};
91109
</script>

0 commit comments

Comments
 (0)