aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/mutationobserver.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/mutationobserver.rs')
-rw-r--r--components/script/dom/mutationobserver.rs30
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));
}