<!doctype html> <title>WebSockets: navigating top-level browsing context with closed websocket</title> <script src=../constants.js?pipe=sub></script> <meta name="variant" content=""> <meta name="variant" content="?wss"> <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 = t.step_func(e => assert_unreached("Got unexpected event " + e.type)); } }); </script>