<!--
onconnect = function(e) {
try {
  var port = e.ports[0]
  EventSource.prototype.ReturnTrue = function() { return true }
  var source = new EventSource("../resources/message.py")
  port.postMessage([true, source.ReturnTrue(), 'EventSource' in self])
  source.close()
} catch(e) {
  port.postMessage([false, String(e)])
}
}
/*-->
<!DoCtYpE hTMl>
<html>
  <heAd>
    <title>shared worker - EventSource: prototype et al</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_true(e.data[1], 'source.ReturnTrue()')
            assert_true(e.data[2], "'EventSource' in self")
          })
          test.done()
        }
      })
    </scrIpt>
  </bOdy>
</htMl>
<!--*/ //-->
