<!DOCTYPE html>
<html>
  <head>
    <title>EventSource: document.domain</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() {
        document.domain = document.domain
        source = new EventSource("resources/message.py")
        source.onopen = function(e) {
          test.step(function() {
            assert_equals(source.readyState, source.OPEN)
            assert_false(e.hasOwnProperty('data'))
            assert_false(e.bubbles)
            assert_false(e.cancelable)
            this.close()
          }, this)
          test.done()
        }
      })
    </script>
    <!-- Apart from document.domain equivalent to the onopen test. -->
  </body>
</html>
