mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
189 lines
6.0 KiB
JavaScript
189 lines
6.0 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
// Tests that upgrading bootstrapped add-ons behaves correctly while the
|
|
// manager is open
|
|
|
|
var gManagerWindow;
|
|
var gCategoryUtilities;
|
|
|
|
function test() {
|
|
waitForExplicitFinish();
|
|
|
|
open_manager("addons://list/extension", function(aWindow) {
|
|
gManagerWindow = aWindow;
|
|
gCategoryUtilities = new CategoryUtilities(gManagerWindow);
|
|
run_next_test();
|
|
});
|
|
}
|
|
|
|
function end_test() {
|
|
// Test generates an available installs so just cancel it
|
|
AddonManager.getAllInstalls(function(aInstalls) {
|
|
is(aInstalls.length, 1, "Should be one available install");
|
|
aInstalls[0].cancel();
|
|
|
|
close_manager(gManagerWindow, finish);
|
|
});
|
|
}
|
|
|
|
function get_list_item_count() {
|
|
return get_test_items_in_list(gManagerWindow).length;
|
|
}
|
|
|
|
function get_node(parent, anonid) {
|
|
return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid);
|
|
}
|
|
|
|
function get_class_node(parent, cls) {
|
|
return parent.ownerDocument.getAnonymousElementByAttribute(parent, "class", cls);
|
|
}
|
|
|
|
function install_addon(aXpi, aCallback) {
|
|
AddonManager.getInstallForURL(TESTROOT + "addons/" + aXpi + ".xpi",
|
|
function(aInstall) {
|
|
aInstall.addListener({
|
|
onInstallEnded: function(aInstall) {
|
|
executeSoon(aCallback);
|
|
}
|
|
});
|
|
aInstall.install();
|
|
}, "application/x-xpinstall");
|
|
}
|
|
|
|
function check_addon(aAddon, version) {
|
|
is(get_list_item_count(), 1, "Should be one item in the list");
|
|
is(aAddon.version, version, "Add-on should have the right version");
|
|
|
|
let item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org");
|
|
ok(!!item, "Should see the add-on in the list");
|
|
|
|
// Force XBL to apply
|
|
item.clientTop;
|
|
|
|
is(get_node(item, "version").value, version, "Version should be correct");
|
|
|
|
if (aAddon.userDisabled)
|
|
is_element_visible(get_class_node(item, "disabled-postfix"), "Disabled postfix should be hidden");
|
|
else
|
|
is_element_hidden(get_class_node(item, "disabled-postfix"), "Disabled postfix should be hidden");
|
|
}
|
|
|
|
// Install version 1 then upgrade to version 2 with the manager open
|
|
add_test(function() {
|
|
install_addon("browser_bug596336_1", function() {
|
|
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
|
|
check_addon(aAddon, "1.0");
|
|
ok(!aAddon.userDisabled, "Add-on should not be disabled");
|
|
|
|
install_addon("browser_bug596336_2", function() {
|
|
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
|
|
check_addon(aAddon, "2.0");
|
|
ok(!aAddon.userDisabled, "Add-on should not be disabled");
|
|
|
|
aAddon.uninstall();
|
|
|
|
is(get_list_item_count(), 0, "Should be no items in the list");
|
|
|
|
run_next_test();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
// Install version 1 mark it as disabled then upgrade to version 2 with the
|
|
// manager open
|
|
add_test(function() {
|
|
install_addon("browser_bug596336_1", function() {
|
|
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
|
|
aAddon.userDisabled = true;
|
|
check_addon(aAddon, "1.0");
|
|
ok(aAddon.userDisabled, "Add-on should be disabled");
|
|
|
|
install_addon("browser_bug596336_2", function() {
|
|
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
|
|
check_addon(aAddon, "2.0");
|
|
ok(aAddon.userDisabled, "Add-on should be disabled");
|
|
|
|
aAddon.uninstall();
|
|
|
|
is(get_list_item_count(), 0, "Should be no items in the list");
|
|
|
|
run_next_test();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
// Install version 1 click the remove button and then upgrade to version 2 with
|
|
// the manager open
|
|
add_test(function() {
|
|
install_addon("browser_bug596336_1", function() {
|
|
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
|
|
check_addon(aAddon, "1.0");
|
|
ok(!aAddon.userDisabled, "Add-on should not be disabled");
|
|
|
|
let item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org");
|
|
EventUtils.synthesizeMouseAtCenter(get_node(item, "remove-btn"), { }, gManagerWindow);
|
|
|
|
// Force XBL to apply
|
|
item.clientTop;
|
|
|
|
ok(aAddon.userDisabled, "Add-on should be disabled");
|
|
ok(!aAddon.pendingUninstall, "Add-on should not be pending uninstall");
|
|
is_element_visible(get_class_node(item, "pending"), "Pending message should be visible");
|
|
|
|
install_addon("browser_bug596336_2", function() {
|
|
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
|
|
check_addon(aAddon, "2.0");
|
|
ok(!aAddon.userDisabled, "Add-on should not be disabled");
|
|
|
|
aAddon.uninstall();
|
|
|
|
is(get_list_item_count(), 0, "Should be no items in the list");
|
|
|
|
run_next_test();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
// Install version 1, disable it, click the remove button and then upgrade to
|
|
// version 2 with the manager open
|
|
add_test(function() {
|
|
install_addon("browser_bug596336_1", function() {
|
|
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
|
|
aAddon.userDisabled = true;
|
|
check_addon(aAddon, "1.0");
|
|
ok(aAddon.userDisabled, "Add-on should be disabled");
|
|
|
|
let item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org");
|
|
EventUtils.synthesizeMouseAtCenter(get_node(item, "remove-btn"), { }, gManagerWindow);
|
|
|
|
// Force XBL to apply
|
|
item.clientTop;
|
|
|
|
ok(aAddon.userDisabled, "Add-on should be disabled");
|
|
ok(!aAddon.pendingUninstall, "Add-on should not be pending uninstall");
|
|
is_element_visible(get_class_node(item, "pending"), "Pending message should be visible");
|
|
|
|
install_addon("browser_bug596336_2", function() {
|
|
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
|
|
check_addon(aAddon, "2.0");
|
|
ok(aAddon.userDisabled, "Add-on should be disabled");
|
|
|
|
aAddon.uninstall();
|
|
|
|
is(get_list_item_count(), 0, "Should be no items in the list");
|
|
|
|
run_next_test();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|