diff options
Diffstat (limited to 'toolkit/mozapps/webextensions/test/browser/browser_bug562992.js')
-rw-r--r-- | toolkit/mozapps/webextensions/test/browser/browser_bug562992.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/toolkit/mozapps/webextensions/test/browser/browser_bug562992.js b/toolkit/mozapps/webextensions/test/browser/browser_bug562992.js new file mode 100644 index 000000000..1cd4d90cd --- /dev/null +++ b/toolkit/mozapps/webextensions/test/browser/browser_bug562992.js @@ -0,0 +1,70 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * This test ensures that when the extension manager UI is open and a + * restartless extension is installed from the web, its correct name appears + * when the download and installation complete. See bug 562992. + */ + +var gManagerWindow; +var gProvider; +var gInstall; + +const EXTENSION_NAME = "Wunderbar"; + +function test() { + waitForExplicitFinish(); + + gProvider = new MockProvider(); + + open_manager("addons://list/extension", function (aWindow) { + gManagerWindow = aWindow; + run_next_test(); + }); +} + +function end_test() { + close_manager(gManagerWindow, function () { + finish(); + }); +} + +// Create a MockInstall with a MockAddon payload and add it to the provider, +// causing the onNewInstall event to fire, which in turn will cause a new +// "installing" item to appear in the list of extensions. +add_test(function () { + let addon = new MockAddon(undefined, EXTENSION_NAME, "extension", true); + gInstall = new MockInstall(undefined, undefined, addon); + gInstall.addTestListener({ + onNewInstall: run_next_test + }); + gProvider.addInstall(gInstall); +}); + +// Finish the install, which will cause the "installing" item to be converted +// to an "installed" item, which should have the correct add-on name. +add_test(function () { + gInstall.addTestListener({ + onInstallEnded: function () { + let list = gManagerWindow.document.getElementById("addon-list"); + + // To help prevent future breakage, don't assume the item is the only one + // in the list, or that it's first in the list. Find it by name. + for (let i = 0; i < list.itemCount; i++) { + let item = list.getItemAtIndex(i); + if (item.getAttribute("name") === EXTENSION_NAME) { + ok(true, "Item with correct name found"); + run_next_test(); + return; + } + } + ok(false, "Item with correct name was not found"); + run_next_test(); + } + }); + gInstall.install(); +}); |