diff --git a/components/style/legacy.rs b/components/style/legacy.rs index 9d48b17d938..9a67fa518c7 100644 --- a/components/style/legacy.rs +++ b/components/style/legacy.rs @@ -5,45 +5,10 @@ //! Legacy presentational attributes defined in the HTML5 specification: ``, //! ``, and so forth. -use node::TElementAttributes; use properties::PropertyDeclaration; -use selector_matching::Stylist; -use selectors::Element; use selectors::matching::DeclarationBlock; -use smallvec::VecLike; use std::sync::Arc; -/// Extension methods for `Stylist` that cause rules to be synthesized for legacy attributes. -pub trait PresentationalHintSynthesis { - /// Synthesizes rules from various HTML attributes (mostly legacy junk from HTML4) that confer - /// *presentational hints* as defined in the HTML5 specification. This handles stuff like - /// ``, ``, ``, and so forth. - /// - /// NB: Beware! If you add an attribute to this list, be sure to add it to - /// `common_style_affecting_attributes` or `rare_style_affecting_attributes` as appropriate. If - /// you don't, you risk strange random nondeterministic failures due to false positives in - /// style sharing. - fn synthesize_presentational_hints_for_legacy_attributes( - &self, element: &E, matching_rules_list: &mut V, shareable: &mut bool) - where E: Element + TElementAttributes, - V: VecLike>>; -} - -impl PresentationalHintSynthesis for Stylist { - fn synthesize_presentational_hints_for_legacy_attributes( - &self, element: &E, matching_rules_list: &mut V, shareable: &mut bool) - where E: Element + TElementAttributes, - V: VecLike>> { - let length = matching_rules_list.len(); - element.synthesize_presentational_hints_for_legacy_attributes(matching_rules_list); - if matching_rules_list.len() != length { - // Never share style for elements with preshints - *shareable = false; - } - } -} - - /// A convenience function to create a declaration block from a single declaration. This is /// primarily used in `synthesize_rules_for_legacy_attributes`. #[inline] diff --git a/components/style/selector_matching.rs b/components/style/selector_matching.rs index 5a4b1734917..e8887163b61 100644 --- a/components/style/selector_matching.rs +++ b/components/style/selector_matching.rs @@ -2,7 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use legacy::PresentationalHintSynthesis; use media_queries::{Device, MediaType}; use node::TElementAttributes; use properties::{PropertyDeclaration, PropertyDeclarationBlock}; @@ -277,9 +276,12 @@ impl Stylist { &mut shareable); // Step 2: Presentational hints. - self.synthesize_presentational_hints_for_legacy_attributes(element, - applicable_declarations, - &mut shareable); + let length = applicable_declarations.len(); + element.synthesize_presentational_hints_for_legacy_attributes(applicable_declarations); + if applicable_declarations.len() != length { + // Never share style for elements with preshints + shareable = false; + } // Step 3: User and author normal rules. map.user.normal.get_all_matching_rules(element,