toolkit/mozapps/extensions/test/browser/browser_sorting.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/
     3  */
     5 // Tests that sorting of add-ons works correctly
     6 // (this test uses the list view, even though it no longer has sort buttons - see bug 623207)
     8 var gManagerWindow;
     9 var gProvider;
    11 function test() {
    12   waitForExplicitFinish();
    14   gProvider = new MockProvider();
    15   gProvider.createAddons([{
    16     //  enabledInstalled group
    17     //    * Enabled
    18     //    * Incompatible but enabled because compatibility checking is off
    19     //    * Waiting to be installed
    20     //    * Waiting to be enabled
    21     id: "test1@tests.mozilla.org",
    22     name: "Test add-on",
    23     description: "foo",
    24     updateDate: new Date(2010, 04, 02, 00, 00, 00),
    25     size: 1,
    26     pendingOperations: AddonManager.PENDING_NONE,
    27   }, {
    28     id: "test2@tests.mozilla.org",
    29     name: "a first add-on",
    30     description: "foo",
    31     updateDate: new Date(2010, 04, 01, 23, 59, 59),
    32     size: 0265,
    33     pendingOperations: AddonManager.PENDING_UPGRADE,
    34     isActive: true,
    35     isCompatible: false,
    36   }, {
    37     id: "test3@tests.mozilla.org",
    38     name: "\u010Cesk\u00FD slovn\u00EDk", // Český slovník
    39     description: "foo",
    40     updateDate: new Date(2010, 04, 02, 00, 00, 01),
    41     size: 12,
    42     pendingOperations: AddonManager.PENDING_INSTALL,
    43     isActive: false,
    44   }, {
    45     id: "test4@tests.mozilla.org",
    46     name: "canadian dictionary",
    47     updateDate: new Date(1970, 0, 01, 00, 00, 00),
    48     description: "foo",
    49     isActive: true,
    50   }, {
    51     id: "test5@tests.mozilla.org",
    52     name: "croatian dictionary",
    53     description: "foo",
    54     updateDate: new Date(2012, 12, 12, 00, 00, 00),
    55     size: 5,
    56     pendingOperations: AddonManager.PENDING_ENABLE,
    57     isActive: false,
    58   }, {
    59     //  pendingDisable group
    60     //    * Waiting to be disabled
    61     id: "test6@tests.mozilla.org",
    62     name: "orange Add-on",
    63     description: "foo",
    64     updateDate: new Date(2010, 04, 02, 00, 00, 00),
    65     size: 142,
    66     isCompatible: false,
    67     isActive: true,
    68     pendingOperations: AddonManager.PENDING_DISABLE,
    69   }, {
    70     id: "test7@tests.mozilla.org",
    71     name: "Blue Add-on",
    72     description: "foo",
    73     updateDate: new Date(2010, 04, 01, 23, 59, 59),
    74     size: 65,
    75     isActive: true,
    76     pendingOperations: AddonManager.PENDING_DISABLE,
    77   }, {
    78     id: "test8@tests.mozilla.org",
    79     name: "Green Add-on",
    80     description: "foo",
    81     updateDate: new Date(2010, 04, 03, 00, 00, 01),
    82     size: 125,
    83     pendingOperations: AddonManager.PENDING_DISABLE,
    84   }, {
    85     id: "test9@tests.mozilla.org",
    86     name: "red Add-on",
    87     updateDate: new Date(2011, 04, 01, 00, 00, 00),
    88     description: "foo",
    89     isCompatible: false,
    90     pendingOperations: AddonManager.PENDING_DISABLE,
    91   }, {
    92     id: "test10@tests.mozilla.org",
    93     name: "Purple Add-on",
    94     description: "foo",
    95     updateDate: new Date(2012, 12, 12, 00, 00, 00),
    96     size: 56,
    97     isCompatible: false,
    98     pendingOperations: AddonManager.PENDING_DISABLE,
    99   }, {
   100     //  pendingUninstall group
   101     //    * Waiting to be removed
   102     id: "test11@tests.mozilla.org",
   103     name: "amber Add-on",
   104     description: "foo",
   105     updateDate: new Date(1978, 04, 02, 00, 00, 00),
   106     size: 142,
   107     isActive: false,
   108     appDisabled: true,
   109     pendingOperations: AddonManager.PENDING_UNINSTALL,
   110   }, {
   111     id: "test12@tests.mozilla.org",
   112     name: "Salmon Add-on - pending disable",
   113     description: "foo",
   114     updateDate: new Date(2054, 04, 01, 23, 59, 59),
   115     size: 65,
   116     isActive: true,
   117     pendingOperations: AddonManager.PENDING_UNINSTALL,
   118   }, {
   119     id: "test13@tests.mozilla.org",
   120     name: "rose Add-on",
   121     description: "foo",
   122     updateDate: new Date(2010, 04, 02, 00, 00, 01),
   123     size: 125,
   124     isActive: false,
   125     userDisabled: true,
   126     pendingOperations: AddonManager.PENDING_UNINSTALL,
   127   }, {
   128     id: "test14@tests.mozilla.org",
   129     name: "Violet Add-on",
   130     updateDate: new Date(2010, 05, 01, 00, 00, 00),
   131     description: "foo",
   132     isActive: false,
   133     appDisabled: true,
   134     pendingOperations: AddonManager.PENDING_UNINSTALL,
   135   }, {
   136     id: "test15@tests.mozilla.org",
   137     name: "white Add-on",
   138     description: "foo",
   139     updateDate: new Date(2010, 04, 12, 00, 00, 00),
   140     size: 56,
   141     isActive: false,
   142     userDisabled: true,
   143     pendingOperations: AddonManager.PENDING_UNINSTALL,
   144   }, {
   145     //  disabledIncompatibleBlocked group
   146     //    * Disabled
   147     //    * Incompatible
   148     //    * Blocklisted
   149     id: "test16@tests.mozilla.org",
   150     name: "grimsby Add-on",
   151     description: "foo",
   152     updateDate: new Date(2010, 04, 01, 00, 00, 00),
   153     size: 142,
   154     isActive: false,
   155     appDisabled: true,
   156   }, {
   157     id: "test17@tests.mozilla.org",
   158     name: "beamsville Add-on",
   159     description: "foo",
   160     updateDate: new Date(2010, 04, 8, 23, 59, 59),
   161     size: 65,
   162     isActive: false,
   163     userDisabled: true,
   164   }, {
   165     id: "test18@tests.mozilla.org",
   166     name: "smithville Add-on",
   167     description: "foo",
   168     updateDate: new Date(2010, 04, 03, 00, 00, 01),
   169     size: 125,
   170     isActive: false,
   171     userDisabled: true,
   172     blocklistState: Ci.nsIBlocklistService.STATE_OUTDATED,
   173   }, {
   174     id: "test19@tests.mozilla.org",
   175     name: "dunnville Add-on",
   176     updateDate: new Date(2010, 04, 02, 00, 00, 00),
   177     description: "foo",
   178     isActive: false,
   179     appDisabled: true,
   180     isCompatible: false,
   181     blocklistState: Ci.nsIBlocklistService.STATE_NOT_BLOCKED,
   182   }, {
   183     id: "test20@tests.mozilla.org",
   184     name: "silverdale Add-on",
   185     description: "foo",
   186     updateDate: new Date(2010, 04, 12, 00, 00, 00),
   187     size: 56,
   188     isActive: false,
   189     appDisabled: true,
   190     blocklistState: Ci.nsIBlocklistService.STATE_BLOCKED,
   191   }]);
   194   open_manager("addons://list/extension", function(aWindow) {
   195     gManagerWindow = aWindow;
   196     run_next_test();
   197   });
   198 }
   200 function end_test() {
   201   close_manager(gManagerWindow, function() {
   202     finish();
   203   });
   204 }
   206 function set_order(aSortBy, aAscending) {
   207   var list = gManagerWindow.document.getElementById("addon-list");
   208   var elements = [];
   209   var node = list.firstChild;
   210   while (node) {
   211     elements.push(node);
   212     node = node.nextSibling;
   213   }
   214   gManagerWindow.sortElements(elements, ["uiState", aSortBy], aAscending);
   215   for (let element of elements)
   216     list.appendChild(element);
   217 }
   219 function check_order(aExpectedOrder) {
   220   var order = [];
   221   var list = gManagerWindow.document.getElementById("addon-list");
   222   var node = list.firstChild;
   223   while (node) {
   224     var id = node.getAttribute("value");
   225     if (id && id.substring(id.length - 18) == "@tests.mozilla.org")
   226       order.push(node.getAttribute("value"));
   227     node = node.nextSibling;
   228   }
   230   is(order.toSource(), aExpectedOrder.toSource(), "Should have seen the right order");
   231 }
   233 // Tests that ascending name ordering was the default
   234 add_test(function() {
   236   check_order([
   237     "test2@tests.mozilla.org",
   238     "test4@tests.mozilla.org",
   239     "test3@tests.mozilla.org",
   240     "test5@tests.mozilla.org",
   241     "test1@tests.mozilla.org",
   242     "test7@tests.mozilla.org",
   243     "test8@tests.mozilla.org",
   244     "test6@tests.mozilla.org",
   245     "test10@tests.mozilla.org",
   246     "test9@tests.mozilla.org",
   247     "test11@tests.mozilla.org",
   248     "test13@tests.mozilla.org",
   249     "test12@tests.mozilla.org",
   250     "test14@tests.mozilla.org",
   251     "test15@tests.mozilla.org",
   252     "test17@tests.mozilla.org",
   253     "test19@tests.mozilla.org",
   254     "test16@tests.mozilla.org",
   255     "test20@tests.mozilla.org",
   256     "test18@tests.mozilla.org",
   257   ]);
   258   run_next_test();
   259 });
   261 // Tests that switching to date ordering works
   262 add_test(function() {
   263   set_order("updateDate", false);
   265   // When we're ascending with updateDate, it's from newest
   266   // to oldest.
   268   check_order([
   269     "test5@tests.mozilla.org",
   270     "test3@tests.mozilla.org",
   271     "test1@tests.mozilla.org",
   272     "test2@tests.mozilla.org",
   273     "test4@tests.mozilla.org",
   274     "test10@tests.mozilla.org",
   275     "test9@tests.mozilla.org",
   276     "test8@tests.mozilla.org",
   277     "test6@tests.mozilla.org",
   278     "test7@tests.mozilla.org",
   279     "test12@tests.mozilla.org",
   280     "test14@tests.mozilla.org",
   281     "test15@tests.mozilla.org",
   282     "test13@tests.mozilla.org",
   283     "test11@tests.mozilla.org",
   284     "test20@tests.mozilla.org",
   285     "test17@tests.mozilla.org",
   286     "test18@tests.mozilla.org",
   287     "test19@tests.mozilla.org",
   288     "test16@tests.mozilla.org",
   289   ]);
   291   set_order("updateDate", true);
   293   check_order([
   294     "test4@tests.mozilla.org",
   295     "test2@tests.mozilla.org",
   296     "test1@tests.mozilla.org",
   297     "test3@tests.mozilla.org",
   298     "test5@tests.mozilla.org",
   299     "test7@tests.mozilla.org",
   300     "test6@tests.mozilla.org",
   301     "test8@tests.mozilla.org",
   302     "test9@tests.mozilla.org",
   303     "test10@tests.mozilla.org",
   304     "test11@tests.mozilla.org",
   305     "test13@tests.mozilla.org",
   306     "test15@tests.mozilla.org",
   307     "test14@tests.mozilla.org",
   308     "test12@tests.mozilla.org",
   309     "test16@tests.mozilla.org",
   310     "test19@tests.mozilla.org",
   311     "test18@tests.mozilla.org",
   312     "test17@tests.mozilla.org",
   313     "test20@tests.mozilla.org",
   314   ]);
   316   run_next_test();
   317 });
   319 // Tests that switching to name ordering works
   320 add_test(function() {
   321   set_order("name", true);
   323   check_order([
   324     "test2@tests.mozilla.org",
   325     "test4@tests.mozilla.org",
   326     "test3@tests.mozilla.org",
   327     "test5@tests.mozilla.org",
   328     "test1@tests.mozilla.org",
   329     "test7@tests.mozilla.org",
   330     "test8@tests.mozilla.org",
   331     "test6@tests.mozilla.org",
   332     "test10@tests.mozilla.org",
   333     "test9@tests.mozilla.org",
   334     "test11@tests.mozilla.org",
   335     "test13@tests.mozilla.org",
   336     "test12@tests.mozilla.org",
   337     "test14@tests.mozilla.org",
   338     "test15@tests.mozilla.org",
   339     "test17@tests.mozilla.org",
   340     "test19@tests.mozilla.org",
   341     "test16@tests.mozilla.org",
   342     "test20@tests.mozilla.org",
   343     "test18@tests.mozilla.org",
   344   ]);
   346   set_order("name", false);
   348   check_order([
   349     "test1@tests.mozilla.org",
   350     "test5@tests.mozilla.org",
   351     "test3@tests.mozilla.org",
   352     "test4@tests.mozilla.org",
   353     "test2@tests.mozilla.org",
   354     "test9@tests.mozilla.org",
   355     "test10@tests.mozilla.org",
   356     "test6@tests.mozilla.org",
   357     "test8@tests.mozilla.org",
   358     "test7@tests.mozilla.org",
   359     "test15@tests.mozilla.org",
   360     "test14@tests.mozilla.org",
   361     "test12@tests.mozilla.org",
   362     "test13@tests.mozilla.org",
   363     "test11@tests.mozilla.org",
   364     "test18@tests.mozilla.org",
   365     "test20@tests.mozilla.org",
   366     "test16@tests.mozilla.org",
   367     "test19@tests.mozilla.org",
   368     "test17@tests.mozilla.org",
   369   ]);
   371   run_next_test();
   372 });

mercurial