Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
testEngine_setup();
/**
* Checks the results of a search for `searchTerm`.
*
* @param {Array} uris
* A 2-element array containing [{string} uri, {array} tags}], where `tags`
* is a comma-separated list of the tags expected to appear in the search.
* @param {string} searchTerm
* The term to search for
*/
async function ensure_tag_results(uris, searchTerm) {
print("Searching for '" + searchTerm + "'");
let context = createContext(searchTerm, { isPrivate: false });
let urlbarResults = [];
for (let [uri, tags] of uris) {
urlbarResults.push(
makeBookmarkResult(context, {
uri,
title: "A title",
tags,
})
);
}
await check_results({
context,
matches: [
makeSearchResult(context, {
engineName: SUGGESTIONS_ENGINE_NAME,
heuristic: true,
}),
...urlbarResults,
],
});
}
var uri1 = "http://site.tld/1/aaa";
var uri2 = "http://site.tld/2/bbb";
var uri3 = "http://site.tld/3/aaa";
var uri4 = "http://site.tld/4/bbb";
var uri5 = "http://site.tld/5/aaa";
var uri6 = "http://site.tld/6/bbb";
var tests = [
() =>
ensure_tag_results(
[
[uri1, ["foo"]],
[uri4, ["foo bar"]],
[uri6, ["foo bar cheese"]],
],
"foo"
),
() => ensure_tag_results([[uri1, ["foo"]]], "foo aaa"),
() =>
ensure_tag_results(
[
[uri4, ["foo bar"]],
[uri6, ["foo bar cheese"]],
],
"foo bbb"
),
() =>
ensure_tag_results(
[
[uri2, ["bar"]],
[uri4, ["foo bar"]],
[uri5, ["bar cheese"]],
[uri6, ["foo bar cheese"]],
],
"bar"
),
() => ensure_tag_results([[uri5, ["bar cheese"]]], "bar aaa"),
() =>
ensure_tag_results(
[
[uri2, ["bar"]],
[uri4, ["foo bar"]],
[uri6, ["foo bar cheese"]],
],
"bar bbb"
),
() =>
ensure_tag_results(
[
[uri3, ["cheese"]],
[uri5, ["bar cheese"]],
[uri6, ["foo bar cheese"]],
],
"cheese"
),
() =>
ensure_tag_results(
[
[uri3, ["cheese"]],
[uri5, ["bar cheese"]],
],
"chees aaa"
),
() => ensure_tag_results([[uri6, ["foo bar cheese"]]], "chees bbb"),
() =>
ensure_tag_results(
[
[uri4, ["foo bar"]],
[uri6, ["foo bar cheese"]],
],
"fo bar"
),
() => ensure_tag_results([], "fo bar aaa"),
() =>
ensure_tag_results(
[
[uri4, ["foo bar"]],
[uri6, ["foo bar cheese"]],
],
"fo bar bbb"
),
() =>
ensure_tag_results(
[
[uri4, ["foo bar"]],
[uri6, ["foo bar cheese"]],
],
"ba foo"
),
() => ensure_tag_results([], "ba foo aaa"),
() =>
ensure_tag_results(
[
[uri4, ["foo bar"]],
[uri6, ["foo bar cheese"]],
],
"ba foo bbb"
),
() =>
ensure_tag_results(
[
[uri5, ["bar cheese"]],
[uri6, ["foo bar cheese"]],
],
"ba chee"
),
() => ensure_tag_results([[uri5, ["bar cheese"]]], "ba chee aaa"),
() => ensure_tag_results([[uri6, ["foo bar cheese"]]], "ba chee bbb"),
() =>
ensure_tag_results(
[
[uri5, ["bar cheese"]],
[uri6, ["foo bar cheese"]],
],
"cheese bar"
),
() => ensure_tag_results([[uri5, ["bar cheese"]]], "cheese bar aaa"),
() => ensure_tag_results([[uri6, ["foo bar cheese"]]], "chees bar bbb"),
() => ensure_tag_results([[uri6, ["foo bar cheese"]]], "cheese bar foo"),
() => ensure_tag_results([], "foo bar cheese aaa"),
() => ensure_tag_results([[uri6, ["foo bar cheese"]]], "foo bar cheese bbb"),
];
/**
* Properly tags a uri adding it to bookmarks.
*
* @param {string} url
* The URI to tag.
* @param {Array} tags
* The tags to add.
*/
async function tagURI(url, tags) {
await PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.unfiledGuid,
url,
title: "A title",
});
PlacesUtils.tagging.tagURI(Services.io.newURI(url), tags);
}
/**
* Test history autocomplete
*/
add_task(async function test_history_autocomplete_tags() {
// always search in history + bookmarks, no matter what the default is
Services.prefs.setBoolPref("browser.urlbar.suggest.history", true);
Services.prefs.setBoolPref("browser.urlbar.suggest.bookmarks", true);
Services.prefs.setBoolPref("browser.urlbar.suggest.searches", false);
registerCleanupFunction(() => {
Services.prefs.clearUserPref("browser.urlbar.suggest.history");
Services.prefs.clearUserPref("browser.urlbar.suggest.bookmarks");
Services.prefs.clearUserPref("browser.urlbar.suggest.searches");
});
await tagURI(uri6, ["foo bar cheese"]);
await tagURI(uri5, ["bar cheese"]);
await tagURI(uri4, ["foo bar"]);
await tagURI(uri3, ["cheese"]);
await tagURI(uri2, ["bar"]);
await tagURI(uri1, ["foo"]);
for (let tagTest of tests) {
await tagTest();
}
});