| Index: chrome/browser/ui/app_list/extension_app_item.cc
|
| diff --git a/chrome/browser/ui/app_list/extension_app_item.cc b/chrome/browser/ui/app_list/extension_app_item.cc
|
| index cb32e2239f57bd722c7a1f73b46d0066317be05a..4ed824f24463452f76693b16d36f851659418022 100644
|
| --- a/chrome/browser/ui/app_list/extension_app_item.cc
|
| +++ b/chrome/browser/ui/app_list/extension_app_item.cc
|
| @@ -25,7 +25,10 @@
|
| #include "content/public/common/context_menu_params.h"
|
| #include "grit/chromium_strings.h"
|
| #include "grit/generated_resources.h"
|
| +#include "grit/theme_resources.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| +#include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/gfx/canvas.h"
|
| #include "ui/gfx/image/image.h"
|
|
|
| using extensions::Extension;
|
| @@ -212,13 +215,50 @@ void ExtensionAppItem::Move(const ExtensionAppItem* prev,
|
| }
|
|
|
| void ExtensionAppItem::LoadImage(const Extension* extension) {
|
| + int icon_size = extension_misc::EXTENSION_ICON_MEDIUM;
|
| + if (HasOverlay())
|
| + icon_size = extension_misc::EXTENSION_ICON_SMALL;
|
| +
|
| icon_.reset(new extensions::IconImage(
|
| extension,
|
| extension->icons(),
|
| - extension_misc::EXTENSION_ICON_MEDIUM,
|
| + icon_size,
|
| Extension::GetDefaultIcon(true),
|
| this));
|
| - SetIcon(icon_->image_skia());
|
| + SetIconWithOverlay(icon_->image_skia());
|
| +}
|
| +
|
| +bool ExtensionAppItem::HasOverlay() {
|
| +#if defined(OS_CHROMEOS)
|
| + return false;
|
| +#else
|
| + return !GetExtension()->is_platform_app();
|
| +#endif
|
| +}
|
| +
|
| +void ExtensionAppItem::SetIconWithOverlay(const gfx::ImageSkia& icon) {
|
| + using extension_misc::EXTENSION_ICON_SMALL;
|
| + using extension_misc::EXTENSION_ICON_MEDIUM;
|
| +
|
| + if (!HasOverlay()) {
|
| + SetIcon(icon);
|
| + return;
|
| + }
|
| +
|
| + const int kIconOffset = (EXTENSION_ICON_MEDIUM - EXTENSION_ICON_SMALL) / 2;
|
| +
|
| + // The tab overlay is not vertically symmetric, to position the app in the
|
| + // middle of the overlay we need a slight adjustment.
|
| + const int kVerticalAdjust = 4;
|
| + gfx::Canvas icon_canvas(gfx::Size(EXTENSION_ICON_MEDIUM,
|
| + EXTENSION_ICON_MEDIUM),
|
| + ui::SCALE_FACTOR_100P, false);
|
| + icon_canvas.DrawImageInt(icon, kIconOffset, kIconOffset + kVerticalAdjust);
|
| + icon_canvas.DrawImageInt(
|
| + *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
|
| + IDR_APP_LIST_TAB_OVERLAY),
|
| + 0, 0);
|
| + SetIcon(gfx::ImageSkia(icon_canvas.ExtractImageRep()));
|
| }
|
|
|
| void ExtensionAppItem::ShowExtensionOptions() {
|
| @@ -254,7 +294,7 @@ void ExtensionAppItem::StartExtensionUninstall() {
|
| void ExtensionAppItem::OnExtensionIconImageChanged(
|
| extensions::IconImage* image) {
|
| DCHECK(icon_.get() == image);
|
| - SetIcon(icon_->image_skia());
|
| + SetIconWithOverlay(icon_->image_skia());
|
| }
|
|
|
| bool ExtensionAppItem::IsItemForCommandIdDynamic(int command_id) const {
|
|
|