diff options
author | gatowololo <gatowololo@gmail.com> | 2019-06-06 11:30:37 -0700 |
---|---|---|
committer | gatowololo <gatowololo@gmail.com> | 2019-06-06 11:30:37 -0700 |
commit | 3df8d6891e0fe47d4af3d7ee59ba05ea64ee628c (patch) | |
tree | d039b2e426a2e67848c3842ae1984ac74221709b /components/script/dom/mutationobserver.rs | |
parent | fe8aad722749e8e5c9223800b98fc4e87b9ab161 (diff) | |
download | servo-3df8d6891e0fe47d4af3d7ee59ba05ea64ee628c.tar.gz servo-3df8d6891e0fe47d4af3d7ee59ba05ea64ee628c.zip |
Split getter for mutation_observers() into two methods.
registered_mutation_observers() returns immutable references and does
not init mutation observers.
registered_mutation_observers_mut() lazily initializes raredata if it
does not exist.
Updated code that uses this methods to call appropriate method when
mutation is not necessary.
Diffstat (limited to 'components/script/dom/mutationobserver.rs')
-rw-r--r-- | components/script/dom/mutationobserver.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/components/script/dom/mutationobserver.rs b/components/script/dom/mutationobserver.rs index bb87a10f4b2..6320c0497d2 100644 --- a/components/script/dom/mutationobserver.rs +++ b/components/script/dom/mutationobserver.rs @@ -132,7 +132,12 @@ impl MutationObserver { // Step 2 & 3 for node in target.inclusive_ancestors(ShadowIncluding::No) { - for registered in &*node.registered_mutation_observers() { + let registered = node.registered_mutation_observers(); + if registered.is_none() { + continue; + } + + for registered in &*registered.unwrap() { if &*node != target && !registered.options.subtree { continue; } @@ -297,7 +302,7 @@ impl MutationObserverMethods for MutationObserver { // Step 7 let add_new_observer = { let mut replaced = false; - for registered in &mut *target.registered_mutation_observers() { + for registered in &mut *target.registered_mutation_observers_mut() { if &*registered.observer as *const MutationObserver != self as *const MutationObserver { |