diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2021-01-07 04:15:01 +0000 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2021-02-26 16:44:05 +0100 |
commit | 65a06d5003c25d25748892ba7cedf8d151a7721b (patch) | |
tree | ee8f4afeafb58245cfd8f03f632472959c8bc91c | |
parent | a4506d94ecbee1c91e32c93eeebbd9992fd330f2 (diff) | |
download | servo-65a06d5003c25d25748892ba7cedf8d151a7721b.tar.gz servo-65a06d5003c25d25748892ba7cedf8d151a7721b.zip |
style: Support full <image> syntax in list-style-image as per spec.
This allows supporting image-set(), etc, and simplifies the bullet frame
code significantly, too thanks to two changes:
* Instead of manually managing the image request, use the CSS image
loader, with the `REQUEST_REQUIRES_REFLOW` flag, to handle image
loads correctly. This didn't exist when this code was initially
implemented, but we can nicely use it now.
* Instead of re-implementing another WebRender command-builder thing,
we can just reuse the nsImageRenderer code.
Differential Revision: https://phabricator.services.mozilla.com/D100774
-rw-r--r-- | components/style/properties/longhands/list.mako.rs | 6 | ||||
-rw-r--r-- | components/style/properties/shorthands/list.mako.rs | 8 | ||||
-rw-r--r-- | components/style/values/computed/url.rs | 3 | ||||
-rw-r--r-- | components/style/values/specified/url.rs | 3 |
4 files changed, 7 insertions, 13 deletions
diff --git a/components/style/properties/longhands/list.mako.rs b/components/style/properties/longhands/list.mako.rs index b50b961c735..82e226418cd 100644 --- a/components/style/properties/longhands/list.mako.rs +++ b/components/style/properties/longhands/list.mako.rs @@ -54,10 +54,10 @@ ${helpers.single_keyword( ${helpers.predefined_type( "list-style-image", - "url::ImageUrlOrNone", + "Image", engines="gecko servo-2013 servo-2020", - initial_value="computed::url::ImageUrlOrNone::none()", - initial_specified_value="specified::url::ImageUrlOrNone::none()", + initial_value="computed::Image::None", + initial_specified_value="specified::Image::None", animation_value_type="discrete", spec="https://drafts.csswg.org/css-lists/#propdef-list-style-image", servo_restyle_damage="rebuild_and_reflow", diff --git a/components/style/properties/shorthands/list.mako.rs b/components/style/properties/shorthands/list.mako.rs index fd8cd8b1c23..f757c368cfa 100644 --- a/components/style/properties/shorthands/list.mako.rs +++ b/components/style/properties/shorthands/list.mako.rs @@ -10,7 +10,7 @@ derive_serialize="True" spec="https://drafts.csswg.org/css-lists/#propdef-list-style"> use crate::properties::longhands::{list_style_image, list_style_position, list_style_type}; - use crate::values::specified::url::ImageUrlOrNone; + use crate::values::specified::Image; pub fn parse_value<'i, 't>( context: &ParserContext, @@ -69,7 +69,7 @@ (true, 2, None, None) => { Ok(expanded! { list_style_position: position, - list_style_image: ImageUrlOrNone::none(), + list_style_image: Image::None, list_style_type: ListStyleType::None, }) } @@ -83,14 +83,14 @@ (true, 1, Some(list_style_type), None) => { Ok(expanded! { list_style_position: position, - list_style_image: ImageUrlOrNone::none(), + list_style_image: Image::None, list_style_type: list_style_type, }) } (true, 1, None, None) => { Ok(expanded! { list_style_position: position, - list_style_image: ImageUrlOrNone::none(), + list_style_image: Image::None, list_style_type: ListStyleType::None, }) } diff --git a/components/style/values/computed/url.rs b/components/style/values/computed/url.rs index 4815281a3bf..9f0d8f5bb3e 100644 --- a/components/style/values/computed/url.rs +++ b/components/style/values/computed/url.rs @@ -13,6 +13,3 @@ pub use crate::servo::url::{ComputedImageUrl, ComputedUrl}; /// Computed <url> | <none> pub type UrlOrNone = GenericUrlOrNone<ComputedUrl>; - -/// Computed image <url> | <none> -pub type ImageUrlOrNone = GenericUrlOrNone<ComputedImageUrl>; diff --git a/components/style/values/specified/url.rs b/components/style/values/specified/url.rs index b0a69b362d8..17ecbe0d5e8 100644 --- a/components/style/values/specified/url.rs +++ b/components/style/values/specified/url.rs @@ -13,6 +13,3 @@ pub use crate::servo::url::{SpecifiedImageUrl, SpecifiedUrl}; /// Specified <url> | <none> pub type UrlOrNone = GenericUrlOrNone<SpecifiedUrl>; - -/// Specified image <url> | <none> -pub type ImageUrlOrNone = GenericUrlOrNone<SpecifiedImageUrl>; |