summaryrefslogtreecommitdiff
path: root/toolkit/mozapps/extensions/test/browser/browser_newaddon.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/extensions/test/browser/browser_newaddon.js')
-rw-r--r--toolkit/mozapps/extensions/test/browser/browser_newaddon.js186
1 files changed, 186 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/browser/browser_newaddon.js b/toolkit/mozapps/extensions/test/browser/browser_newaddon.js
new file mode 100644
index 0000000000..a460d79d8d
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/browser/browser_newaddon.js
@@ -0,0 +1,186 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+// Tests the new add-on tab
+
+var gProvider;
+
+function loadPage(aURL, aCallback) {
+ gBrowser.selectedTab = gBrowser.addTab();
+ gBrowser.loadURI(aURL);
+ gBrowser.addEventListener("AddonDisplayed", function(event) {
+ gBrowser.removeEventListener("AddonDisplayed", arguments.callee, false);
+
+ aCallback(gBrowser.selectedTab);
+ });
+}
+
+function test() {
+ waitForExplicitFinish();
+
+ gProvider = new MockProvider();
+
+ gProvider.createAddons([{
+ id: "addon1@tests.mozilla.org",
+ name: "Test 1",
+ version: "5.3",
+ userDisabled: true,
+ operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE
+ }, {
+ id: "addon2@tests.mozilla.org",
+ name: "Test 2",
+ version: "7.1",
+ creator: "Dave Townsend",
+ userDisabled: true
+ }]);
+
+ run_next_test();
+}
+
+function end_test() {
+ finish();
+}
+
+// Tests that ignoring a restartless add-on works
+add_test(function() {
+ loadPage("about:newaddon?id=addon1@tests.mozilla.org", function(aTab) {
+ var doc = aTab.linkedBrowser.contentDocument;
+ is(doc.getElementById("name").value, "Test 1 5.3", "Should say the right name");
+
+ is_element_hidden(doc.getElementById("author"), "Should be no author displayed");
+ is_element_hidden(doc.getElementById("location"), "Should be no location displayed");
+
+ is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
+ "Should be showing the right buttons");
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ is(gBrowser.tabs.length, 1, "Page should have been closed");
+
+ AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
+ ok(aAddon.userDisabled, "Add-on should not have been enabled");
+
+ ok(!aAddon.isActive, "Add-on should not be running");
+
+ run_next_test();
+ });
+ });
+});
+
+// Tests that enabling a restartless add-on works
+add_test(function() {
+ loadPage("about:newaddon?id=addon1@tests.mozilla.org", function(aTab) {
+ var doc = aTab.linkedBrowser.contentDocument;
+ is(doc.getElementById("name").value, "Test 1 5.3", "Should say the right name");
+
+ is_element_hidden(doc.getElementById("author"), "Should be no author displayed");
+ is_element_hidden(doc.getElementById("location"), "Should be no location displayed");
+
+ is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
+ "Should be showing the right buttons");
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ is(gBrowser.tabs.length, 1, "Page should have been closed");
+
+ AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
+ ok(!aAddon.userDisabled, "Add-on should now have been enabled");
+
+ ok(aAddon.isActive, "Add-on should now be running");
+
+ run_next_test();
+ });
+ });
+});
+
+// Tests that ignoring a non-restartless add-on works
+add_test(function() {
+ loadPage("about:newaddon?id=addon2@tests.mozilla.org", function(aTab) {
+ var doc = aTab.linkedBrowser.contentDocument;
+ is(doc.getElementById("name").value, "Test 2 7.1", "Should say the right name");
+
+ is_element_visible(doc.getElementById("author"), "Should be an author displayed");
+ is(doc.getElementById("author").value, "By Dave Townsend", "Should have the right author");
+ is_element_hidden(doc.getElementById("location"), "Should be no location displayed");
+
+ is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
+ "Should be showing the right buttons");
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ is(gBrowser.tabs.length, 1, "Page should have been closed");
+
+ AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) {
+ ok(aAddon.userDisabled, "Add-on should not have been enabled");
+
+ ok(!aAddon.isActive, "Add-on should not be running");
+
+ run_next_test();
+ });
+ });
+});
+
+// Tests that enabling a non-restartless add-on works
+add_test(function() {
+ loadPage("about:newaddon?id=addon2@tests.mozilla.org", function(aTab) {
+ var doc = aTab.linkedBrowser.contentDocument;
+ is(doc.getElementById("name").value, "Test 2 7.1", "Should say the right name");
+
+ is_element_visible(doc.getElementById("author"), "Should be an author displayed");
+ is(doc.getElementById("author").value, "By Dave Townsend", "Should have the right author");
+ is_element_hidden(doc.getElementById("location"), "Should be no location displayed");
+
+ is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
+ "Should be showing the right buttons");
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("restartPanel"),
+ "Should be showing the right buttons");
+
+ AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) {
+ ok(!aAddon.userDisabled, "Add-on should now have been enabled");
+
+ ok(!aAddon.isActive, "Add-on should not be running");
+
+ ok(doc.getElementById("allow").disabled, "Should have disabled checkbox");
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("cancel-button"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
+ "Should be showing the right buttons");
+
+ ok(!doc.getElementById("allow").disabled, "Should have enabled checkbox");
+
+ ok(aAddon.userDisabled, "Add-on should not have been enabled");
+
+ ok(!aAddon.isActive, "Add-on should not be running");
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
+ {}, aTab.linkedBrowser.contentWindow);
+
+ ok(aAddon.userDisabled, "Add-on should not have been enabled");
+
+ ok(!aAddon.isActive, "Add-on should not be running");
+
+ is(gBrowser.tabs.length, 1, "Page should have been closed");
+
+ run_next_test();
+ });
+ });
+});