Source code
Revision control
Copy as Markdown
Other Tools
<!--
  Any copyright is dedicated to the Public Domain.
-->
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="timeout" content="long" />
    <iframe
      id="read-frame-window"
    ></iframe>
    <iframe
      id="read-frame-worker"
    ></iframe>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script>
      const params = new URL(window.location.href).searchParams;
      const id = params.get("id");
      async_test(t => {
        let testId;
        let outcome;
        window.addEventListener(
          "message",
          t.step_func(e => {
            try {
              console.log("Read wrapper received " + JSON.stringify(e.data));
              assert_true(!!e.data.message);
              if (e.data.message == "read loaded") {
                return;
              }
              if (!testId) {
                testId = e.data.message;
                assert_true(!!e.data.outcome);
                outcome = e.data.outcome;
                assert_true(!!e.data.expected);
                assert_true(!!e.data.frame);
                assert_true(!!e.data.type);
                const frameId = e.data.frame;
                // Send test data to window or worker iframe
                const readFrame = document.getElementById(frameId);
                readFrame.contentWindow.postMessage(e.data, "*");
              } else {
                assert_equals(e.data.message, outcome);
                console.log("Read wrapper sends up " + JSON.stringify(e.data));
                parent.opener.postMessage(e.data, document.referrer);
                t.done();
              }
            } catch (err) {
              console.log("Error in read wrapper " + JSON.stringify(err));
              parent.opener.postMessage(e.data, document.referrer);
              throw err;
            }
          })
        );
        parent.opener.postMessage(
          { id, message: "read loaded" },
          document.referrer
        );
      }, "Read wrapper");
    </script>
  </head>
  <body></body>
</html>