Bug 1468846: Unify some #[derive]s between Servo and Gecko. r?xidorn draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Thu, 14 Jun 2018 13:00:18 -0700
changeset 807542 35a6578fcaeee844191c26f04e856216d129fa7e
parent 807481 d6c59f5867350cb9bd29632575204002e69d117a
child 807543 68f823dd3d3aec8fea1bcf85e10b9a09aa7f5944
push id113143
push userbmo:emilio@crisal.io
push dateThu, 14 Jun 2018 21:16:25 +0000
reviewersxidorn
bugs1468846
milestone62.0a1
Bug 1468846: Unify some #[derive]s between Servo and Gecko. r?xidorn MozReview-Commit-ID: FqoNCuLcdm7
servo/components/style/gecko/media_queries.rs
servo/components/style/media_queries.rs
servo/components/style/values/specified/resolution.rs
--- a/servo/components/style/gecko/media_queries.rs
+++ b/servo/components/style/gecko/media_queries.rs
@@ -224,29 +224,29 @@ impl Device {
     }
     /// Un-apply text zoom (see nsStyleFont::UnzoomText).
     pub fn unzoom_text(&self, size: Au) -> Au {
         size.scale_by(1. / self.pres_context().mEffectiveTextZoom)
     }
 }
 
 /// The kind of matching that should be performed on a media feature value.
-#[derive(Clone, Copy, Debug, Eq, PartialEq)]
+#[derive(Clone, Copy, Debug, Eq, MallocSizeOf, PartialEq)]
 pub enum Range {
     /// At least the specified value.
     Min,
     /// At most the specified value.
     Max,
     /// Exactly the specified value.
     Equal,
 }
 
 /// A expression for gecko contains a reference to the media feature, the value
 /// the media query contained, and the range to evaluate.
-#[derive(Clone, Debug)]
+#[derive(Clone, Debug, MallocSizeOf)]
 pub struct Expression {
     feature: &'static nsMediaFeature,
     value: Option<MediaExpressionValue>,
     range: Range,
 }
 
 impl ToCss for Expression {
     fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
@@ -289,17 +289,17 @@ impl PartialEq for Expression {
 /// A value found or expected in a media expression.
 ///
 /// FIXME(emilio): How should calc() serialize in the Number / Integer /
 /// BoolInteger / IntRatio case, as computed or as specified value?
 ///
 /// If the first, this would need to store the relevant values.
 ///
 /// See: https://github.com/w3c/csswg-drafts/issues/1968
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, MallocSizeOf, PartialEq)]
 pub enum MediaExpressionValue {
     /// A length.
     Length(Length),
     /// A (non-negative) integer.
     Integer(u32),
     /// A floating point value.
     Float(CSSFloat),
     /// A boolean value, specified as an integer (i.e., either 0 or 1).
--- a/servo/components/style/media_queries.rs
+++ b/servo/components/style/media_queries.rs
@@ -19,51 +19,48 @@ use style_traits::{CssWriter, ParseError
 use values::CustomIdent;
 
 #[cfg(feature = "servo")]
 pub use servo::media_queries::{Device, Expression};
 #[cfg(feature = "gecko")]
 pub use gecko::media_queries::{Device, Expression};
 
 /// A type that encapsulates a media query list.
-#[cfg_attr(feature = "servo", derive(MallocSizeOf))]
 #[css(comma)]
-#[derive(Clone, Debug, ToCss)]
+#[derive(Clone, Debug, MallocSizeOf, ToCss)]
 pub struct MediaList {
     /// The list of media queries.
     #[css(iterable)]
     pub media_queries: Vec<MediaQuery>,
 }
 
 impl MediaList {
     /// Create an empty MediaList.
     pub fn empty() -> Self {
         MediaList {
             media_queries: vec![],
         }
     }
 }
 
 /// <https://drafts.csswg.org/mediaqueries/#mq-prefix>
-#[cfg_attr(feature = "servo", derive(MallocSizeOf))]
-#[derive(Clone, Copy, Debug, Eq, PartialEq, ToCss)]
+#[derive(Clone, Copy, Debug, Eq, MallocSizeOf, PartialEq, ToCss)]
 pub enum Qualifier {
     /// Hide a media query from legacy UAs:
     /// <https://drafts.csswg.org/mediaqueries/#mq-only>
     Only,
     /// Negate a media query:
     /// <https://drafts.csswg.org/mediaqueries/#mq-not>
     Not,
 }
 
 /// A [media query][mq].
 ///
 /// [mq]: https://drafts.csswg.org/mediaqueries/
-#[derive(Clone, Debug, PartialEq)]
-#[cfg_attr(feature = "servo", derive(MallocSizeOf))]
+#[derive(Clone, Debug, MallocSizeOf, PartialEq)]
 pub struct MediaQuery {
     /// The qualifier for this query.
     pub qualifier: Option<Qualifier>,
     /// The media type for this query, that can be known, unknown, or "all".
     pub media_type: MediaQueryType,
     /// The set of expressions that this media query contains.
     pub expressions: Vec<Expression>,
 }
@@ -118,18 +115,17 @@ impl ToCss for MediaQuery {
             dest.write_str(" and ")?;
             expr.to_css(dest)?;
         }
         Ok(())
     }
 }
 
 /// <http://dev.w3.org/csswg/mediaqueries-3/#media0>
