aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlelement.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2014-09-18 15:34:55 -0400
committerJosh Matthews <josh@joshmatthews.net>2014-12-18 12:54:02 -0500
commit2e14b653bf3fd1e43d099fee6e404c2cc562ffac (patch)
tree38fbddbe4dfc28c0f3a57f9dcafed7f3137dedfc /components/script/dom/htmlelement.rs
parent2cfa8e85a69cf04fa97b1e5792a9e0d8eb7f30b6 (diff)
downloadservo-2e14b653bf3fd1e43d099fee6e404c2cc562ffac.tar.gz
servo-2e14b653bf3fd1e43d099fee6e404c2cc562ffac.zip
Add a style property to HTMLElement.
Diffstat (limited to 'components/script/dom/htmlelement.rs')
-rw-r--r--components/script/dom/htmlelement.rs24
1 files changed, 20 insertions, 4 deletions
diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs
index f8a8ea7ce5c..cf7915f3269 100644
--- a/components/script/dom/htmlelement.rs
+++ b/components/script/dom/htmlelement.rs
@@ -10,10 +10,12 @@ use dom::bindings::codegen::Bindings::HTMLElementBinding::HTMLElementMethods;
use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLFrameSetElementDerived};
-use dom::bindings::codegen::InheritTypes::{EventTargetCast, HTMLInputElementCast};
+use dom::bindings::codegen::InheritTypes::{EventTargetCast, HTMLInputElementCast, CSSStyleDeclarationCast};
use dom::bindings::codegen::InheritTypes::{HTMLElementDerived, HTMLBodyElementDerived};
-use dom::bindings::js::{JSRef, Temporary};
+use dom::bindings::js::{JSRef, Temporary, MutNullableJS};
use dom::bindings::utils::{Reflectable, Reflector};
+use dom::cssstyledeclaration::CSSStyleDeclaration;
+use dom::css2properties::CSS2Properties;
use dom::document::Document;
use dom::element::{Element, ElementTypeId, ActivationElementHelpers};
use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId};
@@ -24,9 +26,12 @@ use servo_util::str::DOMString;
use string_cache::Atom;
+use std::default::Default;
+
#[dom_struct]
pub struct HTMLElement {
- element: Element
+ element: Element,
+ style_decl: MutNullableJS<CSSStyleDeclaration>,
}
impl HTMLElementDerived for EventTarget {
@@ -42,7 +47,8 @@ impl HTMLElementDerived for EventTarget {
impl HTMLElement {
pub fn new_inherited(type_id: ElementTypeId, tag_name: DOMString, prefix: Option<DOMString>, document: JSRef<Document>) -> HTMLElement {
HTMLElement {
- element: Element::new_inherited(type_id, tag_name, ns!(HTML), prefix, document)
+ element: Element::new_inherited(type_id, tag_name, ns!(HTML), prefix, document),
+ style_decl: Default::default(),
}
}
@@ -65,6 +71,16 @@ impl<'a> PrivateHTMLElementHelpers for JSRef<'a, HTMLElement> {
}
impl<'a> HTMLElementMethods for JSRef<'a, HTMLElement> {
+ fn Style(self) -> Temporary<CSSStyleDeclaration> {
+ if self.style_decl.get().is_none() {
+ let global = window_from_node(self);
+ let style_props = CSS2Properties::new(&*global.root()).root();
+ let style_decl: JSRef<CSSStyleDeclaration> = CSSStyleDeclarationCast::from_ref(*style_props);
+ self.style_decl.assign(Some(style_decl));
+ }
+ self.style_decl.get().unwrap()
+ }
+
make_getter!(Title)
make_setter!(SetTitle, "title")