Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
const TOPIC_BROWSERGLUE_TEST = "browser-glue-test";
const TOPICDATA_BROWSERGLUE_TEST = "force-ui-migration";
const UI_VERSION = 147;
const CONTENT_BLOCKER_PERM_TYPES = [
"other",
"script",
"image",
"stylesheet",
"object",
"document",
"subdocument",
"refresh",
"xbl",
"ping",
"xmlhttprequest",
"objectsubrequest",
"dtd",
"font",
"websocket",
"csp_report",
"xslt",
"beacon",
"fetch",
"manifest",
"speculative",
];
const gBrowserGlue = Cc["@mozilla.org/browser/browserglue;1"].getService(
Ci.nsIObserver
);
// Test to check if migration resets default permissions properly.
add_task(async function test_removeContentBlockerPerms() {
registerCleanupFunction(() => {
Services.prefs.clearUserPref("browser.migration.version");
Services.perms.removeAll();
});
Services.perms.removeAll();
Services.prefs.setIntPref("browser.migration.version", UI_VERSION);
let pm = Services.perms;
// Add a permission for each nsContentBlocker type
CONTENT_BLOCKER_PERM_TYPES.forEach(type => {
pm.addFromPrincipal(
Services.scriptSecurityManager.createContentPrincipalFromOrigin(
),
type,
pm.ALLOW_ACTION
);
});
// Check all permissions were added
let remaining_perms = pm.getAllByTypes(CONTENT_BLOCKER_PERM_TYPES);
Assert.equal(
remaining_perms.length,
CONTENT_BLOCKER_PERM_TYPES.length,
`Number permissions added vs. expected`
);
// Check default permissions are present
let nonCBPerms = pm.all.length - CONTENT_BLOCKER_PERM_TYPES.length;
Assert.greater(
nonCBPerms,
0,
"Check at least one non-content blocker permission is present"
);
// Simulate a migration.
gBrowserGlue.observe(
null,
TOPIC_BROWSERGLUE_TEST,
TOPICDATA_BROWSERGLUE_TEST
);
// Check all permissions were deleted
remaining_perms = pm.getAllByTypes(CONTENT_BLOCKER_PERM_TYPES);
Assert.equal(
remaining_perms.length,
0,
`All content blocker permissions should be deleted`
);
// Check rest of permissions were not deleted
Assert.equal(
pm.all.length,
nonCBPerms,
"Default permissions should not be deleted"
);
});