const scriptSecMan = Services.scriptSecurityManager;
// SystemPrincipal checks
let systemPrincipal = scriptSecMan.getSystemPrincipal();
Assert.ok(systemPrincipal.isSystemPrincipal);
Assert.equal(systemPrincipal.origin,
"[System Principal]");
Assert.equal(systemPrincipal.originNoSuffix,
"[System Principal]");
Assert.equal(systemPrincipal.siteOrigin,
"[System Principal]");
Assert.equal(systemPrincipal.siteOriginNoSuffix,
"[System Principal]");
// ContentPrincipal checks
let uri1 = Services.io.newURI(
"http://example.com");
let prinicpal1 = scriptSecMan.createContentPrincipal(uri1, {
userContextId: 11,
});
Assert.ok(prinicpal1.isContentPrincipal);
Assert.equal(prinicpal1.origin,
"http://example.com^userContextId=11");
Assert.equal(prinicpal1.originNoSuffix,
"http://example.com");
Assert.equal(prinicpal1.siteOrigin,
"http://example.com^userContextId=11");
Assert.equal(prinicpal1.siteOriginNoSuffix,
"http://example.com");
let uri2 = Services.io.newURI(
"http://test1.example.com");
let prinicpal2 = scriptSecMan.createContentPrincipal(uri2, {
userContextId: 22,
});
Assert.ok(prinicpal2.isContentPrincipal);
Assert.equal(prinicpal2.origin,
"http://test1.example.com^userContextId=22");
Assert.equal(prinicpal2.originNoSuffix,
"http://test1.example.com");
Assert.equal(prinicpal2.siteOrigin,
"http://example.com^userContextId=22");
Assert.equal(prinicpal2.siteOriginNoSuffix,
"http://example.com");
let uri3 = Services.io.newURI(
"https://test1.test2.example.com:5555");
let prinicpal3 = scriptSecMan.createContentPrincipal(uri3, {
userContextId: 5555,
});
Assert.ok(prinicpal3.isContentPrincipal);
Assert.equal(
prinicpal3.origin,
"https://test1.test2.example.com:5555^userContextId=5555"
);
Assert.equal(prinicpal3.originNoSuffix,
"https://test1.test2.example.com:5555");
Assert.equal(prinicpal3.siteOrigin,
"https://example.com^userContextId=5555");
Assert.equal(prinicpal3.siteOriginNoSuffix,
"https://example.com");
let uri4 = Services.io.newURI(
"https://.example.com:6666");
let prinicpal4 = scriptSecMan.createContentPrincipal(uri4, {
userContextId: 6666,
});
Assert.ok(prinicpal4.isContentPrincipal);
Assert.equal(prinicpal4.origin,
"https://.example.com:6666^userContextId=6666");
Assert.equal(prinicpal4.originNoSuffix,
"https://.example.com:6666");
Assert.equal(prinicpal4.siteOrigin,
"https://.example.com^userContextId=6666");
Assert.equal(prinicpal4.siteOriginNoSuffix,
"https://.example.com");
let aboutURI = Services.io.newURI(
"about:preferences");
let aboutPrincipal = scriptSecMan.createContentPrincipal(aboutURI, {
userContextId: 66,
});
Assert.ok(aboutPrincipal.isContentPrincipal);
Assert.equal(aboutPrincipal.origin,
"about:preferences^userContextId=66");
Assert.equal(aboutPrincipal.originNoSuffix,
"about:preferences");
Assert.equal(aboutPrincipal.siteOrigin,
"about:preferences^userContextId=66");
Assert.equal(aboutPrincipal.siteOriginNoSuffix,
"about:preferences");
let viewSourceURI = Services.io.newURI(
"view-source:https://test1.test2.example.com"
);
let viewSourcePrincipal = scriptSecMan.createContentPrincipal(viewSourceURI, {
userContextId: 101,
});
Assert.ok(viewSourcePrincipal.isContentPrincipal);
Assert.ok(viewSourcePrincipal.schemeIs(
"view-source"));
Assert.equal(
viewSourcePrincipal.origin,
"https://test1.test2.example.com^userContextId=101"
);
Assert.equal(
viewSourcePrincipal.originNoSuffix,
"https://test1.test2.example.com"
);
Assert.equal(
viewSourcePrincipal.siteOrigin,
"https://example.com^userContextId=101"
);
Assert.equal(viewSourcePrincipal.siteOriginNoSuffix,
"https://example.com");
let mozExtensionURI = Services.io.newURI(
"moz-extension://924f966d-c93b-4fbf-968a-16608461663c/meh.txt"
);
let mozExtensionPrincipal = scriptSecMan.createContentPrincipal(
mozExtensionURI,
{
userContextId: 102,
}
);
Assert.ok(mozExtensionPrincipal.isContentPrincipal);
Assert.ok(mozExtensionPrincipal.schemeIs(
"moz-extension"));
Assert.equal(
mozExtensionPrincipal.origin,
"moz-extension://924f966d-c93b-4fbf-968a-16608461663c^userContextId=102"
);
Assert.equal(
mozExtensionPrincipal.originNoSuffix,
"moz-extension://924f966d-c93b-4fbf-968a-16608461663c"
);
Assert.equal(
mozExtensionPrincipal.siteOrigin,
"moz-extension://924f966d-c93b-4fbf-968a-16608461663c^userContextId=102"
);
Assert.equal(
mozExtensionPrincipal.siteOriginNoSuffix,
"moz-extension://924f966d-c93b-4fbf-968a-16608461663c"
);
let localhostURI = Services.io.newURI(
" http://localhost:44203");
let localhostPrincipal = scriptSecMan.createContentPrincipal(localhostURI, {
userContextId: 144,
});
Assert.ok(localhostPrincipal.isContentPrincipal);
Assert.ok(localhostPrincipal.schemeIs(
"http"));
Assert.equal(
localhostPrincipal.origin,
"http://localhost:44203^userContextId=144"
);
Assert.equal(localhostPrincipal.originNoSuffix,
"http://localhost:44203");
Assert.equal(
localhostPrincipal.siteOrigin,
"http://localhost^userContextId=144"
);
Assert.equal(localhostPrincipal.siteOriginNoSuffix,
"http://localhost");
// NullPrincipal checks
let nullPrincipal = scriptSecMan.createNullPrincipal({ userContextId: 33 });
Assert.ok(nullPrincipal.isNullPrincipal);
Assert.ok(nullPrincipal.origin.includes(
"moz-nullprincipal"));
Assert.ok(nullPrincipal.origin.includes(
"^userContextId=33"));
Assert.ok(nullPrincipal.originNoSuffix.includes(
"moz-nullprincipal"));
Assert.ok(!nullPrincipal.originNoSuffix.includes(
"^userContextId=33"));
Assert.ok(nullPrincipal.siteOrigin.includes(
"moz-nullprincipal"));
Assert.ok(nullPrincipal.siteOrigin.includes(
"^userContextId=33"));
Assert.ok(nullPrincipal.siteOriginNoSuffix.includes(
"moz-nullprincipal"));
Assert.ok(!nullPrincipal.siteOriginNoSuffix.includes(
"^userContextId=33"));
// ExpandedPrincipal checks
let expandedPrincipal = Cu.getObjectPrincipal(Cu.Sandbox([prinicpal2]));
Assert.ok(expandedPrincipal.isExpandedPrincipal);
Assert.equal(
expandedPrincipal.origin,
"[Expanded Principal [http://test1.example.com^userContextId=22]]^userContextId=22"
);
Assert.equal(
expandedPrincipal.originNoSuffix,
"[Expanded Principal [http://test1.example.com^userContextId=22]]"
);
Assert.equal(
expandedPrincipal.siteOrigin,
"[Expanded Principal [http://test1.example.com^userContextId=22]]^userContextId=22"
);
Assert.equal(
expandedPrincipal.siteOriginNoSuffix,
"[Expanded Principal [http://test1.example.com^userContextId=22]]"
);
let ipv6URI = Services.io.newURI(
"https://[2001:db8::ff00:42:8329]:123");
let ipv6Principal = scriptSecMan.createContentPrincipal(ipv6URI, {
userContextId: 6,
});
Assert.ok(ipv6Principal.isContentPrincipal);
Assert.equal(
ipv6Principal.origin,
"https://[2001:db8::ff00:42:8329]:123^userContextId=6"
);
Assert.equal(
ipv6Principal.originNoSuffix,
"https://[2001:db8::ff00:42:8329]:123"
);
Assert.equal(
ipv6Principal.siteOrigin,
"https://[2001:db8::ff00:42:8329]^userContextId=6"
);
Assert.equal(
ipv6Principal.siteOriginNoSuffix,
"https://[2001:db8::ff00:42:8329]"
);
// Checks for non-http URIs not using the TLD service.
let resourceURI = Services.io.newURI(
"resource://test.example.com/test");
let resourcePrincipal = scriptSecMan.createContentPrincipal(resourceURI, {});
Assert.equal(resourcePrincipal.siteOrigin,
"resource://test.example.com");