Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: appname != 'thunderbird'
- Manifest: toolkit/components/contextualidentity/tests/unit/xpcshell.toml
"use strict";
const profileDir = do_get_profile();
const { ContextualIdentityService } = ChromeUtils.importESModule(
"moz-src:///toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs"
);
let gCounter = 0;
function freshService() {
let path = PathUtils.join(profileDir.path, `test-policy-${gCounter++}.json`);
return {
cis: ContextualIdentityService.createNewInstanceForTesting(path),
path,
};
}
// createForPolicy creates non-public containers with policy and policyId fields.
add_task(function policyContainers() {
let { cis } = freshService();
let identity = cis.createForPolicy("corp");
ok(identity.policy, "Identity is marked as policy-managed");
equal(identity.policyId, "corp", "Identity has the correct policyId");
equal(identity.name, "corp");
ok(!identity.public, "Policy container is not public");
cis.create("Personal", "fingerprint", "purple");
let policyIdentities = cis.getPolicyIdentities();
equal(policyIdentities.length, 1, "Only the policy container is returned");
equal(policyIdentities[0].policyId, "corp");
let allPublic = cis.getPublicIdentities();
ok(
!allPublic.some(i => i.policy),
"Policy containers do not appear in public identities"
);
});
// createForPolicy containers persist and survive reload.
add_task(async function policyContainerPersistence() {
let { cis, path } = freshService();
cis.createForPolicy("work");
await cis._saver.finalize();
let reloaded = ContextualIdentityService.createNewInstanceForTesting(path);
let policyIdentities = reloaded.getPolicyIdentities();
equal(policyIdentities.length, 1, "Policy container persisted");
equal(policyIdentities[0].policyId, "work");
equal(policyIdentities[0].policy, true);
equal(policyIdentities[0].name, "work");
});