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

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

Issue 2750313002: Extend HistoryService with support for favicons from Google servers (Closed)
Patch Set: Rename function. Created 3 years, 9 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 5b1d53ddccd2dc97863ad91160efdc96e6213b87..cd3bffe171c067a733b6b4420cccf9bfbb9724fb 100644
--- a/components/history/core/browser/history_backend.cc
+++ b/components/history/core/browser/history_backend.cc
@@ -1708,38 +1708,26 @@ void HistoryBackend::SetFavicons(const GURL& page_url,
favicon_base::IconType icon_type,
const GURL& icon_url,
const std::vector<SkBitmap>& bitmaps) {
- if (!thumbnail_db_ || !db_)
- return;
-
- DCHECK_GE(kMaxFaviconBitmapsPerIconURL, bitmaps.size());
-
- favicon_base::FaviconID icon_id =
- thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, icon_type, nullptr);
-
- bool favicon_created = false;
- if (!icon_id) {
- icon_id = thumbnail_db_->AddFavicon(icon_url, icon_type);
- favicon_created = true;
- }
-
- bool favicon_data_modified = SetFaviconBitmaps(icon_id, bitmaps);
+ SetFaviconsImpl(page_url, icon_type, icon_url, bitmaps,
+ /*bitmaps_are_expired=*/false);
+}
- std::vector<favicon_base::FaviconID> icon_ids(1u, icon_id);
- bool mapping_changed =
- SetFaviconMappingsForPageAndRedirects(page_url, icon_type, icon_ids);
+bool HistoryBackend::SetLastResortFavicons(
+ const GURL& page_url,
+ favicon_base::IconType icon_type,
+ const GURL& icon_url,
+ const std::vector<SkBitmap>& bitmaps) {
+ if (!thumbnail_db_ || !db_)
+ return false;
- if (mapping_changed) {
- // Notify the UI that this function changed an icon mapping.
- SendFaviconChangedNotificationForPageAndRedirects(page_url);
+ // Verify there's no known data for the page URL.
+ if (thumbnail_db_->GetIconMappingsForPageURL(page_url,
+ /*mapping_data=*/nullptr)) {
+ return false;
}
- if (favicon_data_modified && !favicon_created) {
- // If there was a favicon at |icon_url| prior to SetFavicons() being called,
- // there may be page URLs which also use the favicon at |icon_url|. Notify
- // the UI that the favicon has changed for |icon_url|.
- SendFaviconChangedNotificationForIconURL(icon_url);
- }
- ScheduleCommit();
+ return SetFaviconsImpl(page_url, icon_type, icon_url, bitmaps,
+ /*bitmaps_are_expired=*/true);
}
void HistoryBackend::SetFaviconsOutOfDateForPage(const GURL& page_url) {
@@ -1817,6 +1805,51 @@ void HistoryBackend::SetImportedFavicons(
}
}
+bool HistoryBackend::SetFaviconsImpl(const GURL& page_url,
+ favicon_base::IconType icon_type,
+ const GURL& icon_url,
+ const std::vector<SkBitmap>& bitmaps,
+ bool bitmaps_are_expired) {
+ if (!thumbnail_db_ || !db_)
+ return false;
+
+ DCHECK_GE(kMaxFaviconBitmapsPerIconURL, bitmaps.size());
+
+ favicon_base::FaviconID icon_id =
+ thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, icon_type, nullptr);
+
+ bool favicon_created = false;
+ if (!icon_id) {
+ icon_id = thumbnail_db_->AddFavicon(icon_url, icon_type);
+ favicon_created = true;
+ }
+
+ bool favicon_data_modified = false;
+ if (favicon_created || !bitmaps_are_expired)
+ favicon_data_modified = SetFaviconBitmaps(icon_id, bitmaps);
+
+ if (favicon_created && bitmaps_are_expired)
+ thumbnail_db_->SetFaviconOutOfDate(icon_id);
+
+ std::vector<favicon_base::FaviconID> icon_ids(1u, icon_id);
+ bool mapping_changed =
+ SetFaviconMappingsForPageAndRedirects(page_url, icon_type, icon_ids);
+
+ if (mapping_changed) {
+ // Notify the UI that this function changed an icon mapping.
+ SendFaviconChangedNotificationForPageAndRedirects(page_url);
+ }
+
+ if (favicon_data_modified && !favicon_created) {
+ // If there was a favicon at |icon_url| prior to SetFavicons() being called,
+ // there may be page URLs which also use the favicon at |icon_url|. Notify
+ // the UI that the favicon has changed for |icon_url|.
+ SendFaviconChangedNotificationForIconURL(icon_url);
+ }
+ ScheduleCommit();
+ return favicon_data_modified;
+}
+
void HistoryBackend::UpdateFaviconMappingsAndFetchImpl(
const GURL* page_url,
const std::vector<GURL>& icon_urls,
« 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