Index: chrome/browser/bookmarks/bookmark_utils.cc |
=================================================================== |
--- chrome/browser/bookmarks/bookmark_utils.cc (revision 17304) |
+++ chrome/browser/bookmarks/bookmark_utils.cc (working copy) |
@@ -29,6 +29,7 @@ |
#include "chrome/common/pref_service.h" |
#include "grit/chromium_strings.h" |
#include "grit/generated_resources.h" |
+#include "net/base/net_util.h" |
#include "views/event.h" |
using base::Time; |
@@ -177,12 +178,16 @@ |
} |
// Returns true if |node|s title or url contains the strings in |words|. |
+// |languages| argument is user's accept-language setting to decode IDN. |
bool DoesBookmarkContainWords(BookmarkNode* node, |
- const std::vector<std::wstring>& words) { |
+ const std::vector<std::wstring>& words, |
+ const std::wstring& languages) { |
return |
DoesBookmarkTextContainWords( |
l10n_util::ToLower(node->GetTitle()), words) || |
- DoesBookmarkTextContainWords(UTF8ToWide(node->GetURL().spec()), words); |
+ DoesBookmarkTextContainWords(UTF8ToWide(node->GetURL().spec()), words) || |
+ DoesBookmarkTextContainWords(net::FormatUrl( |
+ node->GetURL(), languages, false, true, NULL, NULL), words); |
} |
} // namespace |
@@ -478,6 +483,7 @@ |
void GetBookmarksContainingText(BookmarkModel* model, |
const std::wstring& text, |
size_t max_count, |
+ const std::wstring& languages, |
std::vector<BookmarkNode*>* nodes) { |
std::vector<std::wstring> words; |
QueryParser parser; |
@@ -488,7 +494,7 @@ |
TreeNodeIterator<BookmarkNode> iterator(model->root_node()); |
while (iterator.has_next()) { |
BookmarkNode* node = iterator.Next(); |
- if (node->is_url() && DoesBookmarkContainWords(node, words)) { |
+ if (node->is_url() && DoesBookmarkContainWords(node, words, languages)) { |
nodes->push_back(node); |
if (nodes->size() == max_count) |
return; |
@@ -496,14 +502,16 @@ |
} |
} |
-bool DoesBookmarkContainText(BookmarkNode* node, const std::wstring& text) { |
+bool DoesBookmarkContainText(BookmarkNode* node, |
+ const std::wstring& text, |
+ const std::wstring& languages) { |
std::vector<std::wstring> words; |
QueryParser parser; |
parser.ExtractQueryWords(l10n_util::ToLower(text), &words); |
if (words.empty()) |
return false; |
- return (node->is_url() && DoesBookmarkContainWords(node, words)); |
+ return (node->is_url() && DoesBookmarkContainWords(node, words, languages)); |
} |
void ApplyEditsWithNoGroupChange(BookmarkModel* model, |