diff --git a/components/style/values/generics/transform.rs b/components/style/values/generics/transform.rs index d452b215c6a..42a5197311f 100644 --- a/components/style/values/generics/transform.rs +++ b/components/style/values/generics/transform.rs @@ -23,8 +23,10 @@ use style_traits::{CssWriter, ToCss}; Clone, Copy, Debug, + Deserialize, MallocSizeOf, PartialEq, + Serialize, SpecifiedValueInfo, ToComputedValue, ToCss, @@ -51,8 +53,10 @@ pub use self::GenericMatrix as Matrix; Clone, Copy, Debug, + Deserialize, MallocSizeOf, PartialEq, + Serialize, SpecifiedValueInfo, ToComputedValue, ToCss, @@ -141,8 +145,10 @@ fn is_same(x: &N, y: &N) -> bool { #[derive( Clone, Debug, + Deserialize, MallocSizeOf, PartialEq, + Serialize, SpecifiedValueInfo, ToComputedValue, ToCss, @@ -267,8 +273,10 @@ pub use self::GenericTransformOperation as TransformOperation; #[derive( Clone, Debug, + Deserialize, MallocSizeOf, PartialEq, + Serialize, SpecifiedValueInfo, ToComputedValue, ToCss, diff --git a/components/style_traits/owned_slice.rs b/components/style_traits/owned_slice.rs index 33d3ac1c2ab..bbce7065196 100644 --- a/components/style_traits/owned_slice.rs +++ b/components/style_traits/owned_slice.rs @@ -7,6 +7,8 @@ //! A replacement for `Box<[T]>` that cbindgen can understand. use malloc_size_of::{MallocShallowSizeOf, MallocSizeOf, MallocSizeOfOps}; +use serde::de::{Deserialize, Deserializer}; +use serde::ser::{Serialize, Serializer}; use std::marker::PhantomData; use std::ops::{Deref, DerefMut}; use std::ptr::NonNull; @@ -171,3 +173,22 @@ impl iter::FromIterator for OwnedSlice { Vec::from_iter(iter).into() } } + +impl Serialize for OwnedSlice { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + self.deref().serialize(serializer) + } +} + +impl<'de, T: Deserialize<'de>> Deserialize<'de> for OwnedSlice { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let r = Box::<[T]>::deserialize(deserializer)?; + Ok(r.into()) + } +}