<!doctype HTML>

<!--
This test creates a flex box with 10,000 non-trivial items below the viewport.
It sets content-visibility: auto on the container and adjusts its width continuously.
On a certain iteration it sets spacer height to zero, thus causing the flex container
to render in the viewport.
-->

<style>
#container {
  content-visibility: auto;

  width: 500px;
  height: 500px;
  display: flex;
  flex-wrap: wrap;
  border: 1px solid black;
  background: lightblue;
}
.item {
  background: blue;
  margin: 1px;
  width: 10%;
  height: 10%;
}
#spacer {
  height: 200vh;
}
</style>

<template id="item_template">
<div class="item">
  <div style="position: relative; width: 90%;">
    relpos
    <div style="position: absolute; top: 1px; left: 1%">
      abspos
    </div>
  </div>
  <div style="position: absolute; top: 1px; left: 1%">
    abspos
  </div>
  lorem ipsum dolor sit amet
</div>
</template>

<div id=spacer></div>
<div id=container></div>

<script src="../resources/runner.js"></script>
<script>
function construct(n) {
  const specimen = document.importNode(document.getElementById("item_template").content, true).firstElementChild;
  const container = document.getElementById("container");
  for (let i = 0; i < n; ++i) {
    const clone = specimen.cloneNode(true);
    container.appendChild(clone);
  }
}

construct(10000);

let widths = ["400px", "500px"];
let width_index = 0;
function changeStyle() {
  document.getElementById("container").style.width = widths[width_index];
  width_index = 1 - width_index;
}

let testDone = false;
let startTime;
let currentIteration = 0;
function runTest() {
  currentIteration++;
  if (startTime)
    PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime);
  if (testDone)
    return;

  startTime = PerfTestRunner.now();

  changeStyle();

  if (currentIteration == 3)
    spacer.style.height = "0px";
  requestAnimationFrame(runTest);
}

PerfTestRunner.prepareToMeasureValuesAsync({
  unit: 'ms',
  done: () => { testDone = true; container.innerHTML = ""; },
  iterationCount: 5
});
requestAnimationFrame(runTest);

</script>
