<!doctype HTML>

<!--
Runs an acquire, appends a child, and calls commit.
-->

<style>
#container {
  contain: style layout;
  width: 150px;
  height: 150px;
  background: lightblue;
}
#child {
  width: 50px;
  height: 50px;
  background: lightgreen;
}
</style>

<div id="log"></div>
<div id="container"></div>

<script>
// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait.
if (window.testRunner)
  window.testRunner.waitUntilDone();

function finishTest(status_string) {
  if (document.getElementById("log").innerHTML === "")
    document.getElementById("log").innerHTML = status_string;
  if (window.testRunner)
    window.testRunner.notifyDone();
}

function runTest() {
  let container = document.getElementById("container");
  container.getDisplayLock().acquire({ timeout: Infinity }).then(() => {
    let child = document.createElement("div");
    child.id = "child";
    container.appendChild(child);

    container.getDisplayLock().commit().then(
      () => { finishTest("PASS"); },
      () => { finishTest("FAIL"); });
  });
}

window.onload = runTest;
</script>
