002-1.html (1085B)
1 <!doctype html> 2 <title>WebSockets: navigating top-level browsing context with closed websocket</title> 3 <script src=../constants.sub.js></script> 4 <script> 5 var controller = opener || parent; 6 var t = controller.t; 7 var assert_equals = controller.assert_equals; 8 var assert_unreached = controller.assert_unreached ; 9 var uuid = controller.uuid; 10 t.add_cleanup(function() {delete sessionStorage[uuid];}); 11 t.step(function() { 12 // this test can fail if the document is unloaded on navigation e.g. due to OOM 13 if (sessionStorage[uuid]) { 14 assert_unreached('document was discarded'); 15 } else { 16 sessionStorage[uuid] = 'true'; 17 var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo'); 18 ws.onopen = t.step_func(function(e) { 19 20 t.step_timeout(function() { 21 assert_equals(ws.readyState, ws.CLOSED, 'ws.readyState'); 22 t.done(); 23 }, 4000); 24 ws.close(); 25 ws.onclose = t.step_func(function() { 26 controller.navigate(); 27 }); 28 }) 29 ws.onerror = ws.onmessage = t.step_func(e => assert_unreached("Got unexpected event " + e.type)); 30 } 31 }); 32 </script>