diff options
Diffstat (limited to 'test/wpt/tests/websockets/unload-a-document')
10 files changed, 191 insertions, 0 deletions
diff --git a/test/wpt/tests/websockets/unload-a-document/001-1.html b/test/wpt/tests/websockets/unload-a-document/001-1.html new file mode 100644 index 0000000..7cf4ab6 --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/001-1.html @@ -0,0 +1,25 @@ +<!doctype html> +<title>WebSockets: navigating top-level browsing context</title> +<script src=../constants.sub.js></script> +<script> +var controller = opener || parent; +var t = controller.t; +var assert_unreached = controller.assert_unreached; +var uuid = controller.uuid; +t.add_cleanup(function() {delete sessionStorage[uuid];}); +t.step(function() { + if (sessionStorage[uuid]) { + t.done(); + } else { + sessionStorage[uuid] = 'true'; + var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo'); + ws.onopen = t.step_func(function(e) { + t.step_timeout(function() { + assert_unreached('document was not discarded'); + }, 1000); + controller.navigate(); + }) + ws.onerror = ws.onmessage = t.step_func(e => assert_unreached("Got unexpected event " + e.type)); + } +}); +</script> diff --git a/test/wpt/tests/websockets/unload-a-document/001-2.html b/test/wpt/tests/websockets/unload-a-document/001-2.html new file mode 100644 index 0000000..24c419c --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/001-2.html @@ -0,0 +1,4 @@ +<!doctype html> +<title>WebSockets: navigating top-level browsing context</title> +<body onload="history.back()"></body> +</html> diff --git a/test/wpt/tests/websockets/unload-a-document/001.html b/test/wpt/tests/websockets/unload-a-document/001.html new file mode 100644 index 0000000..28ce9c4 --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/001.html @@ -0,0 +1,26 @@ +<!doctype html> +<title>WebSockets: navigating top-level browsing context</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/common/utils.js></script> +<script src=../constants.sub.js></script> +<meta name="variant" content="?default"> +<meta name="variant" content="?wss"> +<meta name="variant" content="?wpt_flags=h2"> +<p>Test requires popup blocker disabled</p> +<div id=log></div> +<script> +var t = async_test(); +var w; +var uuid; +t.step(function() { + uuid = token() + w = window.open("001-1.html" + location.search); + add_result_callback(function() { + w.close(); + }); +}); +navigate = t.step_func(function() { + w.location = w.location.href.replace("001-1.html", "001-2.html"); +}); +</script> diff --git a/test/wpt/tests/websockets/unload-a-document/002-1.html b/test/wpt/tests/websockets/unload-a-document/002-1.html new file mode 100644 index 0000000..1922bb4 --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/002-1.html @@ -0,0 +1,32 @@ +<!doctype html> +<title>WebSockets: navigating top-level browsing context with closed websocket</title> +<script src=../constants.sub.js></script> +<script> +var controller = opener || parent; +var t = controller.t; +var assert_equals = controller.assert_equals; +var assert_unreached = controller.assert_unreached ; +var uuid = controller.uuid; +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) { + + t.step_timeout(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> diff --git a/test/wpt/tests/websockets/unload-a-document/002-2.html b/test/wpt/tests/websockets/unload-a-document/002-2.html new file mode 100644 index 0000000..9a246a1 --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/002-2.html @@ -0,0 +1,4 @@ +<!doctype html> +<title>WebSockets: navigating top-level browsing context with closed websocket</title> +<body onload="history.back()"></body> +</html> diff --git a/test/wpt/tests/websockets/unload-a-document/002.html b/test/wpt/tests/websockets/unload-a-document/002.html new file mode 100644 index 0000000..f79b3b7 --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/002.html @@ -0,0 +1,27 @@ +<!doctype html> +<title>WebSockets: navigating top-level browsing context with closed websocket</title> +<meta name=timeout content=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/common/utils.js></script> +<script src=../constants.sub.js></script> +<meta name="variant" content="?default"> +<meta name="variant" content="?wss"> +<meta name="variant" content="?wpt_flags=h2"> +<p>Test requires popup blocker disabled</p> +<div id=log></div> +<script> +var t = async_test(); +var w; +var uuid; +t.step(function() { + uuid = token() + w = window.open("002-1.html" + location.search); + add_result_callback(function() { + w.close(); + }); +}); +navigate = t.step_func(function() { + w.location = w.location.href.replace("002-1.html", "002-2.html"); +}); +</script> diff --git a/test/wpt/tests/websockets/unload-a-document/003.html b/test/wpt/tests/websockets/unload-a-document/003.html new file mode 100644 index 0000000..554daf4 --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/003.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>WebSockets: navigating nested browsing context</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/common/utils.js></script> +<div id=log></div> +<script> +var uuid; +var t = async_test(function() {uuid = token()}); +var navigate = t.step_func(function() { + document.getElementsByTagName("iframe")[0].src = 'data:text/html,<body onload="history.back()">'; +}); +</script> +<iframe src=001-1.html></iframe>
\ No newline at end of file diff --git a/test/wpt/tests/websockets/unload-a-document/004.html b/test/wpt/tests/websockets/unload-a-document/004.html new file mode 100644 index 0000000..bb15cd8 --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/004.html @@ -0,0 +1,16 @@ +<!doctype html> +<title>WebSockets: navigating nested browsing context with closed websocket</title> +<meta name=timeout content=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/common/utils.js></script> +<div id=log></div> +<script> +var uuid; +var t = async_test(); +t.step(function() {uuid = token()}); +var navigate = t.step_func(function() { + document.getElementsByTagName("iframe")[0].src = 'data:text/html,<body onload="history.back()">'; +}); +</script> +<iframe src=002-1.html></iframe> diff --git a/test/wpt/tests/websockets/unload-a-document/005-1.html b/test/wpt/tests/websockets/unload-a-document/005-1.html new file mode 100644 index 0000000..e084ade --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/005-1.html @@ -0,0 +1,22 @@ +<!doctype html> +<title>WebSockets: navigating nested browsing context with a websocket in top-level</title> +<script src=../constants.sub.js></script> +<script> +var t = opener.t; +var assert_unreached = opener.assert_unreached; +var hasRun = false; +function run(){ + var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo'); + ws.onopen = t.step_func(function(e) { + t.step_timeout(function() { + ws.send('test'); + }, 1000); + window[0].location = 'data:text/html,<body onload="history.back()">'; + ws.onmessage = t.step_func_done(function(e) { + ws.close(); + }); + }); + ws.onerror = ws.onmessage = ws.onclose = t.step_func(e => assert_unreached("Got unexpected event " + e.type)); +} +</script> +<iframe src='data:text/html,foo' onload='if (hasRun) return; hasRun = true; t.step(run)'></iframe> diff --git a/test/wpt/tests/websockets/unload-a-document/005.html b/test/wpt/tests/websockets/unload-a-document/005.html new file mode 100644 index 0000000..1abb1b5 --- /dev/null +++ b/test/wpt/tests/websockets/unload-a-document/005.html @@ -0,0 +1,21 @@ +<!doctype html> +<title>WebSockets: navigating nested browsing context with a websocket in top-level</title> +<meta name=timeout content=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=../constants.sub.js></script> +<meta name="variant" content="?default"> +<meta name="variant" content="?wss"> +<meta name="variant" content="?wpt_flags=h2"> +<div id=log></div> +<p>Test requires popup blocker disabled</p> +<div id=log></div> +<script> +var t = async_test(); +t.step(function() { + var w = window.open("005-1.html" + location.search); + add_result_callback(function() { + w.close(); + }); +}); +</script> |