<!doctype html>
<html class=reftest-wait>
<title>CSS Container Queries Test: Size queries on CSS Layout API containers</title>
<link rel="help" href="https://drafts.csswg.org/css-conditional-5/#size-container">
<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/">
<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>
<style>
#test1 {
width: 400px;
height: 100px;
}
#outer {
display: inline; /* Shouldn't pass without layout api support */
display: layout(half);
height: 100px;
container-type: inline-size;
}
@container (width = 400px) {
#inner {
display: inline; /* Shouldn't pass without layout api support */
display: layout(half);
height: 100px;
container-type: inline-size;
}
}
@container (width = 200px) {
#green {
background-color: green;
height: 100px;
}
}
</style>
<p>Test passes if there is a filled green square.</p>
<div id="test1">
<div id="outer">
<div id="inner">
<div id="green"></div>
</div>
</div>
</div>
<script id="code" type="text/worklet">
registerLayout("half", class {
async intrinsicSizes() {}
async layout(children, edges, constraints, styleMap) {
const childInlineSize = constraints.fixedInlineSize / 2;
const childFragments = await Promise.all(children.map((child) => {
return child.layoutNextFragment({fixedInlineSize: childInlineSize});
}));
for (let childFragment of childFragments) {
childFragment.inlineOffset = 0;
childFragment.blockOffset = 0;
}
const autoBlockSize = 100;
return {autoBlockSize, childFragments};
}
});
</script>
<script>
importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById("code").textContent);
</script>
</html>