Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(225)

Unified Diff: chrome/browser/extensions/api/extension_action/extension_actions_api.cc

Issue 11017046: Use LANCZOS3 resize algorithm to generate missing image reps for extension action icons. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
« no previous file with comments | « chrome/browser/extensions/api/extension_action/browser_action_apitest.cc ('k') | ui/gfx/image/image_skia_operations.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698