Chromium Code Reviews| Index: chrome/browser/ui/webui/favicon_source.cc |
| =================================================================== |
| --- chrome/browser/ui/webui/favicon_source.cc (revision 176942) |
| +++ chrome/browser/ui/webui/favicon_source.cc (working copy) |
| @@ -9,7 +9,6 @@ |
| #include "chrome/browser/favicon/favicon_service_factory.h" |
| #include "chrome/browser/history/top_sites.h" |
| #include "chrome/browser/profiles/profile.h" |
| -#include "chrome/browser/ui/webui/chrome_url_data_manager.h" |
| #include "chrome/browser/ui/webui/web_ui_util.h" |
| #include "chrome/common/url_constants.h" |
| #include "grit/locale_settings.h" |
| @@ -18,6 +17,26 @@ |
| #include "ui/base/layout.h" |
| #include "ui/base/resource/resource_bundle.h" |
| +FaviconSource::IconRequest::IconRequest() |
| + : request_path(""), |
|
Evan Stade
2013/01/15 20:49:34
why is this necessary?
jam
2013/01/15 21:09:08
I had moved this from the header, i'll take this o
|
| + size_in_dip(gfx::kFaviconSize), |
| + scale_factor(ui::SCALE_FACTOR_NONE) { |
| +} |
| + |
| +FaviconSource::IconRequest::IconRequest( |
| + const content::URLDataSource::GotDataCallback& cb, |
| + const std::string& path, |
| + int size, |
| + ui::ScaleFactor scale) |
| + : callback(cb), |
| + request_path(path), |
| + size_in_dip(size), |
| + scale_factor(scale) { |
| +} |
| + |
| +FaviconSource::IconRequest::~IconRequest() { |
| +} |
| + |
| FaviconSource::FaviconSource(Profile* profile, IconType type) |
| : profile_(profile->GetOriginalProfile()), |
| icon_types_(type == FAVICON ? history::FAVICON : |
| @@ -33,13 +52,14 @@ |
| chrome::kChromeUIFaviconHost : chrome::kChromeUITouchIconHost; |
| } |
| -void FaviconSource::StartDataRequest(const std::string& path, |
| - bool is_incognito, |
| - int request_id) { |
| +void FaviconSource::StartDataRequest( |
| + const std::string& path, |
| + bool is_incognito, |
| + const content::URLDataSource::GotDataCallback& callback) { |
| FaviconService* favicon_service = |
| FaviconServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS); |
| if (!favicon_service || path.empty()) { |
| - SendDefaultResponse(IconRequest(request_id, |
| + SendDefaultResponse(IconRequest(callback, |
| "", |
| 16, |
| ui::SCALE_FACTOR_100P)); |
| @@ -68,7 +88,7 @@ |
| scale_factor, |
| base::Bind(&FaviconSource::OnFaviconDataAvailable, |
| base::Unretained(this), |
| - IconRequest(request_id, |
| + IconRequest(callback, |
| path.substr(prefix_length), |
| size_in_dip, |
| scale_factor)), |
| @@ -115,7 +135,7 @@ |
| for (size_t i = 0; i < arraysize(history::kPrepopulatedPages); i++) { |
| if (url.spec() == |
| l10n_util::GetStringUTF8(history::kPrepopulatedPages[i].url_id)) { |
| - url_data_source()->SendResponse(request_id, |
| + callback.Run( |
| ResourceBundle::GetSharedInstance().LoadDataResourceBytesForScale( |
| history::kPrepopulatedPages[i].favicon_id, |
| scale_factor)); |
| @@ -129,7 +149,7 @@ |
| scale_factor, |
| base::Bind(&FaviconSource::OnFaviconDataAvailable, |
| base::Unretained(this), |
| - IconRequest(request_id, |
| + IconRequest(callback, |
| url.spec(), |
| size_in_dip, |
| scale_factor)), |
| @@ -160,8 +180,7 @@ |
| const history::FaviconBitmapResult& bitmap_result) { |
| if (bitmap_result.is_valid()) { |
| // Forward the data along to the networking system. |
| - url_data_source()->SendResponse( |
| - request.request_id, bitmap_result.bitmap_data); |
| + request.callback.Run(bitmap_result.bitmap_data); |
| } else if (!HandleMissingResource(request)) { |
| SendDefaultResponse(request); |
| } |
| @@ -193,5 +212,5 @@ |
| default_favicons_[favicon_index] = default_favicon; |
| } |
| - url_data_source()->SendResponse(icon_request.request_id, default_favicon); |
| + icon_request.callback.Run(default_favicon); |
| } |