diff options
author | Matt Brubeck <mbrubeck@limpet.net> | 2016-11-22 13:24:06 -0800 |
---|---|---|
committer | Matt Brubeck <mbrubeck@limpet.net> | 2016-12-14 09:58:23 -0800 |
commit | e982d6003fb0e4bc0a26cb5cf488bc8c2bc117f8 (patch) | |
tree | 8fa150b0d5e7ec8c5f6167620d613451fa6b7c0a /components/script/dom | |
parent | b77a0a89cf76a15346345c74e712a8d56b6ee517 (diff) | |
download | servo-e982d6003fb0e4bc0a26cb5cf488bc8c2bc117f8.tar.gz servo-e982d6003fb0e4bc0a26cb5cf488bc8c2bc117f8.zip |
Add the HTMLTableCellElement::rowspan property
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/element.rs | 13 | ||||
-rw-r--r-- | components/script/dom/htmltablecellelement.rs | 17 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLTableCellElement.webidl | 4 |
3 files changed, 32 insertions, 2 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index d9831d79a69..4a94f345b02 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -324,6 +324,8 @@ pub trait LayoutElementHelpers { #[allow(unsafe_code)] unsafe fn get_colspan(self) -> u32; #[allow(unsafe_code)] + unsafe fn get_rowspan(self) -> u32; + #[allow(unsafe_code)] unsafe fn html_element_in_html_document_for_layout(&self) -> bool; fn id_attribute(&self) -> *const Option<Atom>; fn style_attribute(&self) -> *const Option<Arc<RwLock<PropertyDeclarationBlock>>>; @@ -627,6 +629,17 @@ impl LayoutElementHelpers for LayoutJS<Element> { } } + #[allow(unsafe_code)] + unsafe fn get_rowspan(self) -> u32 { + if let Some(this) = self.downcast::<HTMLTableCellElement>() { + this.get_rowspan().unwrap_or(1) + } else { + // Don't panic since `display` can cause this to be called on arbitrary + // elements. + 1 + } + } + #[inline] #[allow(unsafe_code)] unsafe fn html_element_in_html_document_for_layout(&self) -> bool { diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index 1ec389d9977..b4bd885d4ed 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -18,6 +18,7 @@ use html5ever_atoms::LocalName; use style::attr::{AttrValue, LengthOrPercentageOrAuto}; const DEFAULT_COLSPAN: u32 = 1; +const DEFAULT_ROWSPAN: u32 = 1; #[dom_struct] pub struct HTMLTableCellElement { @@ -47,6 +48,12 @@ impl HTMLTableCellElementMethods for HTMLTableCellElement { // https://html.spec.whatwg.org/multipage/#dom-tdth-colspan make_uint_setter!(SetColSpan, "colspan", DEFAULT_COLSPAN); + // https://html.spec.whatwg.org/multipage/#dom-tdth-rowspan + make_uint_getter!(RowSpan, "rowspan", DEFAULT_ROWSPAN); + + // https://html.spec.whatwg.org/multipage/#dom-tdth-rowspan + make_uint_setter!(SetRowSpan, "rowspan", DEFAULT_ROWSPAN); + // https://html.spec.whatwg.org/multipage/#dom-tdth-bgcolor make_getter!(BgColor, "bgcolor"); @@ -80,6 +87,7 @@ impl HTMLTableCellElementMethods for HTMLTableCellElement { pub trait HTMLTableCellElementLayoutHelpers { fn get_background_color(&self) -> Option<RGBA>; fn get_colspan(&self) -> Option<u32>; + fn get_rowspan(&self) -> Option<u32>; fn get_width(&self) -> LengthOrPercentageOrAuto; } @@ -102,6 +110,14 @@ impl HTMLTableCellElementLayoutHelpers for LayoutJS<HTMLTableCellElement> { } } + fn get_rowspan(&self) -> Option<u32> { + unsafe { + (&*self.upcast::<Element>().unsafe_get()) + .get_attr_for_layout(&ns!(), &local_name!("rowspan")) + .map(AttrValue::as_uint) + } + } + fn get_width(&self) -> LengthOrPercentageOrAuto { unsafe { (&*self.upcast::<Element>().unsafe_get()) @@ -121,6 +137,7 @@ impl VirtualMethods for HTMLTableCellElement { fn parse_plain_attribute(&self, local_name: &LocalName, value: DOMString) -> AttrValue { match *local_name { local_name!("colspan") => AttrValue::from_u32(value.into(), DEFAULT_COLSPAN), + local_name!("rowspan") => AttrValue::from_u32(value.into(), DEFAULT_ROWSPAN), local_name!("bgcolor") => AttrValue::from_legacy_color(value.into()), local_name!("width") => AttrValue::from_nonzero_dimension(value.into()), _ => self.super_type().unwrap().parse_plain_attribute(local_name, value), diff --git a/components/script/dom/webidls/HTMLTableCellElement.webidl b/components/script/dom/webidls/HTMLTableCellElement.webidl index 33863b3dc20..8ac135170ec 100644 --- a/components/script/dom/webidls/HTMLTableCellElement.webidl +++ b/components/script/dom/webidls/HTMLTableCellElement.webidl @@ -5,8 +5,8 @@ // https://html.spec.whatwg.org/multipage/#htmltablecellelement [Abstract] interface HTMLTableCellElement : HTMLElement { - attribute unsigned long colSpan; - // attribute unsigned long rowSpan; + attribute unsigned long colSpan; + attribute unsigned long rowSpan; // attribute DOMString headers; readonly attribute long cellIndex; |