diff options
author | Nazım Can Altınova <canaltinova@gmail.com> | 2016-12-13 19:01:05 +0300 |
---|---|---|
committer | Nazım Can Altınova <canaltinova@gmail.com> | 2016-12-14 12:48:47 +0300 |
commit | 9696c3a28acaaab2395e4ada77137e87855f4953 (patch) | |
tree | 2da5b6c911447167a376a68826c0f3ea0b013528 /components/script/dom/csskeyframesrule.rs | |
parent | debf5e0e7872347d67d9046b72979bcf7d08f9ca (diff) | |
download | servo-9696c3a28acaaab2395e4ada77137e87855f4953.tar.gz servo-9696c3a28acaaab2395e4ada77137e87855f4953.zip |
Implement CSSKeyframesRule.name
Diffstat (limited to 'components/script/dom/csskeyframesrule.rs')
-rw-r--r-- | components/script/dom/csskeyframesrule.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/components/script/dom/csskeyframesrule.rs b/components/script/dom/csskeyframesrule.rs index 3ddaa5c5b61..1c94e0e99fb 100644 --- a/components/script/dom/csskeyframesrule.rs +++ b/components/script/dom/csskeyframesrule.rs @@ -5,6 +5,7 @@ use cssparser::Parser; use dom::bindings::codegen::Bindings::CSSKeyframesRuleBinding; use dom::bindings::codegen::Bindings::CSSKeyframesRuleBinding::CSSKeyframesRuleMethods; +use dom::bindings::error::{Error, ErrorResult}; use dom::bindings::inheritance::Castable; use dom::bindings::js::{MutNullableJS, Root}; use dom::bindings::reflector::{DomObject, reflect_dom_object}; @@ -15,6 +16,7 @@ use dom::cssrulelist::{CSSRuleList, RulesSource}; use dom::cssstylesheet::CSSStyleSheet; use dom::window::Window; use parking_lot::RwLock; +use servo_atoms::Atom; use std::sync::Arc; use style::keyframes::{Keyframe, KeyframeSelector}; use style::parser::ParserContextExtraData; @@ -101,6 +103,27 @@ impl CSSKeyframesRuleMethods for CSSKeyframesRule { self.rulelist().item(idx as u32) }).and_then(Root::downcast) } + + // https://drafts.csswg.org/css-animations/#dom-csskeyframesrule-name + fn Name(&self) -> DOMString { + DOMString::from(&*self.keyframesrule.read().name) + } + + // https://drafts.csswg.org/css-animations/#dom-csskeyframesrule-name + fn SetName(&self, value: DOMString) -> ErrorResult { + // https://github.com/w3c/csswg-drafts/issues/801 + // Setting this property to a CSS-wide keyword or `none` will + // throw a Syntax Error. + match_ignore_ascii_case! { value, + "initial" => return Err(Error::Syntax), + "inherit" => return Err(Error::Syntax), + "unset" => return Err(Error::Syntax), + "none" => return Err(Error::Syntax), + _ => () + } + self.keyframesrule.write().name = Atom::from(value); + Ok(()) + } } impl SpecificCSSRule for CSSKeyframesRule { |