-#[derive(Clone, Debug, Eq, PartialEq)]
-#[cfg_attr(feature = "servo", derive(MallocSizeOf))]
+#[derive(Clone, Debug, Eq, MallocSizeOf, PartialEq)]
 pub enum MediaQueryType {
     /// A media type that matches every device.
     All,
     /// A specific media type.
     Concrete(MediaType),
 }
 
 impl MediaQueryType {
@@ -147,18 +143,17 @@ impl MediaQueryType {
         match *self {
             MediaQueryType::All => true,
             MediaQueryType::Concrete(ref known_type) => *known_type == other,
         }
     }
 }
 
 /// <https://drafts.csswg.org/mediaqueries/#media-types>
-#[derive(Clone, Debug, Eq, PartialEq)]
-#[cfg_attr(feature = "servo", derive(MallocSizeOf))]
+#[derive(Clone, Debug, Eq, MallocSizeOf, PartialEq)]
 pub struct MediaType(pub CustomIdent);
 
 impl MediaType {
     /// The `screen` media type.
     pub fn screen() -> Self {
         MediaType(CustomIdent(atom!("screen")))
     }
 
@@ -175,16 +170,17 @@ impl MediaType {
         // Here we also perform the to-ascii-lowercase part of the serialization
         // algorithm: https://drafts.csswg.org/cssom/#serializing-media-queries
         match_ignore_ascii_case! { name,
             "not" | "or" | "and" | "only" => Err(()),
             _ => Ok(MediaType(CustomIdent(Atom::from(string_as_ascii_lowercase(name))))),
         }
     }
 }
+
 impl MediaQuery {
     /// Parse a media query given css input.
     ///
     /// Returns an error if any of the expressions is unknown.
     pub fn parse<'i, 't>(
         context: &ParserContext,
         input: &mut Parser<'i, 't>,
     ) -> Result<MediaQuery, ParseError<'i>> {
--- a/servo/components/style/values/specified/resolution.rs
+++ b/servo/components/style/values/specified/resolution.rs
@@ -7,17 +7,17 @@
 //! https://drafts.csswg.org/css-values/#resolution
 
 use cssparser::{Parser, Token};
 use parser::{Parse, ParserContext};
 use style_traits::{ParseError, StyleParseErrorKind};
 use values::CSSFloat;
 
 /// A specified resolution.
-#[derive(Clone, Debug, PartialEq, ToCss)]
+#[derive(Clone, Debug, PartialEq, MallocSizeOf, ToCss)]
 pub enum Resolution {
     /// Dots per inch.
     #[css(dimension)]
     Dpi(CSSFloat),
     /// An alias unit for dots per pixel.
     #[css(dimension)]
     X(CSSFloat),
     /// Dots per pixel.