Index: chrome/browser/history/url_database.cc |
diff --git a/chrome/browser/history/url_database.cc b/chrome/browser/history/url_database.cc |
index 0856d25ef4f7a508a0af2939879ed4a9f810bc85..395c367161b0f3860f430f9adbf9e887b9a1ebe5 100644 |
--- a/chrome/browser/history/url_database.cc |
+++ b/chrome/browser/history/url_database.cc |
@@ -358,6 +358,32 @@ bool URLDatabase::FindShortestURLFromBase(const std::string& base, |
return true; |
} |
+bool URLDatabase::GetTextMatches(const string16& query, URLRows* results) { |
+ std::vector<string16> regexp_queries; |
+ query_parser_.ParseQueryAsRegexps(query, ®exp_queries); |
+ |
+ std::string sql("SELECT "); |
+ sql.append(kURLRowFields); |
+ sql.append(" FROM urls WHERE "); |
+ for (size_t i = 0; i < regexp_queries.size(); ++i) { |
+ sql.append(" (url REGEXP ? OR title REGEXP ?) AND "); |
+ } |
+ sql.append(" hidden = 0"); |
+ sql::Statement statement(GetDB().GetUniqueStatement(sql.c_str())); |
Scott Hess - ex-Googler
2013/06/12 17:38:34
You may want to reference http://crbug.com/248608
rmcilroy
2013/06/13 15:32:05
Ack (no longer required).
|
+ for (size_t i = 0; i < regexp_queries.size(); ++i) { |
+ statement.BindString16(2 * i, regexp_queries[i]); |
+ statement.BindString16((2 * i) + 1, regexp_queries[i]); |
+ } |
+ |
+ while (statement.Step()) { |
+ history::URLRow info; |
+ FillURLRow(statement, &info); |
+ if (info.url().is_valid()) |
+ results->push_back(info); |
+ } |
+ return !results->empty(); |
+} |
+ |
bool URLDatabase::InitKeywordSearchTermsTable() { |
has_keyword_search_terms_ = true; |
if (!GetDB().DoesTableExist("keyword_search_terms")) { |