Chromium Code Reviews| Index: chrome/browser/ui/webui/extensions/extension_icon_source.cc |
| diff --git a/chrome/browser/ui/webui/extensions/extension_icon_source.cc b/chrome/browser/ui/webui/extensions/extension_icon_source.cc |
| index 22dcf451fe4ee374f1deac33142481526fa83d0f..7366198bba93367399efcffd6e9e40effb4729ea 100644 |
| --- a/chrome/browser/ui/webui/extensions/extension_icon_source.cc |
| +++ b/chrome/browser/ui/webui/extensions/extension_icon_source.cc |
| @@ -47,18 +47,6 @@ scoped_refptr<base::RefCountedMemory> BitmapToMemory(const SkBitmap* image) { |
| return image_bytes; |
| } |
| -SkBitmap DesaturateImage(const SkBitmap* image) { |
| - color_utils::HSL shift = {-1, 0, 0.6}; |
| - return SkBitmapOperations::CreateHSLShiftedBitmap(*image, shift); |
| -} |
| - |
| -SkBitmap* ToBitmap(const unsigned char* data, size_t size) { |
| - SkBitmap* decoded = new SkBitmap(); |
| - bool success = gfx::PNGCodec::Decode(data, size, decoded); |
| - DCHECK(success); |
| - return decoded; |
| -} |
| - |
| } // namespace |
| ExtensionIconSource::ExtensionIconSource(Profile* profile) : profile_(profile) { |
| @@ -93,18 +81,6 @@ GURL ExtensionIconSource::GetIconURL(const Extension* extension, |
| return icon_url; |
| } |
| -// static |
| -SkBitmap* ExtensionIconSource::LoadImageByResourceId(int resource_id) { |
| - std::string contents = ResourceBundle::GetSharedInstance() |
| - .GetRawDataResourceForScale(resource_id, |
| - ui::SCALE_FACTOR_100P).as_string(); |
| - |
| - // Convert and return it. |
| - const unsigned char* data = |
| - reinterpret_cast<const unsigned char*>(contents.data()); |
| - return ToBitmap(data, contents.length()); |
| -} |
| - |
| std::string ExtensionIconSource::GetSource() const { |
| return chrome::kChromeUIExtensionIconHost; |
| } |
| @@ -124,23 +100,12 @@ void ExtensionIconSource::StartDataRequest( |
| // the request data available for later. |
| static int next_id = 0; |
| if (!ParseData(path, ++next_id, callback)) { |
| - // If the request data cannot be parsed, request parameters will not be |
| - // added to |request_map_|. |
| - // Send back the default application icon (not resized or desaturated) as |
| - // the default response. |
| - callback.Run(BitmapToMemory(GetDefaultAppImage()).get()); |
| - return; |
| + // If the request data cannot be parsed, we will request anyway a default |
| + // icon (not resized or desaturated). |
| + SetData(next_id, callback, NULL, false, -1, ExtensionIconSet::MATCH_BIGGER); |
| } |
| - ExtensionIconRequest* request = GetData(next_id); |
| - ExtensionResource icon = IconsInfo::GetIconResource( |
| - request->extension, request->size, request->match); |
| - |
| - if (icon.relative_path().empty()) { |
|
Finnur
2013/09/30 15:11:21
What was the purpose of this code? Was it to preve
dvh-g
2013/10/01 04:19:26
The equivalent is performed in this method: ImageL
|
| - LoadIconFailed(next_id); |
| - } else { |
| - LoadExtensionImage(icon, next_id); |
| - } |
| + LoadExtensionImage(next_id); |
| } |
| ExtensionIconSource::~ExtensionIconSource() { |
| @@ -148,125 +113,20 @@ ExtensionIconSource::~ExtensionIconSource() { |
| STLDeleteValues(&request_map_); |
| } |
| -const SkBitmap* ExtensionIconSource::GetDefaultAppImage() { |
| - if (!default_app_data_.get()) |
| - default_app_data_.reset(LoadImageByResourceId(IDR_APP_DEFAULT_ICON)); |
| - |
| - return default_app_data_.get(); |
| -} |
| - |
| -const SkBitmap* ExtensionIconSource::GetDefaultExtensionImage() { |
| - if (!default_extension_data_.get()) { |
| - default_extension_data_.reset( |
| - LoadImageByResourceId(IDR_EXTENSION_DEFAULT_ICON)); |
| - } |
| - |
| - return default_extension_data_.get(); |
| -} |
| - |
| -void ExtensionIconSource::FinalizeImage(const SkBitmap* image, |
| - int request_id) { |
| - SkBitmap bitmap; |
| - ExtensionIconRequest* request = GetData(request_id); |
| - if (request->grayscale) |
| - bitmap = DesaturateImage(image); |
| - else |
| - bitmap = *image; |
| - |
| - request->callback.Run(BitmapToMemory(&bitmap).get()); |
| - ClearData(request_id); |
| -} |
| - |
| -void ExtensionIconSource::LoadDefaultImage(int request_id) { |
| - ExtensionIconRequest* request = GetData(request_id); |
| - const SkBitmap* default_image = NULL; |
| - |
| - if (request->extension->is_app()) |
| - default_image = GetDefaultAppImage(); |
| - else |
| - default_image = GetDefaultExtensionImage(); |
| - |
| - SkBitmap resized_image(skia::ImageOperations::Resize( |
| - *default_image, skia::ImageOperations::RESIZE_LANCZOS3, |
| - request->size, request->size)); |
| - |
| - // There are cases where Resize returns an empty bitmap, for example if you |
| - // ask for an image too large. In this case it is better to return the default |
| - // image than returning nothing at all. |
| - if (resized_image.empty()) |
| - resized_image = *default_image; |
| - |
| - FinalizeImage(&resized_image, request_id); |
| -} |
| - |
| -void ExtensionIconSource::LoadExtensionImage(const ExtensionResource& icon, |
| - int request_id) { |
| - ExtensionIconRequest* request = GetData(request_id); |
| - ImageLoader::Get(profile_)->LoadImageAsync( |
| - request->extension, icon, |
| - gfx::Size(request->size, request->size), |
| - base::Bind(&ExtensionIconSource::OnImageLoaded, AsWeakPtr(), request_id)); |
| -} |
| - |
| -void ExtensionIconSource::LoadFaviconImage(int request_id) { |
| - FaviconService* favicon_service = |
| - FaviconServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS); |
| - // Fall back to the default icons if the service isn't available. |
| - if (favicon_service == NULL) { |
| - LoadDefaultImage(request_id); |
| - return; |
| - } |
| - |
| - GURL favicon_url = |
| - AppLaunchInfo::GetFullLaunchURL(GetData(request_id)->extension); |
| - favicon_service->GetRawFaviconForURL( |
| - FaviconService::FaviconForURLParams( |
| - profile_, favicon_url, chrome::FAVICON, gfx::kFaviconSize), |
| - ui::SCALE_FACTOR_100P, |
| - base::Bind(&ExtensionIconSource::OnFaviconDataAvailable, |
| - base::Unretained(this), request_id), |
| - &cancelable_task_tracker_); |
| -} |
| - |
| -void ExtensionIconSource::OnFaviconDataAvailable( |
| - int request_id, |
| - const chrome::FaviconBitmapResult& bitmap_result) { |
| +void ExtensionIconSource::LoadExtensionImage(int request_id) { |
| ExtensionIconRequest* request = GetData(request_id); |
| - |
| - // Fallback to the default icon if there wasn't a favicon. |
| - if (!bitmap_result.is_valid()) { |
| - LoadDefaultImage(request_id); |
| - return; |
| - } |
| - |
| - if (!request->grayscale) { |
| - // If we don't need a grayscale image, then we can bypass FinalizeImage |
| - // to avoid unnecessary conversions. |
| - request->callback.Run(bitmap_result.bitmap_data.get()); |
| - ClearData(request_id); |
| - } else { |
| - FinalizeImage(ToBitmap(bitmap_result.bitmap_data->front(), |
| - bitmap_result.bitmap_data->size()), request_id); |
| - } |
| -} |
| - |
| -void ExtensionIconSource::OnImageLoaded(int request_id, |
| - const gfx::Image& image) { |
| - if (image.IsEmpty()) |
| - LoadIconFailed(request_id); |
| - else |
| - FinalizeImage(image.ToSkBitmap(), request_id); |
| + ImageLoader::Get(profile_)->LoadExtensionIconAsync( |
| + request->extension, |
| + request->size, |
| + request->grayscale, |
| + base::Bind(&ExtensionIconSource::OnIconLoaded, AsWeakPtr(), request_id)); |
| } |
| -void ExtensionIconSource::LoadIconFailed(int request_id) { |
| +void ExtensionIconSource::OnIconLoaded(int request_id, const gfx::Image& image) |
| +{ |
| ExtensionIconRequest* request = GetData(request_id); |
| - ExtensionResource icon = IconsInfo::GetIconResource( |
| - request->extension, request->size, request->match); |
| - |
| - if (request->size == extension_misc::EXTENSION_ICON_BITTY) |
| - LoadFaviconImage(request_id); |
| - else |
| - LoadDefaultImage(request_id); |
| + request->callback.Run(BitmapToMemory(image.ToSkBitmap()).get()); |
| + ClearData(request_id); |
| } |
| bool ExtensionIconSource::ParseData( |