<!--
  Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/
-->
<!DOCTYPE HTML>
<html>
  <head>
    <title>Test for SharedWorker</title>
    <script src="/tests/SimpleTest/SimpleTest.js">
    </script>
    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
  </head>
  <body>
    <p id="display"></p>
    <div id="content" style="display: none"></div>
    <pre id="test">
      <script class="testbody">
        "use strict";

        const href = window.location.href;
        const filename = "sharedWorker_sharedWorker.js";
        const sentMessage = "ping";
        const errorFilename = href.substring(0, href.lastIndexOf("/") + 1) +
                              filename;
        const errorLine = 97;
        const errorColumn = 11;

        var worker = new SharedWorker(filename);

        ok(worker instanceof SharedWorker, "Got SharedWorker instance");
        ok(!("postMessage" in worker), "SharedWorker has no 'postMessage'");
        ok(worker.port instanceof MessagePort,
          "Shared worker has MessagePort");

        var receivedMessage;
        var receivedError;

        worker.port.onmessage = function(event) {
          ok(event instanceof MessageEvent, "Got a MessageEvent");
          ok(event.target === worker.port,
             "MessageEvent has correct 'target' property");
          is(event.data, sentMessage, "Got correct message");
          ok(receivedMessage === undefined, "Haven't gotten message yet");
          receivedMessage = event.data;
          if (receivedError) {
            SimpleTest.finish();
          }
        };

        worker.onerror = function(event) {
          ok(event instanceof ErrorEvent, "Got an ErrorEvent");
          is(event.message, "Error: " + sentMessage, "Got correct error");
          is(event.filename, errorFilename, "Got correct filename");
          is(event.lineno, errorLine, "Got correct lineno");
          is(event.colno, errorColumn, "Got correct column");
          ok(receivedError === undefined, "Haven't gotten error yet");
          receivedError = event.message;
          event.preventDefault();
          if (receivedMessage) {
            SimpleTest.finish();
          }
        };

        worker.port.postMessage(sentMessage);

        SimpleTest.waitForExplicitFinish();

      </script>
    </pre>
  </body>
</html>
