Bug 1717507 - Convert protocol tests from unifiedcomplete to urlbar. r=adw

There are two substantive changes to test_protocol_swap worth pointing out:
1. Some subtests now search for <protocol>://sit instead of <protocol>://site. This is because the latter would make the heuristic result the same as the relevant history result and the history result would be deduped. We would thus lose test coverage for that history result.
2. Tests that expected allMatches no longer expect uri5. The muxer dedupes https://www. URLs in favour of https:// URLs.

Depends on D118636

Differential Revision: https://phabricator.services.mozilla.com/D118637
This commit is contained in:
Harry Twyford 2021-07-08 15:01:31 +00:00
Родитель 75563866de
Коммит ad20a8695b
6 изменённых файлов: 351 добавлений и 191 удалений

Просмотреть файл

@ -0,0 +1,42 @@
/* 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/. */
/**
* Test bug 424509 to make sure searching for "h" doesn't match "http" of urls.
*/
testEngine_setup();
add_task(async function test_escape() {
Services.prefs.setBoolPref("browser.urlbar.autoFill", false);
Services.prefs.setBoolPref("browser.urlbar.suggest.searches", false);
registerCleanupFunction(() => {
Services.prefs.clearUserPref("browser.urlbar.suggest.searches");
});
let uri1 = Services.io.newURI("http://site/");
let uri2 = Services.io.newURI("http://happytimes/");
await PlacesTestUtils.addVisits([
{ uri: uri1, title: "title" },
{ uri: uri2, title: "title" },
]);
info("Searching for h matches site and not http://");
let context = createContext("h", { isPrivate: false });
await check_results({
context,
matches: [
makeSearchResult(context, {
engineName: SUGGESTIONS_ENGINE_NAME,
heuristic: true,
}),
makeVisitResult(context, {
uri: uri2.spec,
title: "title",
}),
],
});
await cleanupPlaces();
});

Просмотреть файл

@ -0,0 +1,307 @@
/* 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/. */
/**
* Test bug 424717 to make sure searching with an existing location like
* http://site/ also matches https://site/ or ftp://site/. Same thing for
* ftp://site/ and https://site/.
*
* Test bug 461483 to make sure a search for "w" doesn't match the "www." from
* site subdomains.
*/
testEngine_setup();
add_task(async function test_swap_protocol() {
let uri1 = Services.io.newURI("http://www.site/");
let uri2 = Services.io.newURI("http://site/");
let uri3 = Services.io.newURI("ftp://ftp.site/");
let uri4 = Services.io.newURI("ftp://site/");
let uri5 = Services.io.newURI("https://www.site/");
let uri6 = Services.io.newURI("https://site/");
let uri7 = Services.io.newURI("http://woohoo/");
let uri8 = Services.io.newURI("http://wwwwwwacko/");
await PlacesTestUtils.addVisits([
{ uri: uri8, title: "title" },
{ uri: uri7, title: "title" },
{ uri: uri6, title: "title" },
{ uri: uri5, title: "title" },
{ uri: uri4, title: "title" },
{ uri: uri3, title: "title" },
{ uri: uri2, title: "title" },
{ uri: uri1, title: "title" },
]);
// Disable autoFill to avoid handling the first result.
Services.prefs.setBoolPref("browser.urlbar.autoFill", false);
Services.prefs.setBoolPref("browser.urlbar.autoFill.searchEngines", false);
Services.prefs.setBoolPref("browser.urlbar.suggest.searches", false);
registerCleanupFunction(() => {
Services.prefs.clearUserPref("browser.urlbar.suggest.searches");
});
info("http://www.site matches 'www.site' pages");
let searchString = "http://www.site";
let context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
],
});
info("http://site matches all sites");
searchString = "http://site";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri3.spec, title: "title" }),
makeVisitResult(context, { uri: uri4.spec, title: "title" }),
makeVisitResult(context, { uri: uri6.spec, title: "title" }),
],
});
info("ftp://ftp.site matches itself");
searchString = "ftp://ftp.site";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri3.spec, title: "title" }),
],
});
info("ftp://site matches all sites");
searchString = "ftp://site";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri3.spec, title: "title" }),
makeVisitResult(context, { uri: uri4.spec, title: "title" }),
makeVisitResult(context, { uri: uri6.spec, title: "title" }),
],
});
info("https://www.site matches all sites");
searchString = "https://www.sit";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
],
});
info("https://site matches all sites");
searchString = "https://sit";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri3.spec, title: "title" }),
makeVisitResult(context, { uri: uri4.spec, title: "title" }),
makeVisitResult(context, { uri: uri6.spec, title: "title" }),
],
});
info("www.site matches 'www.site' pages");
searchString = "www.site";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `http://${searchString}/`,
title: `http://${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeSearchResult(context, {
engineName: SUGGESTIONS_ENGINE_NAME,
providerName: "HeuristicFallback",
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
],
});
info("w matches 'w' pages, including 'www'");
context = createContext("w", { isPrivate: false });
await check_results({
context,
matches: [
makeSearchResult(context, {
engineName: SUGGESTIONS_ENGINE_NAME,
heuristic: true,
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
makeVisitResult(context, { uri: uri7.spec, title: "title" }),
makeVisitResult(context, { uri: uri8.spec, title: "title" }),
],
});
info("http://w matches 'w' pages, including 'www'");
searchString = "http://w";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
makeVisitResult(context, { uri: uri7.spec, title: "title" }),
makeVisitResult(context, { uri: uri8.spec, title: "title" }),
],
});
info("http://www.w matches nothing");
searchString = "http://www.w";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
],
});
info("ww matches no 'ww' pages, including 'www'");
context = createContext("ww", { isPrivate: false });
await check_results({
context,
matches: [
makeSearchResult(context, {
engineName: SUGGESTIONS_ENGINE_NAME,
heuristic: true,
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
makeVisitResult(context, { uri: uri8.spec, title: "title" }),
],
});
info("http://ww matches no 'ww' pages, including 'www'");
searchString = "http://ww";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
makeVisitResult(context, { uri: uri8.spec, title: "title" }),
],
});
info("http://www.ww matches nothing");
searchString = "http://www.ww";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
],
});
info("www matches 'www' pages");
context = createContext("www", { isPrivate: false });
await check_results({
context,
matches: [
makeSearchResult(context, {
engineName: SUGGESTIONS_ENGINE_NAME,
heuristic: true,
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
makeVisitResult(context, { uri: uri8.spec, title: "title" }),
],
});
info("http://www matches 'www' pages");
searchString = "http://www";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
makeVisitResult(context, { uri: uri5.spec, title: "title" }),
makeVisitResult(context, { uri: uri8.spec, title: "title" }),
],
});
info("http://www.www matches nothing");
searchString = "http://www.www";
context = createContext(searchString, { isPrivate: false });
await check_results({
context,
matches: [
makeVisitResult(context, {
uri: `${searchString}/`,
title: `${searchString}/`,
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
heuristic: true,
}),
],
});
await cleanupPlaces();
});

Просмотреть файл

@ -26,6 +26,8 @@ support-files =
[test_keywords.js]
skip-if = os == 'linux' # bug 1474616
[test_muxer.js]
[test_protocol_ignore.js]
[test_protocol_swap.js]
[test_providerAliasEngines.js]
[test_providerHeuristicFallback.js]
[test_providerKeywords.js]

Просмотреть файл

@ -1,26 +0,0 @@
/* 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/. */
/**
* Test bug 424509 to make sure searching for "h" doesn't match "http" of urls.
*/
add_task(async function test_escape() {
Services.prefs.setBoolPref("browser.urlbar.autoFill", false);
let uri1 = NetUtil.newURI("http://site/");
let uri2 = NetUtil.newURI("http://happytimes/");
await PlacesTestUtils.addVisits([
{ uri: uri1, title: "title" },
{ uri: uri2, title: "title" },
]);
info("Searching for h matches site and not http://");
await check_autocomplete({
search: "h",
matches: [{ uri: uri2, title: "title" }],
});
await cleanup();
});

Просмотреть файл

@ -1,163 +0,0 @@
/* 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/. */
/**
* Test bug 424717 to make sure searching with an existing location like
* http://site/ also matches https://site/ or ftp://site/. Same thing for
* ftp://site/ and https://site/.
*
* Test bug 461483 to make sure a search for "w" doesn't match the "www." from
* site subdomains.
*/
add_task(async function test_swap_protocol() {
let uri1 = NetUtil.newURI("http://www.site/");
let uri2 = NetUtil.newURI("http://site/");
let uri3 = NetUtil.newURI("ftp://ftp.site/");
let uri4 = NetUtil.newURI("ftp://site/");
let uri5 = NetUtil.newURI("https://www.site/");
let uri6 = NetUtil.newURI("https://site/");
let uri7 = NetUtil.newURI("http://woohoo/");
let uri8 = NetUtil.newURI("http://wwwwwwacko/");
await PlacesTestUtils.addVisits([
{ uri: uri1, title: "title" },
{ uri: uri2, title: "title" },
{ uri: uri3, title: "title" },
{ uri: uri4, title: "title" },
{ uri: uri5, title: "title" },
{ uri: uri6, title: "title" },
{ uri: uri7, title: "title" },
{ uri: uri8, title: "title" },
]);
// uri1 and uri2 won't appear since they are lower-ranked duplicates of uri6.
let allMatches = [
{ uri: uri3, title: "title" },
{ uri: uri4, title: "title" },
{ uri: uri5, title: "title" },
{ uri: uri6, title: "title" },
];
// Disable autoFill to avoid handling the first result.
Services.prefs.setBoolPref("browser.urlbar.autoFill", false);
Services.prefs.setBoolPref("browser.urlbar.autoFill.searchEngines", false);
info("http://www.site matches 'www.site' pages");
await check_autocomplete({
search: "http://www.site",
matches: [{ uri: uri5, title: "title" }],
});
info("http://site matches all site");
await check_autocomplete({
search: "http://site",
matches: allMatches,
});
info("ftp://ftp.site matches itself");
await check_autocomplete({
search: "ftp://ftp.site",
matches: [{ uri: uri3, title: "title" }],
});
info("ftp://site matches all site");
await check_autocomplete({
search: "ftp://site",
matches: allMatches,
});
info("https://www.site matches all site");
await check_autocomplete({
search: "https://www.site",
matches: [{ uri: uri5, title: "title" }],
});
info("https://site matches all site");
await check_autocomplete({
search: "https://site",
matches: allMatches,
});
info("www.site matches 'www.site' pages");
await check_autocomplete({
search: "www.site",
matches: [{ uri: uri5, title: "title" }],
});
info("w matches 'w' pages, including 'www'");
await check_autocomplete({
search: "w",
matches: [
{ uri: uri5, title: "title" },
{ uri: uri7, title: "title" },
{ uri: uri8, title: "title" },
],
});
info("http://w matches 'w' pages, including 'www'");
await check_autocomplete({
search: "http://w",
matches: [
{ uri: uri5, title: "title" },
{ uri: uri7, title: "title" },
{ uri: uri8, title: "title" },
],
});
info("http://www.w matches nothing");
await check_autocomplete({
search: "http://www.w",
matches: [],
});
info("ww matches no 'ww' pages, including 'www'");
await check_autocomplete({
search: "ww",
matches: [
{ uri: uri5, title: "title" },
{ uri: uri8, title: "title" },
],
});
info("http://ww matches no 'ww' pages, including 'www'");
await check_autocomplete({
search: "http://ww",
matches: [
{ uri: uri5, title: "title" },
{ uri: uri8, title: "title" },
],
});
info("http://www.ww matches nothing");
await check_autocomplete({
search: "http://www.ww",
matches: [],
});
info("www matches 'www' pages");
await check_autocomplete({
search: "www",
matches: [
{ uri: uri5, title: "title" },
{ uri: uri8, title: "title" },
],
});
info("http://www matches 'www' pages");
await check_autocomplete({
search: "http://www",
matches: [
{ uri: uri5, title: "title" },
{ uri: uri8, title: "title" },
],
});
info("http://www.www matches nothing");
await check_autocomplete({
search: "http://www.www",
matches: [],
});
await cleanup();
});

Просмотреть файл

@ -12,10 +12,8 @@ support-files =
[test_do_not_trim.js]
[test_download_embed_bookmarks.js]
[test_empty_search.js]
[test_ignore_protocol.js]
[test_multi_word_search.js]
[test_search_engine_restyle.js]
[test_special_search.js]
[test_swap_protocol.js]
[test_tab_matches.js]
[test_word_boundary_search.js]