diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-10-06 01:57:05 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-10-06 01:57:05 -0600 |
commit | 50db64a20ec8a5dac6e98c4ab654ab0ceb5f8e82 (patch) | |
tree | d2ac66ea2c3cd7c862d179b92da5dcede5dff76f /components/script | |
parent | 098bdb5f22500a6e856b085a1140090f63ef8645 (diff) | |
parent | cd7b4d4e610aff6c931ed33ba04f48a68c9406a7 (diff) | |
download | servo-50db64a20ec8a5dac6e98c4ab654ab0ceb5f8e82.tar.gz servo-50db64a20ec8a5dac6e98c4ab654ab0ceb5f8e82.zip |
Auto merge of #7874 - Ms2ger:layoutjs-tdth, r=jdm
Define the parsed attribute getters for HTMLTableCellElement on LayoutJS.
This documents their intended usage and prevents script callers from using
them.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7874)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/element.rs | 7 | ||||
-rw-r--r-- | components/script/dom/htmltablecellelement.rs | 28 |
2 files changed, 25 insertions, 10 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index dd4bff543e0..bdc7de011b2 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -45,6 +45,7 @@ use dom::eventtarget::{EventTarget, EventTargetTypeId}; use dom::htmlcollection::HTMLCollection; use dom::htmlelement::HTMLElementTypeId; use dom::htmlinputelement::{HTMLInputElement, RawLayoutHTMLInputElementHelpers}; +use dom::htmltablecellelement::HTMLTableCellElementLayoutHelpers; use dom::htmltableelement::HTMLTableElement; use dom::htmltextareaelement::RawLayoutHTMLTextAreaElementHelpers; use dom::namednodemap::NamedNodeMap; @@ -270,7 +271,7 @@ impl LayoutElementHelpers for LayoutJS<Element> { } else if let Some(this) = HTMLTableElementCast::to_layout_js(self) { (*this.unsafe_get()).get_background_color() } else if let Some(this) = HTMLTableCellElementCast::to_layout_js(self) { - (*this.unsafe_get()).get_background_color() + this.get_background_color() } else if let Some(this) = HTMLTableRowElementCast::to_layout_js(self) { (*this.unsafe_get()).get_background_color() } else if let Some(this) = HTMLTableSectionElementCast::to_layout_js(self) { @@ -387,7 +388,7 @@ impl LayoutElementHelpers for LayoutJS<Element> { } else if let Some(this) = HTMLTableElementCast::to_layout_js(self) { (*this.unsafe_get()).get_width() } else if let Some(this) = HTMLTableCellElementCast::to_layout_js(self) { - (*this.unsafe_get()).get_width() + this.get_width() } else { LengthOrPercentageOrAuto::Auto }; @@ -504,7 +505,7 @@ impl LayoutElementHelpers for LayoutJS<Element> { match attribute { UnsignedIntegerAttribute::ColSpan => { if let Some(this) = HTMLTableCellElementCast::to_layout_js(self) { - (*this.unsafe_get()).get_colspan() + this.get_colspan() } else { // Don't panic since `display` can cause this to be called on arbitrary // elements. diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index 2705240edbb..7be54174eae 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -6,6 +6,7 @@ use cssparser::RGBA; use dom::attr::{Attr, AttrValue}; use dom::bindings::codegen::Bindings::HTMLTableCellElementBinding::HTMLTableCellElementMethods; use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTableCellElementDerived}; +use dom::bindings::js::LayoutJS; use dom::document::Document; use dom::element::{AttributeMutation, ElementTypeId}; use dom::eventtarget::{EventTarget, EventTargetTypeId}; @@ -80,17 +81,30 @@ impl HTMLTableCellElementMethods for HTMLTableCellElement { } -impl HTMLTableCellElement { - pub fn get_background_color(&self) -> Option<RGBA> { - self.background_color.get() +pub trait HTMLTableCellElementLayoutHelpers { + fn get_background_color(&self) -> Option<RGBA>; + fn get_colspan(&self) -> Option<u32>; + fn get_width(&self) -> LengthOrPercentageOrAuto; +} + +#[allow(unsafe_code)] +impl HTMLTableCellElementLayoutHelpers for LayoutJS<HTMLTableCellElement> { + fn get_background_color(&self) -> Option<RGBA> { + unsafe { + (*self.unsafe_get()).background_color.get() + } } - pub fn get_colspan(&self) -> Option<u32> { - self.colspan.get() + fn get_colspan(&self) -> Option<u32> { + unsafe { + (*self.unsafe_get()).colspan.get() + } } - pub fn get_width(&self) -> LengthOrPercentageOrAuto { - self.width.get() + fn get_width(&self) -> LengthOrPercentageOrAuto { + unsafe { + (*self.unsafe_get()).width.get() + } } } |