diff --git a/browser/base/content/test/general/browser_action_keyword.js b/browser/base/content/test/general/browser_action_keyword.js index 7e3ef9555c2a..ddbf91af4e51 100644 --- a/browser/base/content/test/general/browser_action_keyword.js +++ b/browser/base/content/test/general/browser_action_keyword.js @@ -13,34 +13,34 @@ function* promise_first_result(inputText) { add_task(function*() { // This test is only relevant if UnifiedComplete is enabled. - if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) { - todo(false, "Stop supporting old autocomplete components."); - return; - } + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); + registerCleanupFunction(() => { + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); + }); let tab = gBrowser.selectedTab = gBrowser.addTab("about:mozilla"); let tabs = [tab]; - registerCleanupFunction(() => { + registerCleanupFunction(function* () { for (let tab of tabs) gBrowser.removeTab(tab); - PlacesUtils.bookmarks.removeItem(itemId); + yield PlacesUtils.bookmarks.remove(bm); }); yield promiseTabLoadEvent(tab); - let itemId = - PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId, - NetUtil.newURI("http://example.com/?q=%s"), - PlacesUtils.bookmarks.DEFAULT_INDEX, - "test"); - PlacesUtils.bookmarks.setKeywordForBookmark(itemId, "keyword"); + let bm = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid, + url: "http://example.com/?q=%s", + title: "test" }); + yield PlacesUtils.keywords.insert({ keyword: "keyword", + url: "http://example.com/?q=%s" }); let result = yield promise_first_result("keyword something"); isnot(result, null, "Expect a keyword result"); is(result.getAttribute("type"), "action keyword", "Expect correct `type` attribute"); is(result.getAttribute("actiontype"), "keyword", "Expect correct `actiontype` attribute"); - is(result.getAttribute("title"), "test", "Expect correct title"); + is(result.getAttribute("title"), "example.com", "Expect correct title"); // We need to make a real URI out of this to ensure it's normalised for // comparison. @@ -50,9 +50,9 @@ add_task(function*() { is_element_visible(result._title, "Title element should be visible"); is(result._title.childNodes.length, 1, "Title element should have 1 child"); is(result._title.childNodes[0].nodeName, "#text", "That child should be a text node"); - is(result._title.childNodes[0].data, "test", "Node should contain the name of the bookmark"); + is(result._title.childNodes[0].data, "example.com", "Node should contain the name of the bookmark"); - is_element_visible(result._extra, "Extra element should be visible"); + is_element_visible(result._extraBox, "Extra element should be visible"); is(result._extra.childNodes.length, 1, "Title element should have 1 child"); is(result._extra.childNodes[0].nodeName, "span", "That child should be a span node"); let span = result._extra.childNodes[0]; diff --git a/browser/base/content/test/general/browser_action_keyword_override.js b/browser/base/content/test/general/browser_action_keyword_override.js index a8e01642e890..6deca48ebe06 100644 --- a/browser/base/content/test/general/browser_action_keyword_override.js +++ b/browser/base/content/test/general/browser_action_keyword_override.js @@ -1,19 +1,19 @@ add_task(function*() { // This test is only relevant if UnifiedComplete is enabled. - if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) { - todo(false, "Stop supporting old autocomplete components."); - return; - } - - let itemId = - PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId, - NetUtil.newURI("http://example.com/?q=%s"), - PlacesUtils.bookmarks.DEFAULT_INDEX, - "test"); - PlacesUtils.bookmarks.setKeywordForBookmark(itemId, "keyword"); - + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); registerCleanupFunction(() => { - PlacesUtils.bookmarks.removeItem(itemId); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); + }); + + let bm = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid, + url: "http://example.com/?q=%s", + title: "test" }); + yield PlacesUtils.keywords.insert({ keyword: "keyword", + url: "http://example.com/?q=%s" }) + + registerCleanupFunction(function* () { + yield PlacesUtils.bookmarks.remove(bm); }); yield promiseAutocompleteResultPopup("keyword search"); @@ -21,12 +21,12 @@ add_task(function*() { info("Before override"); is_element_hidden(result._url, "URL element should be hidden"); - is_element_visible(result._extra, "Extra element should be visible"); + is_element_visible(result._extraBox, "Extra element should be visible"); info("During override"); EventUtils.synthesizeKey("VK_SHIFT" , { type: "keydown" }); is_element_hidden(result._url, "URL element should be hidden"); - is_element_visible(result._extra, "Extra element should be visible"); + is_element_visible(result._extraBox, "Extra element should be visible"); EventUtils.synthesizeKey("VK_SHIFT" , { type: "keyup" }); diff --git a/browser/base/content/test/general/browser_action_searchengine.js b/browser/base/content/test/general/browser_action_searchengine.js index 0f9eba739bbf..3ccf23370808 100644 --- a/browser/base/content/test/general/browser_action_searchengine.js +++ b/browser/base/content/test/general/browser_action_searchengine.js @@ -3,10 +3,11 @@ add_task(function* () { // This test is only relevant if UnifiedComplete is enabled. - if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) { - todo(false, "Stop supporting old autocomplete components."); - return; - } + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); + registerCleanupFunction(() => { + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); + }); Services.search.addEngineWithDetails("MozSearch", "", "", "", "GET", "http://example.com/?q={searchTerms}"); diff --git a/browser/base/content/test/general/browser_action_searchengine_alias.js b/browser/base/content/test/general/browser_action_searchengine_alias.js index 7fd966554a31..65f5cafbd6dd 100644 --- a/browser/base/content/test/general/browser_action_searchengine_alias.js +++ b/browser/base/content/test/general/browser_action_searchengine_alias.js @@ -4,7 +4,12 @@ **/ add_task(function* () { + // This test is only relevant if UnifiedComplete is enabled. + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); + registerCleanupFunction(() => { + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); + }); let iconURI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABGklEQVQoz2NgGB6AnZ1dUlJSXl4eSDIyMhLW4Ovr%2B%2Fr168uXL69Zs4YoG%2BLi4i5dusTExMTGxsbNzd3f37937976%2BnpmZmagbHR09J49e5YvX66kpATVEBYW9ubNm2nTphkbG7e2tp44cQLIuHfvXm5urpaWFlDKysqqu7v73LlzECMYIiIiHj58mJCQoKKicvXq1bS0NKBgW1vbjh074uPjgeqAXE1NzSdPnvDz84M0AEUvXLgAsW379u1z5swBen3jxo2zZ892cHB4%2BvQp0KlAfwI1cHJyghQFBwfv2rULokFXV%2FfixYu7d%2B8GGqGgoMDKyrpu3br9%2B%2FcDuXl5eVA%2FAEWBfoWHAdAYoNuAYQ0XAeoUERFhGDYAAPoUaT2dfWJuAAAAAElFTkSuQmCC"; Services.search.addEngineWithDetails("MozSearch", iconURI, "moz", "", "GET", @@ -20,7 +25,6 @@ add_task(function* () { Services.search.currentEngine = originalEngine; let engine = Services.search.getEngineByName("MozSearch"); Services.search.removeEngine(engine); - Services.prefs.clearUserPref("browser.urlbar.unifiedcomplete"); try { gBrowser.removeTab(tab); diff --git a/browser/base/content/test/general/browser_autocomplete_a11y_label.js b/browser/base/content/test/general/browser_autocomplete_a11y_label.js index 1ecd66c6b103..6fa978db2f9c 100644 --- a/browser/base/content/test/general/browser_autocomplete_a11y_label.js +++ b/browser/base/content/test/general/browser_autocomplete_a11y_label.js @@ -3,10 +3,11 @@ add_task(function*() { // This test is only relevant if UnifiedComplete is enabled. - if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) { - todo(false, "Stop supporting old autocomplete components."); - return; - } + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); + registerCleanupFunction(() => { + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); + }); let tab = gBrowser.addTab("about:about"); yield promiseTabLoaded(tab); diff --git a/browser/base/content/test/general/browser_autocomplete_autoselect.js b/browser/base/content/test/general/browser_autocomplete_autoselect.js index cd2571b00cdd..dac78675a657 100644 --- a/browser/base/content/test/general/browser_autocomplete_autoselect.js +++ b/browser/base/content/test/general/browser_autocomplete_autoselect.js @@ -10,12 +10,15 @@ function is_selected(index) { add_task(function*() { // This test is only relevant if UnifiedComplete is enabled. - if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) { - todo(false, "Stop supporting old autocomplete components."); - return; - } + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); + registerCleanupFunction(() => { + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); + }); - registerCleanupFunction(() => PlacesTestUtils.clearHistory()); + registerCleanupFunction(function* () { + yield PlacesTestUtils.clearHistory(); + }); let visits = []; repeat(10, i => { diff --git a/browser/base/content/test/general/browser_autocomplete_enter_race.js b/browser/base/content/test/general/browser_autocomplete_enter_race.js index 3cdd45d19389..18cfc4916638 100644 --- a/browser/base/content/test/general/browser_autocomplete_enter_race.js +++ b/browser/base/content/test/general/browser_autocomplete_enter_race.js @@ -3,16 +3,15 @@ add_task(function*() { Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); registerCleanupFunction(() => { - PlacesUtils.bookmarks.removeFolderChildren(PlacesUtils.unfiledBookmarksFolderId); Services.prefs.clearUserPref("browser.urlbar.unifiedcomplete"); + yield PlacesUtils.bookmarks.remove(bm); }); - let itemId = - PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId, - NetUtil.newURI("http://example.com/?q=%s"), - PlacesUtils.bookmarks.DEFAULT_INDEX, - "test"); - PlacesUtils.bookmarks.setKeywordForBookmark(itemId, "keyword"); + let bm = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.unfiledGuid, + url: "http://example.com/?q=%s", + title: "test" }); + yield PlacesUtils.keywords.insert({ keyword: "keyword", + url: "http://example.com/?q=%s" }); yield new Promise(resolve => waitForFocus(resolve, window)); diff --git a/browser/base/content/test/general/browser_autocomplete_no_title.js b/browser/base/content/test/general/browser_autocomplete_no_title.js index 9b4a688694d2..c4be42a7198e 100644 --- a/browser/base/content/test/general/browser_autocomplete_no_title.js +++ b/browser/base/content/test/general/browser_autocomplete_no_title.js @@ -3,10 +3,11 @@ add_task(function*() { // This test is only relevant if UnifiedComplete is enabled. - if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) { - todo(false, "Stop supporting old autocomplete components."); - return; - } + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); + registerCleanupFunction(() => { + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); + }); let tab = gBrowser.selectedTab = gBrowser.addTab("about:mozilla", {animate: false}); yield promiseTabLoaded(tab); diff --git a/browser/base/content/test/general/browser_autocomplete_oldschool_wrap.js b/browser/base/content/test/general/browser_autocomplete_oldschool_wrap.js index 110c1ffefed6..f78651ee8dae 100644 --- a/browser/base/content/test/general/browser_autocomplete_oldschool_wrap.js +++ b/browser/base/content/test/general/browser_autocomplete_oldschool_wrap.js @@ -15,8 +15,7 @@ add_task(function*() { return; } - registerCleanupFunction(() => PlacesTestUtils.clearHistory()); - + yield PlacesTestUtils.clearHistory(); let visits = []; repeat(10, i => { visits.push({ @@ -25,13 +24,18 @@ add_task(function*() { }); yield PlacesTestUtils.addVisits(visits); + registerCleanupFunction(function* () { + yield PlacesTestUtils.clearHistory(); + }); + let tab = gBrowser.selectedTab = gBrowser.addTab("about:mozilla", {animate: false}); yield promiseTabLoaded(tab); yield promiseAutocompleteResultPopup("example.com/autocomplete"); let popup = gURLBar.popup; - let results = popup.richlistbox.children; - is(results.length, 10, "Should get 11 results"); + let results = popup.richlistbox.children.filter(is_visible); + + is(results.length, 10, "Should get 10 results"); is_selected(-1); info("Key Down to select the next item"); diff --git a/browser/base/content/test/general/browser_bug1003461-switchtab-override.js b/browser/base/content/test/general/browser_bug1003461-switchtab-override.js index b94cf7f3c64d..32e44ba499ce 100644 --- a/browser/base/content/test/general/browser_bug1003461-switchtab-override.js +++ b/browser/base/content/test/general/browser_bug1003461-switchtab-override.js @@ -4,10 +4,11 @@ add_task(function* test_switchtab_override() { // This test is only relevant if UnifiedComplete is enabled. - if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) { - todo(false, "Stop supporting old autocomplete components."); - return; - } + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); + registerCleanupFunction(() => { + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); + }); let testURL = "http://example.org/browser/browser/base/content/test/general/dummy_page.html"; diff --git a/browser/base/content/test/general/browser_bug1070778.js b/browser/base/content/test/general/browser_bug1070778.js index c52854763d40..b698ec109ee1 100644 --- a/browser/base/content/test/general/browser_bug1070778.js +++ b/browser/base/content/test/general/browser_bug1070778.js @@ -7,29 +7,32 @@ function is_selected(index) { add_task(function*() { // This test is only relevant if UnifiedComplete is enabled. - if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) { - todo(false, "Stop supporting old autocomplete components."); - return; - } - + let ucpref = Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", true); registerCleanupFunction(() => { - PlacesUtils.bookmarks.removeFolderChildren(PlacesUtils.unfiledBookmarksFolderId); + Services.prefs.setBoolPref("browser.urlbar.unifiedcomplete", ucpref); }); - let itemId = - PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId, - NetUtil.newURI("http://example.com/?q=%s"), - PlacesUtils.bookmarks.DEFAULT_INDEX, - "test"); - PlacesUtils.bookmarks.setKeywordForBookmark(itemId, "keyword"); + let bookmarks = []; + bookmarks.push((yield PlacesUtils.bookmarks + .insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid, + url: "http://example.com/?q=%s", + title: "test" }))); + yield PlacesUtils.keywords.insert({ keyword: "keyword", + url: "http://example.com/?q=%s" }); // This item only needed so we can select the keyword item, select something // else, then select the keyword item again. - itemId = - PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId, - NetUtil.newURI("http://example.com/keyword"), - PlacesUtils.bookmarks.DEFAULT_INDEX, - "keyword abc"); + bookmarks.push((yield PlacesUtils.bookmarks + .insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid, + url: "http://example.com/keyword", + title: "keyword abc" }))); + + registerCleanupFunction(function* () { + for (let bm of bookmarks) { + yield PlacesUtils.bookmarks.remove(bm); + } + }); let tab = gBrowser.selectedTab = gBrowser.addTab("about:mozilla", {animate: false}); yield promiseTabLoaded(tab); diff --git a/browser/base/content/test/general/browser_urlbarEnterAfterMouseOver.js b/browser/base/content/test/general/browser_urlbarEnterAfterMouseOver.js index 6eb6b2c58395..79c8137ff27f 100644 --- a/browser/base/content/test/general/browser_urlbarEnterAfterMouseOver.js +++ b/browser/base/content/test/general/browser_urlbarEnterAfterMouseOver.js @@ -16,7 +16,9 @@ function is_selected(index) { } add_task(function*() { - registerCleanupFunction(() => PlacesTestUtils.clearHistory()); + registerCleanupFunction(function* () { + yield PlacesTestUtils.clearHistory(); + }); yield PlacesTestUtils.clearHistory(); let tabCount = gBrowser.tabs.length; diff --git a/toolkit/components/places/UnifiedComplete.js b/toolkit/components/places/UnifiedComplete.js index 727f70a7bdcb..0be10038906d 100644 --- a/toolkit/components/places/UnifiedComplete.js +++ b/toolkit/components/places/UnifiedComplete.js @@ -46,11 +46,10 @@ const MATCH_BEGINNING_CASE_SENSITIVE = Ci.mozIPlacesAutoComplete.MATCH_BEGINNING // AutoComplete query type constants. // Describes the various types of queries that we can process rows for. -const QUERYTYPE_KEYWORD = 0; -const QUERYTYPE_FILTERED = 1; -const QUERYTYPE_AUTOFILL_HOST = 2; -const QUERYTYPE_AUTOFILL_URL = 3; -const QUERYTYPE_AUTOFILL_PREDICTURL = 4; +const QUERYTYPE_FILTERED = 0; +const QUERYTYPE_AUTOFILL_HOST = 1; +const QUERYTYPE_AUTOFILL_URL = 2; +const QUERYTYPE_AUTOFILL_PREDICTURL = 3; // This separator is used as an RTL-friendly way to split the title and tags. // It can also be used by an nsIAutoCompleteResult consumer to re-split the @@ -64,7 +63,7 @@ const TITLE_SEARCH_ENGINE_SEPARATOR = " \u00B7\u2013\u00B7 "; const TELEMETRY_1ST_RESULT = "PLACES_AUTOCOMPLETE_1ST_RESULT_TIME_MS"; const TELEMETRY_6_FIRST_RESULTS = "PLACES_AUTOCOMPLETE_6_FIRST_RESULTS_TIME_MS"; // The default frecency value used when inserting matches with unknown frecency. -const FRECENCY_SEARCHENGINES_DEFAULT = 1000; +const FRECENCY_DEFAULT = 1000; // Sqlite result row index constants. const QUERYINDEX_QUERYTYPE = 0; @@ -149,23 +148,6 @@ const SQL_ADAPTIVE_QUERY = :matchBehavior, :searchBehavior) ORDER BY rank DESC, h.frecency DESC`; -const SQL_KEYWORD_QUERY = - `/* do not warn (bug 487787) */ - SELECT :query_type, - REPLACE(h.url, '%s', :query_string) AS search_url, h.title, - IFNULL(f.url, (SELECT f.url - FROM moz_places - JOIN moz_favicons f ON f.id = favicon_id - WHERE rev_host = h.rev_host - ORDER BY frecency DESC - LIMIT 1) - ), - 1, NULL, NULL, h.visit_count, h.typed, h.id, t.open_count, h.frecency - FROM moz_keywords k - JOIN moz_places h ON k.place_id = h.id - LEFT JOIN moz_favicons f ON f.id = h.favicon_id - LEFT JOIN moz_openpages_temp t ON t.url = search_url - WHERE k.keyword = LOWER(:keyword)`; function hostQuery(conditions = "") { let query = @@ -731,6 +713,8 @@ Search.prototype = { // Since we call the synchronous parseSubmissionURL function later, we must // wait for the initialization of PlacesSearchAutocompleteProvider first. yield PlacesSearchAutocompleteProvider.ensureInitialized(); + if (!this.pending) + return; // For any given search, we run many queries/heuristics: // 1) by alias (as defined in SearchService) @@ -738,7 +722,7 @@ Search.prototype = { // 3) inline completion for hosts (this._hostQuery) or urls (this._urlQuery) // 4) directly typed in url (ie, can be navigated to as-is) // 5) submission for the current search engine - // 6) keywords (this._keywordQuery) + // 6) Places keywords // 7) adaptive learning (this._adaptiveQuery) // 8) open pages not supported by history (this._switchToTabQuery) // 9) query based on match behavior @@ -772,15 +756,13 @@ Search.prototype = { // special results. let hasFirstResult = false; - if (this._searchTokens.length > 0 && - PlacesUtils.bookmarks.getURIForKeyword(this._searchTokens[0])) { - // This may be a keyword of a bookmark. - queries.unshift(this._keywordQuery); - hasFirstResult = true; + if (this._searchTokens.length > 0) { + // This may be a Places keyword. + hasFirstResult = yield this._matchPlacesKeyword(); } - if (this._enableActions && !hasFirstResult) { - // If it's not a bookmarked keyword, then it may be a search engine + if (this.pending && this._enableActions && !hasFirstResult) { + // If it's not a Places keyword, then it may be a search engine // with an alias - which works like a keyword. hasFirstResult = yield this._matchSearchEngineAlias(); } @@ -875,6 +857,35 @@ Search.prototype = { return gotResult; }, + _matchPlacesKeyword: function* () { + // The first word could be a keyword, so that's what we'll search. + let keyword = this._searchTokens[0]; + let entry = yield PlacesUtils.keywords.fetch(this._searchTokens[0]); + if (!entry) + return false; + + // Build the url. + let searchString = this._trimmedOriginalSearchString; + let queryString = ""; + let queryIndex = searchString.indexOf(" "); + if (queryIndex != -1) { + queryString = searchString.substring(queryIndex + 1); + } + // We need to escape the parameters as if they were the query in a URL + queryString = encodeURIComponent(queryString).replace(/%20/g, "+"); + let escapedURL = entry.url.href.replace("%s", queryString); + + let style = (this._enableActions ? "action " : "") + "keyword"; + let actionURL = makeActionURL("keyword", { url: escapedURL, + input: this._originalSearchString }); + let value = this._enableActions ? actionURL : escapedURL; + // The title will end up being "host: queryString" + let comment = entry.url.host; + + this._addMatch({ value, comment, style, frecency: FRECENCY_DEFAULT }); + return true; + }, + _matchSearchEngineUrl: function* () { if (!Prefs.autofillSearchEngines) return false; @@ -922,7 +933,7 @@ Search.prototype = { icon: match.iconUrl, style: "priority-search", finalCompleteValue: match.url, - frecency: FRECENCY_SEARCHENGINES_DEFAULT + frecency: FRECENCY_DEFAULT }); return true; }, @@ -969,7 +980,7 @@ Search.prototype = { comment: match.engineName, icon: match.iconUrl, style: "action searchengine", - frecency: FRECENCY_SEARCHENGINES_DEFAULT, + frecency: FRECENCY_DEFAULT, }); }, @@ -1052,7 +1063,6 @@ Search.prototype = { match = this._processUrlRow(row); break; case QUERYTYPE_FILTERED: - case QUERYTYPE_KEYWORD: match = this._processRow(row); break; } @@ -1236,17 +1246,6 @@ Search.prototype = { // Always prefer the bookmark title unless it is empty let title = bookmarkTitle || historyTitle; - if (queryType == QUERYTYPE_KEYWORD) { - match.style = "keyword"; - if (this._enableActions) { - url = makeActionURL("keyword", { - url: escapedURL, - input: this._originalSearchString, - }); - action = "keyword"; - } - } - // We will always prefer to show tags if we have them. let showTags = !!tags; @@ -1352,37 +1351,6 @@ Search.prototype = { ]; }, - /** - * Obtains the query to search for keywords. - * - * @return an array consisting of the correctly optimized query to search the - * database with and an object containing the params to bound. - */ - get _keywordQuery() { - // The keyword is the first word in the search string, with the parameters - // following it. - let searchString = this._trimmedOriginalSearchString; - let queryString = ""; - let queryIndex = searchString.indexOf(" "); - if (queryIndex != -1) { - queryString = searchString.substring(queryIndex + 1); - } - // We need to escape the parameters as if they were the query in a URL - queryString = encodeURIComponent(queryString).replace(/%20/g, "+"); - - // The first word could be a keyword, so that's what we'll search. - let keyword = this._searchTokens[0]; - - return [ - SQL_KEYWORD_QUERY, - { - keyword: keyword, - query_string: queryString, - query_type: QUERYTYPE_KEYWORD - } - ]; - }, - /** * Obtains the query to search for switch-to-tab entries. * diff --git a/toolkit/components/places/nsPlacesAutoComplete.js b/toolkit/components/places/nsPlacesAutoComplete.js index 366ce144a04e..acedb0e13603 100644 --- a/toolkit/components/places/nsPlacesAutoComplete.js +++ b/toolkit/components/places/nsPlacesAutoComplete.js @@ -12,6 +12,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "Task", + "resource://gre/modules/Task.jsm"); //////////////////////////////////////////////////////////////////////////////// //// Constants @@ -1168,16 +1170,8 @@ nsPlacesAutoComplete.prototype = { let style; if (aRow.getResultByIndex(kQueryIndexQueryType) == kQueryTypeKeyword) { - // If we do not have a title, then we must have a keyword, so let the UI - // know it is a keyword. Otherwise, we found an exact page match, so just - // show the page like a regular result. Because the page title is likely - // going to be more specific than the bookmark title (keyword title). - if (!entryTitle) { - style = "keyword"; - } - else { - title = entryTitle; - } + style = "keyword"; + title = NetUtil.newURI(escapedEntryURL).host; } // We will always prefer to show tags if we have them. @@ -1432,6 +1426,8 @@ urlInlineComplete.prototype = { this.stopSearch(); } + let pendingSearch = this._pendingSearch = {}; + // We want to store the original string with no leading or trailing // whitespace for case sensitive searches. this._originalSearchString = aSearchString; @@ -1450,74 +1446,82 @@ urlInlineComplete.prototype = { this._listener = aListener; - // Don't autoFill if the search term is recognized as a keyword, otherwise - // it will override default keywords behavior. Note that keywords are - // hashed on first use, so while the first query may delay a little bit, - // next ones will just hit the memory hash. - if (this._currentSearchString.length == 0 || !this._db || - PlacesUtils.bookmarks.getURIForKeyword(this._currentSearchString)) { - this._finishSearch(); - return; - } - - // Don't try to autofill if the search term includes any whitespace. - // This may confuse completeDefaultIndex cause the AUTOCOMPLETE_MATCH - // tokenizer ends up trimming the search string and returning a value - // that doesn't match it, or is even shorter. - if (/\s/.test(this._currentSearchString)) { - this._finishSearch(); - return; - } - - // Hosts have no "/" in them. - let lastSlashIndex = this._currentSearchString.lastIndexOf("/"); - - // Search only URLs if there's a slash in the search string... - if (lastSlashIndex != -1) { - // ...but not if it's exactly at the end of the search string. - if (lastSlashIndex < this._currentSearchString.length - 1) - this._queryURL(); - else + Task.spawn(function* () { + // Don't autoFill if the search term is recognized as a keyword, otherwise + // it will override default keywords behavior. Note that keywords are + // hashed on first use, so while the first query may delay a little bit, + // next ones will just hit the memory hash. + let dontAutoFill = this._currentSearchString.length == 0 || !this._db || + (yield PlacesUtils.keywords.fetch(this._currentSearchString)); + if (this._pendingSearch != pendingSearch) + return; + if (dontAutoFill) { this._finishSearch(); - return; - } - - // Do a synchronous search on the table of hosts. - let query = this._hostQuery; - query.params.search_string = this._currentSearchString.toLowerCase(); - // This is just to measure the delay to reach the UI, not the query time. - TelemetryStopwatch.start(DOMAIN_QUERY_TELEMETRY); - let ac = this; - let wrapper = new AutoCompleteStatementCallbackWrapper(this, { - handleResult: function (aResultSet) { - let row = aResultSet.getNextRow(); - let trimmedHost = row.getResultByIndex(0); - let untrimmedHost = row.getResultByIndex(1); - // If the untrimmed value doesn't preserve the user's input just - // ignore it and complete to the found host. - if (untrimmedHost && - !untrimmedHost.toLowerCase().contains(ac._originalSearchString.toLowerCase())) { - untrimmedHost = null; - } - - ac._result.appendMatch(ac._strippedPrefix + trimmedHost, "", "", "", untrimmedHost); - - // handleCompletion() will cause the result listener to be called, and - // will display the result in the UI. - }, - - handleError: function (aError) { - Components.utils.reportError( - "URL Inline Complete: An async statement encountered an " + - "error: " + aError.result + ", '" + aError.message + "'"); - }, - - handleCompletion: function (aReason) { - TelemetryStopwatch.finish(DOMAIN_QUERY_TELEMETRY); - ac._finishSearch(); + return; } - }, this._db); - this._pendingQuery = wrapper.executeAsync([query]); + + // Don't try to autofill if the search term includes any whitespace. + // This may confuse completeDefaultIndex cause the AUTOCOMPLETE_MATCH + // tokenizer ends up trimming the search string and returning a value + // that doesn't match it, or is even shorter. + if (/\s/.test(this._currentSearchString)) { + this._finishSearch(); + return; + } + + // Hosts have no "/" in them. + let lastSlashIndex = this._currentSearchString.lastIndexOf("/"); + + // Search only URLs if there's a slash in the search string... + if (lastSlashIndex != -1) { + // ...but not if it's exactly at the end of the search string. + if (lastSlashIndex < this._currentSearchString.length - 1) + this._queryURL(); + else + this._finishSearch(); + return; + } + + // Do a synchronous search on the table of hosts. + let query = this._hostQuery; + query.params.search_string = this._currentSearchString.toLowerCase(); + // This is just to measure the delay to reach the UI, not the query time. + TelemetryStopwatch.start(DOMAIN_QUERY_TELEMETRY); + let wrapper = new AutoCompleteStatementCallbackWrapper(this, { + handleResult: aResultSet => { + if (this._pendingSearch != pendingSearch) + return; + let row = aResultSet.getNextRow(); + let trimmedHost = row.getResultByIndex(0); + let untrimmedHost = row.getResultByIndex(1); + // If the untrimmed value doesn't preserve the user's input just + // ignore it and complete to the found host. + if (untrimmedHost && + !untrimmedHost.toLowerCase().contains(this._originalSearchString.toLowerCase())) { + untrimmedHost = null; + } + + this._result.appendMatch(this._strippedPrefix + trimmedHost, "", "", "", untrimmedHost); + + // handleCompletion() will cause the result listener to be called, and + // will display the result in the UI. + }, + + handleError: aError => { + Components.utils.reportError( + "URL Inline Complete: An async statement encountered an " + + "error: " + aError.result + ", '" + aError.message + "'"); + }, + + handleCompletion: aReason => { + if (this._pendingSearch != pendingSearch) + return; + TelemetryStopwatch.finish(DOMAIN_QUERY_TELEMETRY); + this._finishSearch(); + } + }, this._db); + this._pendingQuery = wrapper.executeAsync([query]); + }.bind(this)); }, /** @@ -1546,9 +1550,8 @@ urlInlineComplete.prototype = { params.searchString = this._currentSearchString; // Execute the query. - let ac = this; let wrapper = new AutoCompleteStatementCallbackWrapper(this, { - handleResult: function(aResultSet) { + handleResult: aResultSet => { let row = aResultSet.getNextRow(); let value = row.getResultByIndex(0); let url = fixupSearchText(value); @@ -1556,10 +1559,10 @@ urlInlineComplete.prototype = { let prefix = value.slice(0, value.length - stripPrefix(value).length); // We must complete the URL up to the next separator (which is /, ? or #). - let separatorIndex = url.slice(ac._currentSearchString.length) + let separatorIndex = url.slice(this._currentSearchString.length) .search(/[\/\?\#]/); if (separatorIndex != -1) { - separatorIndex += ac._currentSearchString.length; + separatorIndex += this._currentSearchString.length; if (url[separatorIndex] == "/") { separatorIndex++; // Include the "/" separator } @@ -1571,24 +1574,24 @@ urlInlineComplete.prototype = { // ignore it and complete to the found url. let untrimmedURL = prefix + url; if (untrimmedURL && - !untrimmedURL.toLowerCase().contains(ac._originalSearchString.toLowerCase())) { + !untrimmedURL.toLowerCase().contains(this._originalSearchString.toLowerCase())) { untrimmedURL = null; } - ac._result.appendMatch(ac._strippedPrefix + url, "", "", "", untrimmedURL); + this._result.appendMatch(this._strippedPrefix + url, "", "", "", untrimmedURL); // handleCompletion() will cause the result listener to be called, and // will display the result in the UI. }, - handleError: function(aError) { + handleError: aError => { Components.utils.reportError( "URL Inline Complete: An async statement encountered an " + "error: " + aError.result + ", '" + aError.message + "'"); }, - handleCompletion: function(aReason) { - ac._finishSearch(); + handleCompletion: aReason => { + this._finishSearch(); } }, this._db); this._pendingQuery = wrapper.executeAsync([query]); @@ -1600,6 +1603,7 @@ urlInlineComplete.prototype = { delete this._currentSearchString; delete this._result; delete this._listener; + delete this._pendingSearch; if (this._pendingQuery) { this._pendingQuery.cancel(); diff --git a/toolkit/components/places/tests/autocomplete/test_keyword_search.js b/toolkit/components/places/tests/autocomplete/test_keyword_search.js index c8ddc84a83ef..29d23c5c8119 100644 --- a/toolkit/components/places/tests/autocomplete/test_keyword_search.js +++ b/toolkit/components/places/tests/autocomplete/test_keyword_search.js @@ -38,18 +38,20 @@ let kURIs = [ let kTitles = [ "Generic page title", "Keyword title", + "abc", + "xyz" ]; // Add the keyword bookmark addPageBook(0, 0, 1, [], keyKey); // Add in the "fake pages" for keyword searches -gPages[1] = [1,0]; -gPages[2] = [2,0]; -gPages[3] = [3,0]; -gPages[4] = [4,0]; +gPages[1] = [1,2]; +gPages[2] = [2,2]; +gPages[3] = [3,2]; +gPages[4] = [4,2]; // Add a page into history -addPageBook(5, 0); -gPages[6] = [6,0]; +addPageBook(5, 2); +gPages[6] = [6,2]; // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test diff --git a/toolkit/components/places/tests/inline/head_autocomplete.js b/toolkit/components/places/tests/inline/head_autocomplete.js index 7ed53d72a808..71c441834568 100644 --- a/toolkit/components/places/tests/inline/head_autocomplete.js +++ b/toolkit/components/places/tests/inline/head_autocomplete.js @@ -122,26 +122,33 @@ function ensure_results(aSearchString, aExpectedValue) { do_check_eq(numSearchesStarted, 1); }; - input.onSearchComplete = function() { - // We should be running only one query. - do_check_eq(numSearchesStarted, 1); - // Check the autoFilled result. - do_check_eq(input.textValue, autoFilledValue); + let promise = new Promise(resolve => { + input.onSearchComplete = function() { + // We should be running only one query. + do_check_eq(numSearchesStarted, 1); - if (completedValue) { - // Now force completion and check correct casing of the result. - // This ensures the controller is able to do its magic case-preserving - // stuff and correct replacement of the user's casing with result's one. - controller.handleEnter(false); - do_check_eq(input.textValue, completedValue); - } + // Check the autoFilled result. + do_check_eq(input.textValue, autoFilledValue); - waitForCleanup(run_next_test); - }; + if (completedValue) { + // Now force completion and check correct casing of the result. + // This ensures the controller is able to do its magic case-preserving + // stuff and correct replacement of the user's casing with result's one. + controller.handleEnter(false); + do_check_eq(input.textValue, completedValue); + } + + // Cleanup. + remove_all_bookmarks(); + PlacesTestUtils.clearHistory().then(resolve); + }; + }); do_print("Searching for: '" + aSearchString + "'"); controller.startSearch(aSearchString); + + return promise; } function run_test() { @@ -153,22 +160,22 @@ function run_test() { gAutoCompleteTests.forEach(function (testData) { let [description, searchString, expectedValue, setupFunc] = testData; - add_test(function () { + add_task(function* () { do_print(description); Services.prefs.setBoolPref("browser.urlbar.autocomplete.enabled", true); Services.prefs.setBoolPref("browser.urlbar.autoFill", true); Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", false); if (setupFunc) { - setupFunc(); + yield setupFunc(); } // At this point frecency could still be updating due to latest pages // updates. // This is not a problem in real life, but autocomplete tests should // return reliable resultsets, thus we have to wait. - PlacesTestUtils.promiseAsyncUpdates() - .then(() => ensure_results(searchString, expectedValue)); + yield PlacesTestUtils.promiseAsyncUpdates(); + yield ensure_results(searchString, expectedValue); }) }, this); @@ -180,21 +187,13 @@ function add_autocomplete_test(aTestData) { gAutoCompleteTests.push(aTestData); } -function waitForCleanup(aCallback) { - remove_all_bookmarks(); - PlacesTestUtils.clearHistory().then(aCallback); -} - -function addBookmark(aBookmarkObj) { +function* addBookmark(aBookmarkObj) { do_check_true(!!aBookmarkObj.url); - let parentId = aBookmarkObj.parentId ? aBookmarkObj.parentId - : PlacesUtils.unfiledBookmarksFolderId; - let itemId = PlacesUtils.bookmarks - .insertBookmark(parentId, - NetUtil.newURI(aBookmarkObj.url), - PlacesUtils.bookmarks.DEFAULT_INDEX, - "A bookmark"); + yield PlacesUtils.bookmarks + .insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid, + url: aBookmarkObj.url }); if (aBookmarkObj.keyword) { - PlacesUtils.bookmarks.setKeywordForBookmark(itemId, aBookmarkObj.keyword); + yield PlacesUtils.keywords.insert({ keyword: aBookmarkObj.keyword, + url: aBookmarkObj.url }); } } diff --git a/toolkit/components/places/tests/inline/test_autocomplete_functional.js b/toolkit/components/places/tests/inline/test_autocomplete_functional.js index b508c7ec1dd5..b0aa8b9edfef 100644 --- a/toolkit/components/places/tests/inline/test_autocomplete_functional.js +++ b/toolkit/components/places/tests/inline/test_autocomplete_functional.js @@ -8,10 +8,9 @@ add_autocomplete_test([ "Check disabling autocomplete disables autofill", "vis", "vis", - function () - { + function* () { Services.prefs.setBoolPref("browser.urlbar.autocomplete.enabled", false); - PlacesTestUtils.addVisits({ + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://visit.mozilla.org"), transition: TRANSITION_TYPED }); @@ -22,10 +21,9 @@ add_autocomplete_test([ "Check disabling autofill disables autofill", "vis", "vis", - function () - { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill", false); - PlacesTestUtils.addVisits({ + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://visit.mozilla.org"), transition: TRANSITION_TYPED }); @@ -36,12 +34,11 @@ add_autocomplete_test([ "Add urls, check for correct order", "vis", "visit2.mozilla.org/", - function () - { + function* () { let places = [{ uri: NetUtil.newURI("http://visit1.mozilla.org") }, { uri: NetUtil.newURI("http://visit2.mozilla.org"), transition: TRANSITION_TYPED }]; - PlacesTestUtils.addVisits(places); + yield PlacesTestUtils.addVisits(places); } ]); @@ -49,9 +46,8 @@ add_autocomplete_test([ "Add urls, make sure www and http are ignored", "visit1", "visit1.mozilla.org/", - function () - { - PlacesTestUtils.addVisits(NetUtil.newURI("http://www.visit1.mozilla.org")); + function* () { + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://www.visit1.mozilla.org")); } ]); @@ -59,9 +55,8 @@ add_autocomplete_test([ "Autocompleting after an existing host completes to the url", "visit3.mozilla.org/", "visit3.mozilla.org/", - function () - { - PlacesTestUtils.addVisits(NetUtil.newURI("http://www.visit3.mozilla.org")); + function* () { + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://www.visit3.mozilla.org")); } ]); @@ -69,9 +64,8 @@ add_autocomplete_test([ "Searching for www.me should yield www.me.mozilla.org/", "www.me", "www.me.mozilla.org/", - function () - { - PlacesTestUtils.addVisits(NetUtil.newURI("http://www.me.mozilla.org")); + function* () { + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://www.me.mozilla.org")); } ]); @@ -79,10 +73,9 @@ add_autocomplete_test([ "With a bookmark and history, the query result should be the bookmark", "bookmark", "bookmark1.mozilla.org/", - function () - { - addBookmark({ url: "http://bookmark1.mozilla.org/", }); - PlacesTestUtils.addVisits(NetUtil.newURI("http://bookmark1.mozilla.org/foo")); + function* () { + yield addBookmark({ url: "http://bookmark1.mozilla.org/", }); + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://bookmark1.mozilla.org/foo")); } ]); @@ -90,12 +83,10 @@ add_autocomplete_test([ "Check to make sure we get the proper results with full paths", "smokey", "smokey.mozilla.org/", - function () - { - + function* () { let places = [{ uri: NetUtil.newURI("http://smokey.mozilla.org/foo/bar/baz?bacon=delicious") }, { uri: NetUtil.newURI("http://smokey.mozilla.org/foo/bar/baz?bacon=smokey") }]; - PlacesTestUtils.addVisits(places); + yield PlacesTestUtils.addVisits(places); } ]); @@ -103,12 +94,10 @@ add_autocomplete_test([ "Check to make sure we autocomplete to the following '/'", "smokey.mozilla.org/fo", "smokey.mozilla.org/foo/", - function () - { - + function* () { let places = [{ uri: NetUtil.newURI("http://smokey.mozilla.org/foo/bar/baz?bacon=delicious") }, { uri: NetUtil.newURI("http://smokey.mozilla.org/foo/bar/baz?bacon=smokey") }]; - PlacesTestUtils.addVisits(places); + yield PlacesTestUtils.addVisits(places); } ]); @@ -116,9 +105,8 @@ add_autocomplete_test([ "Check to make sure we autocomplete after ?", "smokey.mozilla.org/foo?", "smokey.mozilla.org/foo?bacon=delicious", - function () - { - PlacesTestUtils.addVisits(NetUtil.newURI("http://smokey.mozilla.org/foo?bacon=delicious")); + function* () { + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://smokey.mozilla.org/foo?bacon=delicious")); } ]); @@ -126,8 +114,7 @@ add_autocomplete_test([ "Check to make sure we autocomplete after #", "smokey.mozilla.org/foo?bacon=delicious#bar", "smokey.mozilla.org/foo?bacon=delicious#bar", - function () - { - PlacesTestUtils.addVisits(NetUtil.newURI("http://smokey.mozilla.org/foo?bacon=delicious#bar")); + function* () { + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://smokey.mozilla.org/foo?bacon=delicious#bar")); } ]); diff --git a/toolkit/components/places/tests/inline/test_casing.js b/toolkit/components/places/tests/inline/test_casing.js index f3a05708055b..2c0f5221c0b2 100644 --- a/toolkit/components/places/tests/inline/test_casing.js +++ b/toolkit/components/places/tests/inline/test_casing.js @@ -6,8 +6,8 @@ add_autocomplete_test([ "Searching for cased entry 1", "MOZ", { autoFilled: "MOZilla.org/", completed: "mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/test/") }); } ]); @@ -15,8 +15,8 @@ add_autocomplete_test([ "Searching for cased entry 2", "mozilla.org/T", { autoFilled: "mozilla.org/T", completed: "mozilla.org/T" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/test/") }); } ]); @@ -24,8 +24,8 @@ add_autocomplete_test([ "Searching for cased entry 3", "mozilla.org/T", { autoFilled: "mozilla.org/Test/", completed: "http://mozilla.org/Test/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); } ]); @@ -33,8 +33,8 @@ add_autocomplete_test([ "Searching for cased entry 4", "mOzilla.org/t", { autoFilled: "mOzilla.org/t", completed: "mOzilla.org/t" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); }, ]); @@ -42,8 +42,8 @@ add_autocomplete_test([ "Searching for cased entry 5", "mOzilla.org/T", { autoFilled: "mOzilla.org/Test/", completed: "http://mozilla.org/Test/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); }, ]); @@ -51,8 +51,8 @@ add_autocomplete_test([ "Searching for untrimmed cased entry", "http://mOz", { autoFilled: "http://mOzilla.org/", completed: "http://mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); }, ]); @@ -60,8 +60,8 @@ add_autocomplete_test([ "Searching for untrimmed cased entry with www", "http://www.mOz", { autoFilled: "http://www.mOzilla.org/", completed: "http://www.mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.mozilla.org/Test/") }); }, ]); @@ -69,8 +69,8 @@ add_autocomplete_test([ "Searching for untrimmed cased entry with path", "http://mOzilla.org/t", { autoFilled: "http://mOzilla.org/t", completed: "http://mOzilla.org/t" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); }, ]); @@ -78,8 +78,8 @@ add_autocomplete_test([ "Searching for untrimmed cased entry with path 2", "http://mOzilla.org/T", { autoFilled: "http://mOzilla.org/Test/", completed: "http://mozilla.org/Test/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/Test/") }); }, ]); @@ -87,8 +87,8 @@ add_autocomplete_test([ "Searching for untrimmed cased entry with www and path", "http://www.mOzilla.org/t", { autoFilled: "http://www.mOzilla.org/t", completed: "http://www.mOzilla.org/t" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.mozilla.org/Test/") }); }, ]); @@ -96,7 +96,7 @@ add_autocomplete_test([ "Searching for untrimmed cased entry with www and path 2", "http://www.mOzilla.org/T", { autoFilled: "http://www.mOzilla.org/Test/", completed: "http://www.mozilla.org/Test/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.mozilla.org/Test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.mozilla.org/Test/") }); }, ]); diff --git a/toolkit/components/places/tests/inline/test_do_not_trim.js b/toolkit/components/places/tests/inline/test_do_not_trim.js index 208a751441b6..722b653b785d 100644 --- a/toolkit/components/places/tests/inline/test_do_not_trim.js +++ b/toolkit/components/places/tests/inline/test_do_not_trim.js @@ -9,8 +9,8 @@ add_autocomplete_test([ "Do not autofill whitespaced entry 1", "mozilla.org ", "mozilla.org ", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/link/"), transition: TRANSITION_TYPED }); @@ -21,8 +21,8 @@ add_autocomplete_test([ "Do not autofill whitespaced entry 2", "mozilla.org/ ", "mozilla.org/ ", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/link/"), transition: TRANSITION_TYPED }); @@ -33,8 +33,8 @@ add_autocomplete_test([ "Do not autofill whitespaced entry 3", "mozilla.org/link ", "mozilla.org/link ", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/link/"), transition: TRANSITION_TYPED }); @@ -45,8 +45,8 @@ add_autocomplete_test([ "Do not autofill whitespaced entry 4", "mozilla.org/link/ ", "mozilla.org/link/ ", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/link/"), transition: TRANSITION_TYPED }); @@ -58,8 +58,8 @@ add_autocomplete_test([ "Do not autofill whitespaced entry 5", "moz illa ", "moz illa ", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/link/"), transition: TRANSITION_TYPED }); @@ -70,8 +70,8 @@ add_autocomplete_test([ "Do not autofill whitespaced entry 6", " mozilla", " mozilla", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/link/"), transition: TRANSITION_TYPED }); diff --git a/toolkit/components/places/tests/inline/test_keywords.js b/toolkit/components/places/tests/inline/test_keywords.js index aed1c878ca08..cebcf86a710e 100644 --- a/toolkit/components/places/tests/inline/test_keywords.js +++ b/toolkit/components/places/tests/inline/test_keywords.js @@ -6,8 +6,8 @@ add_autocomplete_test([ "Searching for non-keyworded entry should autoFill it", "moz", "mozilla.org/", - function () { - addBookmark({ url: "http://mozilla.org/test/" }); + function* () { + yield addBookmark({ url: "http://mozilla.org/test/" }); } ]); @@ -15,8 +15,8 @@ add_autocomplete_test([ "Searching for keyworded entry should not autoFill it", "moz", "moz", - function () { - addBookmark({ url: "http://mozilla.org/test/", keyword: "moz" }); + function* () { + yield addBookmark({ url: "http://mozilla.org/test/", keyword: "moz" }); } ]); @@ -24,8 +24,8 @@ add_autocomplete_test([ "Searching for more than keyworded entry should autoFill it", "mozi", "mozilla.org/", - function () { - addBookmark({ url: "http://mozilla.org/test/", keyword: "moz" }); + function* () { + yield addBookmark({ url: "http://mozilla.org/test/", keyword: "moz" }); } ]); @@ -33,8 +33,8 @@ add_autocomplete_test([ "Searching for less than keyworded entry should autoFill it", "mo", "mozilla.org/", - function () { - addBookmark({ url: "http://mozilla.org/test/", keyword: "moz" }); + function* () { + yield addBookmark({ url: "http://mozilla.org/test/", keyword: "moz" }); } ]); @@ -42,7 +42,7 @@ add_autocomplete_test([ "Searching for keyworded entry is case-insensitive", "MoZ", "MoZ", - function () { - addBookmark({ url: "http://mozilla.org/test/", keyword: "moz" }); + function* () { + yield addBookmark({ url: "http://mozilla.org/test/", keyword: "moz" }); } ]); diff --git a/toolkit/components/places/tests/inline/test_queryurl.js b/toolkit/components/places/tests/inline/test_queryurl.js index d39eba4ad0c3..a460858eec55 100644 --- a/toolkit/components/places/tests/inline/test_queryurl.js +++ b/toolkit/components/places/tests/inline/test_queryurl.js @@ -6,8 +6,8 @@ add_autocomplete_test([ "Searching for host match without slash should match host", "file", "file.org/", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://file.org/test/"), transition: TRANSITION_TYPED }, { @@ -21,8 +21,8 @@ add_autocomplete_test([ "Searching match with slash at the end should do nothing", "file.org/", "file.org/", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://file.org/test/"), transition: TRANSITION_TYPED }, { @@ -36,8 +36,8 @@ add_autocomplete_test([ "Searching match with slash in the middle should match url", "file.org/t", "file.org/test/", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://file.org/test/"), transition: TRANSITION_TYPED }, { @@ -51,8 +51,8 @@ add_autocomplete_test([ "Searching for non-host match without slash should not match url", "file", "file", - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("file:///c:/test.html"), transition: TRANSITION_TYPED }); diff --git a/toolkit/components/places/tests/inline/test_trimming.js b/toolkit/components/places/tests/inline/test_trimming.js index f3db75a3a07f..9f59637fc170 100644 --- a/toolkit/components/places/tests/inline/test_trimming.js +++ b/toolkit/components/places/tests/inline/test_trimming.js @@ -6,8 +6,8 @@ add_autocomplete_test([ "Searching for untrimmed https://www entry", "mo", { autoFilled: "mozilla.org/", completed: "https://www.mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://www.mozilla.org/test/"), transition: TRANSITION_TYPED }); @@ -18,8 +18,8 @@ add_autocomplete_test([ "Searching for untrimmed https://www entry with path", "mozilla.org/t", { autoFilled: "mozilla.org/test/", completed: "https://www.mozilla.org/test/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://www.mozilla.org/test/"), transition: TRANSITION_TYPED }); @@ -30,8 +30,8 @@ add_autocomplete_test([ "Searching for untrimmed https:// entry", "mo", { autoFilled: "mozilla.org/", completed: "https://mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://mozilla.org/test/"), transition: TRANSITION_TYPED }); @@ -42,8 +42,8 @@ add_autocomplete_test([ "Searching for untrimmed https:// entry with path", "mozilla.org/t", { autoFilled: "mozilla.org/test/", completed: "https://mozilla.org/test/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://mozilla.org/test/"), transition: TRANSITION_TYPED }); @@ -54,8 +54,8 @@ add_autocomplete_test([ "Searching for untrimmed http://www entry", "mo", { autoFilled: "mozilla.org/", completed: "www.mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.mozilla.org/test/"), transition: TRANSITION_TYPED }); @@ -66,8 +66,8 @@ add_autocomplete_test([ "Searching for untrimmed http://www entry with path", "mozilla.org/t", { autoFilled: "mozilla.org/test/", completed: "http://www.mozilla.org/test/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.mozilla.org/test/"), transition: TRANSITION_TYPED }); @@ -78,8 +78,8 @@ add_autocomplete_test([ "Searching for untrimmed ftp:// entry", "mo", { autoFilled: "mozilla.org/", completed: "ftp://mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("ftp://mozilla.org/test/"), transition: TRANSITION_TYPED }); @@ -90,8 +90,8 @@ add_autocomplete_test([ "Searching for untrimmed ftp:// entry with path", "mozilla.org/t", { autoFilled: "mozilla.org/test/", completed: "ftp://mozilla.org/test/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("ftp://mozilla.org/test/"), transition: TRANSITION_TYPED }); @@ -102,27 +102,24 @@ add_autocomplete_test([ "Ensuring correct priority 1", "mo", { autoFilled: "mozilla.org/", completed: "mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("https://www.mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("https://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("ftp://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://www.mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); + function* () { + yield PlacesTestUtils.addVisits([ + { uri: NetUtil.newURI("https://www.mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("https://mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("ftp://mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://www.mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://mozilla.org/test/"), + transition: TRANSITION_TYPED + } + ]); }, ]); @@ -130,23 +127,21 @@ add_autocomplete_test([ "Ensuring correct priority 2", "mo", { autoFilled: "mozilla.org/", completed: "mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("https://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("ftp://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://www.mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); + function* () { + yield PlacesTestUtils.addVisits([ + { uri: NetUtil.newURI("https://mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("ftp://mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://www.mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://mozilla.org/test/"), + transition: TRANSITION_TYPED + } + ]); }, ]); @@ -154,19 +149,18 @@ add_autocomplete_test([ "Ensuring correct priority 3", "mo", { autoFilled: "mozilla.org/", completed: "mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("ftp://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://www.mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); + function* () { + yield PlacesTestUtils.addVisits([ + { uri: NetUtil.newURI("ftp://mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://www.mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://mozilla.org/test/"), + transition: TRANSITION_TYPED + } + ]); }, ]); @@ -174,15 +168,15 @@ add_autocomplete_test([ "Ensuring correct priority 4", "mo", { autoFilled: "mozilla.org/", completed: "mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://www.mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); + function* () { + yield PlacesTestUtils.addVisits([ + { uri: NetUtil.newURI("http://www.mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://mozilla.org/test/"), + transition: TRANSITION_TYPED + } + ]); }, ]); @@ -190,15 +184,15 @@ add_autocomplete_test([ "Ensuring correct priority 5", "mo", { autoFilled: "mozilla.org/", completed: "ftp://mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("ftp://mozilla.org/test/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("ftp://www.mozilla.org/test/"), - transition: TRANSITION_TYPED - }); + function* () { + yield PlacesTestUtils.addVisits([ + { uri: NetUtil.newURI("ftp://mozilla.org/test/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("ftp://www.mozilla.org/test/"), + transition: TRANSITION_TYPED + } + ]); }, ]); @@ -206,15 +200,15 @@ add_autocomplete_test([ "Ensuring correct priority 6", "mo", { autoFilled: "mozilla.org/", completed: "www.mozilla.org/" }, - function () { - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://www.mozilla.org/test1/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://www.mozilla.org/test2/"), - transition: TRANSITION_TYPED - }); + function* () { + yield PlacesTestUtils.addVisits([ + { uri: NetUtil.newURI("http://www.mozilla.org/test1/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://www.mozilla.org/test2/"), + transition: TRANSITION_TYPED + } + ]); }, ]); @@ -222,21 +216,20 @@ add_autocomplete_test([ "Ensuring longer domain can't match", "mo", { autoFilled: "mozilla.co/", completed: "mozilla.co/" }, - function () { + function* () { // The .co should be preferred, but should not get the https from the .com. // The .co domain must be added later to activate the trigger bug. - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("https://mozilla.com/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://mozilla.co/"), - transition: TRANSITION_TYPED - }); - PlacesTestUtils.addVisits({ - uri: NetUtil.newURI("http://mozilla.co/"), - transition: TRANSITION_TYPED - }); + yield PlacesTestUtils.addVisits([ + { uri: NetUtil.newURI("https://mozilla.com/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://mozilla.co/"), + transition: TRANSITION_TYPED + }, + { uri: NetUtil.newURI("http://mozilla.co/"), + transition: TRANSITION_TYPED + } + ]); }, ]); @@ -244,8 +237,8 @@ add_autocomplete_test([ "Searching for URL with characters that are normally escaped", "https://www.mozilla.org/啊-test", { autoFilled: "https://www.mozilla.org/啊-test", completed: "https://www.mozilla.org/啊-test" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://www.mozilla.org/啊-test"), transition: TRANSITION_TYPED }); @@ -256,8 +249,8 @@ add_autocomplete_test([ "Don't return unsecure URL when searching for secure ones", "https://test.moz.org/t", { autoFilled: "https://test.moz.org/test/", completed: "https://test.moz.org/test/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://test.moz.org/test/"), transition: TRANSITION_TYPED }); @@ -268,8 +261,8 @@ add_autocomplete_test([ "Don't return unsecure domain when searching for secure ones", "https://test.moz", { autoFilled: "https://test.moz.org/", completed: "https://test.moz.org/" }, - function () { - PlacesTestUtils.addVisits({ + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://test.moz.org/test/"), transition: TRANSITION_TYPED }); @@ -280,8 +273,8 @@ add_autocomplete_test([ "Untyped is not accounted for www", "mo", { autoFilled: "moz.org/", completed: "moz.org/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.moz.org/test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://www.moz.org/test/") }); }, ]); @@ -289,8 +282,8 @@ add_autocomplete_test([ "Untyped is not accounted for ftp", "mo", { autoFilled: "moz.org/", completed: "moz.org/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("ftp://moz.org/test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("ftp://moz.org/test/") }); }, ]); @@ -298,8 +291,8 @@ add_autocomplete_test([ "Untyped is not accounted for https", "mo", { autoFilled: "moz.org/", completed: "moz.org/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://moz.org/test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://moz.org/test/") }); }, ]); @@ -307,7 +300,7 @@ add_autocomplete_test([ "Untyped is not accounted for https://www", "mo", { autoFilled: "moz.org/", completed: "moz.org/" }, - function () { - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://www.moz.org/test/") }); + function* () { + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("https://www.moz.org/test/") }); }, ]); diff --git a/toolkit/components/places/tests/inline/test_typed.js b/toolkit/components/places/tests/inline/test_typed.js index f05d9c00abb3..e59ff7fc0f36 100644 --- a/toolkit/components/places/tests/inline/test_typed.js +++ b/toolkit/components/places/tests/inline/test_typed.js @@ -9,9 +9,9 @@ add_autocomplete_test([ "Searching for domain should autoFill it", "moz", "mozilla.org/", - function () { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", false); - PlacesTestUtils.addVisits(NetUtil.newURI("http://mozilla.org/link/")); + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://mozilla.org/link/")); } ]); @@ -19,9 +19,9 @@ add_autocomplete_test([ "Searching for url should autoFill it", "mozilla.org/li", "mozilla.org/link/", - function () { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", false); - PlacesTestUtils.addVisits(NetUtil.newURI("http://mozilla.org/link/")); + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://mozilla.org/link/")); } ]); @@ -31,9 +31,9 @@ add_autocomplete_test([ "Searching for non-typed domain should not autoFill it", "moz", "moz", - function () { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", true); - PlacesTestUtils.addVisits(NetUtil.newURI("http://mozilla.org/link/")); + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://mozilla.org/link/")); } ]); @@ -41,10 +41,10 @@ add_autocomplete_test([ "Searching for typed domain should autoFill it", "moz", "mozilla.org/", - function () { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", true); - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/typed/"), - transition: TRANSITION_TYPED }); + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/typed/"), + transition: TRANSITION_TYPED }); } ]); @@ -52,9 +52,9 @@ add_autocomplete_test([ "Searching for non-typed url should not autoFill it", "mozilla.org/li", "mozilla.org/li", - function () { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", true); - PlacesTestUtils.addVisits(NetUtil.newURI("http://mozilla.org/link/")); + yield PlacesTestUtils.addVisits(NetUtil.newURI("http://mozilla.org/link/")); } ]); @@ -62,9 +62,9 @@ add_autocomplete_test([ "Searching for typed url should autoFill it", "mozilla.org/li", "mozilla.org/link/", - function () { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", true); - PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/link/"), - transition: TRANSITION_TYPED }); + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/link/"), + transition: TRANSITION_TYPED }); } ]); diff --git a/toolkit/components/places/tests/inline/test_zero_frecency.js b/toolkit/components/places/tests/inline/test_zero_frecency.js index 3324a8238716..176996b6dc91 100644 --- a/toolkit/components/places/tests/inline/test_zero_frecency.js +++ b/toolkit/components/places/tests/inline/test_zero_frecency.js @@ -8,9 +8,9 @@ add_autocomplete_test([ "Searching for zero frecency domain should not autoFill it", "moz", "moz", - function () { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", false); - PlacesTestUtils.addVisits({ + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/framed_link/"), transition: TRANSITION_FRAMED_LINK }); @@ -21,9 +21,9 @@ add_autocomplete_test([ "Searching for zero frecency url should not autoFill it", "mozilla.org/f", "mozilla.org/f", - function () { + function* () { Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", false); - PlacesTestUtils.addVisits({ + yield PlacesTestUtils.addVisits({ uri: NetUtil.newURI("http://mozilla.org/framed_link/"), transition: TRANSITION_FRAMED_LINK }); diff --git a/toolkit/components/places/tests/unifiedcomplete/head_autocomplete.js b/toolkit/components/places/tests/unifiedcomplete/head_autocomplete.js index 27243e4bf690..8ade81ef3d62 100644 --- a/toolkit/components/places/tests/unifiedcomplete/head_autocomplete.js +++ b/toolkit/components/places/tests/unifiedcomplete/head_autocomplete.js @@ -226,7 +226,8 @@ let addBookmark = Task.async(function* (aBookmarkObj) { let itemId = yield PlacesUtils.promiseItemId(bm.guid); if (aBookmarkObj.keyword) { - PlacesUtils.bookmarks.setKeywordForBookmark(itemId, aBookmarkObj.keyword); + yield PlacesUtils.keywords.insert({ keyword: aBookmarkObj.keyword, + url: aBookmarkObj.uri.spec }); } if (aBookmarkObj.tags) { diff --git a/toolkit/components/places/tests/unifiedcomplete/test_keyword_search.js b/toolkit/components/places/tests/unifiedcomplete/test_keyword_search.js index 6b1d516631a9..ee1080032af8 100644 --- a/toolkit/components/places/tests/unifiedcomplete/test_keyword_search.js +++ b/toolkit/components/places/tests/unifiedcomplete/test_keyword_search.js @@ -24,43 +24,43 @@ add_task(function* test_keyword_searc() { do_print("Plain keyword query"); yield check_autocomplete({ search: "key term", - matches: [ { uri: NetUtil.newURI("http://abc/?search=term"), title: "Generic page title", style: ["keyword"] } ] + matches: [ { uri: NetUtil.newURI("http://abc/?search=term"), title: "abc", style: ["keyword"] } ] }); do_print("Multi-word keyword query"); yield check_autocomplete({ search: "key multi word", - matches: [ { uri: NetUtil.newURI("http://abc/?search=multi+word"), title: "Generic page title", style: ["keyword"] } ] + matches: [ { uri: NetUtil.newURI("http://abc/?search=multi+word"), title: "abc", style: ["keyword"] } ] }); do_print("Keyword query with +"); yield check_autocomplete({ search: "key blocking+", - matches: [ { uri: NetUtil.newURI("http://abc/?search=blocking%2B"), title: "Generic page title", style: ["keyword"] } ] + matches: [ { uri: NetUtil.newURI("http://abc/?search=blocking%2B"), title: "abc", style: ["keyword"] } ] }); do_print("Unescaped term in query"); yield check_autocomplete({ search: "key ユニコード", - matches: [ { uri: NetUtil.newURI("http://abc/?search=ユニコード"), title: "Generic page title", style: ["keyword"] } ] + matches: [ { uri: NetUtil.newURI("http://abc/?search=ユニコード"), title: "abc", style: ["keyword"] } ] }); do_print("Keyword that happens to match a page"); yield check_autocomplete({ search: "key ThisPageIsInHistory", - matches: [ { uri: NetUtil.newURI("http://abc/?search=ThisPageIsInHistory"), title: "Generic page title", style: ["keyword"] } ] + matches: [ { uri: NetUtil.newURI("http://abc/?search=ThisPageIsInHistory"), title: "abc", style: ["keyword"] } ] }); do_print("Keyword without query (without space)"); yield check_autocomplete({ search: "key", - matches: [ { uri: NetUtil.newURI("http://abc/?search="), title: "Generic page title", style: ["keyword"] } ] + matches: [ { uri: NetUtil.newURI("http://abc/?search="), title: "abc", style: ["keyword"] } ] }); do_print("Keyword without query (with space)"); yield check_autocomplete({ search: "key ", - matches: [ { uri: NetUtil.newURI("http://abc/?search="), title: "Generic page title", style: ["keyword"] } ] + matches: [ { uri: NetUtil.newURI("http://abc/?search="), title: "abc", style: ["keyword"] } ] }); yield cleanup(); diff --git a/toolkit/components/places/tests/unifiedcomplete/test_keyword_search_actions.js b/toolkit/components/places/tests/unifiedcomplete/test_keyword_search_actions.js index 410411ddeda9..eb0aa11f20af 100644 --- a/toolkit/components/places/tests/unifiedcomplete/test_keyword_search_actions.js +++ b/toolkit/components/places/tests/unifiedcomplete/test_keyword_search_actions.js @@ -25,49 +25,49 @@ add_task(function* test_keyword_search() { yield check_autocomplete({ search: "key term", searchParam: "enable-actions", - matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=term", input: "key term"}), title: "Generic page title", style: [ "action", "keyword" ] } ] + matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=term", input: "key term"}), title: "abc", style: [ "action", "keyword" ] } ] }); do_print("Multi-word keyword query"); yield check_autocomplete({ search: "key multi word", searchParam: "enable-actions", - matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=multi+word", input: "key multi word"}), title: "Generic page title", style: [ "action", "keyword" ] } ] + matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=multi+word", input: "key multi word"}), title: "abc", style: [ "action", "keyword" ] } ] }); do_print("Keyword query with +"); yield check_autocomplete({ search: "key blocking+", searchParam: "enable-actions", - matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=blocking%2B", input: "key blocking+"}), title: "Generic page title", style: [ "action", "keyword" ] } ] + matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=blocking%2B", input: "key blocking+"}), title: "abc", style: [ "action", "keyword" ] } ] }); do_print("Unescaped term in query"); yield check_autocomplete({ search: "key ユニコード", searchParam: "enable-actions", - matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=ユニコード", input: "key ユニコード"}), title: "Generic page title", style: [ "action", "keyword" ] } ] + matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=ユニコード", input: "key ユニコード"}), title: "abc", style: [ "action", "keyword" ] } ] }); do_print("Keyword that happens to match a page"); yield check_autocomplete({ search: "key ThisPageIsInHistory", searchParam: "enable-actions", - matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=ThisPageIsInHistory", input: "key ThisPageIsInHistory"}), title: "Generic page title", style: [ "action", "keyword" ] } ] + matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=ThisPageIsInHistory", input: "key ThisPageIsInHistory"}), title: "abc", style: [ "action", "keyword" ] } ] }); do_print("Keyword without query (without space)"); yield check_autocomplete({ search: "key", searchParam: "enable-actions", - matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=", input: "key"}), title: "Generic page title", style: [ "action", "keyword" ] } ] + matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=", input: "key"}), title: "abc", style: [ "action", "keyword" ] } ] }); do_print("Keyword without query (with space)"); yield check_autocomplete({ search: "key ", searchParam: "enable-actions", - matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=", input: "key "}), title: "Generic page title", style: [ "action", "keyword" ] } ] + matches: [ { uri: makeActionURI("keyword", {url: "http://abc/?search=", input: "key "}), title: "abc", style: [ "action", "keyword" ] } ] }); yield cleanup();