From 1c5d58180d58325676a287119123d27655a1fdf2 Mon Sep 17 00:00:00 2001 From: Cameron Zwarich Date: Tue, 13 May 2014 00:37:52 -0700 Subject: [PATCH] Add the basic CSSStyleDeclaration CSSOM interface. This just includes the .webidl file (with some of the functionality commented out) and the stub implementations for the bindings. This is another step towards #1721. --- components/script/dom/cssstyledeclaration.rs | 68 +++++++++++++++++++ .../dom/webidls/CSSStyleDeclaration.webidl | 31 +++++++++ components/script/lib.rs | 1 + 3 files changed, 100 insertions(+) create mode 100644 components/script/dom/cssstyledeclaration.rs create mode 100644 components/script/dom/webidls/CSSStyleDeclaration.webidl diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs new file mode 100644 index 000000000000..873d7dfb6a2a --- /dev/null +++ b/components/script/dom/cssstyledeclaration.rs @@ -0,0 +1,68 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::CSSStyleDeclarationMethods; +use dom::bindings::error::{ErrorResult, Fallible}; +use dom::bindings::utils::{Reflectable, Reflector}; +use dom::bindings::js::JSRef; +use servo_util::str::DOMString; + +#[dom_struct] +pub struct CSSStyleDeclaration { + reflector_: Reflector, +} + +impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> { + fn CssText(self) -> DOMString { + "".to_string() + } + + fn SetCssText(self, _cssText: DOMString) -> ErrorResult { + Ok(()) + } + + fn Length(self) -> u32 { + 0 + } + + fn Item(self, _index: u32) -> DOMString { + "".to_string() + } + + fn GetPropertyValue(self, _property: DOMString) -> DOMString { + "".to_string() + } + + fn GetPropertyPriority(self, _property: DOMString) -> DOMString { + "".to_string() + } + + fn SetProperty(self, _property: DOMString, _value: DOMString, + _priority: DOMString) -> ErrorResult { + Ok(()) + } + + fn SetPropertyValue(self, _property: DOMString, _value: DOMString) -> ErrorResult { + Ok(()) + } + + fn SetPropertyPriority(self, _property: DOMString, _priority: DOMString) -> ErrorResult { + Ok(()) + } + + fn RemoveProperty(self, _property: DOMString) -> Fallible { + Ok("".to_string()) + } + + fn IndexedGetter(self, _index: u32, _found: &mut bool) -> DOMString { + "".to_string() + } +} + +impl Reflectable for CSSStyleDeclaration { + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } +} + diff --git a/components/script/dom/webidls/CSSStyleDeclaration.webidl b/components/script/dom/webidls/CSSStyleDeclaration.webidl new file mode 100644 index 000000000000..09079fe0fecd --- /dev/null +++ b/components/script/dom/webidls/CSSStyleDeclaration.webidl @@ -0,0 +1,31 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + * + * The origin of this IDL file is + * http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface + * + * Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. + */ + +interface CSSStyleDeclaration { + [SetterThrows] + attribute DOMString cssText; + readonly attribute unsigned long length; + getter DOMString item(unsigned long index); + DOMString getPropertyValue(DOMString property); + DOMString getPropertyPriority(DOMString property); + [Throws] + void setProperty(DOMString property, [TreatNullAs=EmptyString] DOMString value, + [TreatNullAs=EmptyString] optional DOMString priority = ""); + [Throws] + void setPropertyValue(DOMString property, [TreatNullAs=EmptyString] DOMString value); + [Throws] + void setPropertyPriority(DOMString property, [TreatNullAs=EmptyString] DOMString priority); + [Throws] + DOMString removeProperty(DOMString property); +// Not implemented yet: +// readonly attribute CSSRule? parentRule; +// attribute DOMString cssFloat; +}; + diff --git a/components/script/lib.rs b/components/script/lib.rs index 26f773f6006c..c818df7cb00e 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -88,6 +88,7 @@ pub mod dom { pub mod browsercontext; pub mod canvasrenderingcontext2d; pub mod characterdata; + pub mod cssstyledeclaration; pub mod domrect; pub mod domrectlist; pub mod domstringmap;