Bug 1361938 - Don't process visited rules during animation-only restyle. r?jryans draft
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Tue, 30 May 2017 18:16:18 +0900
changeset 586427 a9436ca97223a198fbcf342720ce6e9d528a041b
parent 586426 99e672998b761b5453045fdcce263a50a058623e
child 586428 2f29de756fd1e96302fe798389d89ae5e370c01d
push id61392
push userhikezoe@mozilla.com
push dateTue, 30 May 2017 10:43:32 +0000
reviewersjryans
bugs1361938
milestone55.0a1
Bug 1361938 - Don't process visited rules during animation-only restyle. r?jryans MozReview-Commit-ID: GEKzOanu0VD
servo/components/style/matching.rs
--- a/servo/components/style/matching.rs
+++ b/servo/components/style/matching.rs
@@ -1247,18 +1247,20 @@ pub trait MatchMethods : TElement {
     fn replace_rules(&self,
                      replacements: RestyleReplacements,
                      context: &StyleContext<Self>,
                      data: &mut ElementData)
                      -> bool {
         let mut result = false;
         result |= self.replace_rules_internal(replacements, context, data,
                                               CascadeVisitedMode::Unvisited);
-        result |= self.replace_rules_internal(replacements, context, data,
-                                              CascadeVisitedMode::Visited);
+        if !context.shared.traversal_flags.for_animation_only() {
+            result |= self.replace_rules_internal(replacements, context, data,
+                                                  CascadeVisitedMode::Visited);
+        }
         result
     }
 
     /// Updates the rule nodes without re-running selector matching, using just
     /// the rule tree, for a specific visited mode.
     ///
     /// Returns true if an !important rule was replaced.
     fn replace_rules_internal(&self,