<!--
onconnect = function(e) {
try {
  var port = e.ports[0]
  var source = new EventSource("../resources/message.py")
  source.onopen = function(e) {
    this.close()
    port.postMessage([true, this.readyState])
  }
} catch(e) {
  port.postMessage([false, String(e)])
}
}
/*-->
<!DOCTYPE html>
<html>
  <head>
    <title>shared worker - EventSource: close()</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <div id="log"></div>
    <script>
      var test = async_test();
      test.step(function() {
        var worker = new SharedWorker('#')
        worker.port.onmessage = function(e) {
          test.step(function() {
            assert_true(e.data[0], e.data[1])
            assert_equals(e.data[1], EventSource.CLOSED, 'this.readyState')
          })
          test.done()
        }
      })
    </script>
  </body>
</html>
<!--*/ //-->
