Bug 1485655: Remove an assertion that doesn't hold in some cases. r=me
authorEmilio Cobos Álvarez <emilio@crisal.io>
Thu, 23 Aug 2018 16:56:27 +0200
changeset 488172 731639f445e74ce3d7517d0cae46709d9af659ac
parent 488171 a4eef4b8a3b0c8560d548ebf0a5ef2f2e17cbb23
child 488173 56f2449400965d832609c3a658cd9281e7db10d6
push id9719
push userffxbld-merge
push dateFri, 24 Aug 2018 17:49:46 +0000
treeherdermozilla-beta@719ec98fba77 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersme
bugs1485655
milestone63.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1485655: Remove an assertion that doesn't hold in some cases. r=me
servo/components/style/invalidation/element/state_and_attributes.rs
--- a/servo/components/style/invalidation/element/state_and_attributes.rs
+++ b/servo/components/style/invalidation/element/state_and_attributes.rs
@@ -154,23 +154,28 @@ where
         if !snapshot.has_attrs() && state_changes.is_empty() {
             return false;
         }
 
         // If we are sensitive to visitedness and the visited state changed, we
         // force a restyle here. Matching doesn't depend on the actual visited
         // state at all, so we can't look at matching results to decide what to
         // do for this case.
-        if state_changes.intersects(ElementState::IN_VISITED_OR_UNVISITED_STATE) {
+        if state_changes.intersects(ElementState::IN_VISITED_OR_UNVISITED_STATE) &&
+            self.shared_context.visited_styles_enabled
+        {
             trace!(" > visitedness change, force subtree restyle");
-            // If we get here with visited links disabled, we should probably
-            // just avoid the restyle and remove the state change here, not only
-            // as an optimization, but also because it kind of would kill the
+            // We shouldn't get here with visited links disabled, but it's hard
+            // to assert in cases where you record a visitedness change and
+            // afterwards you change some of the stuff (like the pref) that
+            // changes whether visited styles are enabled.
+            //
+            // So just avoid the restyle here, because it kind of would kill the
             // point of disabling visited links.
-            debug_assert!(self.shared_context.visited_styles_enabled);
+            //
             // We can't just return here because there may also be attribute
             // changes as well that imply additional hints for siblings.
             self.data.hint.insert(RestyleHint::restyle_subtree());
         }
 
         let mut classes_removed = SmallVec::<[Atom; 8]>::new();
         let mut classes_added = SmallVec::<[Atom; 8]>::new();
         if snapshot.class_changed() {