diff --git a/toolkit/components/places/src/nsNavHistory.h b/toolkit/components/places/src/nsNavHistory.h index 3b1c4e1e4241..ed3d6480c909 100644 --- a/toolkit/components/places/src/nsNavHistory.h +++ b/toolkit/components/places/src/nsNavHistory.h @@ -621,7 +621,6 @@ protected: nsCOMPtr mAutoCompleteTimer; nsString mCurrentSearchString; - nsString mCurrentSearchStringEscaped; #ifdef MOZ_XUL nsCOMPtr mCurrentListener; diff --git a/toolkit/components/places/src/nsNavHistoryAutoComplete.cpp b/toolkit/components/places/src/nsNavHistoryAutoComplete.cpp index 1d981ecc3f6e..f16b0ed170d4 100644 --- a/toolkit/components/places/src/nsNavHistoryAutoComplete.cpp +++ b/toolkit/components/places/src/nsNavHistoryAutoComplete.cpp @@ -115,10 +115,10 @@ nsNavHistory::CreateAutoCompleteQueries() "FROM moz_places h " "LEFT OUTER JOIN moz_bookmarks b ON b.fk = h.id " "LEFT OUTER JOIN moz_favicons f ON h.favicon_id = f.id " - "WHERE h.frecency <> 0 AND "); + "WHERE h.frecency <> 0 "); if (mAutoCompleteOnlyTyped) - sql += NS_LITERAL_CSTRING("h.typed = 1 AND "); + sql += NS_LITERAL_CSTRING("AND h.typed = 1 "); // NOTE: // after migration or clear all private data, we might end up with @@ -128,10 +128,7 @@ nsNavHistory::CreateAutoCompleteQueries() // in the case of a frecency tie, break it with h.typed and h.visit_count // which is better than nothing. but this is slow, so not doing it yet. sql += NS_LITERAL_CSTRING( - "(b.title LIKE ?1 ESCAPE '/' OR " - "h.title LIKE ?1 ESCAPE '/' OR " - "h.url LIKE ?1 ESCAPE '/') " - "ORDER BY h.frecency DESC LIMIT ?2 OFFSET ?3"); + "ORDER BY h.frecency DESC LIMIT ?1 OFFSET ?2"); nsresult rv = mDBConn->CreateStatement(sql, getter_AddRefs(mDBAutoCompleteQuery)); @@ -272,11 +269,9 @@ nsNavHistory::StartSearch(const nsAString & aSearchString, // remove whitespace, see bug #392141 for details mCurrentSearchString.Trim(" \r\n\t\b"); - nsresult rv = mDBAutoCompleteQuery->EscapeStringForLIKE(mCurrentSearchString, PRUnichar('/'), mCurrentSearchStringEscaped); - NS_ENSURE_SUCCESS(rv, rv); - mCurrentListener = aListener; + nsresult rv; mCurrentResult = do_CreateInstance(NS_AUTOCOMPLETESIMPLERESULT_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); @@ -551,14 +546,10 @@ nsNavHistory::AutoCompleteFullHistorySearch(PRBool* aHasMoreResults) { mozStorageStatementScoper scope(mDBAutoCompleteQuery); - // prepend and append with % for "contains" - nsresult rv = mDBAutoCompleteQuery->BindStringParameter(0, NS_LITERAL_STRING("%") + mCurrentSearchStringEscaped + NS_LITERAL_STRING("%")); + nsresult rv = mDBAutoCompleteQuery->BindInt32Parameter(0, mAutoCompleteSearchChunkSize); NS_ENSURE_SUCCESS(rv, rv); - rv = mDBAutoCompleteQuery->BindInt32Parameter(1, mAutoCompleteSearchChunkSize); - NS_ENSURE_SUCCESS(rv, rv); - - rv = mDBAutoCompleteQuery->BindInt32Parameter(2, mCurrentChunkOffset); + rv = mDBAutoCompleteQuery->BindInt32Parameter(1, mCurrentChunkOffset); NS_ENSURE_SUCCESS(rv, rv); nsFaviconService* faviconService = nsFaviconService::GetFaviconService(); @@ -597,6 +588,17 @@ nsNavHistory::AutoCompleteFullHistorySearch(PRBool* aHasMoreResults) NS_ENSURE_SUCCESS(rv, rv); } + // If the search string is in the bookmark title, show that in the result + // (instead of the page title) + PRBool matchInBookmarkTitle = itemId && + CaseInsensitiveFindInReadable(mCurrentSearchString, entryBookmarkTitle); + + // If we don't match the bookmark, title or url, don't add the result + if (!matchInBookmarkTitle && + !CaseInsensitiveFindInReadable(mCurrentSearchString, entryTitle) && + !CaseInsensitiveFindInReadable(mCurrentSearchString, entryURL)) + continue; + // don't show rss feed items as bookmarked, // but do show rss feed URIs as bookmarked. // @@ -615,11 +617,6 @@ nsNavHistory::AutoCompleteFullHistorySearch(PRBool* aHasMoreResults) faviconService->GetFaviconSpecForIconString( NS_ConvertUTF16toUTF8(entryFavicon), faviconSpec); - // if the search string is in the bookmark title, show that in the - // result (instead of the page title) - PRBool matchInBookmarkTitle = itemId && - CaseInsensitiveFindInReadable(mCurrentSearchString, entryBookmarkTitle); - rv = mCurrentResult->AppendMatch(entryURL, matchInBookmarkTitle ? entryBookmarkTitle : entryTitle, NS_ConvertUTF8toUTF16(faviconSpec),