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

Unified Diff: components/history/core/browser/history_backend.cc

Issue 1152933003: Preserve bookmark favicons when clearing all browsing data (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months 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
Index: components/history/core/browser/history_backend.cc
diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc
index f7721c68e5587c2966a5bc5ba9cf2a0ab3a659b6..2b43f154752afe237d92a4f4b6a3f8081cf97153 100644
--- a/components/history/core/browser/history_backend.cc
+++ b/components/history/core/browser/history_backend.cc
@@ -2530,27 +2530,29 @@ void HistoryBackend::DeleteAllHistory() {
// the original tables directly.
// Get the bookmarked URLs.
- std::vector<URLAndTitle> starred_urls;
+ std::vector<URLAndTitle> starred_url_and_titles;
HistoryClient* history_client = GetHistoryClient();
if (history_client)
- history_client->GetBookmarks(&starred_urls);
+ history_client->GetBookmarks(&starred_url_and_titles);
- URLRows kept_urls;
- for (size_t i = 0; i < starred_urls.size(); i++) {
- URLRow row;
- if (!db_->GetRowForURL(starred_urls[i].url, &row))
- continue;
+ URLRows kept_url_rows;
+ std::vector<GURL> starred_urls;
+ for (const URLAndTitle& url_and_title : starred_url_and_titles) {
+ GURL url = url_and_title.url;
sky 2015/06/01 15:15:31 const GURL&
+ starred_urls.push_back(url);
- // Clear the last visit time so when we write these rows they are "clean."
- row.set_last_visit(Time());
- row.set_visit_count(0);
- row.set_typed_count(0);
- kept_urls.push_back(row);
+ URLRow row;
+ if (db_->GetRowForURL(url, &row)) {
+ // Clear the last visit time so when we write these rows they are "clean."
+ row.set_last_visit(Time());
+ row.set_visit_count(0);
+ row.set_typed_count(0);
+ kept_url_rows.push_back(row);
+ }
}
- // Clear thumbnail and favicon history. The favicons for the given URLs will
- // be kept.
- if (!ClearAllThumbnailHistory(kept_urls)) {
+ // Delete all cached favicons which are not used by bookmarks.
+ if (!ClearAllThumbnailHistory(starred_urls)) {
LOG(ERROR) << "Thumbnail history could not be cleared";
// We continue in this error case. If the user wants to delete their
// history, we should delete as much as we can.
@@ -2559,9 +2561,9 @@ void HistoryBackend::DeleteAllHistory() {
// ClearAllMainHistory will change the IDs of the URLs in kept_urls.
// Therefore, we clear the list afterwards to make sure nobody uses this
// invalid data.
- if (!ClearAllMainHistory(kept_urls))
+ if (!ClearAllMainHistory(kept_url_rows))
LOG(ERROR) << "Main history could not be cleared";
- kept_urls.clear();
+ kept_url_rows.clear();
db_->GetStartDate(&first_recorded_time_);
@@ -2570,7 +2572,8 @@ void HistoryBackend::DeleteAllHistory() {
NotifyURLsDeleted(true, false, URLRows(), std::set<GURL>());
}
-bool HistoryBackend::ClearAllThumbnailHistory(const URLRows& kept_urls) {
+bool HistoryBackend::ClearAllThumbnailHistory(
+ const std::vector<GURL>& kept_urls) {
if (!thumbnail_db_) {
// When we have no reference to the thumbnail database, maybe there was an
// error opening it. In this case, we just try to blow it away to try to
@@ -2583,20 +2586,13 @@ bool HistoryBackend::ClearAllThumbnailHistory(const URLRows& kept_urls) {
return true;
}
- // Urls to retain mappings for.
- std::vector<GURL> urls_to_keep;
- for (URLRows::const_iterator i = kept_urls.begin(); i != kept_urls.end();
- ++i) {
- urls_to_keep.push_back(i->url());
- }
-
// Isolate from any long-running transaction.
thumbnail_db_->CommitTransaction();
thumbnail_db_->BeginTransaction();
// TODO(shess): If this fails, perhaps the database should be razed
// or deleted.
- if (!thumbnail_db_->RetainDataForPageUrls(urls_to_keep)) {
+ if (!thumbnail_db_->RetainDataForPageUrls(kept_urls)) {
thumbnail_db_->RollbackTransaction();
thumbnail_db_->BeginTransaction();
return false;
« no previous file with comments | « components/history/core/browser/history_backend.h ('k') | components/history/core/browser/history_backend_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698