Thu, 22 Jan 2015 13:21:57 +0100
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 }