Index: chrome/browser/favicon/favicon_service.cc |
diff --git a/chrome/browser/favicon/favicon_service.cc b/chrome/browser/favicon/favicon_service.cc |
index 32145d3e6d256b7a9739102085e0dd3a48abb889..c2156a96b1989fd2e73fc87f49c0dce994f0c0e4 100644 |
--- a/chrome/browser/favicon/favicon_service.cc |
+++ b/chrome/browser/favicon/favicon_service.cc |
@@ -13,6 +13,7 @@ |
#include "chrome/common/url_constants.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
#include "ui/gfx/codec/png_codec.h" |
+#include "ui/gfx/favicon_size.h" |
#include "ui/gfx/image/image_skia.h" |
FaviconService::FaviconService(HistoryService* history_service) |
@@ -31,11 +32,14 @@ FaviconService::Handle FaviconService::GetFaviconImage( |
desired_size_in_dip, |
callback)); |
AddRequest(request, consumer); |
- // TODO(pkotwicz): Pass in desired size and scale factors. |
- if (history_service_) |
- history_service_->GetFavicon(request, icon_url, icon_type); |
- else |
+ if (history_service_) { |
+ std::vector<GURL> icon_urls; |
+ icon_urls.push_back(icon_url); |
+ history_service_->GetFavicons(request, icon_urls, icon_type, |
+ desired_size_in_dip, ui::GetSupportedScaleFactors()); |
+ } else { |
ForwardEmptyResultAsync(request); |
+ } |
return request->handle(); |
} |
@@ -53,11 +57,16 @@ FaviconService::Handle FaviconService::GetRawFavicon( |
desired_scale_factor, |
callback)); |
AddRequest(request, consumer); |
- // TODO(pkotwicz): Pass in desired size and scale factor. |
- if (history_service_) |
- history_service_->GetFavicon(request, icon_url, icon_type); |
- else |
+ if (history_service_) { |
+ std::vector<GURL> icon_urls; |
+ icon_urls.push_back(icon_url); |
+ std::vector<ui::ScaleFactor> desired_scale_factors; |
+ desired_scale_factors.push_back(desired_scale_factor); |
+ history_service_->GetFavicons(request, icon_urls, icon_type, |
+ desired_size_in_dip, desired_scale_factors); |
+ } else { |
ForwardEmptyResultAsync(request); |
+ } |
return request->handle(); |
} |
@@ -70,10 +79,14 @@ FaviconService::Handle FaviconService::GetFavicon( |
const FaviconResultsCallback& callback) { |
GetFaviconRequest* request = new GetFaviconRequest(callback); |
AddRequest(request, consumer); |
- if (history_service_) |
- history_service_->GetFavicon(request, icon_url, icon_type); |
- else |
+ if (history_service_) { |
+ std::vector<GURL> icon_urls; |
+ icon_urls.push_back(icon_url); |
+ history_service_->GetFavicons(request, icon_urls, icon_type, |
+ desired_size_in_dip, desired_scale_factors); |
+ } else { |
ForwardEmptyResultAsync(request); |
+ } |
return request->handle(); |
} |
@@ -85,11 +98,17 @@ FaviconService::Handle FaviconService::UpdateFaviconMappingAndFetch( |
const FaviconResultsCallback& callback) { |
GetFaviconRequest* request = new GetFaviconRequest(callback); |
AddRequest(request, consumer); |
- if (history_service_) |
- history_service_->UpdateFaviconMappingAndFetch(request, page_url, |
- icon_url, icon_type); |
- else |
+ if (history_service_) { |
+ std::vector<GURL> icon_urls; |
+ icon_urls.push_back(icon_url); |
+ // TODO(pkotwicz): Pass in |desired_size_in_dip| and |desired_scale_factors| |
+ // from FaviconHandler. |
+ history_service_->UpdateFaviconMappingsAndFetch(request, page_url, |
+ icon_urls, icon_type, gfx::kFaviconSize, |
+ ui::GetSupportedScaleFactors()); |
+ } else { |
ForwardEmptyResultAsync(request); |
+ } |
return request->handle(); |
} |
@@ -137,33 +156,35 @@ FaviconService::Handle FaviconService::GetLargestRawFaviconForID( |
const FaviconRawCallback& callback) { |
// Use 0 as |desired_size_in_dip| to get the largest bitmap for |favicon_id| |
// without any resizing. |
+ int desired_size_in_dip = 0; |
+ ui::ScaleFactor desired_scale_factor = ui::SCALE_FACTOR_100P; |
GetFaviconRequest* request = new GetFaviconRequest(base::Bind( |
&FaviconService::GetRawFaviconCallback, |
base::Unretained(this), |
- 0, |
- ui::SCALE_FACTOR_100P, |
+ desired_size_in_dip, |
+ desired_scale_factor, |
callback)); |
AddRequest(request, consumer); |
FaviconService::Handle handle = request->handle(); |
- // TODO(pkotwicz): Pass in desired size and scale factor. |
- if (history_service_) |
- history_service_->GetFaviconForID(request, favicon_id); |
- else |
+ if (history_service_) { |
+ history_service_->GetFaviconForID(request, favicon_id, desired_size_in_dip, |
+ desired_scale_factor); |
+ } else { |
ForwardEmptyResultAsync(request); |
- |
+ } |
return handle; |
} |
void FaviconService::SetFaviconOutOfDateForPage(const GURL& page_url) { |
if (history_service_) |
- history_service_->SetFaviconOutOfDateForPage(page_url); |
+ history_service_->SetFaviconsOutOfDateForPage(page_url); |
} |
void FaviconService::CloneFavicon(const GURL& old_page_url, |
const GURL& new_page_url) { |
if (history_service_) |
- history_service_->CloneFavicon(old_page_url, new_page_url); |
+ history_service_->CloneFavicons(old_page_url, new_page_url); |
} |
void FaviconService::SetImportedFavicons( |
@@ -176,8 +197,21 @@ void FaviconService::SetFavicon(const GURL& page_url, |
const GURL& icon_url, |
const std::vector<unsigned char>& image_data, |
history::IconType icon_type) { |
- if (history_service_) |
- history_service_->SetFavicon(page_url, icon_url, image_data, icon_type); |
+ if (history_service_) { |
+ // TODO(pkotwicz): Pass in the real pixel size of |image_data|. |
+ history::FaviconBitmapData bitmap_data_element; |
+ bitmap_data_element.bitmap_data = new base::RefCountedBytes(image_data); |
+ bitmap_data_element.pixel_size = gfx::Size(); |
+ bitmap_data_element.icon_url = icon_url; |
+ std::vector<history::FaviconBitmapData> favicon_bitmap_data; |
+ favicon_bitmap_data.push_back(bitmap_data_element); |
+ history::FaviconSizes favicon_sizes; |
+ favicon_sizes.push_back(gfx::Size()); |
+ history::IconURLSizesMap icon_url_sizes; |
+ icon_url_sizes[icon_url] = favicon_sizes; |
+ history_service_->SetFavicons(page_url, icon_type, |
+ favicon_bitmap_data, icon_url_sizes); |
+ } |
} |
FaviconService::~FaviconService() { |
@@ -194,11 +228,12 @@ FaviconService::Handle FaviconService::GetFaviconForURLImpl( |
ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL( |
params.profile, request, params.page_url, desired_scale_factors); |
} else { |
- // TODO(pkotwicz): Pass in desired size and desired scale factors. |
if (history_service_) { |
- history_service_->GetFaviconForURL(request, |
- params.page_url, |
- params.icon_types); |
+ history_service_->GetFaviconsForURL(request, |
+ params.page_url, |
+ params.icon_types, |
+ params.desired_size_in_dip, |
+ desired_scale_factors); |
} else { |
ForwardEmptyResultAsync(request); |
} |