109 lines
3 KiB
JavaScript
109 lines
3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const TOPIC_BROWSERGLUE_TEST = "browser-glue-test";
|
|
const TOPICDATA_BROWSERGLUE_TEST = "force-ui-migration";
|
|
const UI_VERSION = 138;
|
|
|
|
const gBrowserGlue = Cc["@mozilla.org/browser/browserglue;1"].getService(
|
|
Ci.nsIObserver
|
|
);
|
|
|
|
function checkConstraint(state, origin, type) {
|
|
Assert.equal(
|
|
state,
|
|
Services.perms.testExactPermissionFromPrincipal(
|
|
Services.scriptSecurityManager.createContentPrincipalFromOrigin(origin),
|
|
type
|
|
),
|
|
`${origin} of type ${type} was set to: ${state}`
|
|
);
|
|
}
|
|
|
|
// Test to check if migration resets default permissions properly.
|
|
add_task(async function test_resettingDefaults() {
|
|
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;
|
|
|
|
// Origin infos for default permissions in the format [origin, type].
|
|
let originInfos = [
|
|
["https://www.mozilla.org", "uitour"],
|
|
["https://support.mozilla.org", "uitour"],
|
|
["about:home", "uitour"],
|
|
["about:newtab", "uitour"],
|
|
["https://addons.mozilla.org", "install"],
|
|
["https://support.mozilla.org", "remote-troubleshooting"],
|
|
["about:welcome", "autoplay-media"],
|
|
];
|
|
|
|
// Override all default permissions.
|
|
for (let originInfo of originInfos) {
|
|
pm.addFromPrincipal(
|
|
Services.scriptSecurityManager.createContentPrincipalFromOrigin(
|
|
originInfo[0]
|
|
),
|
|
originInfo[1],
|
|
pm.UNKNOWN_ACTION
|
|
);
|
|
}
|
|
|
|
// Check if the default permissions were set to UNKNOWN_ACTION.
|
|
for (let originInfo of originInfos) {
|
|
checkConstraint(pm.UNKNOWN_ACTION, originInfo[0], originInfo[1]);
|
|
}
|
|
|
|
// Simulate a migration.
|
|
gBrowserGlue.observe(
|
|
null,
|
|
TOPIC_BROWSERGLUE_TEST,
|
|
TOPICDATA_BROWSERGLUE_TEST
|
|
);
|
|
|
|
// Check if the default permissions were reset.
|
|
for (let originInfo of originInfos) {
|
|
checkConstraint(pm.ALLOW_ACTION, originInfo[0], originInfo[1]);
|
|
}
|
|
});
|
|
|
|
// Test to check if user set permissions don't get
|
|
// reset during migration.
|
|
add_task(async function test_resettingDenyAction() {
|
|
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;
|
|
// Reset one default perm to DENY_ACTION.
|
|
const origin = "https://www.mozilla.org";
|
|
const type = "uitour";
|
|
|
|
pm.addFromPrincipal(
|
|
Services.scriptSecurityManager.createContentPrincipalFromOrigin(origin),
|
|
type,
|
|
pm.DENY_ACTION
|
|
);
|
|
|
|
// Check if permission was set correctly.
|
|
checkConstraint(pm.DENY_ACTION, origin, type);
|
|
|
|
// Simulate a migration.
|
|
gBrowserGlue.observe(
|
|
null,
|
|
TOPIC_BROWSERGLUE_TEST,
|
|
TOPICDATA_BROWSERGLUE_TEST
|
|
);
|
|
|
|
// We expect the permission to remain unchanged.
|
|
checkConstraint(pm.DENY_ACTION, origin, type);
|
|
});
|