summaryrefslogtreecommitdiffstats
path: root/browser/components/originattributes/test/browser/browser_firstPartyIsolation_js_uri.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/originattributes/test/browser/browser_firstPartyIsolation_js_uri.js')
-rw-r--r--browser/components/originattributes/test/browser/browser_firstPartyIsolation_js_uri.js90
1 files changed, 90 insertions, 0 deletions
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();
+});