| <!doctype html> |
| <title>WebSockets: navigating top-level browsing context with closed websocket</title> |
| <script src=../constants.js?pipe=sub></script> |
| <script> |
| var controller = opener || parent; |
| var t = controller.t; |
| var assert_equals = controller.asset_equals; |
| var assert_unreached = controller.assert_unreached ; |
| var uuid = controller.token; |
| t.add_cleanup(function() {delete sessionStorage[uuid];}); |
| t.step(function() { |
| // this test can fail if the document is unloaded on navigation e.g. due to OOM |
| if (sessionStorage[uuid]) { |
| assert_unreached('document was discarded'); |
| } else { |
| sessionStorage[uuid] = 'true'; |
| var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo'); |
| ws.onopen = t.step_func(function(e) { |
| |
| setTimeout(t.step_func(function() { |
| assert_equals(ws.readyState, ws.CLOSED, 'ws.readyState'); |
| t.done(); |
| }), 4000); |
| ws.close(); |
| ws.onclose = t.step_func(function() { |
| controller.navigate(); |
| }); |
| }) |
| ws.onerror = ws.onmessage = ws.onclose = t.step_func(function(e) {assert_unreached("Got unexpected event " + e.type)}); |
| } |
| }); |
| </script> |