diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index ef240679388..f6e34985f5c 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -383,6 +383,30 @@ impl RawLayoutElementHelpers for Element { longhands::height::SpecifiedValue( specified::LengthOrPercentageOrAuto::Length(value)))))); } + + + let border = if self.is_htmltableelement() { + let this: &HTMLTableElement = mem::transmute(self); + this.get_border() + } else { + None + }; + + if let Some(border) = border { + let width_value = specified::Length::Absolute(Au::from_px(border as i32)); + hints.push(from_declaration( + PropertyDeclaration::BorderTopWidth(SpecifiedValue( + longhands::border_top_width::SpecifiedValue(width_value))))); + hints.push(from_declaration( + PropertyDeclaration::BorderLeftWidth(SpecifiedValue( + longhands::border_left_width::SpecifiedValue(width_value))))); + hints.push(from_declaration( + PropertyDeclaration::BorderBottomWidth(SpecifiedValue( + longhands::border_bottom_width::SpecifiedValue(width_value))))); + hints.push(from_declaration( + PropertyDeclaration::BorderRightWidth(SpecifiedValue( + longhands::border_right_width::SpecifiedValue(width_value))))); + } } #[inline] @@ -412,16 +436,6 @@ impl RawLayoutElementHelpers for Element { attribute: UnsignedIntegerAttribute) -> Option { match attribute { - UnsignedIntegerAttribute::Border => { - if self.is_htmltableelement() { - let this: &HTMLTableElement = mem::transmute(self); - this.get_border() - } else { - // Don't panic since `:-servo-nonzero-border` can cause this to be called on - // arbitrary elements. - None - } - } UnsignedIntegerAttribute::ColSpan => { if self.is_htmltablecellelement() { let this: &HTMLTableCellElement = mem::transmute(self); diff --git a/components/style/legacy.rs b/components/style/legacy.rs index 4d6e89756af..4d5123ff187 100644 --- a/components/style/legacy.rs +++ b/components/style/legacy.rs @@ -7,23 +7,17 @@ use std::sync::Arc; -use selectors::tree::{TElement, TNode}; +use selectors::tree::TNode; use selectors::matching::DeclarationBlock; use node::TElementAttributes; -use values::specified; -use properties::DeclaredValue::SpecifiedValue; use properties::PropertyDeclaration; -use properties::longhands; use selector_matching::Stylist; -use util::geometry::Au; use util::smallvec::VecLike; /// Legacy presentational attributes that take a nonnegative integer as defined in HTML5 ยง 2.4.4.2. #[derive(Copy, Clone, PartialEq, Eq)] pub enum UnsignedIntegerAttribute { - /// `` - Border, /// `` ColSpan, } @@ -46,16 +40,6 @@ pub trait PresentationalHintSynthesis { where N: TNode<'a>, N::Element: TElementAttributes<'a>, V: VecLike>>; - /// Synthesizes rules for the legacy `border` attribute. - fn synthesize_presentational_hint_for_legacy_border_attribute<'a,E,V>( - &self, - element: E, - matching_rules_list: &mut V, - shareable: &mut bool) - where - E: TElement<'a> + - TElementAttributes<'a>, - V: VecLike>>; } impl PresentationalHintSynthesis for Stylist { @@ -75,52 +59,6 @@ impl PresentationalHintSynthesis for Stylist { // Never share style for elements with preshints *shareable = false; } - - match element.get_local_name() { - name if *name == atom!("td") => { - self.synthesize_presentational_hint_for_legacy_border_attribute( - element, - matching_rules_list, - shareable); - } - name if *name == atom!("table") => { - self.synthesize_presentational_hint_for_legacy_border_attribute( - element, - matching_rules_list, - shareable); - } - _ => {} - } - } - - fn synthesize_presentational_hint_for_legacy_border_attribute<'a,E,V>( - &self, - element: E, - matching_rules_list: &mut V, - shareable: &mut bool) - where - E: TElement<'a> + - TElementAttributes<'a>, - V: VecLike>> { - match element.get_unsigned_integer_attribute(UnsignedIntegerAttribute::Border) { - None => {} - Some(length) => { - let width_value = specified::Length::Absolute(Au::from_px(length as i32)); - matching_rules_list.push(from_declaration( - PropertyDeclaration::BorderTopWidth(SpecifiedValue( - longhands::border_top_width::SpecifiedValue(width_value))))); - matching_rules_list.push(from_declaration( - PropertyDeclaration::BorderLeftWidth(SpecifiedValue( - longhands::border_left_width::SpecifiedValue(width_value))))); - matching_rules_list.push(from_declaration( - PropertyDeclaration::BorderBottomWidth(SpecifiedValue( - longhands::border_bottom_width::SpecifiedValue(width_value))))); - matching_rules_list.push(from_declaration( - PropertyDeclaration::BorderRightWidth(SpecifiedValue( - longhands::border_right_width::SpecifiedValue(width_value))))); - *shareable = false - } - } } }