Bug 1240727 - match search engine alias with lower case; r=mak
matching both alias and searchToken with lower case, add tests to validate lower, upper, cap cases
MozReview-Commit-ID: F8aNsilK5pm
--- a/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm
+++ b/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm
@@ -237,17 +237,17 @@ this.PlacesSearchAutocompleteProvider =
* engineName: The display name of the search engine.
* iconUrl: Icon associated to the match, or null if not available.
* }
*/
findMatchByAlias: Task.async(function* (searchToken) {
yield this.ensureInitialized();
return SearchAutocompleteProviderInternal.aliasMatches
- .find(m => m.alias == searchToken);
+ .find(m => m.alias.toLocaleLowerCase() == searchToken.toLocaleLowerCase());
}),
getDefaultMatch: Task.async(function* () {
yield this.ensureInitialized();
return SearchAutocompleteProviderInternal.defaultMatch;
}),
--- a/toolkit/components/places/tests/unit/test_PlacesSearchAutocompleteProvider.js
+++ b/toolkit/components/places/tests/unit/test_PlacesSearchAutocompleteProvider.js
@@ -45,21 +45,54 @@ add_task(function* add_search_engine_mat
let match = yield PlacesSearchAutocompleteProvider.findMatchByToken("bacon");
do_check_eq(match.url, "http://www.bacon.moz");
do_check_eq(match.engineName, "bacon");
do_check_eq(match.iconUrl, null);
});
add_task(function* test_aliased_search_engine_match() {
do_check_eq(null, yield PlacesSearchAutocompleteProvider.findMatchByAlias("sober"));
-
+ // Lower case
let match = yield PlacesSearchAutocompleteProvider.findMatchByAlias("pork");
do_check_eq(match.engineName, "bacon");
do_check_eq(match.alias, "pork");
do_check_eq(match.iconUrl, null);
+ // Upper case
+ let match1 = yield PlacesSearchAutocompleteProvider.findMatchByAlias("PORK");
+ do_check_eq(match1.engineName, "bacon");
+ do_check_eq(match1.alias, "pork");
+ do_check_eq(match1.iconUrl, null);
+ // Cap case
+ let match2 = yield PlacesSearchAutocompleteProvider.findMatchByAlias("Pork");
+ do_check_eq(match2.engineName, "bacon");
+ do_check_eq(match2.alias, "pork");
+ do_check_eq(match2.iconUrl, null);
+});
+
+add_task(function* test_aliased_search_engine_match_upper_case_alias() {
+ let promiseTopic = promiseSearchTopic("engine-added");
+ do_check_eq(null, yield PlacesSearchAutocompleteProvider.findMatchByToken("patch"));
+ Services.search.addEngineWithDetails("patch", "", "PR", "Search Patch",
+ "GET", "http://www.patch.moz/?search={searchTerms}");
+ yield promiseSearchTopic;
+ // lower case
+ let match = yield PlacesSearchAutocompleteProvider.findMatchByAlias("pr");
+ do_check_eq(match.engineName, "patch");
+ do_check_eq(match.alias, "PR");
+ do_check_eq(match.iconUrl, null);
+ // Upper case
+ let match1 = yield PlacesSearchAutocompleteProvider.findMatchByAlias("PR");
+ do_check_eq(match1.engineName, "patch");
+ do_check_eq(match1.alias, "PR");
+ do_check_eq(match1.iconUrl, null);
+ // Cap case
+ let match2 = yield PlacesSearchAutocompleteProvider.findMatchByAlias("Pr");
+ do_check_eq(match2.engineName, "patch");
+ do_check_eq(match2.alias, "PR");
+ do_check_eq(match2.iconUrl, null);
});
add_task(function* remove_search_engine_nomatch() {
let engine = Services.search.getEngineByName("bacon");
let promiseTopic = promiseSearchTopic("engine-removed");
Services.search.removeEngine(engine);
yield promiseTopic;
do_check_eq(null, yield PlacesSearchAutocompleteProvider.findMatchByToken("bacon"));