summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_history_sidebar_search.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_history_sidebar_search.js')
-rw-r--r--browser/components/places/tests/browser/browser_history_sidebar_search.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_history_sidebar_search.js b/browser/components/places/tests/browser/browser_history_sidebar_search.js
new file mode 100644
index 0000000000..44d51eec31
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_history_sidebar_search.js
@@ -0,0 +1,71 @@
+add_task(async function test() {
+ let sidebar = document.getElementById("sidebar");
+
+ // Visited pages listed by descending visit date.
+ let pages = [
+ "http://sidebar.mozilla.org/a",
+ "http://sidebar.mozilla.org/b",
+ "http://sidebar.mozilla.org/c",
+ "http://www.mozilla.org/d",
+ ];
+
+ // Number of pages that will be filtered out by the search.
+ const FILTERED_COUNT = 1;
+
+ await PlacesUtils.history.clear();
+
+ // Add some visited page.
+ let time = Date.now();
+ let places = [];
+ for (let i = 0; i < pages.length; i++) {
+ places.push({
+ uri: NetUtil.newURI(pages[i]),
+ visitDate: (time - i) * 1000,
+ transition: PlacesUtils.history.TRANSITION_TYPED,
+ });
+ }
+ await PlacesTestUtils.addVisits(places);
+
+ await withSidebarTree("history", function () {
+ info("Set 'by last visited' view");
+ sidebar.contentDocument.getElementById("bylastvisited").doCommand();
+ let tree = sidebar.contentDocument.getElementById("historyTree");
+ check_tree_order(tree, pages);
+
+ // Set a search value.
+ let searchBox = sidebar.contentDocument.getElementById("search-box");
+ ok(searchBox, "search box is in context");
+ searchBox.value = "sidebar.mozilla";
+ searchBox.doCommand();
+ check_tree_order(tree, pages, -FILTERED_COUNT);
+
+ info("Reset the search");
+ searchBox.value = "";
+ searchBox.doCommand();
+ check_tree_order(tree, pages);
+ });
+
+ await PlacesUtils.history.clear();
+});
+
+function check_tree_order(tree, pages, aNumberOfRowsDelta = 0) {
+ let treeView = tree.view;
+ let columns = tree.columns;
+ is(columns.count, 1, "There should be only 1 column in the sidebar");
+
+ let found = 0;
+ for (let i = 0; i < treeView.rowCount; i++) {
+ let node = treeView.nodeForTreeIndex(i);
+ // We could inherit delayed visits from previous tests, skip them.
+ if (!pages.includes(node.uri)) {
+ continue;
+ }
+ is(
+ node.uri,
+ pages[i],
+ "Node is in correct position based on its visit date"
+ );
+ found++;
+ }
+ is(found, pages.length + aNumberOfRowsDelta, "Found all expected results");
+}