aboutsummaryrefslogtreecommitdiffstats
path: root/components/style_traits
diff options
context:
space:
mode:
Diffstat (limited to 'components/style_traits')
-rw-r--r--components/style_traits/Cargo.toml17
-rw-r--r--components/style_traits/cursor.rs3
-rw-r--r--components/style_traits/lib.rs15
-rw-r--r--components/style_traits/values.rs32
-rw-r--r--components/style_traits/viewport.rs6
5 files changed, 53 insertions, 20 deletions
diff --git a/components/style_traits/Cargo.toml b/components/style_traits/Cargo.toml
index b089931d3cb..e823e1fbe7e 100644
--- a/components/style_traits/Cargo.toml
+++ b/components/style_traits/Cargo.toml
@@ -8,13 +8,16 @@ publish = false
name = "style_traits"
path = "lib.rs"
+[features]
+servo = ["heapsize", "heapsize_plugin", "serde", "serde_macros", "euclid/plugins",
+ "cssparser/heap_size", "cssparser/serde-serialization", "util/servo"]
+
[dependencies]
util = {path = "../util"}
-plugins = {path = "../plugins"}
-cssparser = {version = "0.5.4", features = ["heap_size", "serde-serialization"]}
-euclid = {version = "0.6.4", features = ["plugins"]}
-heapsize = "0.3.0"
-heapsize_plugin = "0.1.2"
+cssparser = "0.5.4"
+euclid = "0.6.4"
+heapsize = {version = "0.3.0", optional = true}
+heapsize_plugin = {version = "0.1.2", optional = true}
rustc-serialize = "0.3"
-serde = "0.7"
-serde_macros = "0.7"
+serde = {version = "0.7", optional = true}
+serde_macros = {version = "0.7", optional = true}
diff --git a/components/style_traits/cursor.rs b/components/style_traits/cursor.rs
index be1d9b3c0b3..d667b1c3d73 100644
--- a/components/style_traits/cursor.rs
+++ b/components/style_traits/cursor.rs
@@ -8,7 +8,8 @@ use cssparser::ToCss;
macro_rules! define_cursor {
($( $css: expr => $variant: ident = $value: expr, )+) => {
- #[derive(Clone, Copy, Debug, Deserialize, Eq, HeapSizeOf, PartialEq, Serialize)]
+ #[derive(Clone, Copy, Debug, Eq, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(Deserialize, Serialize, HeapSizeOf))]
#[repr(u8)]
pub enum Cursor {
$( $variant = $value ),+
diff --git a/components/style_traits/lib.rs b/components/style_traits/lib.rs
index 5cb01bb8c03..3b68e412d36 100644
--- a/components/style_traits/lib.rs
+++ b/components/style_traits/lib.rs
@@ -8,19 +8,20 @@
#![crate_name = "style_traits"]
#![crate_type = "rlib"]
-#![feature(custom_derive)]
-#![feature(plugin)]
-#![plugin(heapsize_plugin)]
-#![plugin(serde_macros)]
-#![plugin(plugins)]
+
#![deny(unsafe_code)]
+#![cfg_attr(feature = "servo", feature(custom_derive))]
+#![cfg_attr(feature = "servo", feature(plugin))]
+#![cfg_attr(feature = "servo", plugin(serde_macros))]
+#![cfg_attr(feature = "servo", plugin(heapsize_plugin))]
+
#[macro_use]
extern crate cssparser;
extern crate euclid;
-extern crate heapsize;
+#[cfg(feature = "servo")] extern crate heapsize;
extern crate rustc_serialize;
-extern crate serde;
+#[cfg(feature = "servo")] extern crate serde;
extern crate util;
pub mod cursor;
diff --git a/components/style_traits/values.rs b/components/style_traits/values.rs
index 5b9226f324e..995e98fcfef 100644
--- a/components/style_traits/values.rs
+++ b/components/style_traits/values.rs
@@ -5,12 +5,38 @@
#[macro_export]
macro_rules! define_css_keyword_enum {
($name: ident: $( $css: expr => $variant: ident ),+,) => {
- define_css_keyword_enum!($name: $( $css => $variant ),+);
+ __define_css_keyword_enum__add_optional_traits!($name [ $( $css => $variant ),+ ]);
};
($name: ident: $( $css: expr => $variant: ident ),+) => {
+ __define_css_keyword_enum__add_optional_traits!($name [ $( $css => $variant ),+ ]);
+ };
+}
+
+#[cfg(feature = "servo")]
+#[macro_export]
+macro_rules! __define_css_keyword_enum__add_optional_traits {
+ ($name: ident [ $( $css: expr => $variant: ident ),+ ]) => {
+ __define_css_keyword_enum__actual! {
+ $name [ Deserialize, Serialize, HeapSizeOf ] [ $( $css => $variant ),+ ]
+ }
+ };
+}
+
+#[cfg(not(feature = "servo"))]
+#[macro_export]
+macro_rules! __define_css_keyword_enum__add_optional_traits {
+ ($name: ident [ $( $css: expr => $variant: ident ),+ ]) => {
+ __define_css_keyword_enum__actual! {
+ $name [] [ $( $css => $variant ),+ ]
+ }
+ };
+}
+
+#[macro_export]
+macro_rules! __define_css_keyword_enum__actual {
+ ($name: ident [ $( $derived_trait: ident),* ] [ $( $css: expr => $variant: ident ),+ ]) => {
#[allow(non_camel_case_types)]
- #[derive(Clone, Eq, PartialEq, Copy, Hash, RustcEncodable, Debug, HeapSizeOf)]
- #[derive(Deserialize, Serialize)]
+ #[derive(Clone, Eq, PartialEq, Copy, Hash, RustcEncodable, Debug $(, $derived_trait )* )]
pub enum $name {
$( $variant ),+
}
diff --git a/components/style_traits/viewport.rs b/components/style_traits/viewport.rs
index f8b89ae4de6..96075f7a5e3 100644
--- a/components/style_traits/viewport.rs
+++ b/components/style_traits/viewport.rs
@@ -20,7 +20,8 @@ define_css_keyword_enum!(Orientation:
"landscape" => Landscape);
-#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, HeapSizeOf)]
+#[derive(Clone, Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(Deserialize, Serialize, HeapSizeOf))]
pub struct ViewportConstraints {
pub size: TypedSize2D<ViewportPx, f32>,
@@ -54,7 +55,8 @@ impl ToCss for ViewportConstraints {
/// Zoom is a number | percentage | auto
/// See http://dev.w3.org/csswg/css-device-adapt/#descdef-viewport-zoom
-#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)]
+#[derive(Copy, Clone, Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Zoom {
Number(f32),
Percentage(f32),