toolkit/components/places/tests/bookmarks/test_385829.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim:set ts=2 sw=2 sts=2 et: */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 // Get bookmark service
     8 try {
     9   var bmsvc = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService);
    10 } catch(ex) {
    11   do_throw("Could not get nav-bookmarks-service\n");
    12 }
    14 // Get history service
    15 try {
    16   var histsvc = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService);
    17 } catch(ex) {
    18   do_throw("Could not get history service\n");
    19 } 
    21 // get bookmarks root id
    22 var root = bmsvc.bookmarksMenuFolder;
    24 // main
    25 function run_test() {
    26   // test search on folder with various sorts and max results
    27   // see bug #385829 for more details
    28   var folder = bmsvc.createFolder(root, "bug 385829 test", bmsvc.DEFAULT_INDEX);
    29   var b1 = bmsvc.insertBookmark(folder, uri("http://a1.com/"),
    30                                 bmsvc.DEFAULT_INDEX, "1 title");
    32   var b2 = bmsvc.insertBookmark(folder, uri("http://a2.com/"),
    33                                 bmsvc.DEFAULT_INDEX, "2 title");
    35   var b3 = bmsvc.insertBookmark(folder, uri("http://a3.com/"),
    36                                 bmsvc.DEFAULT_INDEX, "3 title");
    38   var b4 = bmsvc.insertBookmark(folder, uri("http://a4.com/"),
    39                                 bmsvc.DEFAULT_INDEX, "4 title");
    41   // ensure some unique values for date added and last modified
    42   // for date added:    b1 < b2 < b3 < b4
    43   // for last modified: b1 > b2 > b3 > b4
    44   bmsvc.setItemDateAdded(b1, 1000);
    45   bmsvc.setItemDateAdded(b2, 2000);
    46   bmsvc.setItemDateAdded(b3, 3000);
    47   bmsvc.setItemDateAdded(b4, 4000);
    49   bmsvc.setItemLastModified(b1, 4000);
    50   bmsvc.setItemLastModified(b2, 3000);
    51   bmsvc.setItemLastModified(b3, 2000);
    52   bmsvc.setItemLastModified(b4, 1000);
    54   var options = histsvc.getNewQueryOptions();
    55   var query = histsvc.getNewQuery();
    56   options.queryType = Ci.nsINavHistoryQueryOptions.QUERY_TYPE_BOOKMARKS;
    57   options.maxResults = 3;
    58   query.setFolders([folder], 1);
    60   var result = histsvc.executeQuery(query, options);
    61   var rootNode = result.root;
    62   rootNode.containerOpen = true;
    64   // test SORT_BY_DATEADDED_ASCENDING (live update)
    65   result.sortingMode = options.SORT_BY_DATEADDED_ASCENDING;
    66   do_check_eq(rootNode.childCount, 3);
    67   do_check_eq(rootNode.getChild(0).itemId, b1);
    68   do_check_eq(rootNode.getChild(1).itemId, b2);
    69   do_check_eq(rootNode.getChild(2).itemId, b3);
    70   do_check_true(rootNode.getChild(0).dateAdded <
    71                 rootNode.getChild(1).dateAdded);
    72   do_check_true(rootNode.getChild(1).dateAdded <
    73                 rootNode.getChild(2).dateAdded);
    75   // test SORT_BY_DATEADDED_DESCENDING (live update)
    76   result.sortingMode = options.SORT_BY_DATEADDED_DESCENDING;
    77   do_check_eq(rootNode.childCount, 3);
    78   do_check_eq(rootNode.getChild(0).itemId, b3);
    79   do_check_eq(rootNode.getChild(1).itemId, b2);
    80   do_check_eq(rootNode.getChild(2).itemId, b1);
    81   do_check_true(rootNode.getChild(0).dateAdded >
    82                 rootNode.getChild(1).dateAdded);
    83   do_check_true(rootNode.getChild(1).dateAdded >
    84                 rootNode.getChild(2).dateAdded);
    86   // test SORT_BY_LASTMODIFIED_ASCENDING (live update)
    87   result.sortingMode = options.SORT_BY_LASTMODIFIED_ASCENDING;
    88   do_check_eq(rootNode.childCount, 3);
    89   do_check_eq(rootNode.getChild(0).itemId, b3);
    90   do_check_eq(rootNode.getChild(1).itemId, b2);
    91   do_check_eq(rootNode.getChild(2).itemId, b1);
    92   do_check_true(rootNode.getChild(0).lastModified <
    93                 rootNode.getChild(1).lastModified);
    94   do_check_true(rootNode.getChild(1).lastModified <
    95                 rootNode.getChild(2).lastModified);
    97   // test SORT_BY_LASTMODIFIED_DESCENDING (live update)
    98   result.sortingMode = options.SORT_BY_LASTMODIFIED_DESCENDING;
   100   do_check_eq(rootNode.childCount, 3);
   101   do_check_eq(rootNode.getChild(0).itemId, b1);
   102   do_check_eq(rootNode.getChild(1).itemId, b2);
   103   do_check_eq(rootNode.getChild(2).itemId, b3);
   104   do_check_true(rootNode.getChild(0).lastModified >
   105                 rootNode.getChild(1).lastModified);
   106   do_check_true(rootNode.getChild(1).lastModified >
   107                 rootNode.getChild(2).lastModified);
   108   rootNode.containerOpen = false;
   110   // test SORT_BY_DATEADDED_ASCENDING
   111   options.sortingMode = options.SORT_BY_DATEADDED_ASCENDING;
   112   result = histsvc.executeQuery(query, options);
   113   rootNode = result.root;
   114   rootNode.containerOpen = true;
   115   do_check_eq(rootNode.childCount, 3);
   116   do_check_eq(rootNode.getChild(0).itemId, b1);
   117   do_check_eq(rootNode.getChild(1).itemId, b2);
   118   do_check_eq(rootNode.getChild(2).itemId, b3);
   119   do_check_true(rootNode.getChild(0).dateAdded <
   120                 rootNode.getChild(1).dateAdded);
   121   do_check_true(rootNode.getChild(1).dateAdded <
   122                 rootNode.getChild(2).dateAdded);
   123   rootNode.containerOpen = false;
   125   // test SORT_BY_DATEADDED_DESCENDING
   126   options.sortingMode = options.SORT_BY_DATEADDED_DESCENDING;
   127   result = histsvc.executeQuery(query, options);
   128   rootNode = result.root;
   129   rootNode.containerOpen = true;
   130   do_check_eq(rootNode.childCount, 3);
   131   do_check_eq(rootNode.getChild(0).itemId, b4);
   132   do_check_eq(rootNode.getChild(1).itemId, b3);
   133   do_check_eq(rootNode.getChild(2).itemId, b2);
   134   do_check_true(rootNode.getChild(0).dateAdded >
   135                 rootNode.getChild(1).dateAdded);
   136   do_check_true(rootNode.getChild(1).dateAdded >
   137                 rootNode.getChild(2).dateAdded);
   138   rootNode.containerOpen = false;
   140   // test SORT_BY_LASTMODIFIED_ASCENDING
   141   options.sortingMode = options.SORT_BY_LASTMODIFIED_ASCENDING;
   142   result = histsvc.executeQuery(query, options);
   143   rootNode = result.root;
   144   rootNode.containerOpen = true;
   145   do_check_eq(rootNode.childCount, 3);
   146   do_check_eq(rootNode.getChild(0).itemId, b4);
   147   do_check_eq(rootNode.getChild(1).itemId, b3);
   148   do_check_eq(rootNode.getChild(2).itemId, b2);
   149   do_check_true(rootNode.getChild(0).lastModified <
   150                 rootNode.getChild(1).lastModified);
   151   do_check_true(rootNode.getChild(1).lastModified <
   152                 rootNode.getChild(2).lastModified);
   153   rootNode.containerOpen = false;
   155   // test SORT_BY_LASTMODIFIED_DESCENDING
   156   options.sortingMode = options.SORT_BY_LASTMODIFIED_DESCENDING;
   157   result = histsvc.executeQuery(query, options);
   158   rootNode = result.root;
   159   rootNode.containerOpen = true;
   160   do_check_eq(rootNode.childCount, 3);
   161   do_check_eq(rootNode.getChild(0).itemId, b1);
   162   do_check_eq(rootNode.getChild(1).itemId, b2);
   163   do_check_eq(rootNode.getChild(2).itemId, b3);
   164   do_check_true(rootNode.getChild(0).lastModified >
   165                 rootNode.getChild(1).lastModified);
   166   do_check_true(rootNode.getChild(1).lastModified >
   167                 rootNode.getChild(2).lastModified);
   168   rootNode.containerOpen = false;
   169 }

mercurial