diff --git a/components/layout_2020/geom.rs b/components/layout_2020/geom.rs index f065baad12a..1684e0304a3 100644 --- a/components/layout_2020/geom.rs +++ b/components/layout_2020/geom.rs @@ -627,7 +627,7 @@ impl ToLogicalWithContainingBlock> for PhysicalRect { /// The possible values accepted by the sizing properties. /// -#[derive(Clone, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub(crate) enum Size { /// Represents an `auto` value for the preferred and minimum size properties, /// or `none` for the maximum size properties. diff --git a/components/layout_2020/positioned.rs b/components/layout_2020/positioned.rs index ecb65af97cc..9841f9b6c86 100644 --- a/components/layout_2020/positioned.rs +++ b/components/layout_2020/positioned.rs @@ -799,7 +799,6 @@ impl<'a> AbsoluteAxisSolver<'a> { // A LazyCell will only invoke it once if needed, and then reuse the result. let content_size = get_content_size.map(LazyCell::new); let solve_size = |initial_behavior, stretch_size: Au| -> SizeConstraint { - let initial_is_stretch = initial_behavior == Size::Stretch; let stretch_size = stretch_size.max(Au::zero()); if let Some(ref content_size) = content_size { let preferred_size = Some(self.computed_size.resolve( @@ -816,10 +815,12 @@ impl<'a> AbsoluteAxisSolver<'a> { .resolve_non_initial(stretch_size, content_size); SizeConstraint::new(preferred_size, min_size, max_size) } else { - let preferred_size = self - .computed_size - .maybe_resolve_extrinsic(Some(stretch_size)) - .or(initial_is_stretch.then_some(stretch_size)); + let preferred_size = if self.computed_size.is_initial() { + initial_behavior + } else { + self.computed_size + } + .maybe_resolve_extrinsic(Some(stretch_size)); let min_size = self .computed_min_size .maybe_resolve_extrinsic(Some(stretch_size)) diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index de747b9c3ef..e8ad2cd0133 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -577577,6 +577577,13 @@ {} ] ], + "keyword-sizes-on-abspos.html": [ + "2bc4c463e0b34084af70f3c8dca97cadb90d36cf", + [ + null, + {} + ] + ], "keyword-sizes-on-floated-element.html": [ "e3da8bee7eb7b613e457d00eb88a677c35698d08", [ diff --git a/tests/wpt/meta/css/css-sizing/keyword-sizes-on-abspos.html.ini b/tests/wpt/meta/css/css-sizing/keyword-sizes-on-abspos.html.ini new file mode 100644 index 00000000000..508b6bddd70 --- /dev/null +++ b/tests/wpt/meta/css/css-sizing/keyword-sizes-on-abspos.html.ini @@ -0,0 +1,9 @@ +[keyword-sizes-on-abspos.html] + [.test 17] + expected: FAIL + + [.test 22] + expected: FAIL + + [.test 27] + expected: FAIL diff --git a/tests/wpt/tests/css/css-sizing/keyword-sizes-on-abspos.html b/tests/wpt/tests/css/css-sizing/keyword-sizes-on-abspos.html new file mode 100644 index 00000000000..2bc4c463e0b --- /dev/null +++ b/tests/wpt/tests/css/css-sizing/keyword-sizes-on-abspos.html @@ -0,0 +1,306 @@ + +Keyword sizes on absolutely positioned box + + + + + + + + + +
+ +
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+ +
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+ +
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+ +
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+ +
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+
+
XX XX
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ + + + +