diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 97cdf741814..12750e33b2a 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -3079,18 +3079,13 @@ bitflags! { /// that it may affect global state, like the Device's root font-size. const IS_ROOT_ELEMENT = 1 << 3; - /// Whether to convert display:contents into display:inline. This - /// is used by Gecko to prevent display:contents on generated - /// content. - const PROHIBIT_DISPLAY_CONTENTS = 1 << 4; - /// Whether we're computing the style of a link, either visited or /// unvisited. - const IS_LINK = 1 << 6; + const IS_LINK = 1 << 4; /// Whether we're computing the style of a link element that happens to /// be visited. - const IS_VISITED_LINK = 1 << 7; + const IS_VISITED_LINK = 1 << 5; } } diff --git a/components/style/style_adjuster.rs b/components/style/style_adjuster.rs index 49c4244610e..965d61af10a 100644 --- a/components/style/style_adjuster.rs +++ b/components/style/style_adjuster.rs @@ -320,12 +320,13 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// Native anonymous content converts display:contents into display:inline. #[cfg(feature = "gecko")] - fn adjust_for_prohibited_display_contents(&mut self, flags: CascadeFlags) { - use properties::CascadeFlags; - + fn adjust_for_prohibited_display_contents(&mut self) { // TODO: We should probably convert display:contents into display:none // in some cases too: https://drafts.csswg.org/css-display/#unbox - if !flags.contains(CascadeFlags::PROHIBIT_DISPLAY_CONTENTS) || + // + // FIXME(emilio): ::before and ::after should support display: contents, + // see bug 1418138. + if self.style.pseudo.is_none() || self.style.get_box().clone_display() != Display::Contents { return; } @@ -569,7 +570,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { self.adjust_for_visited(flags); #[cfg(feature = "gecko")] { - self.adjust_for_prohibited_display_contents(flags); + self.adjust_for_prohibited_display_contents(); self.adjust_for_fieldset_content(layout_parent_style); } self.adjust_for_top_layer(); diff --git a/components/style/style_resolver.rs b/components/style/style_resolver.rs index 448fdca3be1..65b816be854 100644 --- a/components/style/style_resolver.rs +++ b/components/style/style_resolver.rs @@ -566,9 +566,10 @@ where } cascade_flags.insert(CascadeFlags::VISITED_DEPENDENT_ONLY); } - if self.element.is_native_anonymous() || pseudo.is_some() { - cascade_flags.insert(CascadeFlags::PROHIBIT_DISPLAY_CONTENTS); - } else if self.element.is_root() { + if !self.element.is_native_anonymous() && + pseudo.is_none() && + self.element.is_root() + { cascade_flags.insert(CascadeFlags::IS_ROOT_ELEMENT); } diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 71f5dd2d43b..e12b4d1307d 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -3626,18 +3626,10 @@ pub extern "C" fn Servo_ReparentStyle( if let Some(element) = element { if element.is_link() { cascade_flags.insert(CascadeFlags::IS_LINK); - if element.is_visited_link() && - doc_data.visited_styles_enabled() { + if element.is_visited_link() && doc_data.visited_styles_enabled() { cascade_flags.insert(CascadeFlags::IS_VISITED_LINK); } }; - - if element.is_native_anonymous() { - cascade_flags.insert(CascadeFlags::PROHIBIT_DISPLAY_CONTENTS); - } - } - if pseudo.is_some() { - cascade_flags.insert(CascadeFlags::PROHIBIT_DISPLAY_CONTENTS); } doc_data.stylist.compute_style_with_inputs(