summaryrefslogtreecommitdiffstats
path: root/toolkit/components/httpsonlyerror/tests/browser/head.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /toolkit/components/httpsonlyerror/tests/browser/head.js
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/httpsonlyerror/tests/browser/head.js')
-rw-r--r--toolkit/components/httpsonlyerror/tests/browser/head.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/toolkit/components/httpsonlyerror/tests/browser/head.js b/toolkit/components/httpsonlyerror/tests/browser/head.js
new file mode 100644
index 0000000000..6848401f61
--- /dev/null
+++ b/toolkit/components/httpsonlyerror/tests/browser/head.js
@@ -0,0 +1,67 @@
+/* eslint-env mozilla/frame-script */
+
+// Enable HTTPS-Only Mode
+add_task(async function() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["dom.security.https_only_mode", true]],
+ });
+});
+
+// Copied from: https://searchfox.org/mozilla-central/rev/9f074fab9bf905fad62e7cc32faf121195f4ba46/browser/base/content/test/about/head.js
+
+async function injectErrorPageFrame(tab, src, sandboxed) {
+ let loadedPromise = BrowserTestUtils.browserLoaded(
+ tab.linkedBrowser,
+ true,
+ null,
+ true
+ );
+
+ await SpecialPowers.spawn(tab.linkedBrowser, [src, sandboxed], async function(
+ frameSrc,
+ frameSandboxed
+ ) {
+ let iframe = content.document.createElement("iframe");
+ iframe.src = frameSrc;
+ if (frameSandboxed) {
+ iframe.setAttribute("sandbox", "allow-scripts");
+ }
+ content.document.body.appendChild(iframe);
+ });
+
+ await loadedPromise;
+}
+
+async function openErrorPage(src, useFrame, privateWindow, sandboxed) {
+ let gb = gBrowser;
+ if (privateWindow) {
+ gb = privateWindow.gBrowser;
+ }
+ let dummyPage =
+ getRootDirectory(gTestPath).replace(
+ "chrome://mochitests/content",
+ "https://example.com"
+ ) + "dummy_page.html";
+
+ let tab;
+ if (useFrame) {
+ info("Loading error page in an iframe");
+ tab = await BrowserTestUtils.openNewForegroundTab(gb, dummyPage);
+ await injectErrorPageFrame(tab, src, sandboxed);
+ } else {
+ let ErrorPageLoaded;
+ tab = await BrowserTestUtils.openNewForegroundTab(
+ gb,
+ () => {
+ gb.selectedTab = BrowserTestUtils.addTab(gb, src);
+ let browser = gb.selectedBrowser;
+ ErrorPageLoaded = BrowserTestUtils.waitForErrorPage(browser);
+ },
+ false
+ );
+ info("Loading and waiting for the error page");
+ await ErrorPageLoaded;
+ }
+
+ return tab;
+}