diff options
Diffstat (limited to 'components/script/dom/mutationobserver.rs')
-rw-r--r-- | components/script/dom/mutationobserver.rs | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/components/script/dom/mutationobserver.rs b/components/script/dom/mutationobserver.rs index b25f99d0861..bb87a10f4b2 100644 --- a/components/script/dom/mutationobserver.rs +++ b/components/script/dom/mutationobserver.rs @@ -13,7 +13,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::mutationrecord::MutationRecord; -use crate::dom::node::Node; +use crate::dom::node::{Node, ShadowIncluding}; use crate::dom::window::Window; use crate::microtask::Microtask; use crate::script_thread::ScriptThread; @@ -131,7 +131,7 @@ impl MutationObserver { let mut interested_observers: Vec<(DomRoot<MutationObserver>, Option<DOMString>)> = vec![]; // Step 2 & 3 - for node in target.inclusive_ancestors() { + for node in target.inclusive_ancestors(ShadowIncluding::No) { for registered in &*node.registered_mutation_observers() { if &*node != target && !registered.options.subtree { continue; @@ -318,20 +318,18 @@ impl MutationObserverMethods for MutationObserver { // Step 8 if add_new_observer { - target - .registered_mutation_observers() - .push(RegisteredObserver { - observer: DomRoot::from_ref(self), - options: ObserverOptions { - attributes, - attribute_old_value, - character_data, - character_data_old_value, - subtree, - attribute_filter, - child_list, - }, - }); + target.add_mutation_observer(RegisteredObserver { + observer: DomRoot::from_ref(self), + options: ObserverOptions { + attributes, + attribute_old_value, + character_data, + character_data_old_value, + subtree, + attribute_filter, + child_list, + }, + }); self.node_list.borrow_mut().push(DomRoot::from_ref(target)); } |