<!doctype HTML>

<!--
Runs multiple acquires and updates.
-->

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

<div id="log"></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.createElement("div");
  Promise.all([
    container.getDisplayLock().acquire(),
    container.getDisplayLock().acquire(),
    container.getDisplayLock().acquire(),
    container.getDisplayLock().acquire()
  ]).then(() => {
    let child = document.createElement("div");
    child.id = "child";
    container.appendChild(child);

    container.id = "container";
    document.body.appendChild(container);

    Promise.all([
      container.getDisplayLock().update(),
      container.getDisplayLock().update(),
      container.getDisplayLock().update(),
      container.getDisplayLock().update()
    ]).then(() => {
      container.getDisplayLock().commit().then(
        () => { finishTest("PASS"); },
        () => { finishTest("FAIL"); });
    });
  });
}

window.onload = runTest;
</script>
