From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../browser/browser_firstPartyIsolation_js_uri.js | 90 ++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 browser/components/originattributes/test/browser/browser_firstPartyIsolation_js_uri.js (limited to 'browser/components/originattributes/test/browser/browser_firstPartyIsolation_js_uri.js') diff --git a/browser/components/originattributes/test/browser/browser_firstPartyIsolation_js_uri.js b/browser/components/originattributes/test/browser/browser_firstPartyIsolation_js_uri.js new file mode 100644 index 0000000000..f60fc27de9 --- /dev/null +++ b/browser/components/originattributes/test/browser/browser_firstPartyIsolation_js_uri.js @@ -0,0 +1,90 @@ +add_setup(async function () { + Services.prefs.setBoolPref("privacy.firstparty.isolate", true); + + registerCleanupFunction(function () { + Services.prefs.clearUserPref("privacy.firstparty.isolate"); + }); +}); + +add_task(async function test_remote_window_open_js_uri() { + let win = await BrowserTestUtils.openNewBrowserWindow({ remote: true }); + let browser = win.gBrowser.selectedBrowser; + + Assert.ok(browser.isRemoteBrowser, "should be a remote browser"); + + BrowserTestUtils.loadURIString(browser, `javascript:1;`); + + await BrowserTestUtils.browserLoaded(browser); + + await SpecialPowers.spawn(browser, [], async function () { + Assert.ok(true, "origin " + content.document.nodePrincipal.origin); + + Assert.ok( + content.document.nodePrincipal.isNullPrincipal, + "The principal of remote javascript: should be a NullPrincipal." + ); + + let str = content.document.nodePrincipal.originNoSuffix; + let expectDomain = + str.substring("moz-nullprincipal:{".length, str.length - 1) + ".mozilla"; + Assert.equal( + content.document.nodePrincipal.originAttributes.firstPartyDomain, + expectDomain, + "remote javascript: should have firstPartyDomain set to " + expectDomain + ); + }); + + win.close(); +}); + +add_task(async function test_remote_window_open_js_uri2() { + let win = await BrowserTestUtils.openNewBrowserWindow({ remote: true }); + let browser = win.gBrowser.selectedBrowser; + + Assert.ok(browser.isRemoteBrowser, "should be a remote browser"); + + BrowserTestUtils.loadURIString( + browser, + `javascript: + let iframe = document.createElement("iframe"); + iframe.src = "http://example.com"; + iframe.id = "iframe1"; + document.body.appendChild(iframe); + void(0); + ` + ); + + await BrowserTestUtils.browserLoaded(browser, true, function (url) { + info("URL:" + url); + return url == "http://example.com/"; + }); + + await SpecialPowers.spawn(browser, [], async function () { + Assert.ok(true, "origin " + content.document.nodePrincipal.origin); + + Assert.ok( + content.document.nodePrincipal.isNullPrincipal, + "The principal of remote javascript: should be a NullPrincipal." + ); + + let str = content.document.nodePrincipal.originNoSuffix; + let expectDomain = + str.substring("moz-nullprincipal:{".length, str.length - 1) + ".mozilla"; + Assert.equal( + content.document.nodePrincipal.originAttributes.firstPartyDomain, + expectDomain, + "remote javascript: should have firstPartyDomain set to " + expectDomain + ); + + let iframe = content.document.getElementById("iframe1"); + await SpecialPowers.spawn(iframe, [expectDomain], function (domain) { + Assert.equal( + content.document.nodePrincipal.originAttributes.firstPartyDomain, + domain, + "iframe should have firstPartyDomain set to " + domain + ); + }); + }); + + win.close(); +}); -- cgit v1.2.3