mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-19 23:07:33 +09:00
Import Tycho's Add-on Manager
This commit is contained in:
parent
d07bf4bba2
commit
a122115666
875 changed files with 111377 additions and 0 deletions
|
|
@ -0,0 +1,200 @@
|
|||
/* 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();
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue