diff options
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); } } |