| <!-- |
| onconnect = function(e) { |
| try { |
| var port = e.ports[0] |
| var url = decodeURIComponent(location.hash.substr(1)) |
| var source = new EventSource(url) |
| source.onerror = function(e) { |
| port.postMessage([true, this.readyState, 'data' in e]) |
| this.close(); |
| } |
| } catch(e) { |
| port.postMessage([false, String(e)]) |
| } |
| } |
| /*--> |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>shared worker - 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> |
| <div id="log"></div> |
| <script> |
| function fetchFail(url) { |
| var test = async_test(document.title + " (" + url + ")", { timeout: 20000 }) |
| test.step(function() { |
| var worker = new SharedWorker('#'+encodeURIComponent(url)) |
| worker.port.onmessage = function(e) { |
| test.step(function() { |
| assert_true(e.data[0], e.data[1]) |
| assert_equals(e.data[1], EventSource.CLOSED, 'source.readyState') |
| assert_false(e.data[2], "'data' in e"); |
| }) |
| test.done() |
| } |
| }) |
| } |
| fetchFail("http://example.not") |
| fetchFail("https://example.not/test") |
| 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> |
| <!--*/ //--> |