Files
tubestation/layout/reftests/css-grid/grid-auto-min-sizing-min-content-min-size-001-ref.html
Ting-Yu Lin 5f335dbb1c Bug 1670151 Part 2 - Use nsIFrame::GetAspectRatio() to query aspect-ratio rather than obtaining it from style. r=dholbert
`GetAspectRatio()` considers both the `aspect-ratio` property and the intrinsic
aspect-ratio of replaced elements.

Changing just `nsIFrame::ComputeISizeValueFromAspectRatio()` fixed the intrinsic
size for replaced elements when there is a definite height. However, it doesn't
pass any tests on wpt, so I wrote intrinsic-size-017.html to
intrinsic-size-019.html to cover this.

Modifying `nsLayoutUtils::IntrinsicForAxis()` fixed the intrinsic size
contribution for replaced elements. We already have the logic to use inline size
from aspect ratio in `AddIntrinsicSizeOffset()` and `GetIntrinsicCoord()`. We
just need to compute it when sizes in the inline axis have intrinsic keywords.
intrinsic-size-020.html to intrinsic-size-025.html cover this.

grid-auto-min-sizing-min-content-min-size-{001,002}-ref.html are also modified
to reflect this new behavior. The modified subtests are:
- 001.html: Test 1, 2, 3, 6, 8, 9
- 002.html: Test 1, 2, 3, 6, 7, 9

In these modified subtests, before this patch, our rendering was all different
from Google Chrome's. After this patch, our behavior aligns with Google Chrome,
except for Test 7 and 9 in 002.html.

Differential Revision: https://phabricator.services.mozilla.com/D212716
2024-06-06 05:59:46 +00:00

63 lines
2.0 KiB
HTML

<!DOCTYPE HTML>
<!--
Any copyright is dedicated to the Public Domain.
https://creativecommons.org/publicdomain/zero/1.0/
-->
<html><head>
<meta charset="utf-8">
<title>Reference: Testing track 'auto' min-sizing function with 'min-width:min-content' on an item with an intrinsic aspect ratio</title>
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1218178">
<style type="text/css">
html,body { color:black; background-color:white; font:12px monospace; padding:0; margin:0; }
.grid {
display: grid;
float: left;
border: 1px solid;
align-items: start;
justify-items: start;
margin-bottom:1em;
}
.col { grid-auto-rows:10px; }
.col img { min-height:0; }
br { clear:both; }
</style>
</head>
<body>
<script>
var coltest = [
"height:30px; max-width:48px", "height:30px; width:48px", "height:30px; width:12px",
"width:12px", "max-width:12px", "height:30px", "height:4px; width:80px", "height:1px",
"height:1px; width:20px", "max-height:1px", "max-height:1px; max-width:6px",
"min-height:4px", "min-height:4px; max-width: 30px"
];
var results = [
"360px", "360px", "360px", "24px", "24px", "360px", "80px", "12px", "20px", "24px",
"24px", "24px", "24px"
];
var h3 = document.createElement('h3');
h3.appendChild(document.createTextNode("grid-template-columns:minmax(auto,0.0001fr)"));
document.body.appendChild(h3);
for (var i = 0; i < coltest.length; ++i) {
var grid = document.createElement('div');
grid.setAttribute("class","grid col");
grid.setAttribute("style","grid-template-columns:minmax("+results[i]+",0)");
var img = document.createElement('img');
img.setAttribute("src","support/lime-24x2.png");
img.setAttribute("style",coltest[i] + "; min-width:"+ results[i]);
grid.appendChild(img);
document.body.appendChild(document.createTextNode(`Test ${i+1}: 24x2.png -- ${coltest[i]}`));
document.body.appendChild(document.createElement('br'));
document.body.appendChild(grid);
document.body.appendChild(document.createElement('br'));
}
</script>
</body>
</html>