aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/cssstylesheet.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-11-23 10:27:49 -0800
committerGitHub <noreply@github.com>2016-11-23 10:27:49 -0800
commit996756687cd741ad0d30029022638bdcceecb563 (patch)
tree9aba8b65f32fec042ee4020e1189a53fd8e7eaaa /components/script/dom/cssstylesheet.rs
parentbc1e18c29e4f53ca8ed38cf2bc4e7cd912d70f93 (diff)
parent95cbf1a885da6125665b73ab1829ac229e6db822 (diff)
downloadservo-996756687cd741ad0d30029022638bdcceecb563.tar.gz
servo-996756687cd741ad0d30029022638bdcceecb563.zip
Auto merge of #14241 - Manishearth:mut-cssom, r=SimonSapin
CSSOM: Whole ton of things CSSOM is now starting to be useful! Based on #14190. Only the <s>last commit</s> last two commits need review. cc @xidorn . This doesn't change the style API, but adds useful methods. part of #11420 This adds: - `insertRule()` and `deleteRule()` on `CSSStyleSheet`, `CSSGroupingRule` - `.style` getters on link and style elements - Keyframes-backed `CSSRules` and `CSSKeyframesRule.cssRules` - `CSSGroupingRule.cssRules` - `prefix` and `namespaceURI` attributes of `CSSNamespaceRule` - Fixups regarding parent stylesheets r? @SimonSapin <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14241) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/cssstylesheet.rs')
-rw-r--r--components/script/dom/cssstylesheet.rs26
1 files changed, 24 insertions, 2 deletions
diff --git a/components/script/dom/cssstylesheet.rs b/components/script/dom/cssstylesheet.rs
index d5a9342a75a..2e2ac45d867 100644
--- a/components/script/dom/cssstylesheet.rs
+++ b/components/script/dom/cssstylesheet.rs
@@ -4,10 +4,11 @@
use dom::bindings::codegen::Bindings::CSSStyleSheetBinding;
use dom::bindings::codegen::Bindings::CSSStyleSheetBinding::CSSStyleSheetMethods;
+use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::js::{JS, Root, MutNullableHeap};
use dom::bindings::reflector::{reflect_dom_object, Reflectable};
use dom::bindings::str::DOMString;
-use dom::cssrulelist::CSSRuleList;
+use dom::cssrulelist::{CSSRuleList, RulesSource};
use dom::stylesheet::StyleSheet;
use dom::window::Window;
use std::sync::Arc;
@@ -40,12 +41,33 @@ impl CSSStyleSheet {
window,
CSSStyleSheetBinding::Wrap)
}
+
+ fn rulelist(&self) -> Root<CSSRuleList> {
+ self.rulelist.or_init(|| CSSRuleList::new(self.global().as_window(),
+ Some(self),
+ RulesSource::Rules(self.style_stylesheet
+ .rules.clone())))
+ }
}
impl CSSStyleSheetMethods for CSSStyleSheet {
// https://drafts.csswg.org/cssom/#dom-cssstylesheet-cssrules
fn CssRules(&self) -> Root<CSSRuleList> {
- self.rulelist.or_init(|| CSSRuleList::new(self.global().as_window(), self, self.style_stylesheet.rules.clone()))
+ // XXXManishearth check origin clean flag
+ // https://github.com/servo/servo/issues/14327
+ self.rulelist()
+ }
+
+ // https://drafts.csswg.org/cssom/#dom-cssstylesheet-insertrule
+ fn InsertRule(&self, rule: DOMString, index: u32) -> Fallible<u32> {
+ // XXXManishearth check origin clean flag
+ self.rulelist().insert_rule(&rule, index, /* nested */ false)
+ }
+
+ // https://drafts.csswg.org/cssom/#dom-cssstylesheet-deleterule
+ fn DeleteRule(&self, index: u32) -> ErrorResult {
+ // XXXManishearth check origin clean flag
+ self.rulelist().remove_rule(index)
}
}