diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2020-02-11 23:05:37 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-11 23:05:37 -0500 |
commit | 6d6d16f7f492e6346f0391e352015226a4444806 (patch) | |
tree | d991c986a7f83be25157934e93c248ea86ee4b00 /components/style/values/computed/mod.rs | |
parent | baac1e2c69d3b6e840ced2be4b5e03bb39bd40d5 (diff) | |
parent | d1f8d576f83714fe674a36c5b718341c236312e6 (diff) | |
download | servo-6d6d16f7f492e6346f0391e352015226a4444806.tar.gz servo-6d6d16f7f492e6346f0391e352015226a4444806.zip |
Auto merge of #25717 - emilio:gecko-sync, r=emilio,nox
style: Sync changes from mozilla-central.
See individual commits for details. https://bugzilla.mozilla.org/show_bug.cgi?id=1614394
Diffstat (limited to 'components/style/values/computed/mod.rs')
-rw-r--r-- | components/style/values/computed/mod.rs | 57 |
1 files changed, 48 insertions, 9 deletions
diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index f5b3440f426..7cfd1e20abe 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -108,6 +108,7 @@ pub mod flex; pub mod font; pub mod image; pub mod length; +pub mod length_percentage; pub mod list; pub mod motion; pub mod outline; @@ -125,9 +126,6 @@ pub mod url; /// A `Context` is all the data a specified value could ever need to compute /// itself and be transformed to a computed value. pub struct Context<'a> { - /// Whether the current element is the root element. - pub is_root_element: bool, - /// Values accessed through this need to be in the properties "computed /// early": color, text-decoration, font-size, display, position, float, /// border-*-style, outline-style, font-family, writing-mode... @@ -186,7 +184,6 @@ impl<'a> Context<'a> { let provider = get_metrics_provider_for_product(); let context = Context { - is_root_element: false, builder: StyleBuilder::for_inheritance(device, None, None), font_metrics_provider: &provider, cached_system_font: None, @@ -200,11 +197,6 @@ impl<'a> Context<'a> { f(&context) } - /// Whether the current element is the root element. - pub fn is_root_element(&self) -> bool { - self.is_root_element - } - /// The current device. pub fn device(&self) -> &Device { self.builder.device @@ -471,6 +463,53 @@ trivial_to_computed_value!(Atom); trivial_to_computed_value!(Prefix); trivial_to_computed_value!(String); trivial_to_computed_value!(Box<str>); +trivial_to_computed_value!(crate::OwnedStr); + +#[allow(missing_docs)] +#[derive( + Animate, + Clone, + ComputeSquaredDistance, + Copy, + Debug, + MallocSizeOf, + PartialEq, + ToAnimatedZero, + ToCss, + ToResolvedValue, +)] +#[repr(C, u8)] +pub enum AngleOrPercentage { + Percentage(Percentage), + Angle(Angle), +} + +impl ToComputedValue for specified::AngleOrPercentage { + type ComputedValue = AngleOrPercentage; + + #[inline] + fn to_computed_value(&self, context: &Context) -> AngleOrPercentage { + match *self { + specified::AngleOrPercentage::Percentage(percentage) => { + AngleOrPercentage::Percentage(percentage.to_computed_value(context)) + }, + specified::AngleOrPercentage::Angle(angle) => { + AngleOrPercentage::Angle(angle.to_computed_value(context)) + }, + } + } + #[inline] + fn from_computed_value(computed: &AngleOrPercentage) -> Self { + match *computed { + AngleOrPercentage::Percentage(percentage) => specified::AngleOrPercentage::Percentage( + ToComputedValue::from_computed_value(&percentage), + ), + AngleOrPercentage::Angle(angle) => { + specified::AngleOrPercentage::Angle(ToComputedValue::from_computed_value(&angle)) + }, + } + } +} /// A `<number>` value. pub type Number = CSSFloat; |