summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/extensions/test/browser/browser_sorting.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/extensions/test/browser/browser_sorting.js')
-rw-r--r--toolkit/mozapps/extensions/test/browser/browser_sorting.js372
1 files changed, 372 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/browser/browser_sorting.js b/toolkit/mozapps/extensions/test/browser/browser_sorting.js
new file mode 100644
index 000000000..7bf697b36
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/browser/browser_sorting.js
@@ -0,0 +1,372 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+// Tests that sorting of add-ons works correctly
+// (this test uses the list view, even though it no longer has sort buttons - see bug 623207)
+
+var gManagerWindow;
+var gProvider;
+
+function test() {
+ waitForExplicitFinish();
+
+ gProvider = new MockProvider();
+ gProvider.createAddons([{
+ // enabledInstalled group
+ // * Enabled
+ // * Incompatible but enabled because compatibility checking is off
+ // * Waiting to be installed
+ // * Waiting to be enabled
+ id: "test1@tests.mozilla.org",
+ name: "Test add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 02, 00, 00, 00),
+ size: 1,
+ pendingOperations: AddonManager.PENDING_NONE,
+ }, {
+ id: "test2@tests.mozilla.org",
+ name: "a first add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 01, 23, 59, 59),
+ size: 0265,
+ pendingOperations: AddonManager.PENDING_UPGRADE,
+ isActive: true,
+ isCompatible: false,
+ }, {
+ id: "test3@tests.mozilla.org",
+ name: "\u010Cesk\u00FD slovn\u00EDk", // Český slovník
+ description: "foo",
+ updateDate: new Date(2010, 04, 02, 00, 00, 01),
+ size: 12,
+ pendingOperations: AddonManager.PENDING_INSTALL,
+ isActive: false,
+ }, {
+ id: "test4@tests.mozilla.org",
+ name: "canadian dictionary",
+ updateDate: new Date(1970, 0, 01, 00, 00, 00),
+ description: "foo",
+ isActive: true,
+ }, {
+ id: "test5@tests.mozilla.org",
+ name: "croatian dictionary",
+ description: "foo",
+ updateDate: new Date(2012, 12, 12, 00, 00, 00),
+ size: 5,
+ pendingOperations: AddonManager.PENDING_ENABLE,
+ isActive: false,
+ }, {
+ // pendingDisable group
+ // * Waiting to be disabled
+ id: "test6@tests.mozilla.org",
+ name: "orange Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 02, 00, 00, 00),
+ size: 142,
+ isCompatible: false,
+ isActive: true,
+ pendingOperations: AddonManager.PENDING_DISABLE,
+ }, {
+ id: "test7@tests.mozilla.org",
+ name: "Blue Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 01, 23, 59, 59),
+ size: 65,
+ isActive: true,
+ pendingOperations: AddonManager.PENDING_DISABLE,
+ }, {
+ id: "test8@tests.mozilla.org",
+ name: "Green Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 03, 00, 00, 01),
+ size: 125,
+ pendingOperations: AddonManager.PENDING_DISABLE,
+ }, {
+ id: "test9@tests.mozilla.org",
+ name: "red Add-on",
+ updateDate: new Date(2011, 04, 01, 00, 00, 00),
+ description: "foo",
+ isCompatible: false,
+ pendingOperations: AddonManager.PENDING_DISABLE,
+ }, {
+ id: "test10@tests.mozilla.org",
+ name: "Purple Add-on",
+ description: "foo",
+ updateDate: new Date(2012, 12, 12, 00, 00, 00),
+ size: 56,
+ isCompatible: false,
+ pendingOperations: AddonManager.PENDING_DISABLE,
+ }, {
+ // pendingUninstall group
+ // * Waiting to be removed
+ id: "test11@tests.mozilla.org",
+ name: "amber Add-on",
+ description: "foo",
+ updateDate: new Date(1978, 04, 02, 00, 00, 00),
+ size: 142,
+ isActive: false,
+ appDisabled: true,
+ pendingOperations: AddonManager.PENDING_UNINSTALL,
+ }, {
+ id: "test12@tests.mozilla.org",
+ name: "Salmon Add-on - pending disable",
+ description: "foo",
+ updateDate: new Date(2054, 04, 01, 23, 59, 59),
+ size: 65,
+ isActive: true,
+ pendingOperations: AddonManager.PENDING_UNINSTALL,
+ }, {
+ id: "test13@tests.mozilla.org",
+ name: "rose Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 02, 00, 00, 01),
+ size: 125,
+ isActive: false,
+ userDisabled: true,
+ pendingOperations: AddonManager.PENDING_UNINSTALL,
+ }, {
+ id: "test14@tests.mozilla.org",
+ name: "Violet Add-on",
+ updateDate: new Date(2010, 05, 01, 00, 00, 00),
+ description: "foo",
+ isActive: false,
+ appDisabled: true,
+ pendingOperations: AddonManager.PENDING_UNINSTALL,
+ }, {
+ id: "test15@tests.mozilla.org",
+ name: "white Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 12, 00, 00, 00),
+ size: 56,
+ isActive: false,
+ userDisabled: true,
+ pendingOperations: AddonManager.PENDING_UNINSTALL,
+ }, {
+ // disabledIncompatibleBlocked group
+ // * Disabled
+ // * Incompatible
+ // * Blocklisted
+ id: "test16@tests.mozilla.org",
+ name: "grimsby Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 01, 00, 00, 00),
+ size: 142,
+ isActive: false,
+ appDisabled: true,
+ }, {
+ id: "test17@tests.mozilla.org",
+ name: "beamsville Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 8, 23, 59, 59),
+ size: 65,
+ isActive: false,
+ userDisabled: true,
+ }, {
+ id: "test18@tests.mozilla.org",
+ name: "smithville Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 03, 00, 00, 01),
+ size: 125,
+ isActive: false,
+ userDisabled: true,
+ blocklistState: Ci.nsIBlocklistService.STATE_OUTDATED,
+ }, {
+ id: "test19@tests.mozilla.org",
+ name: "dunnville Add-on",
+ updateDate: new Date(2010, 04, 02, 00, 00, 00),
+ description: "foo",
+ isActive: false,
+ appDisabled: true,
+ isCompatible: false,
+ blocklistState: Ci.nsIBlocklistService.STATE_NOT_BLOCKED,
+ }, {
+ id: "test20@tests.mozilla.org",
+ name: "silverdale Add-on",
+ description: "foo",
+ updateDate: new Date(2010, 04, 12, 00, 00, 00),
+ size: 56,
+ isActive: false,
+ appDisabled: true,
+ blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED,
+ }]);
+
+
+ open_manager("addons://list/extension", function(aWindow) {
+ gManagerWindow = aWindow;
+ run_next_test();
+ });
+}
+
+function end_test() {
+ close_manager(gManagerWindow, function() {
+ finish();
+ });
+}
+
+function set_order(aSortBy, aAscending) {
+ var list = gManagerWindow.document.getElementById("addon-list");
+ var elements = [];
+ var node = list.firstChild;
+ while (node) {
+ elements.push(node);
+ node = node.nextSibling;
+ }
+ gManagerWindow.sortElements(elements, ["uiState", aSortBy], aAscending);
+ for (let element of elements)
+ list.appendChild(element);
+}
+
+function check_order(aExpectedOrder) {
+ var order = [];
+ var list = gManagerWindow.document.getElementById("addon-list");
+ var node = list.firstChild;
+ while (node) {
+ var id = node.getAttribute("value");
+ if (id && id.endsWith("@tests.mozilla.org"))
+ order.push(node.getAttribute("value"));
+ node = node.nextSibling;
+ }
+
+ is(order.toSource(), aExpectedOrder.toSource(), "Should have seen the right order");
+}
+
+// Tests that ascending name ordering was the default
+add_test(function() {
+
+ check_order([
+ "test2@tests.mozilla.org",
+ "test4@tests.mozilla.org",
+ "test3@tests.mozilla.org",
+ "test5@tests.mozilla.org",
+ "test1@tests.mozilla.org",
+ "test7@tests.mozilla.org",
+ "test8@tests.mozilla.org",
+ "test6@tests.mozilla.org",
+ "test10@tests.mozilla.org",
+ "test9@tests.mozilla.org",
+ "test11@tests.mozilla.org",
+ "test13@tests.mozilla.org",
+ "test12@tests.mozilla.org",
+ "test14@tests.mozilla.org",
+ "test15@tests.mozilla.org",
+ "test17@tests.mozilla.org",
+ "test19@tests.mozilla.org",
+ "test16@tests.mozilla.org",
+ "test20@tests.mozilla.org",
+ "test18@tests.mozilla.org",
+ ]);
+ run_next_test();
+});
+
+// Tests that switching to date ordering works
+add_test(function() {
+ set_order("updateDate", false);
+
+ // When we're ascending with updateDate, it's from newest
+ // to oldest.
+
+ check_order([
+ "test5@tests.mozilla.org",
+ "test3@tests.mozilla.org",
+ "test1@tests.mozilla.org",
+ "test2@tests.mozilla.org",
+ "test4@tests.mozilla.org",
+ "test10@tests.mozilla.org",
+ "test9@tests.mozilla.org",
+ "test8@tests.mozilla.org",
+ "test6@tests.mozilla.org",
+ "test7@tests.mozilla.org",
+ "test12@tests.mozilla.org",
+ "test14@tests.mozilla.org",
+ "test15@tests.mozilla.org",
+ "test13@tests.mozilla.org",
+ "test11@tests.mozilla.org",
+ "test20@tests.mozilla.org",
+ "test17@tests.mozilla.org",
+ "test18@tests.mozilla.org",
+ "test19@tests.mozilla.org",
+ "test16@tests.mozilla.org",
+ ]);
+
+ set_order("updateDate", true);
+
+ check_order([
+ "test4@tests.mozilla.org",
+ "test2@tests.mozilla.org",
+ "test1@tests.mozilla.org",
+ "test3@tests.mozilla.org",
+ "test5@tests.mozilla.org",
+ "test7@tests.mozilla.org",
+ "test6@tests.mozilla.org",
+ "test8@tests.mozilla.org",
+ "test9@tests.mozilla.org",
+ "test10@tests.mozilla.org",
+ "test11@tests.mozilla.org",
+ "test13@tests.mozilla.org",
+ "test15@tests.mozilla.org",
+ "test14@tests.mozilla.org",
+ "test12@tests.mozilla.org",
+ "test16@tests.mozilla.org",
+ "test19@tests.mozilla.org",
+ "test18@tests.mozilla.org",
+ "test17@tests.mozilla.org",
+ "test20@tests.mozilla.org",
+ ]);
+
+ run_next_test();
+});
+
+// Tests that switching to name ordering works
+add_test(function() {
+ set_order("name", true);
+
+ check_order([
+ "test2@tests.mozilla.org",
+ "test4@tests.mozilla.org",
+ "test3@tests.mozilla.org",
+ "test5@tests.mozilla.org",
+ "test1@tests.mozilla.org",
+ "test7@tests.mozilla.org",
+ "test8@tests.mozilla.org",
+ "test6@tests.mozilla.org",
+ "test10@tests.mozilla.org",
+ "test9@tests.mozilla.org",
+ "test11@tests.mozilla.org",
+ "test13@tests.mozilla.org",
+ "test12@tests.mozilla.org",
+ "test14@tests.mozilla.org",
+ "test15@tests.mozilla.org",
+ "test17@tests.mozilla.org",
+ "test19@tests.mozilla.org",
+ "test16@tests.mozilla.org",
+ "test20@tests.mozilla.org",
+ "test18@tests.mozilla.org",
+ ]);
+
+ set_order("name", false);
+
+ check_order([
+ "test1@tests.mozilla.org",
+ "test5@tests.mozilla.org",
+ "test3@tests.mozilla.org",
+ "test4@tests.mozilla.org",
+ "test2@tests.mozilla.org",
+ "test9@tests.mozilla.org",
+ "test10@tests.mozilla.org",
+ "test6@tests.mozilla.org",
+ "test8@tests.mozilla.org",
+ "test7@tests.mozilla.org",
+ "test15@tests.mozilla.org",
+ "test14@tests.mozilla.org",
+ "test12@tests.mozilla.org",
+ "test13@tests.mozilla.org",
+ "test11@tests.mozilla.org",
+ "test18@tests.mozilla.org",
+ "test20@tests.mozilla.org",
+ "test16@tests.mozilla.org",
+ "test19@tests.mozilla.org",
+ "test17@tests.mozilla.org",
+ ]);
+
+ run_next_test();
+});