Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Unified Diff: components/search_engines/template_url_service.cc

Issue 2498053002: Add field to monitor last visited time for each search engine (Closed)
Patch Set: Update Nit comment. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/search_engines/template_url_service.h ('k') | components/test/data/web_database/version_68.sql » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/search_engines/template_url_service.cc
diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc
index 4d7a28455a200cfcd4ac1674cdd7b72b758b6b31..27376de20c6b276f49ce5dbd1861f3398f5eb299 100644
--- a/components/search_engines/template_url_service.cc
+++ b/components/search_engines/template_url_service.cc
@@ -730,6 +730,12 @@ void TemplateURLService::RepairPrepopulatedSearchEngines() {
}
}
+void TemplateURLService::UpdateTemplateURLVisitTime(TemplateURL* url) {
+ TemplateURLData data(url->data());
+ data.last_visited = clock_->Now();
+ Update(url, TemplateURL(data));
+}
+
void TemplateURLService::AddObserver(TemplateURLServiceObserver* observer) {
model_observers_.AddObserver(observer);
}
@@ -999,8 +1005,7 @@ syncer::SyncError TemplateURLService::ProcessSyncChanges(
TemplateURLData data(existing_turl->data());
data.SetKeyword(updated_keyword);
TemplateURL new_turl(data);
- if (UpdateNoNotify(existing_turl, new_turl))
- NotifyObservers();
+ Update(existing_turl, new_turl);
syncer::SyncData sync_data = CreateSyncDataFromTemplateURL(new_turl);
new_changes.push_back(syncer::SyncChange(FROM_HERE,
@@ -1048,10 +1053,8 @@ syncer::SyncError TemplateURLService::ProcessSyncChanges(
ResolveSyncKeywordConflict(turl.get(), existing_keyword_turl,
&new_changes);
}
- if (UpdateNoNotify(existing_turl, *turl)) {
- NotifyObservers();
+ if (Update(existing_turl, *turl))
MaybeUpdateDSEAfterSync(existing_turl);
- }
} else {
// We've unexpectedly received an ACTION_INVALID.
error = sync_error_factory_->CreateAndUploadError(
@@ -1148,8 +1151,7 @@ syncer::SyncMergeResult TemplateURLService::MergeDataAndStartSyncing(
// TemplateURLID and the TemplateURL may have to be reparsed. This
// also makes the local data's last_modified timestamp equal to Sync's,
// avoiding an Update on the next MergeData call.
- if (UpdateNoNotify(local_turl, *sync_turl))
- NotifyObservers();
+ Update(local_turl, *sync_turl);
merge_result.set_num_items_modified(
merge_result.num_items_modified() + 1);
} else if (sync_turl->last_modified() < local_turl->last_modified()) {
@@ -1742,6 +1744,14 @@ bool TemplateURLService::UpdateNoNotify(TemplateURL* existing_turl,
return true;
}
+bool TemplateURLService::Update(TemplateURL* existing_turl,
+ const TemplateURL& new_values) {
+ const bool updated = UpdateNoNotify(existing_turl, new_values);
+ if (updated)
+ NotifyObservers();
+ return updated;
+}
+
// static
void TemplateURLService::UpdateTemplateURLIfPrepopulated(
TemplateURL* template_url,
@@ -1782,6 +1792,7 @@ void TemplateURLService::UpdateKeywordSearchTermsForURL(
if (!urls_for_host)
return;
+ TemplateURL* visited_url = nullptr;
for (TemplateURLSet::const_iterator i = urls_for_host->begin();
i != urls_for_host->end(); ++i) {
base::string16 search_terms;
@@ -1798,8 +1809,15 @@ void TemplateURLService::UpdateKeywordSearchTermsForURL(
client_->SetKeywordSearchTermsForURL(
details.url, (*i)->id(), search_terms);
}
+ // Caches the matched TemplateURL so its last_visited could be updated
+ // later after iteration.
+ // Note: UpdateNoNotify() will replace the entry from the container of
+ // this iterator, so update here directly will cause an error about it.
+ visited_url = *i;
}
}
+ if (visited_url)
+ UpdateTemplateURLVisitTime(visited_url);
}
void TemplateURLService::AddTabToSearchVisit(const TemplateURL& t_url) {
@@ -2256,8 +2274,7 @@ void TemplateURLService::ResolveSyncKeywordConflict(
// Update |applied_sync_turl| in the local model with the new keyword.
TemplateURLData data(applied_sync_turl->data());
data.SetKeyword(new_keyword);
- if (UpdateNoNotify(applied_sync_turl, TemplateURL(data)))
- NotifyObservers();
+ Update(applied_sync_turl, TemplateURL(data));
}
// The losing TemplateURL should have their keyword updated. Send a change to
// the server to reflect this change.
« no previous file with comments | « components/search_engines/template_url_service.h ('k') | components/test/data/web_database/version_68.sql » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698