Bug 1367523 Part 1b: Servo-side make cloning of FontFaceRule and CounterStyleRule compile for both servo and gecko configs. draft
authorBrad Werth <bwerth@mozilla.com>
Wed, 07 Jun 2017 15:55:08 -0700
changeset 590602 f1c891470e3ec5daa81acd3d00cb2fe7da565e83
parent 590348 25a6490670ca43e97f6efb3dca2c7631a00a25b2
child 590603 c337c515002a78c19679f28c6b7c32b9a79454ac
push id62795
push userbwerth@mozilla.com
push dateWed, 07 Jun 2017 22:58:05 +0000
bugs1367523
milestone55.0a1
Bug 1367523 Part 1b: Servo-side make cloning of FontFaceRule and CounterStyleRule compile for both servo and gecko configs. MozReview-Commit-ID: 5sSaq1G7GWW
servo/components/style/stylesheets/counter_style_rule.rs
servo/components/style/stylesheets/font_face_rule.rs
servo/components/style/stylesheets/mod.rs
--- a/servo/components/style/stylesheets/counter_style_rule.rs
+++ b/servo/components/style/stylesheets/counter_style_rule.rs
@@ -5,8 +5,20 @@
 // TODO(emilio): unify this, components/style/counter_style.rs, and
 // components/style/gecko/rules.rs
 #![allow(missing_docs)]
 
 #[cfg(feature = "servo")]
 pub use counter_style::CounterStyleRuleData as CounterStyleRule;
 #[cfg(feature = "gecko")]
 pub use gecko::rules::CounterStyleRule;
+
+impl CounterStyleRule {
+    #[cfg(feature = "servo")]
+    pub fn clone_conditionally_gecko_or_servo(&self) -> CounterStyleRule {
+        self.clone()
+    }
+
+    #[cfg(feature = "gecko")]
+    pub fn clone_conditionally_gecko_or_servo(&self) -> CounterStyleRule {
+        self.deep_clone_from_gecko()
+    }
+}
\ No newline at end of file
--- a/servo/components/style/stylesheets/font_face_rule.rs
+++ b/servo/components/style/stylesheets/font_face_rule.rs
@@ -5,8 +5,20 @@
 // TODO(emilio): unify this, components/style/font_face.rs, and
 // components/style/gecko/rules.rs
 #![allow(missing_docs)]
 
 #[cfg(feature = "servo")]
 pub use font_face::FontFaceRuleData as FontFaceRule;
 #[cfg(feature = "gecko")]
 pub use gecko::rules::FontFaceRule;
+
+impl FontFaceRule {
+    #[cfg(feature = "servo")]
+    pub fn clone_conditionally_gecko_or_servo(&self) -> FontFaceRule {
+        self.clone()
+    }
+
+    #[cfg(feature = "gecko")]
+    pub fn clone_conditionally_gecko_or_servo(&self) -> FontFaceRule {
+        self.deep_clone_from_gecko()
+    }
+}
\ No newline at end of file
--- a/servo/components/style/stylesheets/mod.rs
+++ b/servo/components/style/stylesheets/mod.rs
@@ -285,30 +285,22 @@ impl DeepCloneWithLock for CssRule {
             CssRule::Media(ref arc) => {
                 let rule = arc.read_with(guard);
                 CssRule::Media(Arc::new(
                     lock.wrap(rule.deep_clone_with_lock(lock, guard))))
             },
             CssRule::FontFace(ref arc) => {
                 let rule = arc.read_with(guard);
                 CssRule::FontFace(Arc::new(lock.wrap(
-                    if cfg!(feature = "gecko") {
-                        rule.deep_clone_from_gecko()
-                    } else {
-                        rule.clone()
-                    })))
+                    rule.clone_conditionally_gecko_or_servo())))
             },
             CssRule::CounterStyle(ref arc) => {
                 let rule = arc.read_with(guard);
                 CssRule::CounterStyle(Arc::new(lock.wrap(
-                    if cfg!(feature = "gecko") {
-                        rule.deep_clone_from_gecko()
-                    } else {
-                        rule.clone()
-                    })))
+                    rule.clone_conditionally_gecko_or_servo())))
             },
             CssRule::Viewport(ref arc) => {
                 let rule = arc.read_with(guard);
                 CssRule::Viewport(Arc::new(lock.wrap(rule.clone())))
             },
             CssRule::Keyframes(ref arc) => {
                 let rule = arc.read_with(guard);
                 CssRule::Keyframes(Arc::new(