<!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-contain-3/#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>
