Bug 1341667 - Part 2. (Stylo) Correct computed value of mask-image.
MozReview-Commit-ID: KTOSjABGkGu
--- 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>