Index: chrome/browser/extensions/api/extension_action/extension_actions_api.cc |
diff --git a/chrome/browser/extensions/api/extension_action/extension_actions_api.cc b/chrome/browser/extensions/api/extension_action/extension_actions_api.cc |
index 3b7a2b496747281dec1cf95d8f53e664872284a6..43da020363d7329177a5d810bea7d82204465c61 100644 |
--- a/chrome/browser/extensions/api/extension_action/extension_actions_api.cc |
+++ b/chrome/browser/extensions/api/extension_action/extension_actions_api.cc |
@@ -27,6 +27,7 @@ |
#include "chrome/common/render_messages.h" |
#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/notification_service.h" |
+#include "ui/gfx/image/image_skia_operations.h" |
namespace { |
@@ -130,7 +131,13 @@ void SetDefaultsFromValue(const base::DictionaryValue* dict, |
icon.AddRepresentation(gfx::ImageSkiaRep(bitmap, kIconSizes[i].scale)); |
} |
} |
- action->SetIcon(kTabId, gfx::Image(icon)); |
+ |
+ if (!icon.isNull()) { |
+ gfx::ImageSkia final_icon = |
+ gfx::ImageSkiaOperations::CreateImageWithCustomResizeMethod( |
+ icon, skia::ImageOperations::RESIZE_LANCZOS3); |
+ action->SetIcon(kTabId, gfx::Image(final_icon)); |
+ } |
} |
} |
@@ -155,11 +162,9 @@ scoped_ptr<base::DictionaryValue> DefaultsToValue(ExtensionAction* action) { |
if (!icon.isNull()) { |
base::DictionaryValue* icon_value = new base::DictionaryValue(); |
for (size_t i = 0; i < arraysize(kIconSizes); i++) { |
- if (icon.HasRepresentation(kIconSizes[i].scale)) { |
- icon_value->SetString( |
- kIconSizes[i].size_string, |
- RepresentationToString(icon, kIconSizes[i].scale)); |
- } |
+ icon_value->SetString( |
+ kIconSizes[i].size_string, |
+ RepresentationToString(icon, kIconSizes[i].scale)); |
} |
dict->Set(kIconStorageKey, icon_value); |
} |
@@ -469,7 +474,10 @@ bool ExtensionActionSetIconFunction::RunExtensionAction() { |
} |
} |
- extension_action_->SetIcon(tab_id_, gfx::Image(icon)); |
+ gfx::ImageSkia final_icon = |
+ gfx::ImageSkiaOperations::CreateImageWithCustomResizeMethod( |
+ icon, skia::ImageOperations::RESIZE_LANCZOS3); |
+ extension_action_->SetIcon(tab_id_, gfx::Image(final_icon)); |
} else if (details_->GetInteger("iconIndex", &icon_index)) { |
// Obsolete argument: ignore it. |
return true; |