diff options
Diffstat (limited to 'toolkit/mozapps/webextensions/test/browser/browser_uninstalling.js')
-rw-r--r-- | toolkit/mozapps/webextensions/test/browser/browser_uninstalling.js | 1098 |
1 files changed, 0 insertions, 1098 deletions
diff --git a/toolkit/mozapps/webextensions/test/browser/browser_uninstalling.js b/toolkit/mozapps/webextensions/test/browser/browser_uninstalling.js deleted file mode 100644 index a9329e496..000000000 --- a/toolkit/mozapps/webextensions/test/browser/browser_uninstalling.js +++ /dev/null @@ -1,1098 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Tests that searching for add-ons works correctly - -var gManagerWindow; -var gDocument; -var gCategoryUtilities; -var gProvider; - -function test() { - requestLongerTimeout(2); - waitForExplicitFinish(); - - gProvider = new MockProvider(); - - gProvider.createAddons([{ - id: "addon1@tests.mozilla.org", - name: "Uninstall needs restart", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_UNINSTALL - }, { - id: "addon2@tests.mozilla.org", - name: "Uninstall doesn't need restart 1", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon3@tests.mozilla.org", - name: "Uninstall doesn't need restart 2", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon4@tests.mozilla.org", - name: "Uninstall doesn't need restart 3", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon5@tests.mozilla.org", - name: "Uninstall doesn't need restart 4", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon6@tests.mozilla.org", - name: "Uninstall doesn't need restart 5", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon7@tests.mozilla.org", - name: "Uninstall doesn't need restart 6", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon8@tests.mozilla.org", - name: "Uninstall doesn't need restart 7", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }, { - id: "addon9@tests.mozilla.org", - name: "Uninstall doesn't need restart 8", - type: "extension", - operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE - }]); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gDocument = gManagerWindow.document; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - run_next_test(); - }); -} - -function end_test() { - close_manager(gManagerWindow, function() { - finish(); - }); -} - -function get_item_in_list(aId, aList) { - var item = aList.firstChild; - while (item) { - if ("mAddon" in item && item.mAddon.id == aId) { - aList.ensureElementIsVisible(item); - return item; - } - item = item.nextSibling; - } - return null; -} - -// Tests that uninstalling a normal add-on from the list view can be undone -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a restartless add-on from the list view can be undone -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(aAddon.isActive, "Add-on should be active"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a disabled restartless add-on from the list view can -// be undone and doesn't re-enable -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - aAddon.userDisabled = true; - - ok(!aAddon.isActive, "Add-on should be inactive"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!aAddon.isActive, "Add-on should be inactive"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - aAddon.userDisabled = false; - ok(aAddon.isActive, "Add-on should be active"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a normal add-on from the search view can be undone -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a restartless add-on from the search view can be undone -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(aAddon.isActive, "Add-on should be active"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a disabled restartless add-on from the search view can -// be undone and doesn't re-enable -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - aAddon.userDisabled = true; - - ok(!aAddon.isActive, "Add-on should be inactive"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!aAddon.isActive, "Add-on should be inactive"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - aAddon.userDisabled = false; - ok(aAddon.isActive, "Add-on should be active"); - - run_next_test(); - }); - }); -}); - -// Tests that uninstalling a normal add-on from the details view switches back -// to the list view and can be undone -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(get_current_view(gManagerWindow).id, "detail-view", "Should be in the detail view"); - - var button = gDocument.getElementById("detail-uninstall-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - // Force XBL to apply - item.clientTop; - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that uninstalling a restartless add-on from the details view switches -// back to the list view and can be undone -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(get_current_view(gManagerWindow).id, "detail-view", "Should be in the detail view"); - - var button = gDocument.getElementById("detail-uninstall-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - // Force XBL to apply - item.clientTop; - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(aAddon.isActive, "Add-on should be active"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that uninstalling a restartless add-on from the details view switches -// back to the list view and can be undone and doesn't re-enable -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - aAddon.userDisabled = true; - - ok(!aAddon.isActive, "Add-on should be inactive"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); - EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); - wait_for_view_load(gManagerWindow, function() { - is(get_current_view(gManagerWindow).id, "detail-view", "Should be in the detail view"); - - var button = gDocument.getElementById("detail-uninstall-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - // Force XBL to apply - item.clientTop; - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - ok(!aAddon.isActive, "Add-on should be inactive"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - aAddon.userDisabled = false; - ok(aAddon.isActive, "Add-on should be active"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that a normal add-on pending uninstall shows up in the list view -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - gCategoryUtilities.openType("plugin", function() { - is(gCategoryUtilities.selectedCategory, "plugin", "View should have changed to plugin"); - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that a normal add-on pending uninstall shows up in the search view -add_test(function() { - var ID = "addon1@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - ok(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL, "Add-on should require a restart to uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - gCategoryUtilities.openType("plugin", function() { - is(gCategoryUtilities.selectedCategory, "plugin", "View should have changed to plugin"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(!!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should be pending uninstall"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(!button.hidden, "Restart button should not be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - run_next_test(); - }); - }); - }); - }); -}); - -// Tests that switching away from the list view finalises the uninstall of -// multiple restartless add-ons -add_test(function() { - var ID = "addon2@tests.mozilla.org"; - var ID2 = "addon6@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - item = get_item_in_list(ID2, list); - isnot(item, null, "Should have found the add-on in the list"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - gCategoryUtilities.openType("plugin", function() { - is(gCategoryUtilities.selectedCategory, "plugin", "View should have changed to extension"); - - AddonManager.getAddonsByIDs([ID, ID2], function([aAddon, aAddon2]) { - is(aAddon, null, "Add-on should no longer be installed"); - is(aAddon2, null, "Second add-on should no longer be installed"); - - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - is(item, null, "Should not have found the add-on in the list"); - item = get_item_in_list(ID2, list); - is(item, null, "Should not have found the second add-on in the list"); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Tests that switching away from the search view finalises the uninstall of -// multiple restartless add-ons -add_test(function() { - var ID = "addon3@tests.mozilla.org"; - var ID2 = "addon7@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - item = get_item_in_list(ID2, list); - isnot(item, null, "Should have found the add-on in the list"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - gCategoryUtilities.openType("plugin", function() { - is(gCategoryUtilities.selectedCategory, "plugin", "View should have changed to extension"); - - AddonManager.getAddonsByIDs([ID, ID2], function([aAddon, aAddon2]) { - is(aAddon, null, "Add-on should no longer be installed"); - is(aAddon2, null, "Second add-on should no longer be installed"); - - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - var item = get_item_in_list(ID, list); - is(item, null, "Should not have found the add-on in the list"); - item = get_item_in_list(ID2, list); - is(item, null, "Should not have found the second add-on in the list"); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Tests that closing the manager from the list view finalises the uninstall of -// multiple restartless add-ons -add_test(function() { - var ID = "addon4@tests.mozilla.org"; - var ID2 = "addon8@tests.mozilla.org"; - var list = gDocument.getElementById("addon-list"); - - // Select the extensions category - gCategoryUtilities.openType("extension", function() { - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - item = get_item_in_list(ID2, list); - isnot(item, null, "Should have found the add-on in the list"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - close_manager(gManagerWindow, function() { - AddonManager.getAddonsByIDs([ID, ID2], function([aAddon, aAddon2]) { - is(aAddon, null, "Add-on should no longer be installed"); - is(aAddon2, null, "Second add-on should no longer be installed"); - - open_manager(null, function(aWindow) { - gManagerWindow = aWindow; - gDocument = gManagerWindow.document; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - var list = gDocument.getElementById("addon-list"); - - is(gCategoryUtilities.selectedCategory, "extension", "View should have changed to extension"); - - var item = get_item_in_list(ID, list); - is(item, null, "Should not have found the add-on in the list"); - item = get_item_in_list(ID2, list); - is(item, null, "Should not have found the second add-on in the list"); - - run_next_test(); - }); - }); - }); - }); - }); -}); - -// Tests that closing the manager from the search view finalises the uninstall -// of multiple restartless add-ons -add_test(function() { - var ID = "addon5@tests.mozilla.org"; - var ID2 = "addon9@tests.mozilla.org"; - var list = gDocument.getElementById("search-list"); - - var searchBox = gManagerWindow.document.getElementById("header-search"); - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - // Make sure to show local add-ons - EventUtils.synthesizeMouseAtCenter(gDocument.getElementById("search-filter-local"), { }, gManagerWindow); - - AddonManager.getAddonByID(ID, function(aAddon) { - ok(aAddon.isActive, "Add-on should be active"); - ok(!(aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_UNINSTALL), "Add-on should not require a restart to uninstall"); - ok(!(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL), "Add-on should not be pending uninstall"); - - var item = get_item_in_list(ID, list); - isnot(item, null, "Should have found the add-on in the list"); - - var button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - // Force XBL to apply - item.clientTop; - - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - - ok(aAddon.pendingOperations & AddonManager.PENDING_UNINSTALL, "Add-on should be pending uninstall"); - ok(!aAddon.isActive, "Add-on should be inactive"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "restart-btn"); - isnot(button, null, "Should have a restart button"); - ok(button.hidden, "Restart button should be hidden"); - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "undo-btn"); - isnot(button, null, "Should have an undo button"); - - item = get_item_in_list(ID2, list); - isnot(item, null, "Should have found the add-on in the list"); - - button = gDocument.getAnonymousElementByAttribute(item, "anonid", "remove-btn"); - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - EventUtils.synthesizeMouseAtCenter(button, { }, gManagerWindow); - - close_manager(gManagerWindow, function() { - AddonManager.getAddonsByIDs([ID, ID2], function([aAddon, aAddon2]) { - is(aAddon, null, "Add-on should no longer be installed"); - is(aAddon2, null, "Second add-on should no longer be installed"); - - open_manager("addons://list/extension", function(aWindow) { - gManagerWindow = aWindow; - gDocument = gManagerWindow.document; - gCategoryUtilities = new CategoryUtilities(gManagerWindow); - var list = gDocument.getElementById("search-list"); - var searchBox = gManagerWindow.document.getElementById("header-search"); - - searchBox.value = "Uninstall"; - - EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); - EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); - - wait_for_view_load(gManagerWindow, function() { - is(gCategoryUtilities.selectedCategory, "search", "View should have changed to search"); - - var item = get_item_in_list(ID, list); - is(item, null, "Should not have found the add-on in the list"); - item = get_item_in_list(ID2, list); - is(item, null, "Should not have found the second add-on in the list"); - - run_next_test(); - }); - }); - }); - }); - }); - }); -}); |