aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/mutationobserver.rs
diff options
context:
space:
mode:
authorgatowololo <gatowololo@gmail.com>2019-06-06 11:30:37 -0700
committergatowololo <gatowololo@gmail.com>2019-06-06 11:30:37 -0700
commit3df8d6891e0fe47d4af3d7ee59ba05ea64ee628c (patch)
treed039b2e426a2e67848c3842ae1984ac74221709b /components/script/dom/mutationobserver.rs
parentfe8aad722749e8e5c9223800b98fc4e87b9ab161 (diff)
downloadservo-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.rs9
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
{