Index: components/search_engines/keyword_table.cc |
diff --git a/components/search_engines/keyword_table.cc b/components/search_engines/keyword_table.cc |
index 1bbd601da8fef0f9d8de798ac98a657def036458..eb9333bb10db9735fe4c4ca91116a3878e9a5081 100644 |
--- a/components/search_engines/keyword_table.cc |
+++ b/components/search_engines/keyword_table.cc |
@@ -84,6 +84,10 @@ const std::string ColumnsForVersion(int version, bool concatenated) { |
// Column added in version 53. |
columns.push_back("new_tab_url"); |
} |
+ if (version >= 69) { |
+ // Column added in version 69. |
+ columns.push_back("last_visited"); |
+ } |
return base::JoinString(columns, std::string(concatenated ? " || " : ", ")); |
} |
@@ -136,6 +140,7 @@ void BindURLToStatement(const TemplateURLData& data, |
s->BindString(starting_column + 20, data.instant_url_post_params); |
s->BindString(starting_column + 21, data.image_url_post_params); |
s->BindString(starting_column + 22, data.new_tab_url); |
+ s->BindInt64(starting_column + 23, data.last_visited.ToTimeT()); |
} |
WebDatabaseTable::TypeKey GetKey() { |
@@ -163,30 +168,31 @@ WebDatabaseTable::TypeKey KeywordTable::GetTypeKey() const { |
bool KeywordTable::CreateTablesIfNecessary() { |
return db_->DoesTableExist("keywords") || |
db_->Execute("CREATE TABLE keywords (" |
- "id INTEGER PRIMARY KEY," |
- "short_name VARCHAR NOT NULL," |
- "keyword VARCHAR NOT NULL," |
- "favicon_url VARCHAR NOT NULL," |
- "url VARCHAR NOT NULL," |
- "safe_for_autoreplace INTEGER," |
- "originating_url VARCHAR," |
- "date_created INTEGER DEFAULT 0," |
- "usage_count INTEGER DEFAULT 0," |
- "input_encodings VARCHAR," |
- "suggest_url VARCHAR," |
- "prepopulate_id INTEGER DEFAULT 0," |
- "created_by_policy INTEGER DEFAULT 0," |
- "instant_url VARCHAR," |
- "last_modified INTEGER DEFAULT 0," |
- "sync_guid VARCHAR," |
- "alternate_urls VARCHAR," |
- "search_terms_replacement_key VARCHAR," |
- "image_url VARCHAR," |
- "search_url_post_params VARCHAR," |
- "suggest_url_post_params VARCHAR," |
- "instant_url_post_params VARCHAR," |
- "image_url_post_params VARCHAR," |
- "new_tab_url VARCHAR)"); |
+ "id INTEGER PRIMARY KEY," |
+ "short_name VARCHAR NOT NULL," |
+ "keyword VARCHAR NOT NULL," |
+ "favicon_url VARCHAR NOT NULL," |
+ "url VARCHAR NOT NULL," |
+ "safe_for_autoreplace INTEGER," |
+ "originating_url VARCHAR," |
+ "date_created INTEGER DEFAULT 0," |
+ "usage_count INTEGER DEFAULT 0," |
+ "input_encodings VARCHAR," |
+ "suggest_url VARCHAR," |
+ "prepopulate_id INTEGER DEFAULT 0," |
+ "created_by_policy INTEGER DEFAULT 0," |
+ "instant_url VARCHAR," |
+ "last_modified INTEGER DEFAULT 0," |
+ "sync_guid VARCHAR," |
+ "alternate_urls VARCHAR," |
+ "search_terms_replacement_key VARCHAR," |
+ "image_url VARCHAR," |
+ "search_url_post_params VARCHAR," |
+ "suggest_url_post_params VARCHAR," |
+ "instant_url_post_params VARCHAR," |
+ "image_url_post_params VARCHAR," |
+ "new_tab_url VARCHAR," |
+ " last_visited INTEGER DEFAULT 0)"); |
} |
bool KeywordTable::IsSyncable() { |
@@ -206,6 +212,8 @@ bool KeywordTable::MigrateToVersion(int version, |
case 68: |
*update_compatible_version = true; |
return MigrateToVersion68RemoveShowInDefaultListColumn(); |
+ case 69: |
+ return MigrateToVersion69AddLastVisitedColumn(); |
} |
return true; |
@@ -335,6 +343,11 @@ bool KeywordTable::MigrateToVersion68RemoveShowInDefaultListColumn() { |
transaction.Commit(); |
} |
+bool KeywordTable::MigrateToVersion69AddLastVisitedColumn() { |
+ return db_->Execute("ALTER TABLE keywords ADD COLUMN last_visited " |
+ "INTEGER DEFAULT 0"); |
+} |
+ |
// static |
bool KeywordTable::GetKeywordDataFromStatement(const sql::Statement& s, |
TemplateURLData* data) { |
@@ -384,6 +397,7 @@ bool KeywordTable::GetKeywordDataFromStatement(const sql::Statement& s, |
} |
data->search_terms_replacement_key = s.ColumnString(17); |
+ data->last_visited = Time::FromTimeT(s.ColumnInt64(24)); |
return true; |
} |
@@ -392,7 +406,7 @@ bool KeywordTable::AddKeyword(const TemplateURLData& data) { |
DCHECK(data.id); |
std::string query("INSERT INTO keywords (" + GetKeywordColumns() + ") " |
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?," |
- " ?)"); |
+ " ?,?)"); |
sql::Statement s(db_->GetCachedStatement(SQL_FROM_HERE, query.c_str())); |
BindURLToStatement(data, &s, 0, 1); |
@@ -419,8 +433,8 @@ bool KeywordTable::UpdateKeyword(const TemplateURLData& data) { |
"last_modified=?, sync_guid=?, alternate_urls=?, " |
"search_terms_replacement_key=?, image_url=?, search_url_post_params=?, " |
"suggest_url_post_params=?, instant_url_post_params=?, " |
- "image_url_post_params=?, new_tab_url=? WHERE id=?")); |
- BindURLToStatement(data, &s, 23, 0); // "23" binds id() as the last item. |
+ "image_url_post_params=?, new_tab_url=?, last_visited=? WHERE id=?")); |
+ BindURLToStatement(data, &s, 24, 0); // "24" binds id() as the last item. |
return s.Run(); |
} |