mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Derive HeapSizeOf on more Stylesheet-related types
In preparation of storing `Stylesheet`s on nodes.
This commit is contained in:
parent
f1b6c7cc99
commit
068e6a8e9f
5 changed files with 25 additions and 21 deletions
|
@ -9,20 +9,21 @@ use properties::longhands::font_family::parse_one_family;
|
||||||
use std::ascii::AsciiExt;
|
use std::ascii::AsciiExt;
|
||||||
use string_cache::Atom;
|
use string_cache::Atom;
|
||||||
use url::{Url, UrlParser};
|
use url::{Url, UrlParser};
|
||||||
|
use util::mem::HeapSizeOf;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
#[derive(Clone, Debug, HeapSizeOf, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub enum Source {
|
pub enum Source {
|
||||||
Url(UrlSource),
|
Url(UrlSource),
|
||||||
Local(Atom),
|
Local(Atom),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
#[derive(Clone, Debug, HeapSizeOf, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
pub struct UrlSource {
|
pub struct UrlSource {
|
||||||
pub url: Url,
|
pub url: Url,
|
||||||
pub format_hints: Vec<String>,
|
pub format_hints: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, HeapSizeOf, PartialEq, Eq)]
|
||||||
pub struct FontFaceRule {
|
pub struct FontFaceRule {
|
||||||
pub family: Atom,
|
pub family: Atom,
|
||||||
pub sources: Vec<Source>,
|
pub sources: Vec<Source>,
|
||||||
|
|
|
@ -8,15 +8,16 @@ use euclid::size::{Size2D, TypedSize2D};
|
||||||
use properties::longhands;
|
use properties::longhands;
|
||||||
use std::ascii::AsciiExt;
|
use std::ascii::AsciiExt;
|
||||||
use util::geometry::ViewportPx;
|
use util::geometry::ViewportPx;
|
||||||
|
use util::mem::HeapSizeOf;
|
||||||
use values::specified;
|
use values::specified;
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, HeapSizeOf, PartialEq)]
|
||||||
pub struct MediaQueryList {
|
pub struct MediaQueryList {
|
||||||
pub media_queries: Vec<MediaQuery>
|
pub media_queries: Vec<MediaQuery>
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
|
#[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
|
||||||
pub enum Range<T> {
|
pub enum Range<T> {
|
||||||
Min(T),
|
Min(T),
|
||||||
Max(T),
|
Max(T),
|
||||||
|
@ -59,20 +60,20 @@ impl<T: Ord> Range<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http://dev.w3.org/csswg/mediaqueries-3/#media1
|
/// http://dev.w3.org/csswg/mediaqueries-3/#media1
|
||||||
#[derive(PartialEq, Copy, Clone, Debug)]
|
#[derive(PartialEq, Copy, Clone, Debug, HeapSizeOf)]
|
||||||
pub enum Expression {
|
pub enum Expression {
|
||||||
/// http://dev.w3.org/csswg/mediaqueries-3/#width
|
/// http://dev.w3.org/csswg/mediaqueries-3/#width
|
||||||
Width(Range<specified::Length>),
|
Width(Range<specified::Length>),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http://dev.w3.org/csswg/mediaqueries-3/#media0
|
/// http://dev.w3.org/csswg/mediaqueries-3/#media0
|
||||||
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
|
#[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
|
||||||
pub enum Qualifier {
|
pub enum Qualifier {
|
||||||
Only,
|
Only,
|
||||||
Not,
|
Not,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, HeapSizeOf, PartialEq)]
|
||||||
pub struct MediaQuery {
|
pub struct MediaQuery {
|
||||||
pub qualifier: Option<Qualifier>,
|
pub qualifier: Option<Qualifier>,
|
||||||
pub media_type: MediaQueryType,
|
pub media_type: MediaQueryType,
|
||||||
|
@ -91,20 +92,20 @@ impl MediaQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http://dev.w3.org/csswg/mediaqueries-3/#media0
|
/// http://dev.w3.org/csswg/mediaqueries-3/#media0
|
||||||
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
|
#[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
|
||||||
pub enum MediaQueryType {
|
pub enum MediaQueryType {
|
||||||
All, // Always true
|
All, // Always true
|
||||||
MediaType(MediaType),
|
MediaType(MediaType),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
|
#[derive(PartialEq, Eq, Copy, Clone, Debug, HeapSizeOf)]
|
||||||
pub enum MediaType {
|
pub enum MediaType {
|
||||||
Screen,
|
Screen,
|
||||||
Print,
|
Print,
|
||||||
Unknown,
|
Unknown,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, HeapSizeOf)]
|
||||||
pub struct Device {
|
pub struct Device {
|
||||||
pub media_type: MediaType,
|
pub media_type: MediaType,
|
||||||
pub viewport_size: TypedSize2D<ViewportPx, f32>,
|
pub viewport_size: TypedSize2D<ViewportPx, f32>,
|
||||||
|
|
|
@ -17,12 +17,13 @@ use std::iter::Iterator;
|
||||||
use std::slice;
|
use std::slice;
|
||||||
use string_cache::{Atom, Namespace};
|
use string_cache::{Atom, Namespace};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
use util::mem::HeapSizeOf;
|
||||||
use viewport::ViewportRule;
|
use viewport::ViewportRule;
|
||||||
|
|
||||||
/// Each style rule has an origin, which determines where it enters the cascade.
|
/// Each style rule has an origin, which determines where it enters the cascade.
|
||||||
///
|
///
|
||||||
/// http://dev.w3.org/csswg/css-cascade/#cascading-origins
|
/// http://dev.w3.org/csswg/css-cascade/#cascading-origins
|
||||||
#[derive(Clone, PartialEq, Eq, Copy, Debug)]
|
#[derive(Clone, PartialEq, Eq, Copy, Debug, HeapSizeOf)]
|
||||||
pub enum Origin {
|
pub enum Origin {
|
||||||
/// http://dev.w3.org/csswg/css-cascade/#cascade-origin-ua
|
/// http://dev.w3.org/csswg/css-cascade/#cascade-origin-ua
|
||||||
UserAgent,
|
UserAgent,
|
||||||
|
@ -35,7 +36,7 @@ pub enum Origin {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, HeapSizeOf, PartialEq)]
|
||||||
pub struct Stylesheet {
|
pub struct Stylesheet {
|
||||||
/// List of rules in the order they were found (important for
|
/// List of rules in the order they were found (important for
|
||||||
/// cascading order)
|
/// cascading order)
|
||||||
|
@ -44,7 +45,7 @@ pub struct Stylesheet {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, HeapSizeOf, PartialEq)]
|
||||||
pub enum CSSRule {
|
pub enum CSSRule {
|
||||||
Charset(String),
|
Charset(String),
|
||||||
Namespace(Option<String>, Namespace),
|
Namespace(Option<String>, Namespace),
|
||||||
|
@ -54,7 +55,7 @@ pub enum CSSRule {
|
||||||
Viewport(ViewportRule),
|
Viewport(ViewportRule),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, HeapSizeOf, PartialEq)]
|
||||||
pub struct MediaRule {
|
pub struct MediaRule {
|
||||||
pub media_queries: MediaQueryList,
|
pub media_queries: MediaQueryList,
|
||||||
pub rules: Vec<CSSRule>,
|
pub rules: Vec<CSSRule>,
|
||||||
|
@ -67,7 +68,7 @@ impl MediaRule {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, HeapSizeOf, PartialEq)]
|
||||||
pub struct StyleRule {
|
pub struct StyleRule {
|
||||||
pub selectors: Vec<Selector>,
|
pub selectors: Vec<Selector>,
|
||||||
pub declarations: PropertyDeclarationBlock,
|
pub declarations: PropertyDeclarationBlock,
|
||||||
|
|
|
@ -18,10 +18,11 @@ use std::str::Chars;
|
||||||
use style_traits::viewport::{Orientation, UserZoom, ViewportConstraints, Zoom};
|
use style_traits::viewport::{Orientation, UserZoom, ViewportConstraints, Zoom};
|
||||||
use stylesheets::Origin;
|
use stylesheets::Origin;
|
||||||
use util::geometry::ViewportPx;
|
use util::geometry::ViewportPx;
|
||||||
|
use util::mem::HeapSizeOf;
|
||||||
use values::computed::{Context, ToComputedValue};
|
use values::computed::{Context, ToComputedValue};
|
||||||
use values::specified::{Length, LengthOrPercentageOrAuto, ViewportPercentageLength};
|
use values::specified::{Length, LengthOrPercentageOrAuto, ViewportPercentageLength};
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)]
|
||||||
pub enum ViewportDescriptor {
|
pub enum ViewportDescriptor {
|
||||||
MinWidth(ViewportLength),
|
MinWidth(ViewportLength),
|
||||||
MaxWidth(ViewportLength),
|
MaxWidth(ViewportLength),
|
||||||
|
@ -133,7 +134,7 @@ struct ViewportRuleParser<'a, 'b: 'a> {
|
||||||
context: &'a ParserContext<'b>
|
context: &'a ParserContext<'b>
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)]
|
||||||
pub struct ViewportDescriptorDeclaration {
|
pub struct ViewportDescriptorDeclaration {
|
||||||
pub origin: Origin,
|
pub origin: Origin,
|
||||||
pub descriptor: ViewportDescriptor,
|
pub descriptor: ViewportDescriptor,
|
||||||
|
@ -228,7 +229,7 @@ impl<'a, 'b> DeclarationParser for ViewportRuleParser<'a, 'b> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, HeapSizeOf, PartialEq)]
|
||||||
pub struct ViewportRule {
|
pub struct ViewportRule {
|
||||||
pub declarations: Vec<ViewportDescriptorDeclaration>
|
pub declarations: Vec<ViewportDescriptorDeclaration>
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ define_css_keyword_enum!(Orientation:
|
||||||
"landscape" => Landscape);
|
"landscape" => Landscape);
|
||||||
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
|
#[derive(Clone, Debug, HeapSizeOf, PartialEq, Deserialize, Serialize)]
|
||||||
pub struct ViewportConstraints {
|
pub struct ViewportConstraints {
|
||||||
pub size: TypedSize2D<ViewportPx, f32>,
|
pub size: TypedSize2D<ViewportPx, f32>,
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ impl ToCss for ViewportConstraints {
|
||||||
|
|
||||||
/// Zoom is a number | percentage | auto
|
/// Zoom is a number | percentage | auto
|
||||||
/// See http://dev.w3.org/csswg/css-device-adapt/#descdef-viewport-zoom
|
/// See http://dev.w3.org/csswg/css-device-adapt/#descdef-viewport-zoom
|
||||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)]
|
||||||
pub enum Zoom {
|
pub enum Zoom {
|
||||||
Number(f32),
|
Number(f32),
|
||||||
Percentage(f32),
|
Percentage(f32),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue