summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/webextensions/test/browser/browser_bug562992.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/webextensions/test/browser/browser_bug562992.js')
-rw-r--r--toolkit/mozapps/webextensions/test/browser/browser_bug562992.js70
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();
+});