<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Emscripten Browser Test Harness</title>
  <style>
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
    }
    body {
      display: flex;
      flex-direction: column;
    }
    .topbar {
      background-color: #79f;
    }
    .full {
      border: none;
      width: 100%;
      flex: 1;
    }
  </style>
  <script>
    var COMMAND_PREFIX = 'COMMAND:';
    var counter = 0;
    function check() {
      var request = new XMLHttpRequest();
      request.open('GET', '/check');
      request.send(null);
      request.addEventListener("load", function() {
        if (request.responseText.startsWith(COMMAND_PREFIX)) {
          var url = request.responseText.substr(COMMAND_PREFIX.length);
          iframe.src = url;
          document.getElementById('count').textContent = counter++;
        }
        // Polling for the next test to start: we just keep asking if we
        // should load a new page, since the iframe doesn't currently have
        // a way to tell us it completed (even if it did, we'd need to poll
        // the server to know when the next test page is ready to load).
        setTimeout(check, 10);
      });
      request.addEventListener("error", function() {
        document.body.innerHTML = 'Tests complete. View log in console.';
        // Attempt to close the main window.  This works on chrome
        // but fails on firefox with: `Scripts may not close windows that
        // were not opened by script.`
        window.close();
      });
    }
    document.addEventListener('DOMContentLoaded', check);
  </script>
</head>
<body>
  <span class="topbar">Running test <span id="count"></span>...</span>
  <iframe class="full" id="iframe" allowfullscreen="true"></iframe>
</body>
</html>

