summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/content-security-policy/webrtc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/content-security-policy/webrtc
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/content-security-policy/webrtc')
-rw-r--r--testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-default-src-none.html21
-rw-r--r--testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-explicit.html19
-rw-r--r--testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-nopolicy.html18
-rw-r--r--testing/web-platform/tests/content-security-policy/webrtc/webrtc-blocked-explicit.html19
-rw-r--r--testing/web-platform/tests/content-security-policy/webrtc/webrtc-blocked-unknown.html19
-rw-r--r--testing/web-platform/tests/content-security-policy/webrtc/webrtc.js56
6 files changed, 152 insertions, 0 deletions
diff --git a/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-default-src-none.html b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-default-src-none.html
new file mode 100644
index 0000000000..5b0f8cc9c5
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-default-src-none.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta
+ http-equiv="Content-Security-Policy"
+ content="default-src 'none'; script-src 'self' 'unsafe-inline'">
+ <title>webrtc allowed with default-src 'none'</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="webrtc.js"></script>
+</head>
+
+<body>
+ <script>
+ expectAllow();
+ </script>
+ <div id="log"></div>
+</body>
+
+</html>
diff --git a/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-explicit.html b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-explicit.html
new file mode 100644
index 0000000000..835f650d5f
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-explicit.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta http-equiv="Content-Security-Policy" content="webrtc 'allow';">
+ <title>webrtc allowed with an explicit webrtc allowed policy</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="webrtc.js"></script>
+</head>
+
+<body>
+ <script>
+ expectAllow();
+ </script>
+ <div id="log"></div>
+</body>
+
+</html>
diff --git a/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-nopolicy.html b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-nopolicy.html
new file mode 100644
index 0000000000..bc49a63a43
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-allowed-nopolicy.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <title>webrtc allowed with no policy</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="webrtc.js"></script>
+</head>
+
+<body>
+ <script>
+ expectAllow();
+ </script>
+ <div id="log"></div>
+</body>
+
+</html>
diff --git a/testing/web-platform/tests/content-security-policy/webrtc/webrtc-blocked-explicit.html b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-blocked-explicit.html
new file mode 100644
index 0000000000..dbd56f2f2c
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-blocked-explicit.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta http-equiv="Content-Security-Policy" content="webrtc 'block';">
+ <title>webrtc blocked with an explicit webrtc blocked policy</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="webrtc.js"></script>
+</head>
+
+<body>
+ <script>
+ expectBlock();
+ </script>
+ <div id="log"></div>
+</body>
+
+</html>
diff --git a/testing/web-platform/tests/content-security-policy/webrtc/webrtc-blocked-unknown.html b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-blocked-unknown.html
new file mode 100644
index 0000000000..1605c0a642
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/webrtc/webrtc-blocked-unknown.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta http-equiv="Content-Security-Policy" content="webrtc 'unrecognized';">
+ <title>webrtc blocked with an unrecognized explicit webrtc policy</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="webrtc.js"></script>
+</head>
+
+<body>
+ <script>
+ expectBlock();
+ </script>
+ <div id="log"></div>
+</body>
+
+</html>
diff --git a/testing/web-platform/tests/content-security-policy/webrtc/webrtc.js b/testing/web-platform/tests/content-security-policy/webrtc/webrtc.js
new file mode 100644
index 0000000000..a4075557ad
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/webrtc/webrtc.js
@@ -0,0 +1,56 @@
+
+// Creates two RTCPeerConnection and tries to connect them. Returns
+// "allowed" if the connection is permitted, "blocked" if it is
+// blocked on both sides and "inconsistent" in the event that the
+// result is not the same on both sides (should never happen).
+async function tryConnect() {
+ const pc1 = new RTCPeerConnection();
+ const pc2 = new RTCPeerConnection();
+
+ // Returns a promise which resolves to a boolean which is true
+ // if and only if pc.iceConnectionState settles in the "failed"
+ // state, and never transitions to any state other than "new"
+ // or "failed."
+ const pcFailed = (pc) => {
+ return new Promise((resolve, _reject) => {
+ pc.oniceconnectionstatechange = (e) => {
+ resolve(pc.iceConnectionState == "failed");
+ };
+ });
+ }
+ pc1Failed = pcFailed(pc1);
+ pc2Failed = pcFailed(pc2);
+
+ // Creating a data channel is necessary to induce negotiation:
+ const channel = pc1.createDataChannel('test');
+
+ // Usual webrtc signaling dance:
+ pc1.onicecandidate = ({candidate}) => pc2.addIceCandidate(candidate);
+ pc2.onicecandidate = ({candidate}) => pc1.addIceCandidate(candidate);
+ const offer = await pc1.createOffer();
+ await pc1.setLocalDescription(offer);
+ await pc2.setRemoteDescription(pc1.localDescription);
+ const answer = await pc2.createAnswer();
+ await pc2.setLocalDescription(answer);
+ await pc1.setRemoteDescription(pc2.localDescription);
+
+ const failed1 = await pc1Failed;
+ const failed2 = await pc2Failed;
+ if(failed1 && failed2) {
+ return 'blocked';
+ } else if(!failed1 && !failed2) {
+ return 'allowed';
+ } else {
+ return 'inconsistent';
+ }
+}
+
+async function expectAllow() {
+ promise_test(async () => assert_equals(await tryConnect(), 'allowed'));
+}
+
+async function expectBlock() {
+ promise_test(async () => assert_equals(await tryConnect(), 'blocked'));
+}
+
+// vim: set ts=4 sw=4 et :