diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-21 20:56:19 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-21 20:56:19 +0000 |
commit | 0b6210cd37b68b94252cb798598b12974a20e1c1 (patch) | |
tree | e371686554a877842d95aa94f100bee552ff2a8e /test/wpt/tests/websockets/multi-globals | |
parent | Initial commit. (diff) | |
download | node-undici-0b6210cd37b68b94252cb798598b12974a20e1c1.tar.xz node-undici-0b6210cd37b68b94252cb798598b12974a20e1c1.zip |
Adding upstream version 5.28.2+dfsg1+~cs23.11.12.3.upstream/5.28.2+dfsg1+_cs23.11.12.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/wpt/tests/websockets/multi-globals')
6 files changed, 96 insertions, 0 deletions
diff --git a/test/wpt/tests/websockets/multi-globals/message-received.html b/test/wpt/tests/websockets/multi-globals/message-received.html new file mode 100644 index 0000000..704b1e3 --- /dev/null +++ b/test/wpt/tests/websockets/multi-globals/message-received.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<title>"A WebSocket message has been received", with multiple globals in play</title> +<link rel="help" href="https://html.spec.whatwg.org/multipage/comms.html#feedback-from-the-protocol"> +<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<!-- This is the entry global --> + +<iframe src="support/incumbent.sub.html"></iframe> + +<script> +"use strict"; +setup({ explicit_done: true }); + +window.onload = function() { + async_test(function(t) { + frames[0].setupWebSocket("arraybuffer", t.step_func_done(function(relevantWindow, event) { + assert_equals(event.constructor, relevantWindow.MessageEvent); + assert_equals(event.data.constructor, relevantWindow.ArrayBuffer); + })); + }, "ArrayBuffer should be created in the relevant realm of the WebSocket"); + + async_test(function(t) { + frames[0].setupWebSocket("blob", t.step_func_done(function(relevantWindow, event) { + assert_equals(event.constructor, relevantWindow.MessageEvent); + assert_equals(event.data.constructor, relevantWindow.Blob); + })); + }, "Blob should be created in the relevant realm of the WebSocket"); + + done(); +}; +</script> diff --git a/test/wpt/tests/websockets/multi-globals/support/incumbent.sub.html b/test/wpt/tests/websockets/multi-globals/support/incumbent.sub.html new file mode 100644 index 0000000..a138b70 --- /dev/null +++ b/test/wpt/tests/websockets/multi-globals/support/incumbent.sub.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<title>Incumbent page used as a test helper</title> + +<iframe src="relevant.html" id="r"></iframe> + +<script> +"use strict"; + +const relevant = document.querySelector("#r").contentWindow; + +window.setupWebSocket = (binaryType, fn) => { + const wsocket = new relevant.WebSocket("ws://{{host}}:{{ports[ws][0]}}/echo"); + + wsocket.addEventListener("open", () => { + wsocket.binaryType = binaryType; + wsocket.send(new ArrayBuffer(15)); + }); + + wsocket.addEventListener("message", ev => { + fn(relevant, ev); + }); +}; + +</script> diff --git a/test/wpt/tests/websockets/multi-globals/support/relevant.html b/test/wpt/tests/websockets/multi-globals/support/relevant.html new file mode 100644 index 0000000..44f42ed --- /dev/null +++ b/test/wpt/tests/websockets/multi-globals/support/relevant.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<title>Relevant page used as a test helper</title> diff --git a/test/wpt/tests/websockets/multi-globals/url-parsing/current/current.html b/test/wpt/tests/websockets/multi-globals/url-parsing/current/current.html new file mode 100644 index 0000000..82a48d4 --- /dev/null +++ b/test/wpt/tests/websockets/multi-globals/url-parsing/current/current.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<title>Current page used as a test helper</title> diff --git a/test/wpt/tests/websockets/multi-globals/url-parsing/incumbent/incumbent.html b/test/wpt/tests/websockets/multi-globals/url-parsing/incumbent/incumbent.html new file mode 100644 index 0000000..2c5572b --- /dev/null +++ b/test/wpt/tests/websockets/multi-globals/url-parsing/incumbent/incumbent.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<title>Incumbent page used as a test helper</title> + +<iframe src="../current/current.html" id="current"></iframe> + +<script> + const current = document.querySelector("#current").contentWindow; + + window.hello = () => { + window.ws = new current.WebSocket('foo'); + ws.close(); + }; +</script> diff --git a/test/wpt/tests/websockets/multi-globals/url-parsing/url-parsing.html b/test/wpt/tests/websockets/multi-globals/url-parsing/url-parsing.html new file mode 100644 index 0000000..21ef6cd --- /dev/null +++ b/test/wpt/tests/websockets/multi-globals/url-parsing/url-parsing.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<title>Multiple globals for base URL in WebSocket constructor</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<!-- This is the entry global --> + +<iframe src="incumbent/incumbent.html"></iframe> + +<script> +async_test((t) => { + onload = t.step_func_done(() => { + frames[0].hello(); + // Inside constructors, "this's relevant settings object" === "current settings object", + // because of how "this" is constructed. + // https://github.com/whatwg/websockets/issues/46 + const expectedUrl = new URL('current/foo', location.href); + expectedUrl.protocol = 'ws:'; + assert_equals(frames[0].ws.url, expectedUrl.href); + }); +}); +</script> |