diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index a8c157d6c8b..84cd3568f12 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -1000,14 +1000,10 @@ impl EventTarget { } else { ListenerPhase::Bubbling }; - let old_entry = Rc::new(RefCell::new(EventListenerEntry { - phase, - listener: EventListenerType::Additive(listener.clone()), - once: false, - passive: None, - removed: false, - })); - if let Some(position) = entries.iter().position(|e| *e == old_entry) { + if let Some(position) = entries.iter().position(|e| { + e.borrow().listener == EventListenerType::Additive(listener.clone()) && + e.borrow().phase == phase + }) { entries.remove(position).borrow_mut().removed = true; } } diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index 14629f60d7a..4f09f82345e 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -20,7 +20,6 @@ use crate::dom::bindings::codegen::Bindings::CharacterDataBinding::CharacterData use crate::dom::bindings::codegen::Bindings::EventHandlerBinding::{ EventHandlerNonNull, OnErrorEventHandlerNonNull, }; -use crate::dom::bindings::codegen::Bindings::EventTargetBinding::EventListenerOptions; use crate::dom::bindings::codegen::Bindings::HTMLElementBinding::HTMLElementMethods; use crate::dom::bindings::codegen::Bindings::HTMLLabelElementBinding::HTMLLabelElementMethods; use crate::dom::bindings::codegen::Bindings::HTMLOrSVGElementBinding::FocusOptions; @@ -1132,11 +1131,7 @@ impl VirtualMethods for HTMLElement { }, // https://html.spec.whatwg.org/multipage/#deactivate-an-event-handler AttributeMutation::Removed => { - evtarget.remove_event_listener( - event_name.into(), - evtarget.get_event_handler_common(event_name, can_gc), - EventListenerOptions { capture: false }, - ); + evtarget.set_event_handler_common::(event_name, None); }, } }, diff --git a/tests/wpt/meta/html/webappapis/scripting/events/event-handler-removal.window.js.ini b/tests/wpt/meta/html/webappapis/scripting/events/event-handler-removal.window.js.ini deleted file mode 100644 index b89234a7182..00000000000 --- a/tests/wpt/meta/html/webappapis/scripting/events/event-handler-removal.window.js.ini +++ /dev/null @@ -1,3 +0,0 @@ -[event-handler-removal.window.html] - [Event handler set through content attribute should be deactivated when the content attribute is removed.] - expected: FAIL