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

Unified Diff: chrome/browser/ui/ash/launcher/arc_app_window_launcher_item_controller.cc

Issue 2894443002: arc: Set custom icon in shelf for ARC apps. (Closed)
Patch Set: cleanup Created 3 years, 7 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/ui/ash/launcher/arc_app_window_launcher_item_controller.cc
diff --git a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_item_controller.cc b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_item_controller.cc
index 6f6bfb7a4f07a6c27efdccf5922a245de6ea3bc1..9e698323a17e5f3b286a345fac9201b9562f8200 100644
--- a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_item_controller.cc
+++ b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_item_controller.cc
@@ -9,8 +9,10 @@
#include "base/memory/ptr_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/app_icon_loader.h"
#include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
#include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
+#include "chrome/browser/ui/ash/launcher/arc_app_window.h"
#include "chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h"
#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
#include "chrome/browser/ui/ash/launcher/launcher_controller_helper.h"
@@ -18,8 +20,10 @@
#include "ui/base/base_window.h"
ArcAppWindowLauncherItemController::ArcAppWindowLauncherItemController(
- const std::string& arc_app_id)
- : AppWindowLauncherItemController(ash::ShelfID(arc_app_id)) {}
+ const std::string& arc_app_id,
+ ChromeLauncherController* owner)
+ : AppWindowLauncherItemController(ash::ShelfID(arc_app_id)),
+ owner_(owner) {}
ArcAppWindowLauncherItemController::~ArcAppWindowLauncherItemController() {}
@@ -63,8 +67,8 @@ void ArcAppWindowLauncherItemController::ExecuteCommand(uint32_t command_id,
ash::MenuItemList ArcAppWindowLauncherItemController::GetAppMenuItems(
int event_flags) {
ash::MenuItemList items;
- base::string16 app_title = LauncherControllerHelper::GetAppTitle(
- ChromeLauncherController::instance()->profile(), app_id());
+ base::string16 app_title =
+ LauncherControllerHelper::GetAppTitle(owner_->profile(), app_id());
for (auto it = windows().begin(); it != windows().end(); ++it) {
// TODO(khmel): resolve correct icon here.
size_t i = std::distance(windows().begin(), it);
@@ -75,5 +79,34 @@ ash::MenuItemList ArcAppWindowLauncherItemController::GetAppMenuItems(
: app_title;
items.push_back(std::move(item));
}
+
return items;
}
+
+void ArcAppWindowLauncherItemController::OnWindowChanged(
+ ArcAppWindow* arc_app_window) {
+ DCHECK(arc_app_window && arc_app_window->controller() == this);
+ if (GetLastActiveWindow() == arc_app_window)
+ UpdateIcon(arc_app_window);
+}
+
+void ArcAppWindowLauncherItemController::UpdateIcon(
+ ArcAppWindow* arc_app_window) {
+ if (!arc_app_window || arc_app_window->image_skia().isNull()) {
+ if (image_set_by_controller()) {
msw 2017/05/18 18:27:00 Can we avoid using image_set_by_controller and jus
khmel 2017/05/18 20:27:51 I did similar as extension app window controller d
msw 2017/05/18 22:03:39 Yes, both should be simplified, rather than copyin
khmel 2017/05/18 22:40:02 Add crbug and TODO for refactoring both.
+ set_image_set_by_controller(false);
+ owner_->SetLauncherItemImage(shelf_id(), gfx::ImageSkia());
+ AppIconLoader* icon_loader = owner_->GetAppIconLoaderForApp(app_id());
+ if (icon_loader)
+ icon_loader->UpdateImage(app_id());
+ }
+ } else {
+ owner_->SetLauncherItemImage(shelf_id(), arc_app_window->image_skia());
+ set_image_set_by_controller(true);
+ }
+}
+
+void ArcAppWindowLauncherItemController::OnActiveWindowChanged(
xiyuan 2017/05/18 16:22:49 As mentioned elsewhere, this can be merged with On
khmel 2017/05/18 17:29:35 Done.
+ ui::BaseWindow* active_window) {
+ UpdateIcon(static_cast<ArcAppWindow*>(active_window));
+}

Powered by Google App Engine
This is Rietveld 408576698