Bug 1341667 - Part 2. (Stylo) Correct computed value of mask-image. draft
authorcku <cku@mozilla.com>
Mon, 10 Apr 2017 12:42:10 +0800
changeset 560187 4b13978f6129e7ca39b626ed7906ed758550d8ec
parent 559489 9aa213768ab3cf16a54ff82759815c426c1fbba3
child 560188 345ffcebb1b4efca67f38a31511dce8f94b2f35b
push id53364
push userbmo:cku@mozilla.com
push dateTue, 11 Apr 2017 08:33:51 +0000
bugs1341667
milestone55.0a1
Bug 1341667 - Part 2. (Stylo) Correct computed value of mask-image. MozReview-Commit-ID: KTOSjABGkGu
servo/components/style/properties/gecko.mako.rs
servo/components/style/properties/longhand/svg.mako.rs
--- a/servo/components/style/properties/gecko.mako.rs
+++ b/servo/components/style/properties/gecko.mako.rs
@@ -2369,18 +2369,18 @@ fn static_assert() {
                                                                 .mLayers.iter_mut()) {
             % if shorthand == "background":
                 if let Some(image) = image.0 {
                     geckoimage.mImage.set(image, true, cacheable)
                 }
             % else:
                 use properties::longhands::mask_image::single_value::computed_value::T;
                 match image {
-                    T::Image(image) => geckoimage.mImage.set(image, false, cacheable),
-                    _ => () // we need to support url valeus
+                    T::Image(image) => geckoimage.mImage.set(image, true, cacheable),
+                    _ => ()
                 }
             % endif
 
         }
     }
 
     <%
         fill_fields = "mRepeat mClip mOrigin mPositionX mPositionY mImage mSize"
--- a/servo/components/style/properties/longhand/svg.mako.rs
+++ b/servo/components/style/properties/longhand/svg.mako.rs
@@ -213,46 +213,42 @@
         use std::fmt;
         use style_traits::ToCss;
         use values::computed;
         use values::specified::url::SpecifiedUrl;
         #[derive(Debug, Clone, PartialEq)]
         #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
         pub enum T {
             Image(computed::Image),
-            Url(SpecifiedUrl),
             None
         }
 
         impl ToCss for T {
             fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
                 match *self {
                     T::None => dest.write_str("none"),
                     T::Image(ref image) => image.to_css(dest),
-                    T::Url(ref url) => url.to_css(dest),
                 }
             }
         }
     }
 
     no_viewport_percentage!(SpecifiedValue);
 
     #[derive(Debug, Clone, PartialEq)]
     #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
     pub enum SpecifiedValue {
         Image(Image),
-        Url(SpecifiedUrl),
         None
     }
 
     impl ToCss for SpecifiedValue {
         fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
             match *self {
                 SpecifiedValue::Image(ref image) => image.to_css(dest),
-                SpecifiedValue::Url(ref url) => url.to_css(dest),
                 SpecifiedValue::None => dest.write_str("none"),
             }
         }
     }
 
     #[inline]
     pub fn get_initial_value() -> computed_value::T {
         computed_value::T::None
@@ -263,44 +259,36 @@
     }
     pub fn parse(context: &ParserContext, input: &mut Parser) -> Result<SpecifiedValue, ()> {
         if input.try(|input| input.expect_ident_matching("none")).is_ok() {
             Ok(SpecifiedValue::None)
         } else {
             let image = try!(Image::parse(context, input));
             match image {
                 Image::Url(url_value) => {
-                    if url_value.is_fragment() {
-                        Ok(SpecifiedValue::Url(url_value))
-                    } else {
-                        Ok(SpecifiedValue::Image(Image::Url(url_value)))
-                    }
+                    Ok(SpecifiedValue::Image(Image::Url(url_value)))
                 }
                 image => Ok(SpecifiedValue::Image(image))
             }
         }
     }
     impl ToComputedValue for SpecifiedValue {
         type ComputedValue = computed_value::T;
 
         #[inline]
         fn to_computed_value(&self, context: &Context) -> computed_value::T {
             match *self {
                 SpecifiedValue::None => computed_value::T::None,
                 SpecifiedValue::Image(ref image) =>
                     computed_value::T::Image(image.to_computed_value(context)),
-                SpecifiedValue::Url(ref url) =>
-                    computed_value::T::Url(url.clone()),
             }
         }
 
         #[inline]
         fn from_computed_value(computed: &computed_value::T) -> Self {
             match *computed {
                 computed_value::T::None => SpecifiedValue::None,
                 computed_value::T::Image(ref image) =>
                     SpecifiedValue::Image(ToComputedValue::from_computed_value(image)),
-                computed_value::T::Url(ref url) =>
-                    SpecifiedValue::Url(url.clone()),
             }
         }
     }
 </%helpers:vector_longhand>