Bug 1360659 - stylo: Use computed Angle in computed value of filter property
Using specified Angle was wrong because it can keep calc
value and serialize with calc(). Also that will allow us to pass
angle unit later.
MozReview-Commit-ID: 9v3cVMOmHGA
--- a/servo/components/style/properties/longhand/effects.mako.rs
+++ b/servo/components/style/properties/longhand/effects.mako.rs
@@ -134,17 +134,17 @@
Url(SpecifiedUrl),
% endif
}
pub mod computed_value {
use app_units::Au;
use values::CSSFloat;
use values::computed::{CSSColor, Shadow};
- use values::specified::Angle;
+ use values::computed::Angle;
use values::specified::url::SpecifiedUrl;
#[derive(Clone, PartialEq, Debug)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf, Deserialize, Serialize))]
pub enum Filter {
Blur(Au),
Brightness(CSSFloat),
Contrast(CSSFloat),
@@ -377,17 +377,19 @@
fn to_computed_value(&self, context: &Context) -> computed_value::T {
computed_value::T{ filters: self.0.iter().map(|value| {
match *value {
SpecifiedFilter::Blur(ref factor) =>
computed_value::Filter::Blur(factor.to_computed_value(context)),
SpecifiedFilter::Brightness(factor) => computed_value::Filter::Brightness(factor),
SpecifiedFilter::Contrast(factor) => computed_value::Filter::Contrast(factor),
SpecifiedFilter::Grayscale(factor) => computed_value::Filter::Grayscale(factor),
- SpecifiedFilter::HueRotate(factor) => computed_value::Filter::HueRotate(factor),
+ SpecifiedFilter::HueRotate(ref factor) => {
+ computed_value::Filter::HueRotate(factor.to_computed_value(context))
+ },
SpecifiedFilter::Invert(factor) => computed_value::Filter::Invert(factor),
SpecifiedFilter::Opacity(factor) => computed_value::Filter::Opacity(factor),
SpecifiedFilter::Saturate(factor) => computed_value::Filter::Saturate(factor),
SpecifiedFilter::Sepia(factor) => computed_value::Filter::Sepia(factor),
% if product == "gecko":
SpecifiedFilter::DropShadow(ref shadow) => {
computed_value::Filter::DropShadow(shadow.to_computed_value(context))
},
@@ -402,17 +404,19 @@
fn from_computed_value(computed: &computed_value::T) -> Self {
SpecifiedValue(computed.filters.iter().map(|value| {
match *value {
computed_value::Filter::Blur(factor) =>
SpecifiedFilter::Blur(ToComputedValue::from_computed_value(&factor)),
computed_value::Filter::Brightness(factor) => SpecifiedFilter::Brightness(factor),
computed_value::Filter::Contrast(factor) => SpecifiedFilter::Contrast(factor),
computed_value::Filter::Grayscale(factor) => SpecifiedFilter::Grayscale(factor),
- computed_value::Filter::HueRotate(factor) => SpecifiedFilter::HueRotate(factor),
+ computed_value::Filter::HueRotate(ref factor) => {
+ SpecifiedFilter::HueRotate(ToComputedValue::from_computed_value(factor))
+ },
computed_value::Filter::Invert(factor) => SpecifiedFilter::Invert(factor),
computed_value::Filter::Opacity(factor) => SpecifiedFilter::Opacity(factor),
computed_value::Filter::Saturate(factor) => SpecifiedFilter::Saturate(factor),
computed_value::Filter::Sepia(factor) => SpecifiedFilter::Sepia(factor),
% if product == "gecko":
computed_value::Filter::DropShadow(ref shadow) => {
SpecifiedFilter::DropShadow(
ToComputedValue::from_computed_value(shadow),