summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/extensions/test/browser/browser_select_confirm.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-11 07:03:16 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-11 07:03:16 -0500
commit203eb0f61a09372310a2a8fb57e169cb3f47800b (patch)
tree8490329d3dae4de3c7ffd127bce1f65fdc009abd /toolkit/mozapps/extensions/test/browser/browser_select_confirm.js
parente45706ca3acbb6530419433212becc61d5953a2d (diff)
parent8f6d3dab81c7f8f97ef197e26ab9439b09735b8f (diff)
downloadUXP-203eb0f61a09372310a2a8fb57e169cb3f47800b.tar
UXP-203eb0f61a09372310a2a8fb57e169cb3f47800b.tar.gz
UXP-203eb0f61a09372310a2a8fb57e169cb3f47800b.tar.lz
UXP-203eb0f61a09372310a2a8fb57e169cb3f47800b.tar.xz
UXP-203eb0f61a09372310a2a8fb57e169cb3f47800b.zip
Merge branch 'ext-work'FF_Checkpoint_1
Diffstat (limited to 'toolkit/mozapps/extensions/test/browser/browser_select_confirm.js')
-rw-r--r--toolkit/mozapps/extensions/test/browser/browser_select_confirm.js181
1 files changed, 181 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/browser/browser_select_confirm.js b/toolkit/mozapps/extensions/test/browser/browser_select_confirm.js
new file mode 100644
index 000000000..1204777ce
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/browser/browser_select_confirm.js
@@ -0,0 +1,181 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+// Tests the confirmation part of the post-app-update dialog
+
+var gProvider;
+var gWin;
+
+function waitForView(aView, aCallback) {
+ var view = gWin.document.getElementById(aView);
+ if (view.parentNode.selectedPanel == view) {
+ aCallback();
+ return;
+ }
+
+ view.addEventListener("ViewChanged", function() {
+ view.removeEventListener("ViewChanged", arguments.callee, false);
+ try {
+ aCallback();
+ }
+ catch (e) {
+ ok(false, e);
+ }
+ }, false);
+}
+
+/**
+ * Creates 4 test add-ons. Two are disabled and two enabled.
+ *
+ * @param aAppDisabled
+ * The appDisabled property for the test add-ons
+ * @param aUpdateAvailable
+ * True if the test add-ons should claim to have an update available
+ */
+function setupUI(aAppDisabled, aUpdateAvailable, aCallback) {
+ if (gProvider)
+ gProvider.unregister();
+
+ gProvider = new MockProvider();
+
+ for (var i = 1; i < 5; i++) {
+ var addon = new MockAddon("test" + i + "@tests.mozilla.org",
+ "Test Add-on " + i, "extension");
+ addon.version = "1.0";
+ addon.userDisabled = (i > 2);
+ addon.appDisabled = aAppDisabled;
+ addon.isActive = !addon.userDisabled && !addon.appDisabled;
+
+ addon.findUpdates = function(aListener, aReason, aAppVersion, aPlatformVersion) {
+ if (aUpdateAvailable) {
+ var newAddon = new MockAddon(this.id, this.name, "extension");
+ newAddon.version = "2.0";
+ var install = new MockInstall(this.name, this.type, newAddon);
+ install.existingAddon = this;
+ aListener.onUpdateAvailable(this, install);
+ }
+
+ aListener.onUpdateFinished(this, AddonManager.UPDATE_STATUS_NO_ERROR);
+ };
+
+ gProvider.addAddon(addon);
+ }
+
+ gWin = Services.ww.openWindow(null,
+ "chrome://mozapps/content/extensions/selectAddons.xul",
+ "",
+ "chrome,centerscreen,dialog,titlebar",
+ null);
+ waitForFocus(function() {
+ waitForView("select", function() {
+ var row = gWin.document.getElementById("select-rows").firstChild.nextSibling;
+ while (row) {
+ if (!row.id || row.id.indexOf("@tests.mozilla.org") < 0) {
+ // not a test add-on
+ row = row.nextSibling;
+ continue;
+ }
+
+ if (row.id == "test2@tests.mozilla.org" ||
+ row.id == "test4@tests.mozilla.org") {
+ row.disable();
+ }
+ else {
+ row.keep();
+ }
+ row = row.nextSibling;
+ }
+
+ waitForView("confirm", aCallback);
+ EventUtils.synthesizeMouseAtCenter(gWin.document.getElementById("next"), {}, gWin);
+ });
+ }, gWin);
+}
+
+function test() {
+ waitForExplicitFinish();
+
+ run_next_test();
+}
+
+function end_test() {
+ finish();
+}
+
+// Test for disabling
+add_test(function disabling_test() {
+ setupUI(false, false, function() {
+ ok(gWin.document.getElementById("incompatible-list").hidden, "Incompatible list should be hidden");
+ ok(gWin.document.getElementById("update-list").hidden, "Update list should be hidden");
+
+ var list = gWin.document.getElementById("disable-list");
+ ok(!list.hidden, "Disable list should be visible");
+ is(list.childNodes.length, 2, "Should be one add-on getting disabled (plus the header)");
+ is(list.childNodes[1].id, "test2@tests.mozilla.org", "Should be the right add-on ID");
+ is(list.childNodes[1].getAttribute("name"), "Test Add-on 2", "Should be the right add-on name");
+
+ var list = gWin.document.getElementById("enable-list");
+ ok(!list.hidden, "Enable list should be visible");
+ is(list.childNodes.length, 2, "Should be one add-on getting disabled (plus the header)");
+ is(list.childNodes[1].id, "test3@tests.mozilla.org", "Should be the right add-on ID");
+ is(list.childNodes[1].getAttribute("name"), "Test Add-on 3", "Should be the right add-on name");
+
+ ok(gWin.document.getElementById("next").hidden, "Next button should be hidden");
+ ok(!gWin.document.getElementById("done").hidden, "Done button should be visible");
+ gWin.close();
+
+ run_next_test();
+ });
+});
+
+// Test for incompatible
+add_test(function incompatible_test() {
+ setupUI(true, false, function() {
+ ok(gWin.document.getElementById("update-list").hidden, "Update list should be hidden");
+ ok(gWin.document.getElementById("disable-list").hidden, "Disable list should be hidden");
+ ok(gWin.document.getElementById("enable-list").hidden, "Enable list should be hidden");
+
+ var list = gWin.document.getElementById("incompatible-list");
+ ok(!list.hidden, "Incompatible list should be visible");
+ is(list.childNodes.length, 3, "Should be two add-ons waiting to be compatible (plus the header)");
+ is(list.childNodes[1].id, "test1@tests.mozilla.org", "Should be the right add-on ID");
+ is(list.childNodes[1].getAttribute("name"), "Test Add-on 1", "Should be the right add-on name");
+ is(list.childNodes[2].id, "test3@tests.mozilla.org", "Should be the right add-on ID");
+ is(list.childNodes[2].getAttribute("name"), "Test Add-on 3", "Should be the right add-on name");
+
+ ok(gWin.document.getElementById("next").hidden, "Next button should be hidden");
+ ok(!gWin.document.getElementById("done").hidden, "Done button should be visible");
+ gWin.close();
+
+ run_next_test();
+ });
+});
+
+// Test for updates
+add_test(function update_test() {
+ setupUI(false, true, function() {
+ ok(gWin.document.getElementById("incompatible-list").hidden, "Incompatible list should be hidden");
+ ok(gWin.document.getElementById("enable-list").hidden, "Enable list should be hidden");
+
+ var list = gWin.document.getElementById("update-list");
+ ok(!list.hidden, "Update list should be visible");
+ is(list.childNodes.length, 3, "Should be two add-ons waiting to be updated (plus the header)");
+ is(list.childNodes[1].id, "test1@tests.mozilla.org", "Should be the right add-on ID");
+ is(list.childNodes[1].getAttribute("name"), "Test Add-on 1", "Should be the right add-on name");
+ is(list.childNodes[2].id, "test3@tests.mozilla.org", "Should be the right add-on ID");
+ is(list.childNodes[2].getAttribute("name"), "Test Add-on 3", "Should be the right add-on name");
+
+ list = gWin.document.getElementById("disable-list");
+ ok(!list.hidden, "Disable list should be visible");
+ is(list.childNodes.length, 2, "Should be one add-on getting disabled (plus the header)");
+ is(list.childNodes[1].id, "test2@tests.mozilla.org", "Should be the right add-on ID");
+ is(list.childNodes[1].getAttribute("name"), "Test Add-on 2", "Should be the right add-on name");
+
+ ok(!gWin.document.getElementById("next").hidden, "Next button should be visible");
+ ok(gWin.document.getElementById("done").hidden, "Done button should be hidden");
+ gWin.close();
+
+ run_next_test();
+ });
+});