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

Unified Diff: chrome/browser/favicon/favicon_service.cc

Issue 10802066: Adds support for saving favicon size into history database. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes as requested by Sky and stevenjb Created 8 years, 4 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: chrome/browser/favicon/favicon_service.cc
diff --git a/chrome/browser/favicon/favicon_service.cc b/chrome/browser/favicon/favicon_service.cc
index 6c55b307fd75475ad91d8a8448a4aa5aa5b421dd..0134e96a593d3641c68dca18940618172d7a91b8 100644
--- a/chrome/browser/favicon/favicon_service.cc
+++ b/chrome/browser/favicon/favicon_service.cc
@@ -23,8 +23,10 @@ FaviconService::Handle FaviconService::GetFavicon(
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
+ // There should only ever be a single favicon per history::IconType so
+ // the requested size does not matter.
if (hs)
- hs->GetFavicon(request, icon_url, icon_type);
+ hs->GetFaviconClosestToSize(request, icon_url, icon_type, gfx::Size());
else
ForwardEmptyResultAsync(request);
return request->handle();
@@ -40,10 +42,13 @@ FaviconService::Handle FaviconService::UpdateFaviconMappingAndFetch(
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
- if (hs)
- hs->UpdateFaviconMappingAndFetch(request, page_url, icon_url, icon_type);
- else
+ if (hs) {
+ std::vector<GURL> icon_urls;
+ icon_urls.push_back(icon_url);
+ hs->UpdateFaviconMappingsAndFetch(request, page_url, icon_urls, icon_type);
+ } else {
ForwardEmptyResultAsync(request);
+ }
return request->handle();
}
@@ -62,39 +67,23 @@ FaviconService::Handle FaviconService::GetFaviconForURL(
} else {
HistoryService* hs = HistoryServiceFactory::GetForProfile(
profile_, Profile::EXPLICIT_ACCESS);
- if (hs)
- hs->GetFaviconForURL(request, page_url, icon_types);
- else
+ if (hs) {
+ // There should only ever be a single favicon per history::IconType so
+ // the requested size does not matter.
+ hs->GetFaviconForURLClosestToSize(request, page_url, icon_types,
+ gfx::Size());
+ } else {
ForwardEmptyResultAsync(request);
+ }
}
return handle;
}
-// Requests the favicon for |favicon_id|. The |consumer| is notified when the
-// bits have been fetched.
-FaviconService::Handle FaviconService::GetFaviconForID(
- history::FaviconID favicon_id,
- CancelableRequestConsumerBase* consumer,
- const FaviconDataCallback& callback) {
- GetFaviconRequest* request = new GetFaviconRequest(callback);
- AddRequest(request, consumer);
- FaviconService::Handle handle = request->handle();
- HistoryService* hs =
- HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
- if (hs)
- hs->GetFaviconForID(request, favicon_id);
- else
- ForwardEmptyResultAsync(request);
-
- return handle;
-}
-
-
void FaviconService::SetFaviconOutOfDateForPage(const GURL& page_url) {
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs)
- hs->SetFaviconOutOfDateForPage(page_url);
+ hs->SetFaviconsOutOfDateForPage(page_url);
}
void FaviconService::CloneFavicon(const GURL& old_page_url,
@@ -119,8 +108,21 @@ void FaviconService::SetFavicon(const GURL& page_url,
history::IconType icon_type) {
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
- if (hs)
- hs->SetFavicon(page_url, icon_url, image_data, icon_type);
+ if (hs) {
+ history::FaviconDataElement element;
+ element.bitmap_data = scoped_refptr<base::RefCountedMemory>(
+ new base::RefCountedBytes(image_data));
+ // As there should be only a single favicon per history::IconType the size
+ // we use for inserting the favicon does not matter as long as the same
+ // size is used for inserting everywhere.
+ element.pixel_size = gfx::Size();
+ element.icon_url = icon_url;
+ std::vector<history::FaviconDataElement> elements;
+ elements.push_back(element);
+ history::IconURLSizesMap icon_url_sizes;
+ icon_url_sizes[icon_url].InsertSize(gfx::Size());
+ hs->SetFavicons(page_url, icon_type, elements, icon_url_sizes);
+ }
}
FaviconService::~FaviconService() {

Powered by Google App Engine
This is Rietveld 408576698