mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-07-21 03:48:43 +00:00
201 lines
5.4 KiB
JavaScript
201 lines
5.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
const KEY_PROFILEDIR = "ProfD";
|
|
const KEY_APPDIR = "XCurProcD";
|
|
const FILE_BLOCKLIST = "blocklist.xml";
|
|
|
|
const PREF_BLOCKLIST_ENABLED = "extensions.blocklist.enabled";
|
|
|
|
const OLD = do_get_file("data/test_overrideblocklist/old.xml");
|
|
const NEW = do_get_file("data/test_overrideblocklist/new.xml");
|
|
const ANCIENT = do_get_file("data/test_overrideblocklist/ancient.xml");
|
|
const OLD_TSTAMP = 1296046918000;
|
|
const NEW_TSTAMP = 1396046918000;
|
|
|
|
const gAppDir = FileUtils.getFile(KEY_APPDIR, []);
|
|
|
|
let oldAddon = {
|
|
id: "old@tests.mozilla.org",
|
|
version: 1
|
|
}
|
|
let newAddon = {
|
|
id: "new@tests.mozilla.org",
|
|
version: 1
|
|
}
|
|
let ancientAddon = {
|
|
id: "ancient@tests.mozilla.org",
|
|
version: 1
|
|
}
|
|
let invalidAddon = {
|
|
id: "invalid@tests.mozilla.org",
|
|
version: 1
|
|
}
|
|
|
|
function incrementAppVersion() {
|
|
gAppInfo.version = "" + (parseInt(gAppInfo.version) + 1);
|
|
}
|
|
|
|
function clearBlocklists() {
|
|
let blocklist = FileUtils.getFile(KEY_APPDIR, [FILE_BLOCKLIST]);
|
|
if (blocklist.exists())
|
|
blocklist.remove(true);
|
|
|
|
blocklist = FileUtils.getFile(KEY_PROFILEDIR, [FILE_BLOCKLIST]);
|
|
if (blocklist.exists())
|
|
blocklist.remove(true);
|
|
}
|
|
|
|
function reloadBlocklist() {
|
|
Services.prefs.setBoolPref(PREF_BLOCKLIST_ENABLED, false);
|
|
Services.prefs.setBoolPref(PREF_BLOCKLIST_ENABLED, true);
|
|
}
|
|
|
|
function copyToApp(file) {
|
|
file.clone().copyTo(gAppDir, FILE_BLOCKLIST);
|
|
}
|
|
|
|
function copyToProfile(file, tstamp) {
|
|
file = file.clone();
|
|
file.copyTo(gProfD, FILE_BLOCKLIST);
|
|
file = gProfD.clone();
|
|
file.append(FILE_BLOCKLIST);
|
|
file.lastModifiedTime = tstamp;
|
|
}
|
|
|
|
function run_test() {
|
|
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
|
|
|
|
let appBlocklist = FileUtils.getFile(KEY_APPDIR, [FILE_BLOCKLIST]);
|
|
if (appBlocklist.exists()) {
|
|
try {
|
|
appBlocklist.moveTo(gAppDir, "blocklist.old");
|
|
}
|
|
catch (e) {
|
|
todo(false, "Aborting test due to unmovable blocklist file: " + e);
|
|
return;
|
|
}
|
|
do_register_cleanup(function() {
|
|
clearBlocklists();
|
|
appBlocklist.moveTo(gAppDir, FILE_BLOCKLIST);
|
|
});
|
|
}
|
|
|
|
run_next_test();
|
|
}
|
|
|
|
// On first run whataver is in the app dir should get copied to the profile
|
|
add_test(function test_copy() {
|
|
clearBlocklists();
|
|
copyToApp(OLD);
|
|
|
|
incrementAppVersion();
|
|
startupManager();
|
|
|
|
reloadBlocklist();
|
|
let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"].
|
|
getService(AM_Ci.nsIBlocklistService);
|
|
do_check_false(blocklist.isAddonBlocklisted(invalidAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(ancientAddon));
|
|
do_check_true(blocklist.isAddonBlocklisted(oldAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(newAddon));
|
|
|
|
shutdownManager();
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
// An ancient blocklist should be ignored
|
|
add_test(function test_ancient() {
|
|
clearBlocklists();
|
|
copyToApp(ANCIENT);
|
|
copyToProfile(OLD, OLD_TSTAMP);
|
|
|
|
incrementAppVersion();
|
|
startupManager();
|
|
|
|
reloadBlocklist();
|
|
let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"].
|
|
getService(AM_Ci.nsIBlocklistService);
|
|
do_check_false(blocklist.isAddonBlocklisted(invalidAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(ancientAddon));
|
|
do_check_true(blocklist.isAddonBlocklisted(oldAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(newAddon));
|
|
|
|
shutdownManager();
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
// A new blocklist should override an old blocklist
|
|
add_test(function test_override() {
|
|
clearBlocklists();
|
|
copyToApp(NEW);
|
|
copyToProfile(OLD, OLD_TSTAMP);
|
|
|
|
incrementAppVersion();
|
|
startupManager();
|
|
|
|
reloadBlocklist();
|
|
let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"].
|
|
getService(AM_Ci.nsIBlocklistService);
|
|
do_check_false(blocklist.isAddonBlocklisted(invalidAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(ancientAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(oldAddon));
|
|
do_check_true(blocklist.isAddonBlocklisted(newAddon));
|
|
|
|
shutdownManager();
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
// An old blocklist shouldn't override a new blocklist
|
|
add_test(function test_retain() {
|
|
clearBlocklists();
|
|
copyToApp(OLD);
|
|
copyToProfile(NEW, NEW_TSTAMP);
|
|
|
|
incrementAppVersion();
|
|
startupManager();
|
|
|
|
reloadBlocklist();
|
|
let blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"].
|
|
getService(AM_Ci.nsIBlocklistService);
|
|
do_check_false(blocklist.isAddonBlocklisted(invalidAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(ancientAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(oldAddon));
|
|
do_check_true(blocklist.isAddonBlocklisted(newAddon));
|
|
|
|
shutdownManager();
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
// A missing blocklist in the profile should still load an app-shipped blocklist
|
|
add_test(function test_missing() {
|
|
clearBlocklists();
|
|
copyToApp(OLD);
|
|
copyToProfile(NEW, NEW_TSTAMP);
|
|
|
|
incrementAppVersion();
|
|
startupManager();
|
|
shutdownManager();
|
|
|
|
let blocklist = FileUtils.getFile(KEY_PROFILEDIR, [FILE_BLOCKLIST]);
|
|
blocklist.remove(true);
|
|
startupManager(false);
|
|
|
|
reloadBlocklist();
|
|
blocklist = AM_Cc["@mozilla.org/extensions/blocklist;1"].
|
|
getService(AM_Ci.nsIBlocklistService);
|
|
do_check_false(blocklist.isAddonBlocklisted(invalidAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(ancientAddon));
|
|
do_check_true(blocklist.isAddonBlocklisted(oldAddon));
|
|
do_check_false(blocklist.isAddonBlocklisted(newAddon));
|
|
|
|
shutdownManager();
|
|
|
|
run_next_test();
|
|
});
|