mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01:00
layout: Fix intrinsic contributions of indefinite stretch
keyword (#36030)
In #35630 I treated an indefinite `stretch` as 0px on min sizing properties, and as `none` on max sizing properties. However, this was only for final layout sizes, I forgot about intrinsic contributions. Blink already modified the relevant test, I'm just reordering it a bit since we are no longer treating `stretch` as `fit-content`, so it seems better to test it at the end. Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
99d4baa533
commit
09fe51f55a
4 changed files with 21 additions and 38 deletions
|
@ -172,7 +172,7 @@ pub(crate) fn outer_inline(
|
|||
};
|
||||
get_content_size(&constraint_space)
|
||||
});
|
||||
let resolve_non_initial = |inline_size| {
|
||||
let resolve_non_initial = |inline_size, stretch_values| {
|
||||
Some(match inline_size {
|
||||
Size::Initial => return None,
|
||||
Size::Numeric(numeric) => (numeric, numeric, false),
|
||||
|
@ -186,24 +186,25 @@ pub(crate) fn outer_inline(
|
|||
content_size.sizes.max_content,
|
||||
content_size.depends_on_block_constraints,
|
||||
),
|
||||
Size::Stretch | Size::FitContent => (
|
||||
Size::FitContent => (
|
||||
content_size.sizes.min_content,
|
||||
content_size.sizes.max_content,
|
||||
content_size.depends_on_block_constraints,
|
||||
),
|
||||
Size::Stretch => return stretch_values,
|
||||
})
|
||||
};
|
||||
let (mut preferred_min_content, preferred_max_content, preferred_depends_on_block_constraints) =
|
||||
resolve_non_initial(content_box_sizes.inline.preferred)
|
||||
.unwrap_or_else(|| resolve_non_initial(Size::FitContent).unwrap());
|
||||
resolve_non_initial(content_box_sizes.inline.preferred, None)
|
||||
.unwrap_or_else(|| resolve_non_initial(Size::FitContent, None).unwrap());
|
||||
let (mut min_min_content, mut min_max_content, mut min_depends_on_block_constraints) =
|
||||
resolve_non_initial(content_box_sizes.inline.min).unwrap_or((
|
||||
auto_minimum.inline,
|
||||
auto_minimum.inline,
|
||||
false,
|
||||
));
|
||||
resolve_non_initial(
|
||||
content_box_sizes.inline.min,
|
||||
Some((Au::zero(), Au::zero(), false)),
|
||||
)
|
||||
.unwrap_or((auto_minimum.inline, auto_minimum.inline, false));
|
||||
let (mut max_min_content, max_max_content, max_depends_on_block_constraints) =
|
||||
resolve_non_initial(content_box_sizes.inline.max)
|
||||
resolve_non_initial(content_box_sizes.inline.max, None)
|
||||
.map(|(min_content, max_content, depends_on_block_constraints)| {
|
||||
(
|
||||
Some(min_content),
|
||||
|
|
2
tests/wpt/meta/MANIFEST.json
vendored
2
tests/wpt/meta/MANIFEST.json
vendored
|
@ -596233,7 +596233,7 @@
|
|||
]
|
||||
],
|
||||
"keyword-sizes-for-intrinsic-contributions.html": [
|
||||
"5a2a9ab615368d1cc3181cf84d9ebdefaf79368a",
|
||||
"dc287b195907e2b114a4d035470dde94f4039b84",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
[keyword-sizes-for-intrinsic-contributions.html]
|
||||
[.test 15]
|
||||
expected: FAIL
|
||||
|
||||
[.test 19]
|
||||
expected: FAIL
|
||||
|
||||
[.test 23]
|
||||
expected: FAIL
|
||||
|
||||
[.test 27]
|
||||
expected: FAIL
|
||||
|
||||
[.test 31]
|
||||
expected: FAIL
|
||||
|
||||
[.test 35]
|
||||
expected: FAIL
|
|
@ -47,20 +47,20 @@
|
|||
<div class="wrapper" style="width: 0px">
|
||||
<div class="test width" data-expected-width="70"><div style="width: min-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="70"><div style="width: fit-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="70"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="150"><div style="width: max-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="70"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
<div class="wrapper" style="width: 100px">
|
||||
<div class="test width" data-expected-width="70"><div style="width: min-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="90"><div style="width: fit-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="90"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="150"><div style="width: max-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="90"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
<div class="wrapper" style="width: 200px">
|
||||
<div class="test width" data-expected-width="70"><div style="width: min-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="150"><div style="width: fit-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="150"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="150"><div style="width: max-content">XXX XXX</div></div>
|
||||
<div class="test width" data-expected-width="150"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
@ -69,20 +69,20 @@
|
|||
<div class="wrapper" style="width: 0px">
|
||||
<div class="test min-width" data-expected-width="70"><div style="min-width: min-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="70"><div style="min-width: fit-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="10"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="150"><div style="min-width: max-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="10"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
<div class="wrapper" style="width: 100px">
|
||||
<div class="test min-width" data-expected-width="70"><div style="min-width: min-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="90"><div style="min-width: fit-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="10"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="150"><div style="min-width: max-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="10"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
<div class="wrapper" style="width: 200px">
|
||||
<div class="test min-width" data-expected-width="70"><div style="min-width: min-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="150"><div style="min-width: fit-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="10"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="150"><div style="min-width: max-content">XXX XXX</div></div>
|
||||
<div class="test min-width" data-expected-width="10"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
@ -91,20 +91,20 @@
|
|||
<div class="wrapper" style="width: 0px">
|
||||
<div class="test max-width" data-expected-width="70"><div style="max-width: min-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="70"><div style="max-width: fit-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="210"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="150"><div style="max-width: max-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="210"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
<div class="wrapper" style="width: 100px">
|
||||
<div class="test max-width" data-expected-width="70"><div style="max-width: min-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="90"><div style="max-width: fit-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="210"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="150"><div style="max-width: max-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="210"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
<div class="wrapper" style="width: 200px">
|
||||
<div class="test max-width" data-expected-width="70"><div style="max-width: min-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="150"><div style="max-width: fit-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="210"><div class="stretch">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="150"><div style="max-width: max-content">XXX XXX</div></div>
|
||||
<div class="test max-width" data-expected-width="210"><div class="stretch">XXX XXX</div></div>
|
||||
</div>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue