From 65a06d5003c25d25748892ba7cedf8d151a7721b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Thu, 7 Jan 2021 04:15:01 +0000 Subject: [PATCH] style: Support full 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 --- components/style/properties/longhands/list.mako.rs | 6 +++--- components/style/properties/shorthands/list.mako.rs | 8 ++++---- components/style/values/computed/url.rs | 3 --- 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 | pub type UrlOrNone = GenericUrlOrNone; - -/// Computed image | -pub type ImageUrlOrNone = GenericUrlOrNone; 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 | pub type UrlOrNone = GenericUrlOrNone; - -/// Specified image | -pub type ImageUrlOrNone = GenericUrlOrNone;