From ae3989ebf056717684dba94f8f13d5fd4e77bc96 Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Tue, 14 Nov 2017 13:32:16 -0800 Subject: [PATCH] Serialize media rule and supports rule like Gecko. --- components/style/stylesheets/media_rule.rs | 7 +------ components/style/stylesheets/rule_list.rs | 19 ++++++++++++++++++- components/style/stylesheets/supports_rule.rs | 7 +------ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/components/style/stylesheets/media_rule.rs b/components/style/stylesheets/media_rule.rs index cce6dc2df3b..4c468b44cf6 100644 --- a/components/style/stylesheets/media_rule.rs +++ b/components/style/stylesheets/media_rule.rs @@ -46,12 +46,7 @@ impl ToCssWithGuard for MediaRule { where W: fmt::Write { dest.write_str("@media ")?; self.media_queries.read_with(guard).to_css(dest)?; - dest.write_str(" {")?; - for rule in self.rules.read_with(guard).0.iter() { - dest.write_str(" ")?; - rule.to_css(guard, dest)?; - } - dest.write_str(" }") + self.rules.read_with(guard).to_css_block(guard, dest) } } diff --git a/components/style/stylesheets/rule_list.rs b/components/style/stylesheets/rule_list.rs index 403c2839703..fbceb6c1a0b 100644 --- a/components/style/stylesheets/rule_list.rs +++ b/components/style/stylesheets/rule_list.rs @@ -7,7 +7,9 @@ #[cfg(feature = "gecko")] use malloc_size_of::{MallocShallowSizeOf, MallocSizeOfOps}; use servo_arc::{Arc, RawOffsetArc}; -use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard}; +use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked}; +use shared_lock::{SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; +use std::fmt; use stylesheets::{CssRule, RulesMutateError}; use stylesheets::loader::StylesheetLoader; use stylesheets::rule_parser::State; @@ -88,6 +90,21 @@ impl CssRules { self.0.remove(index); Ok(()) } + + /// Serializes this CSSRules to CSS text as a block of rules. + /// + /// This should be speced into CSSOM spec at some point. See + /// + pub fn to_css_block(&self, guard: &SharedRwLockReadGuard, dest: &mut W) + -> fmt::Result where W: fmt::Write + { + dest.write_str(" {")?; + for rule in self.0.iter() { + dest.write_str("\n ")?; + rule.to_css(guard, dest)?; + } + dest.write_str("\n}") + } } /// A trait to implement helpers for `Arc>`. diff --git a/components/style/stylesheets/supports_rule.rs b/components/style/stylesheets/supports_rule.rs index 9b5d6a570d9..c65bc35cd7b 100644 --- a/components/style/stylesheets/supports_rule.rs +++ b/components/style/stylesheets/supports_rule.rs @@ -47,12 +47,7 @@ impl ToCssWithGuard for SupportsRule { where W: fmt::Write { dest.write_str("@supports ")?; self.condition.to_css(dest)?; - dest.write_str(" {")?; - for rule in self.rules.read_with(guard).0.iter() { - dest.write_str(" ")?; - rule.to_css(guard, dest)?; - } - dest.write_str(" }") + self.rules.read_with(guard).to_css_block(guard, dest) } }