3 const TEST_PATH = getRootDirectory(gTestPath).replace(
4 "chrome://mochitests/content",
5 // eslint-disable-next-line @microsoft/sdl/no-insecure-url
8 const TEST_URI = TEST_PATH + "file_csp_uir.html"; // important to be http: to test upgrade-insecure-requests
10 // eslint-disable-next-line @microsoft/sdl/no-insecure-url
11 TEST_PATH.replace("http://", "https://") + "file_csp_uir_dummy.html";
13 function verifyCSP(aTestName, aBrowser, aResultURI) {
14 return SpecialPowers.spawn(
16 [{ aTestName, aResultURI }],
17 async function ({ aTestName, aResultURI }) {
18 let channel = content.docShell.currentDocumentChannel;
19 is(channel.URI.asciiSpec, aResultURI, "testing CSP for " + aTestName);
24 add_task(async function test_csp_inheritance_regular_click() {
25 await BrowserTestUtils.withNewTab(TEST_URI, async function (browser) {
26 let loadPromise = BrowserTestUtils.browserLoaded(
31 // set the data href + simulate click
32 BrowserTestUtils.synthesizeMouseAtCenter(
35 gBrowser.selectedBrowser
38 await verifyCSP("click()", gBrowser.selectedBrowser, RESULT_URI);
42 add_task(async function test_csp_inheritance_ctrl_click() {
43 await BrowserTestUtils.withNewTab(TEST_URI, async function (browser) {
44 let loadPromise = BrowserTestUtils.waitForNewTab(
49 // set the data href + simulate ctrl+click
50 BrowserTestUtils.synthesizeMouseAtCenter(
52 { ctrlKey: true, metaKey: true },
53 gBrowser.selectedBrowser
55 let tab = await loadPromise;
56 gBrowser.selectTabAtIndex(2);
57 await verifyCSP("ctrl-click()", gBrowser.selectedBrowser, RESULT_URI);
58 await BrowserTestUtils.removeTab(tab);
63 async function test_csp_inheritance_right_click_open_link_in_new_tab() {
64 await BrowserTestUtils.withNewTab(TEST_URI, async function (browser) {
65 let loadPromise = BrowserTestUtils.waitForNewTab(gBrowser, RESULT_URI);
66 // set the data href + simulate right-click open link in tab
67 BrowserTestUtils.waitForEvent(document, "popupshown", false, event => {
68 // These are operations that must be executed synchronously with the event.
69 document.getElementById("context-openlinkintab").doCommand();
70 event.target.hidePopup();
73 BrowserTestUtils.synthesizeMouseAtCenter(
75 { type: "contextmenu", button: 2 },
76 gBrowser.selectedBrowser
79 let tab = await loadPromise;
80 gBrowser.selectTabAtIndex(2);
82 "right-click-open-in-new-tab()",
83 gBrowser.selectedBrowser,
86 await BrowserTestUtils.removeTab(tab);