diff --git a/components/layout_2020/display_list.rs b/components/layout_2020/display_list.rs index c480b67e104..03b1ca98535 100644 --- a/components/layout_2020/display_list.rs +++ b/components/layout_2020/display_list.rs @@ -309,6 +309,7 @@ impl<'a> BuilderForBoxFragment<'a> { // * Its top-left is the top-left of the top-left-most tile that intersects with `clip_rect` use style::computed_values::background_clip::single_value::T as Clip; + use style::computed_values::background_origin::single_value::T as Origin; fn get_cyclic(values: &[T], index: usize) -> &T { &values[index % values.len()] @@ -321,8 +322,11 @@ impl<'a> BuilderForBoxFragment<'a> { Clip::PaddingBox => self.padding_rect(), Clip::BorderBox => &self.border_rect, }; - // FIXME: background-origin - let positioning_area = self.padding_rect(); + let positioning_area = match get_cyclic(&b.background_origin.0, index) { + Origin::ContentBox => self.content_rect(), + Origin::PaddingBox => self.padding_rect(), + Origin::BorderBox => &self.border_rect, + }; // FIXME: https://drafts.csswg.org/css-images-4/#the-image-resolution let dppx = 1.0; diff --git a/components/style/properties/longhands/background.mako.rs b/components/style/properties/longhands/background.mako.rs index 15efdd1a872..bebc985f0e1 100644 --- a/components/style/properties/longhands/background.mako.rs +++ b/components/style/properties/longhands/background.mako.rs @@ -81,7 +81,7 @@ ${helpers.single_keyword( ${helpers.single_keyword( "background-origin", "padding-box border-box content-box", - engines="gecko servo-2013", + engines="gecko servo-2013 servo-2020", vector=True, extra_prefixes="webkit", gecko_enum_prefix="StyleGeometryBox", gecko_inexhaustive=True,