|
63 | 63 | assert_false(popover.matches(':open'));
|
64 | 64 | assert_equals(1,showCount);
|
65 | 65 | assert_equals(1,hideCount);
|
66 |
| - }, `Toggle event (${method}) get properly dispatched for popovers`); |
| 66 | + }, `Beforetoggle event (${method}) get properly dispatched for popovers`); |
67 | 67 | }
|
68 | 68 |
|
69 | 69 | promise_test(async t => {
|
|
86 | 86 | assert_true(popover.matches(':open'));
|
87 | 87 | popover.hidePopover();
|
88 | 88 | 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'); |
90 | 108 | };
|
91 | 109 | </script>
|
0 commit comments