michael@0: /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim:set ts=2 sw=2 sts=2 et: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: michael@0: var bs = Cc["@mozilla.org/browser/nav-bookmarks-service;1"]. michael@0: getService(Ci.nsINavBookmarksService); michael@0: var hs = Cc["@mozilla.org/browser/nav-history-service;1"]. michael@0: getService(Ci.nsINavHistoryService); michael@0: michael@0: function check_queries_results(aQueries, aOptions, aExpectedItemIds) { michael@0: var result = hs.executeQueries(aQueries, aQueries.length, aOptions); michael@0: var root = result.root; michael@0: root.containerOpen = true; michael@0: michael@0: // Dump found nodes. michael@0: for (let i = 0; i < root.childCount; i++) { michael@0: dump("nodes[" + i + "]: " + root.getChild(0).title + "\n"); michael@0: } michael@0: michael@0: do_check_eq(root.childCount, aExpectedItemIds.length); michael@0: for (let i = 0; i < root.childCount; i++) { michael@0: do_check_eq(root.getChild(i).itemId, aExpectedItemIds[i]); michael@0: } michael@0: michael@0: root.containerOpen = false; michael@0: } michael@0: michael@0: // main michael@0: function run_test() { michael@0: var id1 = bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://foo.tld"), michael@0: bs.DEFAULT_INDEX, "123 0"); michael@0: var id2 = bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://foo.tld"), michael@0: bs.DEFAULT_INDEX, "456"); michael@0: var id3 = bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://foo.tld"), michael@0: bs.DEFAULT_INDEX, "123 456"); michael@0: var id4 = bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://foo.tld"), michael@0: bs.DEFAULT_INDEX, "789 456"); michael@0: michael@0: /** michael@0: * All of the query objects are ORed together. Within a query, all the terms michael@0: * are ANDed together. See nsINavHistory.idl. michael@0: */ michael@0: var queries = []; michael@0: queries.push(hs.getNewQuery()); michael@0: queries.push(hs.getNewQuery()); michael@0: var options = hs.getNewQueryOptions(); michael@0: options.queryType = Ci.nsINavHistoryQueryOptions.QUERY_TYPE_BOOKMARKS; michael@0: michael@0: // Test 1 michael@0: dump("Test searching for 123 OR 789\n"); michael@0: queries[0].searchTerms = "123"; michael@0: queries[1].searchTerms = "789"; michael@0: check_queries_results(queries, options, [id1, id3, id4]); michael@0: michael@0: // Test 2 michael@0: dump("Test searching for 123 OR 456\n"); michael@0: queries[0].searchTerms = "123"; michael@0: queries[1].searchTerms = "456"; michael@0: check_queries_results(queries, options, [id1, id2, id3, id4]); michael@0: michael@0: // Test 3 michael@0: dump("Test searching for 00 OR 789\n"); michael@0: queries[0].searchTerms = "00"; michael@0: queries[1].searchTerms = "789"; michael@0: check_queries_results(queries, options, [id4]); michael@0: }