diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2016-11-16 16:22:42 -0800 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2016-11-23 09:32:39 -0800 |
commit | 52a3a71be3d025f080bb5fe4603f517a5523aa5d (patch) | |
tree | 10d5be7a1791d0b5609ded8ca7b5c38265c82618 /components/script/dom/csskeyframesrule.rs | |
parent | 2793d5f0a99bb13c6c439fad999da98e3afd685c (diff) | |
download | servo-52a3a71be3d025f080bb5fe4603f517a5523aa5d.tar.gz servo-52a3a71be3d025f080bb5fe4603f517a5523aa5d.zip |
Add support for keyframe-backed CSSRules, CSSKeyframesRule.cssRules and CSSKeyframeRule
Diffstat (limited to 'components/script/dom/csskeyframesrule.rs')
-rw-r--r-- | components/script/dom/csskeyframesrule.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/components/script/dom/csskeyframesrule.rs b/components/script/dom/csskeyframesrule.rs index 138c8b20558..5a14f2c3acd 100644 --- a/components/script/dom/csskeyframesrule.rs +++ b/components/script/dom/csskeyframesrule.rs @@ -3,10 +3,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::CSSKeyframesRuleBinding; -use dom::bindings::js::Root; -use dom::bindings::reflector::reflect_dom_object; +use dom::bindings::codegen::Bindings::CSSKeyframesRuleBinding::CSSKeyframesRuleMethods; +use dom::bindings::codegen::Bindings::CSSRuleBinding::CSSRuleMethods; +use dom::bindings::inheritance::Castable; +use dom::bindings::js::{JS, MutNullableHeap, Root}; +use dom::bindings::reflector::{Reflectable, reflect_dom_object}; use dom::bindings::str::DOMString; use dom::cssrule::{CSSRule, SpecificCSSRule}; +use dom::cssrulelist::{CSSRuleList, RulesSource}; use dom::cssstylesheet::CSSStyleSheet; use dom::window::Window; use parking_lot::RwLock; @@ -19,6 +23,7 @@ pub struct CSSKeyframesRule { cssrule: CSSRule, #[ignore_heap_size_of = "Arc"] keyframesrule: Arc<RwLock<KeyframesRule>>, + rulelist: MutNullableHeap<JS<CSSRuleList>>, } impl CSSKeyframesRule { @@ -26,6 +31,7 @@ impl CSSKeyframesRule { CSSKeyframesRule { cssrule: CSSRule::new_inherited(parent), keyframesrule: keyframesrule, + rulelist: MutNullableHeap::new(None), } } @@ -36,6 +42,19 @@ impl CSSKeyframesRule { window, CSSKeyframesRuleBinding::Wrap) } + + fn rulelist(&self) -> Root<CSSRuleList> { + self.rulelist.or_init(|| CSSRuleList::new(self.global().as_window(), + // temporary unwrap + &self.upcast::<CSSRule>().GetParentStyleSheet().unwrap(), + RulesSource::Keyframes(self.keyframesrule.clone()))) + } +} + +impl CSSKeyframesRuleMethods for CSSKeyframesRule { + fn CssRules(&self) -> Root<CSSRuleList> { + self.rulelist() + } } impl SpecificCSSRule for CSSKeyframesRule { |