<!DOCTYPE html>
<html>
  <head>
    <title>EventSource: constructor (act as if there is a network error)</title>
    <meta name=timeout content=long>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <script>
      function fetchFail(url) {
        var test = async_test(document.title + " (" + url + ")", { timeout: 20000 })
        test.step(function() {
          var source = new EventSource(url)
          source.onerror = function(e) {
            test.step(function() {
              assert_equals(source.readyState, source.CLOSED)
              assert_false(e.hasOwnProperty('data'))
            })
            test.done()
          }
        })
      }
      fetchFail("ftp://example.not/")
      fetchFail("about:blank")
      fetchFail("mailto:whatwg@awesome.example")
      fetchFail("javascript:alert('FAIL')")
    </script>
    <!-- This tests "fails the connection" as well as making sure a simple
         event is dispatched and not a MessageEvent -->
  </body>
</html>
