Index: chrome/browser/ui/webui/extensions/extension_icon_source.cc |
=================================================================== |
--- chrome/browser/ui/webui/extensions/extension_icon_source.cc (revision 173105) |
+++ chrome/browser/ui/webui/extensions/extension_icon_source.cc (working copy) |
@@ -37,6 +37,10 @@ |
namespace { |
+// Maximum size for the loaded icon. Actual loaded size can be larger than |
+// this because of scaling factor. |
+const int kMaxIconSize = 512; |
+ |
scoped_refptr<base::RefCountedMemory> BitmapToMemory(const SkBitmap* image) { |
base::RefCountedBytes* image_bytes = new base::RefCountedBytes; |
gfx::PNGCodec::EncodeBGRASkBitmap(*image, false, &image_bytes->data()); |
@@ -120,6 +124,9 @@ |
} |
ExtensionIconRequest* request = GetData(request_id); |
+ if (request->size>kMaxIconSize) { |
Matt Perry
2012/12/14 18:57:08
Move these ifs below.
Also, familiarize yourself
|
+ request->size = kMaxIconSize; |
+ } |
ExtensionResource icon = |
request->extension->GetIconResource(request->size, request->match); |
@@ -166,6 +173,9 @@ |
void ExtensionIconSource::LoadDefaultImage(int request_id) { |
ExtensionIconRequest* request = GetData(request_id); |
const SkBitmap* default_image = NULL; |
+ if (request->size>kMaxIconSize) { |
+ request->size = kMaxIconSize; |
+ } |
if (request->extension->is_app()) |
default_image = GetDefaultAppImage(); |
@@ -188,6 +198,9 @@ |
void ExtensionIconSource::LoadExtensionImage(const ExtensionResource& icon, |
int request_id) { |
ExtensionIconRequest* request = GetData(request_id); |
+ if (request->size>kMaxIconSize) { |
+ request->size = kMaxIconSize; |
+ } |
extensions::ImageLoader::Get(profile_)->LoadImageAsync( |
request->extension, icon, |
gfx::Size(request->size, request->size), |
@@ -217,7 +230,9 @@ |
int request_id, |
const history::FaviconBitmapResult& bitmap_result) { |
ExtensionIconRequest* request = GetData(request_id); |
- |
+ if (request->size>kMaxIconSize) { |
+ request->size = kMaxIconSize; |
+ } |
// Fallback to the default icon if there wasn't a favicon. |
if (!bitmap_result.is_valid()) { |
LoadDefaultImage(request_id); |
@@ -245,6 +260,9 @@ |
void ExtensionIconSource::LoadIconFailed(int request_id) { |
ExtensionIconRequest* request = GetData(request_id); |
+ if (request->size>kMaxIconSize) { |
+ request->size = kMaxIconSize; |
+ } |
ExtensionResource icon = |
request->extension->GetIconResource(request->size, request->match); |