Jelajahi Sumber

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

Spec bug: https://github.com/whatwg/dom/issues/1323
Andreas Kling 8 bulan lalu
induk
melakukan
69c84d3f63

+ 4 - 0
Libraries/LibWeb/DOM/EventTarget.cpp

@@ -254,6 +254,10 @@ void EventTarget::remove_from_event_listener_list(DOMEventListener& listener)
     if (!m_data)
         return;
     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

+ 2 - 3
Tests/LibWeb/Text/expected/wpt-import/dom/events/remove-all-listeners.txt

@@ -6,8 +6,7 @@ Rerun
 
 Found 2 tests
 
-1 Pass
-1 Fail
+2 Pass
 Details
 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.