| Index: chrome/browser/ui/app_list/search/extension_app_result.cc
|
| diff --git a/chrome/browser/ui/app_list/search/extension_app_result.cc b/chrome/browser/ui/app_list/search/extension_app_result.cc
|
| index 376c4a1fdd13501c6d6f9f21731a326aa60dbc87..8d4a39352a67fe8d94e72fcc08c3a8537964245c 100644
|
| --- a/chrome/browser/ui/app_list/search/extension_app_result.cc
|
| +++ b/chrome/browser/ui/app_list/search/extension_app_result.cc
|
| @@ -5,6 +5,8 @@
|
| #include "chrome/browser/ui/app_list/search/extension_app_result.h"
|
|
|
| #include "base/metrics/user_metrics.h"
|
| +#include "chrome/browser/extensions/chrome_app_icon.h"
|
| +#include "chrome/browser/extensions/chrome_app_icon_service.h"
|
| #include "chrome/browser/extensions/extension_util.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
|
| @@ -21,9 +23,6 @@
|
| #include "extensions/common/manifest_handlers/icons_handler.h"
|
| #include "ui/app_list/app_list_switches.h"
|
| #include "ui/events/event_constants.h"
|
| -#include "ui/gfx/color_utils.h"
|
| -#include "ui/gfx/image/image_skia_operations.h"
|
| -#include "chrome/browser/chromeos/extensions/gfx_utils.h"
|
|
|
| namespace app_list {
|
|
|
| @@ -40,8 +39,8 @@ ExtensionAppResult::ExtensionAppResult(Profile* profile,
|
| DCHECK(extension);
|
|
|
| is_platform_app_ = extension->is_platform_app();
|
| -
|
| - CreateOrUpdateIcon();
|
| + icon_ = extensions::ChromeAppIconService::Get(profile)->CreateIcon(
|
| + this, app_id, GetPreferredIconDimension());
|
|
|
| StartObservingExtensionRegistry();
|
| }
|
| @@ -50,23 +49,6 @@ ExtensionAppResult::~ExtensionAppResult() {
|
| StopObservingExtensionRegistry();
|
| }
|
|
|
| -void ExtensionAppResult::CreateOrUpdateIcon() {
|
| - if (icon_ && icon_->is_valid()) {
|
| - UpdateIcon();
|
| - return;
|
| - }
|
| -
|
| - const extensions::Extension* extension =
|
| - extensions::ExtensionRegistry::Get(profile())->GetInstalledExtension(
|
| - app_id());
|
| - DCHECK(extension);
|
| -
|
| - icon_ = base::MakeUnique<extensions::IconImage>(
|
| - profile(), extension, extensions::IconsInfo::GetIcons(extension),
|
| - GetPreferredIconDimension(), extensions::util::GetDefaultAppIcon(), this);
|
| - UpdateIcon();
|
| -}
|
| -
|
| void ExtensionAppResult::Open(int event_flags) {
|
| RecordHistogram(APP_SEARCH_RESULT);
|
| const extensions::Extension* extension =
|
| @@ -144,28 +126,8 @@ bool ExtensionAppResult::RunExtensionEnableFlow() {
|
| return true;
|
| }
|
|
|
| -void ExtensionAppResult::UpdateIcon() {
|
| - gfx::ImageSkia icon = icon_->image_skia();
|
| -
|
| - extensions::util::MaybeApplyChromeBadge(profile(), app_id(), &icon);
|
| -
|
| - if (!extensions::util::IsAppLaunchable(app_id(), profile())) {
|
| - const color_utils::HSL shift = {-1, 0, 0.6};
|
| - icon = gfx::ImageSkiaOperations::CreateHSLShiftedImage(icon, shift);
|
| - }
|
| -
|
| - SetIcon(icon);
|
| -}
|
| -
|
| -void ExtensionAppResult::OnExtensionIconImageChanged(
|
| - extensions::IconImage* image) {
|
| - DCHECK_EQ(icon_.get(), image);
|
| - UpdateIcon();
|
| -}
|
| -
|
| -void ExtensionAppResult::OnExtensionIconImageDestroyed(
|
| - extensions::IconImage* image) {
|
| - SetIcon(gfx::ImageSkia());
|
| +void ExtensionAppResult::OnIconUpdated(extensions::ChromeAppIcon* icon) {
|
| + SetIcon(icon->image_skia());
|
| }
|
|
|
| void ExtensionAppResult::ExecuteLaunchCommand(int event_flags) {
|
| @@ -190,7 +152,8 @@ void ExtensionAppResult::OnExtensionLoaded(
|
| const extensions::Extension* extension) {
|
| // Old |icon_| might be invalidated for forever in case extension gets
|
| // updated. In this case we need re-create icon again.
|
| - CreateOrUpdateIcon();
|
| + if (!icon_->IsValid())
|
| + icon_->Reload();
|
| }
|
|
|
| void ExtensionAppResult::OnShutdown(extensions::ExtensionRegistry* registry) {
|
|
|