Move "remove a CSS rule" algorithm to style

This commit is contained in:
Xidorn Quan 2016-11-24 12:30:08 +11:00
parent 134ef33842
commit 03bcb7a26a
2 changed files with 28 additions and 26 deletions

View file

@ -119,7 +119,7 @@ impl CssRules {
}
}
/// https://drafts.csswg.org/cssom/#insert-a-css-rule
// https://drafts.csswg.org/cssom/#insert-a-css-rule
pub fn insert_rule(&self, rule: &str, base_url: ServoUrl, index: usize, nested: bool)
-> Result<CssRule, RulesMutateError> {
let mut rules = self.0.write();
@ -158,6 +158,32 @@ impl CssRules {
rules.insert(index, new_rule.clone());
Ok(new_rule)
}
// https://drafts.csswg.org/cssom/#remove-a-css-rule
pub fn remove_rule(&self, index: usize) -> Result<(), RulesMutateError> {
let mut rules = self.0.write();
// Step 1, 2
if index >= rules.len() {
return Err(RulesMutateError::IndexSize);
}
{
// Step 3
let ref rule = rules[index];
// Step 4
if let CssRule::Namespace(..) = *rule {
if !CssRules::only_ns_or_import(&rules) {
return Err(RulesMutateError::InvalidState);
}
}
}
// Step 5, 6
rules.remove(index);
Ok(())
}
}
#[derive(Debug)]