diff --git a/toolkit/components/places/src/nsTaggingService.js b/toolkit/components/places/src/nsTaggingService.js index 4664fb8937ba..e0a9114a9bac 100644 --- a/toolkit/components/places/src/nsTaggingService.js +++ b/toolkit/components/places/src/nsTaggingService.js @@ -299,9 +299,8 @@ TaggingService.prototype = { if (!this.__tagFolders) { this.__tagFolders = []; var options = this._history.getNewQueryOptions(); - options.resultType = Ci.nsINavHistoryQueryOptions.RESULTS_AS_TAG_QUERY; - options.expandQueries = 0; var query = this._history.getNewQuery(); + query.setFolders([this._bms.tagsFolder], 1); var tagsResult = this._history.executeQuery(query, options); var root = tagsResult.root; root.containerOpen = true; diff --git a/toolkit/components/places/tests/unit/test_tagging.js b/toolkit/components/places/tests/unit/test_tagging.js index 4f6dc34a1898..8b8ea8b3666c 100644 --- a/toolkit/components/places/tests/unit/test_tagging.js +++ b/toolkit/components/places/tests/unit/test_tagging.js @@ -56,8 +56,10 @@ catch(ex) { // Get tagging service try { + // Notice we use createInstance because later we will have to terminate the + // service and restart it. var tagssvc = Cc["@mozilla.org/browser/tagging-service;1"]. - getService(Ci.nsITaggingService); + createInstance().QueryInterface(Ci.nsITaggingService); } catch(ex) { do_throw("Could not get tagging service\n"); } @@ -131,15 +133,12 @@ function run_test() { // removing the last uri from a tag should remove the tag-container tagssvc.untagURI(uri2, ["tag 1"]); do_check_eq(tagRoot.childCount, 1); - + + // cleanup + tag1node.containerOpen = false; + // get array of tag folder ids => title // for testing tagging with mixed folder ids and tags - var options = histsvc.getNewQueryOptions(); - var query = histsvc.getNewQuery(); - query.setFolders([bmsvc.tagsFolder], 1); - var result = histsvc.executeQuery(query, options); - var tagRoot = result.root; - tagRoot.containerOpen = true; var tagFolders = []; var child = tagRoot.getChild(0); var tagId = child.itemId; @@ -158,4 +157,21 @@ function run_test() { tagssvc.untagURI(uri3, [tagId, "tag 3", "456"]); tags = tagssvc.getTagsForURI(uri3, {}); do_check_eq(tags.length, 0); + + // Terminate tagging service, fire up a new instance and check that existing + // tags are there. This will ensure that any internal caching system is + // correctly filled at startup and we are not losing previously existing tags. + var uri4 = uri("http://testuri/4"); + tagssvc.tagURI(uri4, [tagId, "tag 3", "456"]); + tagssvc = null; + tagssvc = Cc["@mozilla.org/browser/tagging-service;1"]. + getService(Ci.nsITaggingService); + var uri4Tags = tagssvc.getTagsForURI(uri4, {}); + do_check_eq(uri4Tags.length, 3); + do_check_true(uri4Tags.indexOf(tagTitle) != -1); + do_check_true(uri4Tags.indexOf("tag 3") != -1); + do_check_true(uri4Tags.indexOf("456") != -1); + + // cleanup + tagRoot.containerOpen = false; }