Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
function countPermissions() {
return Services.perms.all.length;
}
add_task(async function test() {
// sanitize before we start so we have a good baseline.
await Sanitizer.sanitize(["siteSettings"], { ignoreTimespan: false });
// Count how many permissions we start with - some are defaults that
// will not be sanitized.
let numAtStart = countPermissions();
// Add a permission entry
PermissionTestUtils.add(
"testing",
Services.perms.ALLOW_ACTION
);
// Sanity check
ok(
!!Services.perms.all.length,
"Permission manager should have elements, since we just added one"
);
// Clear it
await Sanitizer.sanitize(["siteSettings"], { ignoreTimespan: false });
// Make sure it's gone
is(
numAtStart,
countPermissions(),
"Permission manager should have the same count it started with"
);
});
// persist-data-on-shutdown exceptions too (user has explicitly asked to
// clear everything). The shutdown-clearing path keeps them.
add_task(async function siteSettingsManualClearRemovesShutdownException() {
let principal =
Services.scriptSecurityManager.createContentPrincipalFromOrigin(origin);
PermissionTestUtils.add(
origin,
"persist-data-on-shutdown",
Services.perms.ALLOW_ACTION
);
is(
Services.perms.testPermissionFromPrincipal(
principal,
"persist-data-on-shutdown"
),
Services.perms.ALLOW_ACTION,
"persist-data-on-shutdown set before manual clear"
);
// Default `Sanitizer.sanitize` call ⇒ clearHonoringExceptions is falsy ⇒
// siteSettings cleaner uses CLEAR_PERMISSIONS and wipes the exception.
await Sanitizer.sanitize(["siteSettings"], { ignoreTimespan: false });
is(
Services.perms.testPermissionFromPrincipal(
principal,
"persist-data-on-shutdown"
),
Services.perms.UNKNOWN_ACTION,
"Manual Clear Now → Site Settings wipes persist-data-on-shutdown"
);
});
// Conversely: a shutdown-context clear (clearHonoringExceptions=true) must
// preserve the persist-data-on-shutdown exception — that's literally what
// the exception is for.
add_task(async function siteSettingsShutdownClearKeepsShutdownException() {
let principal =
Services.scriptSecurityManager.createContentPrincipalFromOrigin(origin);
PermissionTestUtils.add(
origin,
"persist-data-on-shutdown",
Services.perms.ALLOW_ACTION
);
await Sanitizer.sanitize(["siteSettings"], {
ignoreTimespan: false,
progress: { clearHonoringExceptions: true },
});
is(
Services.perms.testPermissionFromPrincipal(
principal,
"persist-data-on-shutdown"
),
Services.perms.ALLOW_ACTION,
"Shutdown-context Site Settings clear preserves persist-data-on-shutdown"
);
PermissionTestUtils.remove(origin, "persist-data-on-shutdown");
});