LibWeb: Make sure we don't fire "once" event listeners twice

Spec bug: https://github.com/whatwg/dom/issues/1323
This commit is contained in:
Andreas Kling 2024-11-17 11:30:19 +01:00 committed by Andreas Kling
parent aa9ed71ff3
commit 69c84d3f63
Notes: github-actions[bot] 2024-11-17 13:57:27 +00:00
2 changed files with 6 additions and 3 deletions

View file

@ -254,6 +254,10 @@ void EventTarget::remove_from_event_listener_list(DOMEventListener& listener)
if (!m_data) if (!m_data)
return; return;
m_data->event_listener_list.remove_first_matching([&](auto& entry) { return entry.ptr() == &listener; }); m_data->event_listener_list.remove_first_matching([&](auto& entry) { return entry.ptr() == &listener; });
// FIXME: Update this when the spec is updated.
// Spec bug: https://github.com/whatwg/dom/issues/1323
listener.removed = true;
} }
// https://dom.spec.whatwg.org/#dom-eventtarget-dispatchevent // https://dom.spec.whatwg.org/#dom-eventtarget-dispatchevent

View file

@ -6,8 +6,7 @@ Rerun
Found 2 tests Found 2 tests
1 Pass 2 Pass
1 Fail
Details Details
Result Test Name MessagePass Removing all listeners and then adding a new one should work. Result Test Name MessagePass Removing all listeners and then adding a new one should work.
Fail Nested usage of once listeners should work. Pass Nested usage of once listeners should work.