aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/gfx/Cargo.toml2
-rw-r--r--components/gfx/display_list/mod.rs3
-rw-r--r--components/msg/Cargo.toml4
-rw-r--r--components/profile/Cargo.toml2
-rw-r--r--components/script_traits/Cargo.toml2
-rw-r--r--components/servo/Cargo.lock4
-rw-r--r--components/servo/Cargo.toml2
-rw-r--r--components/style/Cargo.toml26
-rw-r--r--components/style/attr.rs9
-rw-r--r--components/style/custom_properties.rs6
-rw-r--r--components/style/data.rs2
-rw-r--r--components/style/dom.rs3
-rw-r--r--components/style/element_state.rs2
-rw-r--r--components/style/error_reporting.rs2
-rw-r--r--components/style/font_face.rs12
-rw-r--r--components/style/lib.rs19
-rw-r--r--components/style/logical_geometry.rs6
-rw-r--r--components/style/media_queries.rs24
-rw-r--r--components/style/parallel.rs6
-rw-r--r--components/style/properties/longhand/background.mako.rs24
-rw-r--r--components/style/properties/longhand/border.mako.rs3
-rw-r--r--components/style/properties/longhand/box.mako.rs37
-rw-r--r--components/style/properties/longhand/column.mako.rs18
-rw-r--r--components/style/properties/longhand/counters.mako.rs9
-rw-r--r--components/style/properties/longhand/effects.mako.rs66
-rw-r--r--components/style/properties/longhand/font.mako.rs15
-rw-r--r--components/style/properties/longhand/inherited_box.mako.rs6
-rw-r--r--components/style/properties/longhand/inherited_table.mako.rs6
-rw-r--r--components/style/properties/longhand/inherited_text.mako.rs33
-rw-r--r--components/style/properties/longhand/list.mako.rs9
-rw-r--r--components/style/properties/longhand/outline.mako.rs3
-rw-r--r--components/style/properties/longhand/pointing.mako.rs3
-rw-r--r--components/style/properties/longhand/position.mako.rs3
-rw-r--r--components/style/properties/longhand/text.mako.rs3
-rw-r--r--components/style/properties/properties.mako.rs29
-rw-r--r--components/style/restyle_hints.rs12
-rw-r--r--components/style/selector_impl.rs9
-rw-r--r--components/style/selector_matching.rs16
-rw-r--r--components/style/stylesheets.rs15
-rw-r--r--components/style/traversal.rs4
-rw-r--r--components/style/values.rs116
-rw-r--r--components/style/viewport.rs12
-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
-rw-r--r--components/util/Cargo.toml21
-rw-r--r--components/util/geometry.rs8
-rw-r--r--components/util/lib.rs56
-rw-r--r--components/util/opts.rs11
-rw-r--r--components/util/prefs.rs6
-rw-r--r--components/util/thread.rs13
-rw-r--r--components/util/vec.rs5
-rw-r--r--ports/cef/Cargo.lock4
-rw-r--r--ports/geckolib/Cargo.lock29
-rw-r--r--ports/geckolib/Cargo.toml6
-rw-r--r--ports/geckolib/gecko_bindings/lib.rs2
-rw-r--r--ports/geckolib/gecko_bindings/ptr.rs12
-rw-r--r--ports/geckolib/lib.rs9
-rw-r--r--ports/geckolib/properties.mako.rs1
-rw-r--r--ports/geckolib/selector_impl.rs9
-rw-r--r--ports/geckolib/wrapper.rs2
63 files changed, 506 insertions, 348 deletions
diff --git a/components/gfx/Cargo.toml b/components/gfx/Cargo.toml
index 4a5dcba9a28..83ab6b25a91 100644
--- a/components/gfx/Cargo.toml
+++ b/components/gfx/Cargo.toml
@@ -13,7 +13,7 @@ path = "lib.rs"
app_units = {version = "0.2.3", features = ["plugins"]}
azure = {git = "https://github.com/servo/rust-azure", features = ["plugins"]}
bitflags = "0.7"
-euclid = {version = "0.6.4", features = ["plugins"]}
+euclid = {version = "0.6.4", features = ["plugins", "unstable"]}
fnv = "1.0"
gfx_traits = {path = "../gfx_traits"}
harfbuzz-sys = "0.1"
diff --git a/components/gfx/display_list/mod.rs b/components/gfx/display_list/mod.rs
index 1ec5aaf0d14..ac93adcca1f 100644
--- a/components/gfx/display_list/mod.rs
+++ b/components/gfx/display_list/mod.rs
@@ -20,7 +20,8 @@ use azure::azure_hl::Color;
use euclid::approxeq::ApproxEq;
use euclid::num::Zero;
use euclid::rect::TypedRect;
-use euclid::{Matrix2D, Matrix4D, Point2D, Rect, SideOffsets2D, Size2D};
+use euclid::side_offsets::SideOffsets2D;
+use euclid::{Matrix2D, Matrix4D, Point2D, Rect, Size2D};
use fnv::FnvHasher;
use gfx_traits::{LayerId, ScrollPolicy, StackingContextId};
use ipc_channel::ipc::IpcSharedMemory;
diff --git a/components/msg/Cargo.toml b/components/msg/Cargo.toml
index 13e2ae8f863..ac3a967802d 100644
--- a/components/msg/Cargo.toml
+++ b/components/msg/Cargo.toml
@@ -21,6 +21,6 @@ plugins = {path = "../plugins"}
rustc-serialize = "0.3.4"
serde = "0.7"
serde_macros = "0.7"
-url = {version = "1.0.0", features = ["heap_size"]}
-util = {path = "../util"}
+url = {version = "1.0.0", features = ["heap_size", "serde"]}
+util = {path = "../util", features = ["servo"]}
webrender_traits = {git = "https://github.com/servo/webrender_traits"}
diff --git a/components/profile/Cargo.toml b/components/profile/Cargo.toml
index ad7ab35a9d8..da8d01ca514 100644
--- a/components/profile/Cargo.toml
+++ b/components/profile/Cargo.toml
@@ -11,7 +11,7 @@ path = "lib.rs"
[dependencies]
profile_traits = {path = "../profile_traits"}
plugins = {path = "../plugins"}
-util = {path = "../util"}
+util = {path = "../util", features = ["servo"]}
ipc-channel = {git = "https://github.com/servo/ipc-channel"}
heartbeats-simple = "0.3"
log = "0.3.5"
diff --git a/components/script_traits/Cargo.toml b/components/script_traits/Cargo.toml
index 39755274168..b3d980268cb 100644
--- a/components/script_traits/Cargo.toml
+++ b/components/script_traits/Cargo.toml
@@ -15,7 +15,7 @@ msg = {path = "../msg"}
net_traits = {path = "../net_traits"}
plugins = {path = "../plugins"}
profile_traits = {path = "../profile_traits"}
-style_traits = {path = "../style_traits"}
+style_traits = {path = "../style_traits", features = ["servo"]}
util = {path = "../util"}
devtools_traits = {path = "../devtools_traits"}
ipc-channel = {git = "https://github.com/servo/ipc-channel"}
diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock
index 10b36f51793..eff5e11ef3b 100644
--- a/components/servo/Cargo.lock
+++ b/components/servo/Cargo.lock
@@ -2215,7 +2215,6 @@ dependencies = [
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"selectors 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2253,7 +2252,6 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2438,7 +2436,6 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.3 (git+https://github.com/servo/ipc-channel)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2446,7 +2443,6 @@ dependencies = [
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml
index 8e806baac75..f0bac793529 100644
--- a/components/servo/Cargo.toml
+++ b/components/servo/Cargo.toml
@@ -59,7 +59,7 @@ script_traits = {path = "../script_traits"}
layout = {path = "../layout"}
layout_thread = {path = "../layout_thread"}
gfx = {path = "../gfx"}
-style = {path = "../style"}
+style = {path = "../style", features = ["servo"]}
canvas = {path = "../canvas"}
canvas_traits = {path = "../canvas_traits"}
devtools = {path = "../devtools"}
diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml
index 98492645bc7..8a9e207aff2 100644
--- a/components/style/Cargo.toml
+++ b/components/style/Cargo.toml
@@ -12,31 +12,35 @@ path = "lib.rs"
[features]
gecko = ["gecko_bindings"]
+servo = ["serde", "serde/nightly", "serde_macros", "heapsize", "heapsize_plugin",
+ "style_traits/servo", "app_units/plugins", "euclid/plugins",
+ "cssparser/heap_size", "cssparser/serde-serialization",
+ "selectors/heap_size", "selectors/unstable", "string_cache/heap_size",
+ "url/heap_size"]
[dependencies]
-app_units = {version = "0.2.3", features = ["plugins"]}
+app_units = "0.2.3"
bitflags = "0.7"
-cssparser = {version = "0.5.5", features = ["heap_size", "serde-serialization"]}
+cssparser = "0.5.5"
encoding = "0.2"
-euclid = {version = "0.6.4", features = ["plugins"]}
+euclid = "0.6.4"
fnv = "1.0"
gecko_bindings = {path = "../../ports/geckolib/gecko_bindings", optional = true}
-heapsize = "0.3.0"
-heapsize_plugin = "0.1.2"
+heapsize = {version = "0.3.0", optional = true}
+heapsize_plugin = {version = "0.1.2", optional = true}
lazy_static = "0.2"
log = "0.3.5"
matches = "0.1"
num-traits = "0.1.32"
-plugins = {path = "../plugins"}
rustc-serialize = "0.3"
-selectors = {version = "0.6", features = ["heap_size", "unstable"]}
-serde = {version = "0.7", features = ["nightly"]}
-serde_macros = "0.7"
+selectors = "0.6"
+serde = {version = "0.7", optional = true}
+serde_macros = {version = "0.7", optional = true}
smallvec = "0.1"
-string_cache = {version = "0.2.20", features = ["heap_size"]}
+string_cache = "0.2.20"
style_traits = {path = "../style_traits"}
time = "0.1"
-url = {version = "1.0.0", features = ["heap_size"]}
+url = "1.0.0"
util = {path = "../util"}
[build-dependencies]
diff --git a/components/style/attr.rs b/components/style/attr.rs
index 42fdbbc853b..e16591f6c37 100644
--- a/components/style/attr.rs
+++ b/components/style/attr.rs
@@ -17,14 +17,16 @@ use values::specified::Length;
// Duplicated from script::dom::values.
const UNSIGNED_LONG_MAX: u32 = 2147483647;
-#[derive(Clone, Copy, Debug, HeapSizeOf, PartialEq)]
+#[derive(Clone, Copy, Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentageOrAuto {
Auto,
Percentage(f32),
Length(Au),
}
-#[derive(PartialEq, Clone, HeapSizeOf)]
+#[derive(PartialEq, Clone)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum AttrValue {
String(String),
TokenList(String, Vec<Atom>),
@@ -538,7 +540,8 @@ pub fn parse_length(mut value: &str) -> LengthOrPercentageOrAuto {
}
}
-#[derive(Clone, HeapSizeOf, Debug)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct AttrIdentifier {
pub local_name: Atom,
pub name: Atom,
diff --git a/components/style/custom_properties.rs b/components/style/custom_properties.rs
index 80aed5c10c3..957e5899486 100644
--- a/components/style/custom_properties.rs
+++ b/components/style/custom_properties.rs
@@ -23,7 +23,8 @@ pub fn parse_name(s: &str) -> Result<&str, ()> {
}
}
-#[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+#[derive(Clone, PartialEq, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue {
css: String,
@@ -41,7 +42,8 @@ pub struct BorrowedSpecifiedValue<'a> {
references: Option<&'a HashSet<Name>>,
}
-#[derive(Clone, HeapSizeOf, Debug)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ComputedValue {
css: String,
first_token_type: TokenSerializationType,
diff --git a/components/style/data.rs b/components/style/data.rs
index 3698eeddf5b..ee0975c3737 100644
--- a/components/style/data.rs
+++ b/components/style/data.rs
@@ -33,7 +33,7 @@ impl<Impl, ConcreteComputedValues> PrivateStyleData<Impl, ConcreteComputedValues
}
/// Information that we need stored in each DOM node.
-#[derive(HeapSizeOf)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct DomParallelInfo {
/// The number of children that still need work done.
pub children_count: AtomicIsize,
diff --git a/components/style/dom.rs b/components/style/dom.rs
index 7d10b394989..7713cc1aa0a 100644
--- a/components/style/dom.rs
+++ b/components/style/dom.rs
@@ -31,7 +31,8 @@ pub type UnsafeNode = (usize, usize);
/// Because the script task's GC does not trace layout, node data cannot be safely stored in layout
/// data structures. Also, layout code tends to be faster when the DOM is not being accessed, for
/// locality reasons. Using `OpaqueNode` enforces this invariant.
-#[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf, Hash, Eq, Deserialize, Serialize)]
+#[derive(Clone, PartialEq, Copy, Debug, Hash, Eq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub struct OpaqueNode(pub usize);
impl OpaqueNode {
diff --git a/components/style/element_state.rs b/components/style/element_state.rs
index 9b84bde45c1..e641c450123 100644
--- a/components/style/element_state.rs
+++ b/components/style/element_state.rs
@@ -4,7 +4,7 @@
bitflags! {
#[doc = "Event-based element states."]
- #[derive(HeapSizeOf)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub flags ElementState: u16 {
#[doc = "The mouse is down on this element. \
https://html.spec.whatwg.org/multipage/#selector-active \
diff --git a/components/style/error_reporting.rs b/components/style/error_reporting.rs
index d2977d28b3a..1ea1afbd5d1 100644
--- a/components/style/error_reporting.rs
+++ b/components/style/error_reporting.rs
@@ -20,6 +20,6 @@ impl ParseErrorReporter for StdoutErrorReporter {
}
fn clone(&self) -> Box<ParseErrorReporter + Send + Sync> {
- box StdoutErrorReporter
+ Box::new(StdoutErrorReporter)
}
}
diff --git a/components/style/font_face.rs b/components/style/font_face.rs
index f3876210478..9ecdcffe5d5 100644
--- a/components/style/font_face.rs
+++ b/components/style/font_face.rs
@@ -9,19 +9,22 @@ use properties::longhands::font_family::parse_one_family;
use std::iter;
use url::Url;
-#[derive(Clone, Debug, HeapSizeOf, PartialEq, Eq, Deserialize, Serialize)]
+#[derive(Clone, Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub enum Source {
Url(UrlSource),
Local(FontFamily),
}
-#[derive(Clone, Debug, HeapSizeOf, PartialEq, Eq, Deserialize, Serialize)]
+#[derive(Clone, Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub struct UrlSource {
pub url: Url,
pub format_hints: Vec<String>,
}
-#[derive(Debug, HeapSizeOf, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct FontFaceRule {
pub family: FontFamily,
pub sources: Vec<Source>,
@@ -59,7 +62,8 @@ pub fn parse_font_face_block(context: &ParserContext, input: &mut Parser)
}
}
-#[derive(Clone, Debug, Deserialize, Serialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
pub struct EffectiveSources(Vec<Source>);
impl FontFaceRule {
diff --git a/components/style/lib.rs b/components/style/lib.rs
index 4ec45e45e04..28e2963f4ff 100644
--- a/components/style/lib.rs
+++ b/components/style/lib.rs
@@ -2,17 +2,14 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#![feature(box_syntax)]
-#![feature(box_patterns)]
-#![feature(concat_idents)]
+// FIXME: replace discriminant_value with per-enum methods that use `match`?
#![feature(core_intrinsics)]
-#![feature(custom_attribute)]
-#![feature(custom_derive)]
-#![feature(plugin)]
-#![plugin(heapsize_plugin)]
-#![plugin(plugins)]
-#![plugin(serde_macros)]
+#![cfg_attr(feature = "servo", feature(custom_attribute))]
+#![cfg_attr(feature = "servo", feature(custom_derive))]
+#![cfg_attr(feature = "servo", feature(plugin))]
+#![cfg_attr(feature = "servo", plugin(heapsize_plugin))]
+#![cfg_attr(feature = "servo", plugin(serde_macros))]
#![deny(unsafe_code)]
@@ -30,7 +27,7 @@ extern crate euclid;
extern crate fnv;
#[cfg(feature = "gecko")]
extern crate gecko_bindings;
-extern crate heapsize;
+#[cfg(feature = "servo")] extern crate heapsize;
#[allow(unused_extern_crates)]
#[macro_use]
extern crate lazy_static;
@@ -42,7 +39,7 @@ extern crate matches;
extern crate num_traits;
extern crate rustc_serialize;
extern crate selectors;
-extern crate serde;
+#[cfg(feature = "servo")] extern crate serde;
extern crate smallvec;
#[macro_use(atom, ns)] extern crate string_cache;
#[macro_use]
diff --git a/components/style/logical_geometry.rs b/components/style/logical_geometry.rs
index b6afaf6f540..2b41b512910 100644
--- a/components/style/logical_geometry.rs
+++ b/components/style/logical_geometry.rs
@@ -5,7 +5,8 @@
//! Geometry in flow-relative space.
use euclid::num::Zero;
-use euclid::{Point2D, Rect, SideOffsets2D, Size2D};
+use euclid::side_offsets::SideOffsets2D;
+use euclid::{Point2D, Rect, Size2D};
use std::cmp::{max, min};
use std::fmt::{self, Debug, Error, Formatter};
use std::ops::{Add, Sub};
@@ -22,7 +23,8 @@ pub enum InlineBaseDirection {
}
bitflags!(
- #[derive(HeapSizeOf, RustcEncodable)]
+ #[derive(RustcEncodable)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub flags WritingMode: u8 {
const FLAG_RTL = 1 << 0,
const FLAG_VERTICAL = 1 << 1,
diff --git a/components/style/media_queries.rs b/components/style/media_queries.rs
index 859b86ea963..87ae0c77722 100644
--- a/components/style/media_queries.rs
+++ b/components/style/media_queries.rs
@@ -10,12 +10,14 @@ use util::geometry::ViewportPx;
use values::specified;
-#[derive(Debug, HeapSizeOf, PartialEq)]
+#[derive(Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct MediaQueryList {
pub media_queries: Vec<MediaQuery>
}
-#[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
+#[derive(PartialEq, Eq, Copy, Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Range<T> {
Min(T),
Max(T),
@@ -58,20 +60,23 @@ impl<T: Ord> Range<T> {
}
/// http://dev.w3.org/csswg/mediaqueries-3/#media1
-#[derive(PartialEq, Copy, Clone, Debug, HeapSizeOf)]
+#[derive(PartialEq, Copy, Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Expression {
/// http://dev.w3.org/csswg/mediaqueries-3/#width
Width(Range<specified::Length>),
}
/// http://dev.w3.org/csswg/mediaqueries-3/#media0
-#[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
+#[derive(PartialEq, Eq, Copy, Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Qualifier {
Only,
Not,
}
-#[derive(Debug, HeapSizeOf, PartialEq)]
+#[derive(Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct MediaQuery {
pub qualifier: Option<Qualifier>,
pub media_type: MediaQueryType,
@@ -90,20 +95,23 @@ impl MediaQuery {
}
/// http://dev.w3.org/csswg/mediaqueries-3/#media0
-#[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
+#[derive(PartialEq, Eq, Copy, Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum MediaQueryType {
All, // Always true
MediaType(MediaType),
}
-#[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
+#[derive(PartialEq, Eq, Copy, Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum MediaType {
Screen,
Print,
Unknown,
}
-#[derive(Debug, HeapSizeOf)]
+#[derive(Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct Device {
pub media_type: MediaType,
pub viewport_size: TypedSize2D<ViewportPx, f32>,
diff --git a/components/style/parallel.rs b/components/style/parallel.rs
index 0700986ee10..e967c3839fd 100644
--- a/components/style/parallel.rs
+++ b/components/style/parallel.rs
@@ -17,7 +17,7 @@ use util::workqueue::{WorkQueue, WorkUnit, WorkerProxy};
#[allow(dead_code)]
fn static_assertion(node: UnsafeNode) {
unsafe {
- let _: UnsafeNodeList = ::std::intrinsics::transmute(node);
+ let _: UnsafeNodeList = mem::transmute(node);
}
}
@@ -46,7 +46,7 @@ pub fn traverse_dom<N, C>(root: N,
run_queue_with_custom_work_data_type(queue, |queue| {
queue.push(WorkUnit {
fun: top_down_dom::<N, C>,
- data: (box vec![root.to_unsafe()], root.opaque()),
+ data: (Box::new(vec![root.to_unsafe()]), root.opaque()),
});
}, queue_data);
}
@@ -89,7 +89,7 @@ fn top_down_dom<N, C>(unsafe_nodes: UnsafeNodeList,
for chunk in discovered_child_nodes.chunks(CHUNK_SIZE) {
proxy.push(WorkUnit {
fun: top_down_dom::<N, C>,
- data: (box chunk.iter().cloned().collect(), unsafe_nodes.1),
+ data: (Box::new(chunk.iter().cloned().collect()), unsafe_nodes.1),
});
}
}
diff --git a/components/style/properties/longhand/background.mako.rs b/components/style/properties/longhand/background.mako.rs
index 77be57aa097..aaac791c0e8 100644
--- a/components/style/properties/longhand/background.mako.rs
+++ b/components/style/properties/longhand/background.mako.rs
@@ -17,7 +17,8 @@ ${helpers.predefined_type(
pub mod computed_value {
use values::computed;
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<computed::Image>);
}
@@ -32,7 +33,8 @@ ${helpers.predefined_type(
}
}
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(pub Option<Image>);
impl ToCss for SpecifiedValue {
@@ -77,14 +79,16 @@ ${helpers.predefined_type(
pub mod computed_value {
use values::computed::LengthOrPercentage;
- #[derive(PartialEq, Copy, Clone, Debug, HeapSizeOf)]
+ #[derive(PartialEq, Copy, Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T {
pub horizontal: LengthOrPercentage,
pub vertical: LengthOrPercentage,
}
}
- #[derive(Debug, Clone, PartialEq, Copy, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue {
pub horizontal: specified::LengthOrPercentage,
pub vertical: specified::LengthOrPercentage,
@@ -198,13 +202,15 @@ ${helpers.single_keyword("background-origin", "padding-box border-box content-bo
pub mod computed_value {
use values::computed::LengthOrPercentageOrAuto;
- #[derive(PartialEq, Clone, Debug, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ExplicitSize {
pub width: LengthOrPercentageOrAuto,
pub height: LengthOrPercentageOrAuto,
}
- #[derive(PartialEq, Clone, Debug, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum T {
Explicit(ExplicitSize),
Cover,
@@ -222,7 +228,8 @@ ${helpers.single_keyword("background-origin", "padding-box border-box content-bo
}
}
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedExplicitSize {
pub width: specified::LengthOrPercentageOrAuto,
pub height: specified::LengthOrPercentageOrAuto,
@@ -245,7 +252,8 @@ ${helpers.single_keyword("background-origin", "padding-box border-box content-bo
}
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Explicit(SpecifiedExplicitSize),
Cover,
diff --git a/components/style/properties/longhand/border.mako.rs b/components/style/properties/longhand/border.mako.rs
index fac233a6924..96656861583 100644
--- a/components/style/properties/longhand/border.mako.rs
+++ b/components/style/properties/longhand/border.mako.rs
@@ -34,7 +34,8 @@
-> Result<SpecifiedValue, ()> {
specified::parse_border_width(input).map(SpecifiedValue)
}
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(pub specified::Length);
pub mod computed_value {
use app_units::Au;
diff --git a/components/style/properties/longhand/box.mako.rs b/components/style/properties/longhand/box.mako.rs
index 800cf276a1a..eddc2da5053 100644
--- a/components/style/properties/longhand/box.mako.rs
+++ b/components/style/properties/longhand/box.mako.rs
@@ -28,8 +28,8 @@
pub mod computed_value {
#[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)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub enum T {
% for value in values:
${to_rust_ident(value)},
@@ -136,7 +136,8 @@ ${helpers.single_keyword("clear", "none left right both", gecko_ffi_name="mBreak
<% vertical_align_keywords = vertical_align.keyword.values_for(product) %>
#[allow(non_camel_case_types)]
- #[derive(Debug, Clone, PartialEq, Copy, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
% for keyword in vertical_align_keywords:
${to_rust_ident(keyword)},
@@ -174,7 +175,8 @@ ${helpers.single_keyword("clear", "none left right both", gecko_ffi_name="mBreak
use values::AuExtensionMethods;
use values::{CSSFloat, computed};
#[allow(non_camel_case_types)]
- #[derive(PartialEq, Copy, Clone, HeapSizeOf, Debug)]
+ #[derive(PartialEq, Copy, Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum T {
% for keyword in vertical_align_keywords:
${to_rust_ident(keyword)},
@@ -243,7 +245,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", need_clone=
}
pub mod computed_value {
- #[derive(Debug, Clone, Copy, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, Copy, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub super::super::overflow_x::computed_value::T);
}
@@ -279,7 +282,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", need_clone=
pub use values::computed::Time as SingleComputedValue;
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Vec<SingleComputedValue>);
impl ToComputedValue for T {
@@ -385,7 +389,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", need_clone=
pub use self::TransitionTimingFunction as SingleComputedValue;
- #[derive(Copy, Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Copy, Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum TransitionTimingFunction {
CubicBezier(Point2D<f32>, Point2D<f32>),
Steps(u32, StartEnd),
@@ -416,7 +421,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", need_clone=
}
}
- #[derive(Copy, Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Copy, Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum StartEnd {
Start,
End,
@@ -431,7 +437,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", need_clone=
}
}
- #[derive(Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Vec<TransitionTimingFunction>);
impl ToCss for T {
@@ -537,7 +544,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", need_clone=
pub use self::TransitionProperty as SingleComputedValue;
- #[derive(Copy, Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Copy, Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum TransitionProperty {
All,
BackgroundColor,
@@ -688,7 +696,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", need_clone=
}
}
- #[derive(Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Vec<SingleComputedValue>);
impl ToCss for T {
@@ -863,14 +872,16 @@ ${helpers.single_keyword("-moz-appearance",
use url::Url;
use values::computed::ComputedValueAsSpecified;
- #[derive(PartialEq, Clone, Debug, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct UrlExtraData {
pub base: GeckoArcURI,
pub referrer: GeckoArcURI,
pub principal: GeckoArcPrincipal,
}
- #[derive(PartialEq, Clone, Debug, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Url(Url, UrlExtraData),
None,
diff --git a/components/style/properties/longhand/column.mako.rs b/components/style/properties/longhand/column.mako.rs
index b040b9bd41e..cf24613496e 100644
--- a/components/style/properties/longhand/column.mako.rs
+++ b/components/style/properties/longhand/column.mako.rs
@@ -11,7 +11,8 @@
use std::fmt;
use values::AuExtensionMethods;
- #[derive(Debug, Clone, Copy, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, Copy, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Auto,
Specified(specified::Length),
@@ -28,7 +29,8 @@
pub mod computed_value {
use app_units::Au;
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<Au>);
}
@@ -72,7 +74,8 @@
use cssparser::ToCss;
use std::fmt;
- #[derive(Debug, Clone, Copy, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, Copy, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Auto,
Specified(u32),
@@ -88,7 +91,8 @@
}
pub mod computed_value {
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<u32>);
}
@@ -138,7 +142,8 @@
use std::fmt;
use values::AuExtensionMethods;
- #[derive(Debug, Clone, Copy, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, Copy, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Normal,
Specified(specified::Length),
@@ -155,7 +160,8 @@
pub mod computed_value {
use app_units::Au;
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<Au>);
}
diff --git a/components/style/properties/longhand/counters.mako.rs b/components/style/properties/longhand/counters.mako.rs
index 1f881b8e9ce..6dd97da6032 100644
--- a/components/style/properties/longhand/counters.mako.rs
+++ b/components/style/properties/longhand/counters.mako.rs
@@ -24,7 +24,8 @@
use cssparser::{self, ToCss};
use std::fmt;
- #[derive(Debug, PartialEq, Eq, Clone, HeapSizeOf)]
+ #[derive(Debug, PartialEq, Eq, Clone)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum ContentItem {
/// Literal string content.
String(String),
@@ -73,7 +74,8 @@
}
#[allow(non_camel_case_types)]
- #[derive(Debug, PartialEq, Eq, Clone, HeapSizeOf)]
+ #[derive(Debug, PartialEq, Eq, Clone)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum T {
normal,
none,
@@ -180,7 +182,8 @@
pub use self::computed_value::T as SpecifiedValue;
pub mod computed_value {
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Vec<(String,i32)>);
}
diff --git a/components/style/properties/longhand/effects.mako.rs b/components/style/properties/longhand/effects.mako.rs
index 96f832bb782..005d3576acd 100644
--- a/components/style/properties/longhand/effects.mako.rs
+++ b/components/style/properties/longhand/effects.mako.rs
@@ -16,10 +16,12 @@ ${helpers.predefined_type("opacity",
use std::fmt;
use values::AuExtensionMethods;
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(Vec<SpecifiedBoxShadow>);
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedBoxShadow {
pub offset_x: specified::Length,
pub offset_y: specified::Length,
@@ -72,10 +74,12 @@ ${helpers.predefined_type("opacity",
use std::fmt;
use values::computed;
- #[derive(Clone, PartialEq, HeapSizeOf, Debug)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Vec<BoxShadow>);
- #[derive(Clone, PartialEq, Copy, HeapSizeOf, Debug)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct BoxShadow {
pub offset_x: Au,
pub offset_y: Au,
@@ -229,7 +233,8 @@ ${helpers.predefined_type("opacity",
pub mod computed_value {
use app_units::Au;
- #[derive(Clone, PartialEq, Eq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Eq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ClipRect {
pub top: Au,
pub right: Option<Au>,
@@ -237,7 +242,8 @@ ${helpers.predefined_type("opacity",
pub left: Au,
}
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<ClipRect>);
}
@@ -271,7 +277,8 @@ ${helpers.predefined_type("opacity",
}
}
- #[derive(Clone, Debug, PartialEq, Copy, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedClipRect {
pub top: specified::Length,
pub right: Option<specified::Length>,
@@ -279,7 +286,8 @@ ${helpers.predefined_type("opacity",
pub left: specified::Length,
}
- #[derive(Clone, Debug, PartialEq, Copy, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(Option<SpecifiedClipRect>);
impl ToCss for SpecifiedClipRect {
@@ -394,11 +402,13 @@ ${helpers.predefined_type("opacity",
use values::CSSFloat;
use values::specified::{Angle, Length};
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(Vec<SpecifiedFilter>);
// TODO(pcwalton): `drop-shadow`
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedFilter {
Blur(Length),
Brightness(CSSFloat),
@@ -416,7 +426,8 @@ ${helpers.predefined_type("opacity",
use values::CSSFloat;
use values::specified::{Angle};
- #[derive(Clone, PartialEq, Debug, HeapSizeOf, Deserialize, Serialize)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub enum Filter {
Blur(Au),
Brightness(CSSFloat),
@@ -429,7 +440,8 @@ ${helpers.predefined_type("opacity",
Sepia(CSSFloat),
}
- #[derive(Clone, PartialEq, Debug, HeapSizeOf, Deserialize, Serialize)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub struct T { pub filters: Vec<Filter> }
impl T {
@@ -629,7 +641,8 @@ ${helpers.predefined_type("opacity",
use values::CSSFloat;
use values::computed;
- #[derive(Clone, Copy, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ComputedMatrix {
pub m11: CSSFloat, pub m12: CSSFloat, pub m13: CSSFloat, pub m14: CSSFloat,
pub m21: CSSFloat, pub m22: CSSFloat, pub m23: CSSFloat, pub m24: CSSFloat,
@@ -648,7 +661,8 @@ ${helpers.predefined_type("opacity",
}
}
- #[derive(Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum ComputedOperation {
Matrix(ComputedMatrix),
Skew(computed::Angle, computed::Angle),
@@ -660,7 +674,8 @@ ${helpers.predefined_type("opacity",
Perspective(computed::Length),
}
- #[derive(Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<Vec<ComputedOperation>>);
}
@@ -695,7 +710,8 @@ ${helpers.predefined_type("opacity",
Ok((first, second))
}
- #[derive(Copy, Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Copy, Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
enum TranslateKind {
Translate,
TranslateX,
@@ -704,7 +720,8 @@ ${helpers.predefined_type("opacity",
Translate3D,
}
- #[derive(Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
enum SpecifiedOperation {
Matrix(SpecifiedMatrix),
Skew(specified::Angle, specified::Angle),
@@ -783,7 +800,8 @@ ${helpers.predefined_type("opacity",
}
}
- #[derive(Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(Vec<SpecifiedOperation>);
impl ToCss for SpecifiedValue {
@@ -1173,7 +1191,8 @@ ${helpers.single_keyword("transform-style", "auto flat preserve-3d")}
pub mod computed_value {
use values::computed::{Length, LengthOrPercentage};
- #[derive(Clone, Copy, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T {
pub horizontal: LengthOrPercentage,
pub vertical: LengthOrPercentage,
@@ -1181,7 +1200,8 @@ ${helpers.single_keyword("transform-style", "auto flat preserve-3d")}
}
}
- #[derive(Clone, Copy, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue {
horizontal: LengthOrPercentage,
vertical: LengthOrPercentage,
@@ -1253,7 +1273,8 @@ ${helpers.predefined_type("perspective",
pub mod computed_value {
use values::computed::LengthOrPercentage;
- #[derive(Clone, Copy, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T {
pub horizontal: LengthOrPercentage,
pub vertical: LengthOrPercentage,
@@ -1268,7 +1289,8 @@ ${helpers.predefined_type("perspective",
}
}
- #[derive(Clone, Copy, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue {
horizontal: LengthOrPercentage,
vertical: LengthOrPercentage,
diff --git a/components/style/properties/longhand/font.mako.rs b/components/style/properties/longhand/font.mako.rs
index aeef47c94fb..cf63c578adb 100644
--- a/components/style/properties/longhand/font.mako.rs
+++ b/components/style/properties/longhand/font.mako.rs
@@ -19,7 +19,8 @@
use std::fmt;
use string_cache::Atom;
- #[derive(Debug, PartialEq, Eq, Clone, Hash, HeapSizeOf, Deserialize, Serialize)]
+ #[derive(Debug, PartialEq, Eq, Clone, Hash)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub enum FontFamily {
FamilyName(Atom),
Generic(Atom),
@@ -73,7 +74,8 @@
Ok(())
}
}
- #[derive(Debug, Clone, PartialEq, Eq, Hash, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq, Eq, Hash)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Vec<FontFamily>);
}
@@ -122,7 +124,8 @@ ${helpers.single_keyword("font-variant", "normal small-caps")}
use cssparser::ToCss;
use std::fmt;
- #[derive(Debug, Clone, PartialEq, Eq, Copy, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq, Eq, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Bolder,
Lighter,
@@ -169,7 +172,8 @@ ${helpers.single_keyword("font-variant", "normal small-caps")}
}
pub mod computed_value {
use std::fmt;
- #[derive(PartialEq, Eq, Copy, Clone, Hash, Deserialize, Serialize, HeapSizeOf, Debug)]
+ #[derive(PartialEq, Eq, Copy, Clone, Hash, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
#[repr(u16)]
pub enum T {
% for weight in range(100, 901, 100):
@@ -250,7 +254,8 @@ ${helpers.single_keyword("font-variant", "normal small-caps")}
}
}
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(pub specified::LengthOrPercentage);
pub mod computed_value {
use app_units::Au;
diff --git a/components/style/properties/longhand/inherited_box.mako.rs b/components/style/properties/longhand/inherited_box.mako.rs
index 655d9dac674..482780f3a6e 100644
--- a/components/style/properties/longhand/inherited_box.mako.rs
+++ b/components/style/properties/longhand/inherited_box.mako.rs
@@ -40,7 +40,8 @@ ${helpers.single_keyword("color-adjust", "economy exact", products="gecko")}
use cssparser::ToCss;
use std::fmt;
- #[derive(Copy, Clone, Debug, PartialEq, HeapSizeOf, Deserialize, Serialize)]
+ #[derive(Copy, Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub enum T {
Auto,
CrispEdges,
@@ -96,7 +97,8 @@ ${helpers.single_keyword("color-adjust", "economy exact", products="gecko")}
use std::fmt;
use values::computed::ComputedValueAsSpecified;
- #[derive(Copy, Clone, Debug, Eq, PartialEq, HeapSizeOf, Serialize, Deserialize)]
+ #[derive(Copy, Clone, Debug, Eq, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub struct SpecifiedValue(pub bool);
pub mod computed_value {
diff --git a/components/style/properties/longhand/inherited_table.mako.rs b/components/style/properties/longhand/inherited_table.mako.rs
index 2a45b2fd43a..8837412cd9a 100644
--- a/components/style/properties/longhand/inherited_table.mako.rs
+++ b/components/style/properties/longhand/inherited_table.mako.rs
@@ -20,14 +20,16 @@ ${helpers.single_keyword("caption-side", "top bottom", extra_gecko_values="right
pub mod computed_value {
use app_units::Au;
- #[derive(Clone, Copy, Debug, PartialEq, RustcEncodable, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq, RustcEncodable)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T {
pub horizontal: Au,
pub vertical: Au,
}
}
- #[derive(Clone, Debug, PartialEq, HeapSizeOf)]
+ #[derive(Clone, Debug, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue {
pub horizontal: specified::Length,
pub vertical: specified::Length,
diff --git a/components/style/properties/longhand/inherited_text.mako.rs b/components/style/properties/longhand/inherited_text.mako.rs
index dedc6e60102..358d260459a 100644
--- a/components/style/properties/longhand/inherited_text.mako.rs
+++ b/components/style/properties/longhand/inherited_text.mako.rs
@@ -12,7 +12,8 @@
use values::AuExtensionMethods;
use values::CSSFloat;
- #[derive(Debug, Clone, PartialEq, Copy, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Normal,
% if product == "gecko":
@@ -61,7 +62,8 @@
use app_units::Au;
use std::fmt;
use values::CSSFloat;
- #[derive(PartialEq, Copy, Clone, HeapSizeOf, Debug)]
+ #[derive(PartialEq, Copy, Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum T {
Normal,
% if product == "gecko":
@@ -182,7 +184,8 @@
use std::fmt;
use values::AuExtensionMethods;
- #[derive(Debug, Clone, Copy, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, Copy, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Normal,
Specified(specified::Length),
@@ -199,7 +202,8 @@
pub mod computed_value {
use app_units::Au;
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<Au>);
}
@@ -244,7 +248,8 @@
use std::fmt;
use values::AuExtensionMethods;
- #[derive(Debug, Clone, Copy, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, Copy, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
Normal,
Specified(specified::Length), // FIXME(SimonSapin) support percentages
@@ -261,7 +266,8 @@
pub mod computed_value {
use app_units::Au;
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<Au>);
}
@@ -332,7 +338,8 @@ ${helpers.single_keyword("text-justify",
impl ComputedValueAsSpecified for SpecifiedValue {}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue {
pub underline: Option<RGBA>,
pub overline: Option<RGBA>,
@@ -446,10 +453,12 @@ ${helpers.single_keyword("text-justify",
use std::fmt;
use values::AuExtensionMethods;
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(Vec<SpecifiedTextShadow>);
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedTextShadow {
pub offset_x: specified::Length,
pub offset_y: specified::Length,
@@ -461,10 +470,12 @@ ${helpers.single_keyword("text-justify",
use app_units::Au;
use cssparser::Color;
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Vec<TextShadow>);
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct TextShadow {
pub offset_x: Au,
pub offset_y: Au,
diff --git a/components/style/properties/longhand/list.mako.rs b/components/style/properties/longhand/list.mako.rs
index 309e248c2dd..298f387cf13 100644
--- a/components/style/properties/longhand/list.mako.rs
+++ b/components/style/properties/longhand/list.mako.rs
@@ -31,7 +31,8 @@ ${helpers.single_keyword("list-style-type", """
use url::Url;
use values::LocalToCss;
- #[derive(Debug, Clone, PartialEq, Eq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq, Eq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum SpecifiedValue {
None,
Url(Url),
@@ -52,7 +53,8 @@ ${helpers.single_keyword("list-style-type", """
use url::Url;
use values::LocalToCss;
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Option<Url>);
impl ToCss for T {
@@ -100,7 +102,8 @@ ${helpers.single_keyword("list-style-type", """
pub use self::computed_value::T as SpecifiedValue;
pub mod computed_value {
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T(pub Vec<(String,String)>);
}
diff --git a/components/style/properties/longhand/outline.mako.rs b/components/style/properties/longhand/outline.mako.rs
index afa2c9a06c7..ee91fc06499 100644
--- a/components/style/properties/longhand/outline.mako.rs
+++ b/components/style/properties/longhand/outline.mako.rs
@@ -41,7 +41,8 @@ ${helpers.predefined_type("outline-color", "CSSColor", "::cssparser::Color::Curr
pub fn parse(_context: &ParserContext, input: &mut Parser) -> Result<SpecifiedValue, ()> {
specified::parse_border_width(input).map(SpecifiedValue)
}
- #[derive(Debug, Clone, PartialEq, HeapSizeOf)]
+ #[derive(Debug, Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue(pub specified::Length);
pub mod computed_value {
use app_units::Au;
diff --git a/components/style/properties/longhand/pointing.mako.rs b/components/style/properties/longhand/pointing.mako.rs
index 7068a951b0e..c2ad1502a9e 100644
--- a/components/style/properties/longhand/pointing.mako.rs
+++ b/components/style/properties/longhand/pointing.mako.rs
@@ -17,7 +17,8 @@
use std::fmt;
use style_traits::cursor::Cursor;
- #[derive(Clone, PartialEq, Eq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Eq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum T {
AutoCursor,
SpecifiedCursor(Cursor),
diff --git a/components/style/properties/longhand/position.mako.rs b/components/style/properties/longhand/position.mako.rs
index bc93a6614e5..5ce0b83f87d 100644
--- a/components/style/properties/longhand/position.mako.rs
+++ b/components/style/properties/longhand/position.mako.rs
@@ -20,7 +20,8 @@
use cssparser::ToCss;
use std::fmt;
- #[derive(PartialEq, Clone, Eq, Copy, Debug, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Eq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum T {
Auto,
Number(i32),
diff --git a/components/style/properties/longhand/text.mako.rs b/components/style/properties/longhand/text.mako.rs
index 9bf491a4546..2e34a0c6243 100644
--- a/components/style/properties/longhand/text.mako.rs
+++ b/components/style/properties/longhand/text.mako.rs
@@ -24,7 +24,8 @@ ${helpers.single_keyword("unicode-bidi", "normal embed isolate bidi-override iso
impl ComputedValueAsSpecified for SpecifiedValue {}
- #[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
+ #[derive(PartialEq, Eq, Copy, Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct SpecifiedValue {
pub underline: bool,
pub overline: bool,
diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs
index 3d41c30366b..6d57a635748 100644
--- a/components/style/properties/properties.mako.rs
+++ b/components/style/properties/properties.mako.rs
@@ -25,7 +25,7 @@ use cssparser::{Parser, RGBA, AtRuleParser, DeclarationParser, Delimiter,
DeclarationListParser, parse_important, ToCss, TokenSerializationType};
use error_reporting::ParseErrorReporter;
use url::Url;
-use euclid::SideOffsets2D;
+use euclid::side_offsets::SideOffsets2D;
use euclid::size::Size2D;
use string_cache::Atom;
use computed_values;
@@ -261,11 +261,12 @@ use std::slice;
/// Overridden declarations are skipped.
// FIXME (https://github.com/servo/servo/issues/3426)
-#[derive(Debug, PartialEq, HeapSizeOf)]
+#[derive(Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct PropertyDeclarationBlock {
- #[ignore_heap_size_of = "#7038"]
+ #[cfg_attr(feature = "servo", ignore_heap_size_of = "#7038")]
pub important: Arc<Vec<PropertyDeclaration>>,
- #[ignore_heap_size_of = "#7038"]
+ #[cfg_attr(feature = "servo", ignore_heap_size_of = "#7038")]
pub normal: Arc<Vec<PropertyDeclaration>>,
}
@@ -616,7 +617,8 @@ impl CSSWideKeyword {
}
}
-#[derive(Clone, Copy, Eq, PartialEq, Debug, HeapSizeOf)]
+#[derive(Clone, Copy, Eq, PartialEq, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Shorthand {
% for property in data.shorthands:
${property.camel_case},
@@ -722,7 +724,8 @@ impl Shorthand {
}
}
-#[derive(Clone, PartialEq, Eq, Debug, HeapSizeOf)]
+#[derive(Clone, PartialEq, Eq, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum DeclaredValue<T> {
Value(T),
WithVariables {
@@ -753,7 +756,8 @@ impl<T: ToCss> ToCss for DeclaredValue<T> {
}
}
-#[derive(PartialEq, Clone, Debug, HeapSizeOf)]
+#[derive(PartialEq, Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum PropertyDeclaration {
% for property in data.longhands:
${property.camel_case}(DeclaredValue<longhands::${property.ident}::SpecifiedValue>),
@@ -1064,9 +1068,11 @@ pub mod style_structs {
% for style_struct in data.active_style_structs():
% if style_struct.trait_name == "Font":
- #[derive(Clone, HeapSizeOf, Debug)]
+ #[derive(Clone, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
% else:
- #[derive(PartialEq, Clone, HeapSizeOf)]
+ #[derive(PartialEq, Clone)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
% endif
pub struct ${style_struct.servo_struct_name} {
% for longhand in style_struct.longhands:
@@ -1233,7 +1239,8 @@ pub trait ComputedValues : Clone + Send + Sync + 'static {
fn is_multicol(&self) -> bool;
}
-#[derive(Clone, HeapSizeOf)]
+#[derive(Clone)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ServoComputedValues {
% for style_struct in data.active_style_structs():
${style_struct.ident}: Arc<style_structs::${style_struct.servo_struct_name}>,
@@ -1692,7 +1699,7 @@ pub fn make_cascade_vec<C: ComputedValues>() -> Vec<Option<CascadePropertyFn<C>>
% for property in style_struct.longhands:
let discriminant;
unsafe {
- let variant = PropertyDeclaration::${property.camel_case}(intrinsics::uninit());
+ let variant = PropertyDeclaration::${property.camel_case}(mem::uninitialized());
discriminant = intrinsics::discriminant_value(&variant) as usize;
mem::forget(variant);
}
diff --git a/components/style/restyle_hints.rs b/components/style/restyle_hints.rs
index 3a90852c13a..361d7110d04 100644
--- a/components/style/restyle_hints.rs
+++ b/components/style/restyle_hints.rs
@@ -50,7 +50,8 @@ bitflags! {
/// now to reduce complexity, but it's worth measuring the performance impact (if any) of the
/// mStateMask approach.
-#[derive(HeapSizeOf, Clone)]
+#[derive(Clone)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ElementSnapshot {
pub state: Option<ElementState>,
pub attrs: Option<Vec<(AttrIdentifier, AttrValue)>>,
@@ -225,7 +226,8 @@ fn combinator_to_restyle_hint(combinator: Option<Combinator>) -> RestyleHint {
}
}
-#[derive(Debug, HeapSizeOf)]
+#[derive(Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
struct Sensitivities {
pub states: ElementState,
pub attrs: bool,
@@ -262,14 +264,16 @@ impl Sensitivities {
// us to quickly scan through the dependency sites of all style rules and determine the
// maximum effect that a given state or attribute change may have on the style of
// elements in the document.
-#[derive(Debug, HeapSizeOf)]
+#[derive(Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
struct Dependency<Impl: SelectorImplExt> {
selector: Arc<CompoundSelector<Impl>>,
combinator: Option<Combinator>,
sensitivities: Sensitivities,
}
-#[derive(Debug, HeapSizeOf)]
+#[derive(Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct DependencySet<Impl: SelectorImplExt> {
deps: Vec<Dependency<Impl>>,
}
diff --git a/components/style/selector_impl.rs b/components/style/selector_impl.rs
index 14e6b366690..6125415df78 100644
--- a/components/style/selector_impl.rs
+++ b/components/style/selector_impl.rs
@@ -95,7 +95,8 @@ pub trait SelectorImplExt : SelectorImpl + Sized {
fn get_quirks_mode_stylesheet() -> Option<&'static Stylesheet<Self>>;
}
-#[derive(Clone, Debug, PartialEq, Eq, HeapSizeOf, Hash)]
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum PseudoElement {
Before,
After,
@@ -117,7 +118,8 @@ impl PseudoElement {
}
}
-#[derive(Clone, Debug, PartialEq, Eq, HeapSizeOf, Hash)]
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum NonTSPseudoClass {
AnyLink,
Link,
@@ -158,7 +160,8 @@ impl NonTSPseudoClass {
}
}
-#[derive(Clone, Debug, PartialEq, HeapSizeOf)]
+#[derive(Clone, Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ServoSelectorImpl;
impl SelectorImpl for ServoSelectorImpl {
diff --git a/components/style/selector_matching.rs b/components/style/selector_matching.rs
index 79f590f5482..50bbf7dab49 100644
--- a/components/style/selector_matching.rs
+++ b/components/style/selector_matching.rs
@@ -44,7 +44,7 @@ lazy_static! {
None,
None,
Origin::UserAgent,
- box StdoutErrorReporter,
+ Box::new(StdoutErrorReporter),
ParserContextExtraData::default());
stylesheets.push(ua_stylesheet);
}
@@ -56,7 +56,7 @@ lazy_static! {
}
for &(ref contents, ref url) in &opts::get().user_stylesheets {
stylesheets.push(Stylesheet::from_bytes(
- &contents, url.clone(), None, None, Origin::User, box StdoutErrorReporter,
+ &contents, url.clone(), None, None, Origin::User, Box::new(StdoutErrorReporter),
ParserContextExtraData::default()));
}
stylesheets
@@ -73,7 +73,7 @@ lazy_static! {
None,
None,
Origin::UserAgent,
- box StdoutErrorReporter,
+ Box::new(StdoutErrorReporter),
ParserContextExtraData::default())
},
Err(..) => {
@@ -100,7 +100,7 @@ lazy_static! {
/// `ServoSelectorImpl`, the implementation used by Servo's layout system in
/// regular builds, or `GeckoSelectorImpl`, the implementation used in the
/// geckolib port.
-#[derive(HeapSizeOf)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct Stylist<Impl: SelectorImplExt> {
/// Device that the stylist is currently evaluating against.
pub device: Device,
@@ -269,7 +269,7 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
properties::cascade(self.device.au_viewport_size(),
&declarations, false,
parent.map(|p| &**p), None,
- box StdoutErrorReporter);
+ Box::new(StdoutErrorReporter));
Some(Arc::new(computed))
} else {
parent.map(|p| p.clone())
@@ -302,7 +302,7 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
properties::cascade(self.device.au_viewport_size(),
&declarations, false,
Some(&**parent), None,
- box StdoutErrorReporter);
+ Box::new(StdoutErrorReporter));
Some(Arc::new(computed))
}
@@ -438,7 +438,7 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
}
/// Map that contains the CSS rules for a given origin.
-#[derive(HeapSizeOf)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
struct PerOriginSelectorMap<Impl: SelectorImpl> {
/// Rules that contains at least one property declararion with
/// normal importance.
@@ -460,7 +460,7 @@ impl<Impl: SelectorImpl> PerOriginSelectorMap<Impl> {
/// Map that contains the CSS rules for a specific PseudoElement
/// (or lack of PseudoElement).
-#[derive(HeapSizeOf)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
struct PerPseudoElementSelectorMap<Impl: SelectorImpl> {
/// Rules from user agent stylesheets
user_agent: PerOriginSelectorMap<Impl>,
diff --git a/components/style/stylesheets.rs b/components/style/stylesheets.rs
index 4de57e81d40..53990e7f84f 100644
--- a/components/style/stylesheets.rs
+++ b/components/style/stylesheets.rs
@@ -24,7 +24,8 @@ use viewport::ViewportRule;
/// Each style rule has an origin, which determines where it enters the cascade.
///
/// http://dev.w3.org/csswg/css-cascade/#cascading-origins
-#[derive(Clone, PartialEq, Eq, Copy, Debug, HeapSizeOf)]
+#[derive(Clone, PartialEq, Eq, Copy, Debug)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Origin {
/// http://dev.w3.org/csswg/css-cascade/#cascade-origin-ua
UserAgent,
@@ -37,7 +38,8 @@ pub enum Origin {
}
-#[derive(Debug, HeapSizeOf, PartialEq)]
+#[derive(Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct Stylesheet<Impl: SelectorImpl> {
/// List of rules in the order they were found (important for
/// cascading order)
@@ -49,7 +51,8 @@ pub struct Stylesheet<Impl: SelectorImpl> {
}
-#[derive(Debug, HeapSizeOf, PartialEq)]
+#[derive(Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum CSSRule<Impl: SelectorImpl> {
Charset(String),
Namespace(Option<String>, Namespace),
@@ -59,7 +62,8 @@ pub enum CSSRule<Impl: SelectorImpl> {
Viewport(ViewportRule),
}
-#[derive(Debug, HeapSizeOf, PartialEq)]
+#[derive(Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct MediaRule<Impl: SelectorImpl> {
pub media_queries: MediaQueryList,
pub rules: Vec<CSSRule<Impl>>,
@@ -72,7 +76,8 @@ impl<Impl: SelectorImpl> MediaRule<Impl> {
}
}
-#[derive(Debug, HeapSizeOf, PartialEq)]
+#[derive(Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct StyleRule<Impl: SelectorImpl> {
pub selectors: Vec<Selector<Impl>>,
pub declarations: PropertyDeclarationBlock,
diff --git a/components/style/traversal.rs b/components/style/traversal.rs
index 1afdcbb34c7..d383cc5f706 100644
--- a/components/style/traversal.rs
+++ b/components/style/traversal.rs
@@ -53,11 +53,11 @@ fn take_thread_local_bloom_filter<N, Impl: SelectorImplExt>(parent_node: Option<
// Root node. Needs new bloom filter.
(None, _ ) => {
debug!("[{}] No parent, but new bloom filter!", tid());
- box BloomFilter::new()
+ Box::new(BloomFilter::new())
}
// No bloom filter for this thread yet.
(Some(parent), None) => {
- let mut bloom_filter = box BloomFilter::new();
+ let mut bloom_filter = Box::new(BloomFilter::new());
insert_ancestors_into_bloom_filter(&mut bloom_filter, parent, root);
bloom_filter
}
diff --git a/components/style/values.rs b/components/style/values.rs
index a6c73977d44..6d62d69357e 100644
--- a/components/style/values.rs
+++ b/components/style/values.rs
@@ -41,8 +41,8 @@ macro_rules! define_numbered_css_keyword_enum {
};
($name: ident: $( $css: expr => $variant: ident = $value: expr ),+) => {
#[allow(non_camel_case_types)]
- #[derive(Clone, Eq, PartialEq, PartialOrd, Ord, Copy, RustcEncodable, Debug, HeapSizeOf)]
- #[derive(Deserialize, Serialize)]
+ #[derive(Clone, Eq, PartialEq, PartialOrd, Ord, Copy, RustcEncodable, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub enum $name {
$( $variant = $value ),+
}
@@ -104,7 +104,8 @@ pub mod specified {
use super::{CSSFloat, FONT_MEDIUM_PX};
use url::Url;
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct CSSColor {
pub parsed: cssparser::Color,
pub authored: Option<String>,
@@ -133,7 +134,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct CSSRGBA {
pub parsed: cssparser::RGBA,
pub authored: Option<String>,
@@ -148,7 +150,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum FontRelativeLength {
Em(CSSFloat),
Ex(CSSFloat),
@@ -185,7 +188,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum ViewportPercentageLength {
Vw(CSSFloat),
Vh(CSSFloat),
@@ -226,7 +230,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct CharacterWidth(pub i32);
impl CharacterWidth {
@@ -241,7 +246,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Length {
Absolute(Au), // application units
FontRelative(FontRelativeLength),
@@ -439,9 +445,9 @@ pub mod specified {
SimplifiedValueNode::Angle(Angle(a)) => SimplifiedValueNode::Angle(Angle(a * scalar)),
SimplifiedValueNode::Time(Time(t)) => SimplifiedValueNode::Time(Time(t * scalar)),
SimplifiedValueNode::Number(n) => SimplifiedValueNode::Number(n * scalar),
- SimplifiedValueNode::Sum(box ref s) => {
- let sum = s * scalar;
- SimplifiedValueNode::Sum(box sum)
+ SimplifiedValueNode::Sum(ref s) => {
+ let sum = &**s * scalar;
+ SimplifiedValueNode::Sum(Box::new(sum))
}
}
}
@@ -507,7 +513,8 @@ pub mod specified {
Time,
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct CalcLengthOrPercentage {
pub absolute: Option<Au>,
pub vw: Option<ViewportPercentageLength>,
@@ -589,7 +596,7 @@ pub mod specified {
Ok(CalcValueNode::Percentage(value.unit_value)),
(Token::ParenthesisBlock, _) => {
input.parse_nested_block(|i| CalcLengthOrPercentage::parse_sum(i, expected_unit))
- .map(|result| CalcValueNode::Sum(box result))
+ .map(|result| CalcValueNode::Sum(Box::new(result)))
},
_ => Err(())
}
@@ -598,7 +605,7 @@ pub mod specified {
fn simplify_value_to_number(node: &CalcValueNode) -> Option<CSSFloat> {
match *node {
CalcValueNode::Number(number) => Some(number),
- CalcValueNode::Sum(box ref sum) => CalcLengthOrPercentage::simplify_sum_to_number(sum),
+ CalcValueNode::Sum(ref sum) => CalcLengthOrPercentage::simplify_sum_to_number(sum),
_ => None
}
}
@@ -629,7 +636,7 @@ pub mod specified {
let mut simplified = Vec::new();
for product in &node.products {
match try!(CalcLengthOrPercentage::simplify_product(product)) {
- SimplifiedValueNode::Sum(box sum) => simplified.extend_from_slice(&sum.values),
+ SimplifiedValueNode::Sum(ref sum) => simplified.extend_from_slice(&sum.values),
val => simplified.push(val),
}
}
@@ -637,7 +644,7 @@ pub mod specified {
if simplified.len() == 1 {
Ok(simplified[0].clone())
} else {
- Ok(SimplifiedValueNode::Sum(box SimplifiedSumNode { values: simplified } ))
+ Ok(SimplifiedValueNode::Sum(Box::new(SimplifiedSumNode { values: simplified })))
}
}
@@ -649,7 +656,7 @@ pub mod specified {
Some(number) => multiplier *= number,
_ if node_with_unit.is_none() => {
node_with_unit = Some(match *node {
- CalcValueNode::Sum(box ref sum) =>
+ CalcValueNode::Sum(ref sum) =>
try!(CalcLengthOrPercentage::simplify_products_in_sum(sum)),
CalcValueNode::Length(l) => SimplifiedValueNode::Length(l),
CalcValueNode::Angle(a) => SimplifiedValueNode::Angle(a),
@@ -855,7 +862,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct Percentage(pub CSSFloat); // [0 .. 100%] maps to [0.0 .. 1.0]
impl ToCss for Percentage {
@@ -864,7 +872,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentage {
Length(Length),
Percentage(Percentage),
@@ -912,7 +921,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentageOrAuto {
Length(Length),
Percentage(Percentage),
@@ -961,7 +971,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentageOrNone {
Length(Length),
Percentage(Percentage),
@@ -1009,7 +1020,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrNone {
Length(Length),
None,
@@ -1049,7 +1061,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentageOrAutoOrContent {
Length(Length),
Percentage(Percentage),
@@ -1093,7 +1106,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct BorderRadiusSize(pub Size2D<LengthOrPercentage>);
impl BorderRadiusSize {
@@ -1169,7 +1183,8 @@ pub mod specified {
}
}
- #[derive(Clone, PartialEq, PartialOrd, Copy, Debug, HeapSizeOf, Deserialize, Serialize)]
+ #[derive(Clone, PartialEq, PartialOrd, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub struct Angle(pub CSSFloat);
impl ToCss for Angle {
@@ -1215,7 +1230,8 @@ pub mod specified {
}
/// Specified values for an image according to CSS-IMAGES.
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Image {
Url(Url),
LinearGradient(LinearGradient),
@@ -1250,7 +1266,8 @@ pub mod specified {
}
/// Specified values for a CSS linear gradient.
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct LinearGradient {
/// The angle or corner of the gradient.
pub angle_or_corner: AngleOrCorner,
@@ -1273,7 +1290,8 @@ pub mod specified {
}
/// Specified values for an angle or a corner in a linear gradient.
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum AngleOrCorner {
Angle(Angle),
Corner(HorizontalDirection, VerticalDirection),
@@ -1295,7 +1313,8 @@ pub mod specified {
}
/// Specified values for one color stop in a linear gradient.
- #[derive(Clone, PartialEq, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ColorStop {
/// The color of this stop.
pub color: CSSColor,
@@ -1424,7 +1443,8 @@ pub mod specified {
}
/// A time in seconds according to CSS-VALUES § 6.2.
- #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct Time(pub CSSFloat);
impl Time {
@@ -1473,7 +1493,8 @@ pub mod specified {
}
}
- #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct Number(pub CSSFloat);
impl Number {
@@ -1510,7 +1531,8 @@ pub mod specified {
}
}
- #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, HeapSizeOf)]
+ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct Opacity(pub CSSFloat);
impl Opacity {
@@ -1630,7 +1652,8 @@ pub mod computed {
}
}
- #[derive(Clone, PartialEq, Copy, Debug, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy, Debug)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct CalcLengthOrPercentage {
pub length: Option<Au>,
pub percentage: Option<CSSFloat>,
@@ -1734,7 +1757,8 @@ pub mod computed {
}
- #[derive(PartialEq, Clone, Copy, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct BorderRadiusSize(pub Size2D<LengthOrPercentage>);
impl BorderRadiusSize {
@@ -1762,7 +1786,8 @@ pub mod computed {
}
}
- #[derive(PartialEq, Clone, Copy, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentage {
Length(Au),
Percentage(CSSFloat),
@@ -1827,7 +1852,8 @@ pub mod computed {
}
}
- #[derive(PartialEq, Clone, Copy, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentageOrAuto {
Length(Au),
Percentage(CSSFloat),
@@ -1894,7 +1920,8 @@ pub mod computed {
}
}
- #[derive(PartialEq, Clone, Copy, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentageOrAutoOrContent {
Length(Au),
Percentage(CSSFloat),
@@ -1952,7 +1979,8 @@ pub mod computed {
}
}
- #[derive(PartialEq, Clone, Copy, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrPercentageOrNone {
Length(Au),
Percentage(CSSFloat),
@@ -2004,7 +2032,8 @@ pub mod computed {
}
}
- #[derive(PartialEq, Clone, Copy, HeapSizeOf)]
+ #[derive(PartialEq, Clone, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum LengthOrNone {
Length(Au),
None,
@@ -2062,7 +2091,8 @@ pub mod computed {
/// Computed values for an image according to CSS-IMAGES.
- #[derive(Clone, PartialEq, HeapSizeOf)]
+ #[derive(Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum Image {
Url(Url),
LinearGradient(LinearGradient),
@@ -2078,7 +2108,8 @@ pub mod computed {
}
/// Computed values for a CSS linear gradient.
- #[derive(Clone, PartialEq, HeapSizeOf)]
+ #[derive(Clone, PartialEq)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct LinearGradient {
/// The angle or corner of the gradient.
pub angle_or_corner: AngleOrCorner,
@@ -2111,7 +2142,8 @@ pub mod computed {
}
/// Computed values for one color stop in a linear gradient.
- #[derive(Clone, PartialEq, Copy, HeapSizeOf)]
+ #[derive(Clone, PartialEq, Copy)]
+ #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ColorStop {
/// The color of this stop.
pub color: CSSColor,
diff --git a/components/style/viewport.rs b/components/style/viewport.rs
index e9308f5403a..ec7e1f8aa4a 100644
--- a/components/style/viewport.rs
+++ b/components/style/viewport.rs
@@ -21,7 +21,8 @@ use util::geometry::ViewportPx;
use values::computed::{Context, ToComputedValue};
use values::specified::{Length, LengthOrPercentageOrAuto, ViewportPercentageLength};
-#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)]
+#[derive(Copy, Clone, Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum ViewportDescriptor {
MinWidth(ViewportLength),
MaxWidth(ViewportLength),
@@ -45,7 +46,8 @@ trait FromMeta: Sized {
// See:
// * http://dev.w3.org/csswg/css-device-adapt/#min-max-width-desc
// * http://dev.w3.org/csswg/css-device-adapt/#extend-to-zoom
-#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)]
+#[derive(Copy, Clone, Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub enum ViewportLength {
Specified(LengthOrPercentageOrAuto),
ExtendToZoom
@@ -133,7 +135,8 @@ struct ViewportRuleParser<'a, 'b: 'a> {
context: &'a ParserContext<'b>
}
-#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)]
+#[derive(Copy, Clone, Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ViewportDescriptorDeclaration {
pub origin: Origin,
pub descriptor: ViewportDescriptor,
@@ -228,7 +231,8 @@ impl<'a, 'b> DeclarationParser for ViewportRuleParser<'a, 'b> {
}
}
-#[derive(Debug, HeapSizeOf, PartialEq)]
+#[derive(Debug, PartialEq)]
+#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct ViewportRule {
pub declarations: Vec<ViewportDescriptorDeclaration>
}
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),
diff --git a/components/util/Cargo.toml b/components/util/Cargo.toml
index 40c8f56a64b..c8974dfd583 100644
--- a/components/util/Cargo.toml
+++ b/components/util/Cargo.toml
@@ -8,28 +8,31 @@ publish = false
name = "util"
path = "lib.rs"
+[features]
+# servo as opposed to geckolib
+servo = ["serde", "serde_macros", "backtrace", "ipc-channel", "app_units/plugins",
+ "euclid/plugins", "euclid/unstable", "url/heap_size", "url/serde"]
+
[dependencies]
-app_units = {version = "0.2.3", features = ["plugins"]}
-backtrace = "0.2.1"
+app_units = "0.2.3"
+backtrace = {version = "0.2.1", optional = true}
bitflags = "0.7"
deque = "0.3.1"
-euclid = {version = "0.6.4", features = ["unstable", "plugins"]}
+euclid = "0.6.4"
getopts = "0.2.11"
heapsize = "0.3.0"
-heapsize_plugin = "0.1.2"
-ipc-channel = {git = "https://github.com/servo/ipc-channel"}
+ipc-channel = {git = "https://github.com/servo/ipc-channel", optional = true}
lazy_static = "0.2"
libc = "0.2"
log = "0.3.5"
num_cpus = "0.2.2"
num-traits = "0.1.32"
-plugins = {path = "../plugins"}
rand = "0.3"
rustc-serialize = "0.3"
-serde = "0.7"
-serde_macros = "0.7"
+serde = {version = "0.7", optional = true}
+serde_macros = {version = "0.7", optional = true}
smallvec = "0.1"
-url = {version = "1.0.0", features = ["heap_size", "serde"]}
+url = "1.0.0"
[target.'cfg(all(unix, not(target_os = "macos"), not(target_os = "ios"), not(target_os = "android")))'.dependencies]
xdg = "2.0"
diff --git a/components/util/geometry.rs b/components/util/geometry.rs
index 813cad3aa3d..d750131f151 100644
--- a/components/util/geometry.rs
+++ b/components/util/geometry.rs
@@ -23,7 +23,7 @@ use std::i32;
///
/// The ratio between ScreenPx and DevicePixel for a given display be found by calling
/// `servo::windowing::WindowMethods::hidpi_factor`.
-#[derive(Clone, Copy, Debug, HeapSizeOf)]
+#[derive(Clone, Copy, Debug)]
pub enum ScreenPx {}
/// One CSS "px" in the coordinate system of the "initial viewport":
@@ -35,7 +35,7 @@ pub enum ScreenPx {}
///
/// At the default zoom level of 100%, one PagePx is equal to one ScreenPx. However, if the
/// document is zoomed in or out then this scale may be larger or smaller.
-#[derive(Clone, Copy, Debug, HeapSizeOf)]
+#[derive(Clone, Copy, Debug)]
pub enum ViewportPx {}
/// One CSS "px" in the root coordinate system for the content document.
@@ -44,9 +44,11 @@ pub enum ViewportPx {}
/// This is the mobile-style "pinch zoom" that enlarges content without reflowing it. When the
/// viewport zoom is not equal to 1.0, then the layout viewport is no longer the same physical size
/// as the viewable area.
-#[derive(Clone, Copy, Debug, HeapSizeOf)]
+#[derive(Clone, Copy, Debug)]
pub enum PagePx {}
+known_heap_size!(0, ScreenPx, ViewportPx, PagePx);
+
// In summary, the hierarchy of pixel units and the factors to convert from one to the next:
//
// DevicePixel
diff --git a/components/util/lib.rs b/components/util/lib.rs
index 6417fe40a45..ff1a18ab712 100644
--- a/components/util/lib.rs
+++ b/components/util/lib.rs
@@ -2,39 +2,31 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#![feature(box_syntax)]
-#![feature(core_intrinsics)]
-#![feature(custom_derive)]
-#![feature(fnbox)]
-#![feature(plugin)]
-#![feature(reflect_marker)]
-#![feature(step_by)]
-
-#![plugin(heapsize_plugin, plugins, serde_macros)]
+#![cfg_attr(feature = "servo", feature(core_intrinsics))]
+#![cfg_attr(feature = "servo", feature(custom_derive))]
+#![cfg_attr(feature = "servo", feature(fnbox))]
+#![cfg_attr(feature = "servo", feature(plugin))]
+#![cfg_attr(feature = "servo", feature(reflect_marker))]
+#![cfg_attr(feature = "servo", plugin(serde_macros))]
#![deny(unsafe_code)]
extern crate app_units;
-extern crate backtrace;
-#[allow(unused_extern_crates)]
-#[macro_use]
-extern crate bitflags;
+#[cfg(feature = "servo")] extern crate backtrace;
+#[allow(unused_extern_crates)] #[macro_use] extern crate bitflags;
extern crate deque;
extern crate euclid;
extern crate getopts;
-extern crate heapsize;
-extern crate ipc_channel;
-#[allow(unused_extern_crates)]
-#[macro_use]
-extern crate lazy_static;
+#[macro_use] extern crate heapsize;
+#[cfg(feature = "servo")] extern crate ipc_channel;
+#[allow(unused_extern_crates)] #[macro_use] extern crate lazy_static;
extern crate libc;
-#[macro_use]
-extern crate log;
+#[macro_use] extern crate log;
extern crate num_cpus;
extern crate num_traits;
extern crate rand;
extern crate rustc_serialize;
-extern crate serde;
+#[cfg(feature = "servo")] extern crate serde;
extern crate smallvec;
extern crate url;
#[cfg(all(unix, not(target_os = "macos"), not(target_os = "ios"), not(target_os = "android")))]
@@ -44,28 +36,24 @@ use std::sync::Arc;
pub mod basedir;
pub mod cache;
-#[allow(unsafe_code)]
-pub mod debug_utils;
+#[allow(unsafe_code)] pub mod debug_utils;
pub mod geometry;
-#[allow(unsafe_code)]
-pub mod ipc;
-pub mod linked_list;
-#[allow(unsafe_code)]
-pub mod opts;
-pub mod panicking;
+#[cfg(feature = "servo")] #[allow(unsafe_code)] pub mod ipc;
+#[cfg(feature = "servo")] pub mod linked_list;
+#[allow(unsafe_code)] pub mod opts;
+#[cfg(feature = "servo")] pub mod panicking;
pub mod prefs;
-pub mod print_tree;
+#[cfg(feature = "servo")] pub mod print_tree;
pub mod resource_files;
-#[allow(unsafe_code)]
pub mod str;
pub mod thread;
pub mod thread_state;
pub mod tid;
-pub mod time;
+#[cfg(feature = "servo")] pub mod time;
pub mod vec;
-#[allow(unsafe_code)]
-pub mod workqueue;
+#[allow(unsafe_code)] pub mod workqueue;
+#[cfg(feature = "servo")]
#[allow(unsafe_code)]
pub fn breakpoint() {
unsafe { ::std::intrinsics::breakpoint() };
diff --git a/components/util/opts.rs b/components/util/opts.rs
index 323abc19d62..711782ab3ea 100644
--- a/components/util/opts.rs
+++ b/components/util/opts.rs
@@ -23,7 +23,8 @@ use url::{self, Url};
/// Global flags for Servo, currently set on the command line.
-#[derive(Clone, Deserialize, Serialize)]
+#[derive(Clone)]
+#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
pub struct Opts {
pub is_running_problem_test: bool,
@@ -379,7 +380,8 @@ pub fn print_debug_usage(app: &str) -> ! {
process::exit(0)
}
-#[derive(Clone, Deserialize, Serialize)]
+#[derive(Clone)]
+#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
pub enum OutputOptions {
FileName(String),
Stdout(f64)
@@ -404,7 +406,8 @@ enum UserAgent {
Android,
}
-#[derive(Clone, Debug, Eq, Deserialize, PartialEq, Serialize)]
+#[derive(Clone, Debug, Eq, PartialEq)]
+#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
pub enum RenderApi {
GL,
ES2,
@@ -858,7 +861,7 @@ pub fn set_defaults(opts: Opts) {
unsafe {
assert!(DEFAULT_OPTIONS.is_null());
assert!(DEFAULT_OPTIONS != INVALID_OPTIONS);
- let box_opts = box opts;
+ let box_opts = Box::new(opts);
DEFAULT_OPTIONS = Box::into_raw(box_opts);
}
}
diff --git a/components/util/prefs.rs b/components/util/prefs.rs
index 9c713df02e9..55c856fa747 100644
--- a/components/util/prefs.rs
+++ b/components/util/prefs.rs
@@ -20,7 +20,8 @@ lazy_static! {
};
}
-#[derive(PartialEq, Clone, Debug, Deserialize, Serialize)]
+#[derive(PartialEq, Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
pub enum PrefValue {
Boolean(bool),
String(String),
@@ -91,7 +92,8 @@ impl ToJson for PrefValue {
}
}
-#[derive(Clone, Debug, Deserialize, Serialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
pub enum Pref {
NoDefault(Arc<PrefValue>),
WithDefault(Arc<PrefValue>, Option<Arc<PrefValue>>)
diff --git a/components/util/thread.rs b/components/util/thread.rs
index 87d8954dcf9..571d3529d9f 100644
--- a/components/util/thread.rs
+++ b/components/util/thread.rs
@@ -2,13 +2,13 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-use backtrace::Backtrace;
-use ipc_channel::ipc::IpcSender;
-use panicking;
-use serde::Serialize;
-use std::any::Any;
+#[cfg(feature = "servo")] use backtrace::Backtrace;
+#[cfg(feature = "servo")] use ipc_channel::ipc::IpcSender;
+#[cfg(feature = "servo")] use panicking;
+#[cfg(feature = "servo")] use serde::Serialize;
+#[cfg(feature = "servo")] use std::any::Any;
+#[cfg(feature = "servo")] use thread_state;
use std::thread;
-use thread_state;
pub fn spawn_named<F>(name: String, f: F)
where F: FnOnce() + Send + 'static
@@ -17,6 +17,7 @@ pub fn spawn_named<F>(name: String, f: F)
}
/// Arrange to send a particular message to a channel if the thread fails.
+#[cfg(feature = "servo")]
pub fn spawn_named_with_send_on_panic<F, Id>(name: String,
state: thread_state::ThreadState,
f: F,
diff --git a/components/util/vec.rs b/components/util/vec.rs
index 5342d452020..639e1c260da 100644
--- a/components/util/vec.rs
+++ b/components/util/vec.rs
@@ -9,10 +9,13 @@ use super::smallvec::VecLike;
// TODO(pcwalton): Speed up with SIMD, or better yet, find some way to not do this.
pub fn byte_swap(data: &mut [u8]) {
let length = data.len();
- for i in (0..length).step_by(4) {
+ // FIXME(rust #27741): Range::step_by is not stable yet as of this writing.
+ let mut i = 0;
+ while i < length {
let r = data[i + 2];
data[i + 2] = data[i + 0];
data[i + 0] = r;
+ i += 4;
}
}
diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock
index d52028bf746..361af4adda4 100644
--- a/ports/cef/Cargo.lock
+++ b/ports/cef/Cargo.lock
@@ -2100,7 +2100,6 @@ dependencies = [
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"selectors 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2122,7 +2121,6 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2307,7 +2305,6 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.3 (git+https://github.com/servo/ipc-channel)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2315,7 +2312,6 @@ dependencies = [
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/ports/geckolib/Cargo.lock b/ports/geckolib/Cargo.lock
index 7f01cec464f..e527824fb77 100644
--- a/ports/geckolib/Cargo.lock
+++ b/ports/geckolib/Cargo.lock
@@ -8,12 +8,10 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"gecko_bindings 0.0.1",
"heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"selectors 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"string_cache 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -76,7 +74,7 @@ dependencies = [
[[package]]
name = "bincode"
-version = "0.5.6"
+version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -257,15 +255,14 @@ dependencies = [
[[package]]
name = "ipc-channel"
-version = "0.2.3"
-source = "git+https://github.com/servo/ipc-channel#48137d69955f5460da586c552de275ecdc3f4efe"
+version = "0.2.4"
+source = "git+https://github.com/servo/ipc-channel#8411eeabf3a712006ad1b47637b2d8fe71177f85"
dependencies = [
- "bincode 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bincode 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_macros 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
"uuid 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -320,13 +317,6 @@ dependencies = [
]
[[package]]
-name = "plugins"
-version = "0.0.1"
-dependencies = [
- "tenacious 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
name = "quasi"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -468,7 +458,6 @@ dependencies = [
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"selectors 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -490,7 +479,6 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -498,11 +486,6 @@ dependencies = [
]
[[package]]
-name = "tenacious"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
name = "thread-id"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -581,15 +564,13 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "ipc-channel 0.2.3 (git+https://github.com/servo/ipc-channel)",
+ "ipc-channel 0.2.4 (git+https://github.com/servo/ipc-channel)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "plugins 0.0.1",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/ports/geckolib/Cargo.toml b/ports/geckolib/Cargo.toml
index 1b8fdfce72e..99c3ee14b69 100644
--- a/ports/geckolib/Cargo.toml
+++ b/ports/geckolib/Cargo.toml
@@ -17,6 +17,8 @@ default = ["servo_features"]
# in the full Servo build. Enabling this reduces the number of things
# recompiled when building both Servo and geckolib in the same source tree.
servo_features = [
+ "heapsize",
+ "style/servo",
"time",
"url/query_encoding",
"url/rustc-serialize",
@@ -28,8 +30,7 @@ app_units = "0.2.3"
cssparser = "0.5.4"
euclid = "0.6.4"
gecko_bindings = {version = "0.0.1", path = "gecko_bindings"}
-heapsize = "0.3.0"
-heapsize_plugin = "0.1.2"
+heapsize = {version = "0.3.0", optional = true}
lazy_static = "0.2"
libc = "0.2"
num_cpus = "0.2.2"
@@ -38,7 +39,6 @@ smallvec = "0.1"
string_cache = {version = "0.2.20", features = ["unstable"]}
url = "1.0.0"
log = {version = "0.3.5", features = ["release_max_level_info"]}
-plugins = {path = "../../components/plugins"}
time = {version = "0.1", optional = true, features = ["rustc-serialize"]}
util = {path = "../../components/util"}
uuid = {version = "0.2", optional = true, features = ["v4", "serde"]}
diff --git a/ports/geckolib/gecko_bindings/lib.rs b/ports/geckolib/gecko_bindings/lib.rs
index d42257b7e33..b81e8939f60 100644
--- a/ports/geckolib/gecko_bindings/lib.rs
+++ b/ports/geckolib/gecko_bindings/lib.rs
@@ -3,8 +3,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#![feature(const_fn)]
-#![feature(concat_idents)]
-#![feature(type_macros)]
extern crate heapsize;
diff --git a/ports/geckolib/gecko_bindings/ptr.rs b/ports/geckolib/gecko_bindings/ptr.rs
index 089df6f70b1..9cdabee818b 100644
--- a/ports/geckolib/gecko_bindings/ptr.rs
+++ b/ports/geckolib/gecko_bindings/ptr.rs
@@ -10,7 +10,7 @@ use std::fmt::{self, Debug};
// in a ThreadSafeFooHolder smart pointer. Used in tandem with the
// NS_DECL_HOLDER_FFI_REFCOUNTING-defined types and functions in Gecko.
macro_rules! define_holder_arc {
- ($arc_type:ident, $name:ident, $holder_type:ident) => (
+ ($arc_type:ident, $name:ident, $holder_type:ident, $addref: ident, $release: ident) => (
#[derive(PartialEq)]
pub struct $arc_type {
ptr: *mut $holder_type,
@@ -19,7 +19,7 @@ macro_rules! define_holder_arc {
impl $arc_type {
pub fn new(data: *mut $holder_type) -> $arc_type {
debug_assert!(!data.is_null());
- unsafe { concat_idents!(Gecko_AddRef, $name, ArbitraryThread)(data); }
+ unsafe { $addref(data); }
$arc_type {
ptr: data
}
@@ -39,7 +39,7 @@ macro_rules! define_holder_arc {
impl Drop for $arc_type {
fn drop(&mut self) {
- unsafe { concat_idents!(Gecko_Release, $name, ArbitraryThread)(self.ptr); }
+ unsafe { $release(self.ptr); }
}
}
@@ -55,5 +55,7 @@ macro_rules! define_holder_arc {
)
}
-define_holder_arc!(GeckoArcPrincipal, Principal, ThreadSafePrincipalHolder);
-define_holder_arc!(GeckoArcURI, URI, ThreadSafeURIHolder);
+define_holder_arc!(GeckoArcPrincipal, Principal, ThreadSafePrincipalHolder,
+ Gecko_AddRefPrincipalArbitraryThread, Gecko_ReleasePrincipalArbitraryThread);
+define_holder_arc!(GeckoArcURI, URI, ThreadSafeURIHolder,
+ Gecko_AddRefURIArbitraryThread, Gecko_ReleaseURIArbitraryThread);
diff --git a/ports/geckolib/lib.rs b/ports/geckolib/lib.rs
index bdd611a4b44..96b4580216a 100644
--- a/ports/geckolib/lib.rs
+++ b/ports/geckolib/lib.rs
@@ -3,13 +3,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#![feature(as_unsafe_cell)]
-#![feature(box_syntax)]
-#![feature(custom_attribute)]
-#![feature(custom_derive)]
-#![feature(plugin)]
-
-#![plugin(heapsize_plugin)]
-#![plugin(plugins)]
extern crate app_units;
#[macro_use]
@@ -17,7 +10,7 @@ extern crate cssparser;
extern crate env_logger;
extern crate euclid;
extern crate gecko_bindings;
-extern crate heapsize;
+#[cfg(feature = "servo_features")] #[macro_use] extern crate heapsize;
#[macro_use]
extern crate lazy_static;
extern crate libc;
diff --git a/ports/geckolib/properties.mako.rs b/ports/geckolib/properties.mako.rs
index a49eeb5ab16..f9cdd22dba2 100644
--- a/ports/geckolib/properties.mako.rs
+++ b/ports/geckolib/properties.mako.rs
@@ -136,7 +136,6 @@ impl ComputedValues for GeckoComputedValues {
}
<%def name="declare_style_struct(style_struct)">
-#[derive(HeapSizeOf)]
pub struct ${style_struct.gecko_struct_name} {
gecko: ${style_struct.gecko_ffi_name},
}
diff --git a/ports/geckolib/selector_impl.rs b/ports/geckolib/selector_impl.rs
index c38ca70104b..1c315df24c1 100644
--- a/ports/geckolib/selector_impl.rs
+++ b/ports/geckolib/selector_impl.rs
@@ -13,9 +13,12 @@ pub type Stylesheet = style::stylesheets::Stylesheet<GeckoSelectorImpl>;
pub type SharedStyleContext = style::context::SharedStyleContext<GeckoSelectorImpl>;
pub type PrivateStyleData = style::data::PrivateStyleData<GeckoSelectorImpl, GeckoComputedValues>;
+#[cfg(feature = "servo_features")]
+known_heap_size!(0, GeckoSelectorImpl, PseudoElement, NonTSPseudoClass);
+
pub struct GeckoSelectorImpl;
-#[derive(Clone, Debug, PartialEq, Eq, HeapSizeOf, Hash)]
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum PseudoElement {
Before,
After,
@@ -46,7 +49,7 @@ pub enum PseudoElement {
}
// https://mxr.mozilla.org/mozilla-central/source/layout/style/nsCSSAnonBoxList.h
-#[derive(Clone, Debug, PartialEq, Eq, HeapSizeOf, Hash)]
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum AnonBoxPseudoElement {
MozNonElement,
MozAnonymousBlock,
@@ -114,7 +117,7 @@ pub enum AnonBoxPseudoElement {
MozSVGText,
}
-#[derive(Clone, Debug, PartialEq, Eq, HeapSizeOf, Hash)]
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum NonTSPseudoClass {
AnyLink,
Link,
diff --git a/ports/geckolib/wrapper.rs b/ports/geckolib/wrapper.rs
index cb0d0faf405..2e497f04f9e 100644
--- a/ports/geckolib/wrapper.rs
+++ b/ports/geckolib/wrapper.rs
@@ -85,7 +85,7 @@ impl<'ln> GeckoNode<'ln> {
pub fn initialize_data(self) {
unsafe {
if self.get_node_data().is_null() {
- let ptr: NonOpaqueStyleData = Box::into_raw(box RefCell::new(PrivateStyleData::new()));
+ let ptr: NonOpaqueStyleData = Box::into_raw(Box::new(RefCell::new(PrivateStyleData::new())));
Gecko_SetNodeData(self.node, ptr as *mut ServoNodeData);
}
}