Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: os != 'android'
- Manifest: browser/components/urlbar/tests/unit/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
add_setup(async function () {
let original = await SearchService.getDefault();
registerCleanupFunction(() => {
SearchService.setDefault(original, SearchService.CHANGE_REASON.UNKNOWN);
});
});
add_task(async function test_search_suggestion_normal() {
let engine = await addTestSuggestionsEngine(q => [q]);
SearchService.setDefault(engine, SearchService.CHANGE_REASON.UNKNOWN);
await doTest({
context: createContext("test", {
providers: ["UrlbarProviderSearchSuggestions"],
isPrivate: false,
}),
expected: [
{
title: "test",
highlights: {
title: UrlbarUtils.HIGHLIGHT.SUGGESTED,
},
},
],
});
});
add_task(async function test_search_tail() {
let engine = await addTestTailSuggestionsEngine(searchStr => {
let suffixes = ["tail"];
return [
"test t",
suffixes.map(s => searchStr + s.slice(1)),
[],
{
"google:irrelevantparameter": [],
"google:suggestdetail": suffixes.map(s => ({
mp: "… ",
t: s,
})),
},
];
});
SearchService.setDefault(engine, SearchService.CHANGE_REASON.UNKNOWN);
await doTest({
context: createContext("test t", {
providers: ["UrlbarProviderSearchSuggestions"],
isPrivate: false,
}),
expected: [
{
title: "tail",
tail: "tail",
highlights: {
title: UrlbarUtils.HIGHLIGHT.SUGGESTED,
},
},
],
});
});
async function doTest({ context, expected }) {
await PlacesFrecencyRecalculator.recalculateAnyOutdatedFrecencies();
let controller = UrlbarTestUtils.newMockController({
input: {
isPrivate: context.isPrivate,
onFirstResult() {
return false;
},
getSearchSource() {
return "dummy-search-source";
},
window: {
location: {
href: AppConstants.BROWSER_CHROME_URL,
},
},
},
});
controller.setView({
get visibleResults() {
return context.results;
},
controller: {
removeResult() {},
},
});
await controller.startQuery(context);
Assert.equal(context.results.length, expected.length);
for (let i = 0; i < context.results.length; i++) {
info(`Test for index[${i}]`);
let actualResult = context.results[i];
let expectedResult = expected[i];
Assert.equal(actualResult.payload.title, expectedResult.title);
Assert.equal(actualResult.payload.tail, expectedResult.tail);
Assert.deepEqual(actualResult.testHighlights, expectedResult.highlights);
}
}