diff --git a/components/style/dom.rs b/components/style/dom.rs index 75069ce9305..5017c1fd24e 100644 --- a/components/style/dom.rs +++ b/components/style/dom.rs @@ -248,6 +248,9 @@ pub trait TElement : PartialEq + Debug + Sized + Copy + Clone + ElementExt + Pre /// the element has no style. fn is_display_none(&self) -> bool { let data = self.borrow_data().unwrap(); + // See the comment on `cascade_node` about getting the up-to-date parent + // style for why we allow this on Gecko. + debug_assert!(cfg!(gecko) || data.has_current_styles()); data.styles().is_display_none() } diff --git a/components/style/matching.rs b/components/style/matching.rs index 807deeac209..4ea43a1c461 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -733,6 +733,13 @@ pub trait MatchMethods : TElement { // Get our parent's style. let parent_data = parent.as_ref().map(|x| x.borrow_data().unwrap()); let parent_style = parent_data.as_ref().map(|d| { + // Sometimes Gecko eagerly styles things without processing pending + // restyles first. In general we'd like to avoid this, but there can + // be good reasons (for example, needing to construct a frame for + // some small piece of newly-added content in order to do something + // specific with that frame, but not wanting to flush all of + // layout). + debug_assert!(cfg!(gecko) || d.has_current_styles()); &d.styles().primary.values });