<!DOCTYPE html>
<html class=reftest-wait>
<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#dom-layoutfragment-data">
<link rel="match" href="green-square-ref.html">
<meta name="assert" content="This test checks that LayoutFragment#data is immutable between child layout passes." />
<style>
.test {
  background: red;
  width: 100px;
}

@supports (display: layout(parent)) {
  .test {
    display: layout(parent);
    background: green;
  }

  .child {
    display: layout(child);
  }
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>

<div class="test">
  <div class="child"></div>
</div>

<script id="code" type="text/worklet">
registerLayout('parent', class {
  async intrinsicSizes() {}
  async layout([child], edges, constraints, styleMap) {

    const childFragment10 = await child.layoutNextFragment({fixedInlineSize: 10});

    // First layout data should be "10".
    if (childFragment10.data.size !== 10) {
      return {autoBlockSize: 0, childFragments: [childFragment10]};
    }

    const childFragment20 = await child.layoutNextFragment({fixedInlineSize: 20});

    // Second layout data should be "20".
    if (childFragment20.data.size !== 20) {
      return {autoBlockSize: 0, childFragments: [childFragment10]};
    }

    // First layout data should still be "10".
    if (childFragment10.data.size !== 10) {
      return {autoBlockSize: 0, childFragments: [childFragment10]};
    }

    return {autoBlockSize: 100, childFragments: [childFragment20]};
  }
});

registerLayout('child', class {
  async intrinsicSizes() {}
  async layout(children, edges, constraints, styleMap) {
    return {autoBlockSize: 10, data: {size: constraints.fixedInlineSize}};
  }
});
</script>

<script>
importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
</script>
</html>
