diff options
author | Ms2ger <ms2ger@gmail.com> | 2015-07-23 20:30:59 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2015-07-23 20:30:59 +0200 |
commit | 487eef88e314874a275ebc25e8e4658186f68dff (patch) | |
tree | d9dfe322c05ac89902acd82a3aa801a5ca7ecd8e /components/script/dom | |
parent | 849eb7837a80acfd81fb3840f166ba754ea38b76 (diff) | |
download | servo-487eef88e314874a275ebc25e8e4658186f68dff.tar.gz servo-487eef88e314874a275ebc25e8e4658186f68dff.zip |
Move the state getters to LayoutElementHelpers.
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/element.rs | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index a5fc6f955da..81db37aa09b 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -177,8 +177,6 @@ pub trait RawLayoutElementHelpers { unsafe fn synthesize_presentational_hints_for_legacy_attributes<V>(&self, &mut V) where V: VecLike<DeclarationBlock<Vec<PropertyDeclaration>>>; - unsafe fn get_checked_state_for_layout(&self) -> bool; - unsafe fn get_indeterminate_state_for_layout(&self) -> bool; unsafe fn get_unsigned_integer_attribute_for_layout(&self, attribute: UnsignedIntegerAttribute) -> Option<u32>; } @@ -457,29 +455,6 @@ impl RawLayoutElementHelpers for Element { } } - #[inline] - #[allow(unrooted_must_root)] - unsafe fn get_checked_state_for_layout(&self) -> bool { - // TODO option and menuitem can also have a checked state. - if !self.is_htmlinputelement() { - return false - } - let this: &HTMLInputElement = mem::transmute(self); - this.get_checked_state_for_layout() - } - - #[inline] - #[allow(unrooted_must_root)] - unsafe fn get_indeterminate_state_for_layout(&self) -> bool { - // TODO progress elements can also be matched with :indeterminate - if !self.is_htmlinputelement() { - return false - } - let this: &HTMLInputElement = mem::transmute(self); - this.get_indeterminate_state_for_layout() - } - - unsafe fn get_unsigned_integer_attribute_for_layout(&self, attribute: UnsignedIntegerAttribute) -> Option<u32> { @@ -506,6 +481,8 @@ pub trait LayoutElementHelpers { fn style_attribute(&self) -> *const Option<PropertyDeclarationBlock>; fn local_name<'a>(&'a self) -> &'a Atom; fn namespace<'a>(&'a self) -> &'a Namespace; + fn get_checked_state_for_layout(&self) -> bool; + fn get_indeterminate_state_for_layout(&self) -> bool; } impl LayoutElementHelpers for LayoutJS<Element> { @@ -544,6 +521,30 @@ impl LayoutElementHelpers for LayoutJS<Element> { &(*self.unsafe_get()).namespace } } + + #[inline] + #[allow(unsafe_code)] + fn get_checked_state_for_layout(&self) -> bool { + // TODO option and menuitem can also have a checked state. + match HTMLInputElementCast::to_layout_js(self) { + Some(input) => unsafe { + (*input.unsafe_get()).get_checked_state_for_layout() + }, + None => false, + } + } + + #[inline] + #[allow(unsafe_code)] + fn get_indeterminate_state_for_layout(&self) -> bool { + // TODO progress elements can also be matched with :indeterminate + match HTMLInputElementCast::to_layout_js(self) { + Some(input) => unsafe { + (*input.unsafe_get()).get_indeterminate_state_for_layout() + }, + None => false, + } + } } #[derive(PartialEq)] |