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

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

Issue 2883193002: WIP
Patch Set: git cl try 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()) {
+ 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(
+ ui::BaseWindow* active_window) {
+ UpdateIcon(static_cast<ArcAppWindow*>(active_window));
+}

Powered by Google App Engine
This is Rietveld 408576698