/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const EXAMPLE_PARENT_ROOT = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content",
"https://example.net"
);
const EXAMPLE_FRAME_ROOT = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content",
"https://example.org"
);
const FRAMEBUSTING_PARENT_URL =
EXAMPLE_PARENT_ROOT +
"framebusting_intervention_parent.html";
const FRAMEBUSTING_FRAME_URL =
EXAMPLE_FRAME_ROOT +
"framebusting_intervention_frame.html";
async
function triggerFramebusting(tab, attrs = {}, params = {}) {
info(
"Loading framebusting parent page...");
BrowserTestUtils.startLoadingURIString(
tab.linkedBrowser,
FRAMEBUSTING_PARENT_URL
);
await BrowserTestUtils.browserLoaded(
tab.linkedBrowser,
/*includeSubFrames=*/ false,
FRAMEBUSTING_PARENT_URL
);
const url =
new URL(FRAMEBUSTING_FRAME_URL);
for (
const name in params) {
url.searchParams.append(name, params[name]);
}
info(
"Loading framebusting frame page...");
await SpecialPowers.spawn(
tab.linkedBrowser,
[url.href, attrs],
(src, attributes) => {
const iframe = content.document.createElement(
"iframe");
for (
const name in attributes) {
iframe.setAttribute(name, attributes[name]);
}
iframe.src = src;
content.document.body.appendChild(iframe);
}
);
}