diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /toolkit/components/extensions/test/mochitest/test_ext_contentscript_securecontext.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/extensions/test/mochitest/test_ext_contentscript_securecontext.html')
-rw-r--r-- | toolkit/components/extensions/test/mochitest/test_ext_contentscript_securecontext.html | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/mochitest/test_ext_contentscript_securecontext.html b/toolkit/components/extensions/test/mochitest/test_ext_contentscript_securecontext.html new file mode 100644 index 0000000000..093c26898f --- /dev/null +++ b/toolkit/components/extensions/test/mochitest/test_ext_contentscript_securecontext.html @@ -0,0 +1,163 @@ +<!doctype html> + +<head> + <title>Test content script accessing certain [SecureContext] interfaces in non-secure contexts</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <script src="/tests/SimpleTest/ExtensionTestUtils.js"></script> + <script src="head.js"></script> + <link rel="stylesheet" href="/tests/SimpleTest/test.css" /> +</head> +<script> + "use strict"; + + add_setup(async function setup() { + await SpecialPowers.pushPrefEnv({ + "set": [ + ["dom.w3c_pointer_events.getcoalescedevents_only_in_securecontext", true], + ] + }); + }); + + add_task(async function test_contentscript_getCoalescedEvents_in_non_secure_context() { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + content_scripts: [ + { + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + "matches": ["http://example.org/"], + "js": ["content_script.js"] + }, + ] + }, + files: { + "content_script.js"() { + // Make sure we're testing a non-secure context + browser.test.assertEq(window.isSecureContext, false, "window.isSecureContext === false") + + // Make sure our content script can access getCoalescedEvents in non-secure context + browser.test.assertEq(typeof PointerEvent.prototype.getCoalescedEvents, "function", "Content script can access getCoalescedEvents in non-secure context") + + // Make sure the page can't access getCoalescedEvents in non-secure context + browser.test.assertEq(typeof window.wrappedJSObject.PointerEvent.prototype.getCoalescedEvents, "undefined", "Page can't access getCoalescedEvents in non-secure context") + + browser.test.sendMessage("done"); + }, + }, + }); + await extension.startup(); + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + const win = window.open("http://example.org/"); + await extension.awaitMessage("done"); + win.close(); + await extension.unload(); + }); + + add_task(async function test_iframe_getCoalescedEvents_in_non_secure_context() { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + content_scripts: [ + { + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + "matches": ["http://example.org/"], + "js": ["content_script.js"] + }, + ] + }, + files: { + "iframe_script.js"() { + // Make sure we're testing a non-secure context + browser.test.assertEq(window.isSecureContext, false, "window.isSecureContext === false") + + // Make sure our iframe script can access getCoalescedEvents in non-secure context + browser.test.assertEq(typeof PointerEvent.prototype.getCoalescedEvents, "function", "iframe script can access getCoalescedEvents in non-secure context") + + browser.test.sendMessage("done"); + }, + "content_script.js"() { + let iframe = document.createElement("iframe"); + iframe.src = browser.runtime.getURL("iframe.html"); + document.body.append(iframe); + }, + "iframe.html": "<!DOCTYPE html><html><head><script src=\"./iframe_script.js\"><\/script></head><body></body></html>", + } + }); + await extension.startup(); + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + const win = window.open("http://example.org/"); + await extension.awaitMessage("done"); + win.close(); + await extension.unload(); + }); + + add_task(async function test_contentscript_crypto_in_non_secure_context() { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + content_scripts: [ + { + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + "matches": ["http://example.org/"], + "js": ["content_script.js"] + }, + ] + }, + files: { + "content_script.js"() { + // Make sure we're testing a non-secure context + browser.test.assertEq(window.isSecureContext, false, "window.isSecureContext === false") + + // Make sure our content script can't access window.crypto.randomUUID in non-secure context + browser.test.assertEq(typeof window.crypto.randomUUID, "undefined", "Content script can't access window.crypto.randomUUID in non-secure context") + + // Make sure the page can't access window.crypto.randomUUID in non-secure context + browser.test.assertEq(typeof window.wrappedJSObject.crypto.randomUUID, "undefined", "Page can't access window.crypto.randomUUID in non-secure context") + + browser.test.sendMessage("done"); + }, + }, + }); + await extension.startup(); + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + const win = window.open("http://example.org/"); + await extension.awaitMessage("done"); + win.close(); + await extension.unload(); + }); + + add_task(async function test_iframe_crypto_in_non_secure_context() { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + content_scripts: [ + { + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + "matches": ["http://example.org/"], + "js": ["content_script.js"] + }, + ] + }, + files: { + "iframe_script.js"() { + // Make sure we're testing a non-secure context + browser.test.assertEq(window.isSecureContext, false, "window.isSecureContext === false") + + // Make sure our iframe script can't access window.crypto.randomUUID in non-secure context + browser.test.assertEq(typeof window.crypto.randomUUID, "undefined", "iframe script can't access window.crypto.randomUUID in non-secure context") + + browser.test.sendMessage("done"); + }, + "content_script.js"() { + let iframe = document.createElement("iframe"); + iframe.src = browser.runtime.getURL("iframe.html"); + document.body.append(iframe); + }, + "iframe.html": "<!DOCTYPE html><html><head><script src=\"./iframe_script.js\"><\/script></head><body></body></html>", + } + }); + await extension.startup(); + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + const win = window.open("http://example.org/"); + await extension.awaitMessage("done"); + win.close(); + await extension.unload(); + }); + +</script> |