Skip to content

Commit

Permalink
style: Use serde to serialize LengthPercentage and StyleRayFunction.
Browse files Browse the repository at this point in the history
We need to pass these two types into the compositor, so we need a better
way to serialize these rust types. We use serde and bincode to
serialize/deserialize them, and use ByteBuf to pass the &[u8] data
through IPC. We define StyleVecU8 for FFI usage only.

Differential Revision: https://phabricator.services.mozilla.com/D50688
  • Loading branch information
BorisChiou authored and emilio committed Nov 4, 2019
1 parent d99606a commit 40ede5b
Show file tree
Hide file tree
Showing 8 changed files with 18 additions and 8 deletions.
1 change: 0 additions & 1 deletion components/style/lib.rs
Expand Up @@ -78,7 +78,6 @@ extern crate parking_lot;
extern crate precomputed_hash;
extern crate rayon;
extern crate selectors;
#[cfg(feature = "servo")]
#[macro_use]
extern crate serde;
pub extern crate servo_arc;
Expand Down
3 changes: 2 additions & 1 deletion components/style/values/computed/angle.rs
Expand Up @@ -13,16 +13,17 @@ use std::{f32, f64};
use style_traits::{CssWriter, ToCss};

/// A computed angle in degrees.
#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
#[derive(
Add,
Animate,
Clone,
Copy,
Debug,
Deserialize,
MallocSizeOf,
PartialEq,
PartialOrd,
Serialize,
ToAnimatedZero,
ToResolvedValue,
)]
Expand Down
6 changes: 5 additions & 1 deletion components/style/values/computed/length.rs
Expand Up @@ -75,7 +75,9 @@ impl ToComputedValue for specified::Length {
///
/// https://drafts.csswg.org/css-values-4/#typedef-length-percentage
#[allow(missing_docs)]
#[derive(Clone, Copy, Debug, MallocSizeOf, ToAnimatedZero, ToResolvedValue)]
#[derive(
Clone, Copy, Debug, Deserialize, MallocSizeOf, Serialize, ToAnimatedZero, ToResolvedValue,
)]
#[repr(C)]
pub struct LengthPercentage {
length: Length,
Expand Down Expand Up @@ -611,9 +613,11 @@ impl Size {
Clone,
ComputeSquaredDistance,
Copy,
Deserialize,
MallocSizeOf,
PartialEq,
PartialOrd,
Serialize,
ToAnimatedValue,
ToAnimatedZero,
ToResolvedValue,
Expand Down
3 changes: 2 additions & 1 deletion components/style/values/computed/percentage.rs
Expand Up @@ -12,17 +12,18 @@ use std::fmt;
use style_traits::{CssWriter, ToCss};

/// A computed percentage.
#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
#[derive(
Animate,
Clone,
ComputeSquaredDistance,
Copy,
Debug,
Default,
Deserialize,
MallocSizeOf,
PartialEq,
PartialOrd,
Serialize,
SpecifiedValueInfo,
ToAnimatedValue,
ToAnimatedZero,
Expand Down
4 changes: 4 additions & 0 deletions components/style/values/generics/motion.rs
Expand Up @@ -14,9 +14,11 @@ use crate::values::specified::SVGPathData;
Clone,
Copy,
Debug,
Deserialize,
MallocSizeOf,
Parse,
PartialEq,
Serialize,
SpecifiedValueInfo,
ToAnimatedZero,
ToComputedValue,
Expand All @@ -41,8 +43,10 @@ pub enum RaySize {
Clone,
ComputeSquaredDistance,
Debug,
Deserialize,
MallocSizeOf,
PartialEq,
Serialize,
SpecifiedValueInfo,
ToAnimatedZero,
ToComputedValue,
Expand Down
4 changes: 2 additions & 2 deletions components/style_traits/Cargo.toml
Expand Up @@ -10,7 +10,7 @@ name = "style_traits"
path = "lib.rs"

[features]
servo = ["serde", "servo_atoms", "cssparser/serde", "webrender_api", "servo_url", "euclid/serde"]
servo = ["servo_atoms", "cssparser/serde", "webrender_api", "servo_url", "euclid/serde"]
gecko = []

[dependencies]
Expand All @@ -22,7 +22,7 @@ lazy_static = "1"
malloc_size_of = { path = "../malloc_size_of" }
malloc_size_of_derive = "0.1"
selectors = { path = "../selectors" }
serde = {version = "1.0", optional = true}
serde = "1.0"
webrender_api = {git = "https://github.com/servo/webrender", optional = true}
servo_atoms = {path = "../atoms", optional = true}
servo_arc = { path = "../servo_arc" }
Expand Down
1 change: 0 additions & 1 deletion components/style_traits/lib.rs
Expand Up @@ -22,7 +22,6 @@ extern crate malloc_size_of;
#[macro_use]
extern crate malloc_size_of_derive;
extern crate selectors;
#[cfg(feature = "servo")]
#[macro_use]
extern crate serde;
extern crate servo_arc;
Expand Down
4 changes: 3 additions & 1 deletion components/style_traits/values.rs
Expand Up @@ -507,7 +507,9 @@ pub mod specified {

/// Whether to allow negative lengths or not.
#[repr(u8)]
#[derive(Clone, Copy, Debug, Eq, MallocSizeOf, PartialEq, PartialOrd, ToShmem)]
#[derive(
Clone, Copy, Debug, Deserialize, Eq, MallocSizeOf, PartialEq, PartialOrd, Serialize, ToShmem,
)]
pub enum AllowedNumericType {
/// Allow all kind of numeric values.
All,
Expand Down

0 comments on commit 40ede5b

Please sign in to comment.