<!--
try {
  var source = new EventSource("../resources/message.py")
  postMessage([true, source.url])
  source.close()
} catch(e) {
  postMessage([false, String(e)])
}
/*-->
<!DOCTYPE html>
<html>
  <head>
    <title>dedicated worker - EventSource: url</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 url = "resources/message.py"
        var worker = new Worker('#')
        worker.onmessage = function(e) {
          test.step(function() {
            assert_true(e.data[0], e.data[1]);
            assert_equals(e.data[1].substr(-(url.length)), url)
          })
          test.done()
        }
      })
    </script>
  </body>
</html>
<!--*/ //-->
