| Index: chrome/browser/history/in_memory_url_index_types.cc
|
| diff --git a/chrome/browser/history/in_memory_url_index_types.cc b/chrome/browser/history/in_memory_url_index_types.cc
|
| index f219047e2c75f260325702c126e745ba8f438565..4cc1d16fc1f811b2f5ad1652a101c0a79704f823 100644
|
| --- a/chrome/browser/history/in_memory_url_index_types.cc
|
| +++ b/chrome/browser/history/in_memory_url_index_types.cc
|
| @@ -20,39 +20,6 @@ namespace history {
|
|
|
| // Matches within URL and Title Strings ----------------------------------------
|
|
|
| -// The maximum length of URL or title returned by the Cleanup functions.
|
| -static const size_t kCleanedUpUrlMaxLength = 1024u;
|
| -static const size_t kCleanedUpTitleMaxLength = 1024u;
|
| -
|
| -// Attempts to shorten a URL safely (i.e., by preventing the end of the URL
|
| -// from being in the middle of an escape sequence) to no more than
|
| -// kCleanedUpUrlMaxLength characters, returning the result.
|
| -std::string TruncateUrl(const std::string& url) {
|
| - if (url.length() <= kCleanedUpUrlMaxLength)
|
| - return url;
|
| -
|
| - // If we're in the middle of an escape sequence, truncate just before it.
|
| - if (url[kCleanedUpUrlMaxLength - 1] == '%')
|
| - return url.substr(0, kCleanedUpUrlMaxLength - 1);
|
| - if (url[kCleanedUpUrlMaxLength - 2] == '%')
|
| - return url.substr(0, kCleanedUpUrlMaxLength - 2);
|
| -
|
| - return url.substr(0, kCleanedUpUrlMaxLength);
|
| -}
|
| -
|
| -base::string16 CleanUpUrlForMatching(const GURL& gurl,
|
| - const std::string& languages) {
|
| - return base::i18n::ToLower(net::FormatUrl(
|
| - GURL(TruncateUrl(gurl.spec())), languages,
|
| - net::kFormatUrlOmitUsernamePassword,
|
| - net::UnescapeRule::SPACES | net::UnescapeRule::URL_SPECIAL_CHARS,
|
| - NULL, NULL, NULL));
|
| -}
|
| -
|
| -base::string16 CleanUpTitleForMatching(const base::string16& title) {
|
| - return base::i18n::ToLower(title.substr(0u, kCleanedUpTitleMaxLength));
|
| -}
|
| -
|
| TermMatches MatchTermInString(const base::string16& term,
|
| const base::string16& cleaned_string,
|
| int term_num) {
|
| @@ -92,21 +59,30 @@ TermMatches SortAndDeoverlapMatches(const TermMatches& matches) {
|
|
|
| std::vector<size_t> OffsetsFromTermMatches(const TermMatches& matches) {
|
| std::vector<size_t> offsets;
|
| - for (TermMatches::const_iterator i = matches.begin(); i != matches.end(); ++i)
|
| + for (TermMatches::const_iterator i = matches.begin(); i != matches.end();
|
| + ++i) {
|
| offsets.push_back(i->offset);
|
| + offsets.push_back(i->offset + i->length);
|
| + }
|
| return offsets;
|
| }
|
|
|
| TermMatches ReplaceOffsetsInTermMatches(const TermMatches& matches,
|
| const std::vector<size_t>& offsets) {
|
| - DCHECK_EQ(matches.size(), offsets.size());
|
| + DCHECK_EQ(2 * matches.size(), offsets.size());
|
| TermMatches new_matches;
|
| std::vector<size_t>::const_iterator offset_iter = offsets.begin();
|
| for (TermMatches::const_iterator term_iter = matches.begin();
|
| term_iter != matches.end(); ++term_iter, ++offset_iter) {
|
| - if (*offset_iter != base::string16::npos) {
|
| + const size_t starting_offset = *offset_iter;
|
| + ++offset_iter;
|
| + const size_t ending_offset = *offset_iter;
|
| + if ((starting_offset != base::string16::npos) &&
|
| + (ending_offset != base::string16::npos) &&
|
| + (starting_offset != ending_offset)) {
|
| TermMatch new_match(*term_iter);
|
| - new_match.offset = *offset_iter;
|
| + new_match.offset = starting_offset;
|
| + new_match.length = ending_offset - starting_offset;
|
| new_matches.push_back(new_match);
|
| }
|
| }
|
|
|