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

Unified Diff: chrome/browser/ui/app_list/arc/arc_app_context_menu.cc

Issue 2393453002: arc: Fix Arc app item context menu. (Closed)
Patch Set: Created 4 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/ui/app_list/arc/arc_app_context_menu.cc
diff --git a/chrome/browser/ui/app_list/arc/arc_app_context_menu.cc b/chrome/browser/ui/app_list/arc/arc_app_context_menu.cc
index 336f4c73b65f0e7675f327c5c870f6872916b48f..ea1dd53efc8d65dc6afff2122ec3f4d8dcfb8507 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_context_menu.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_context_menu.cc
@@ -24,6 +24,15 @@ ArcAppContextMenu::~ArcAppContextMenu() {
}
void ArcAppContextMenu::BuildMenu(ui::SimpleMenuModel* menu_model) {
+ const ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(profile());
+ DCHECK(arc_prefs);
+ std::unique_ptr<ArcAppListPrefs::AppInfo> app_info =
+ arc_prefs->GetApp(app_id());
+ if (!app_info) {
+ LOG(ERROR) << "App " << app_id() << " is not available.";
+ return;
+ }
+
if (!controller()->IsAppOpen(app_id())) {
menu_model->AddItemWithStringId(LAUNCH_NEW,
IDS_APP_CONTEXT_MENU_ACTIVATE_ARC);
@@ -31,21 +40,38 @@ void ArcAppContextMenu::BuildMenu(ui::SimpleMenuModel* menu_model) {
}
// Create default items.
app_list::AppContextMenu::BuildMenu(menu_model);
- if (CanBeUninstalled()) {
- menu_model->AddSeparator(ui::NORMAL_SEPARATOR);
- const ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(profile());
- DCHECK(arc_prefs);
- if (arc_prefs->IsShortcut(app_id())) {
- menu_model->AddItemWithStringId(UNINSTALL, IDS_APP_LIST_REMOVE_SHORTCUT);
- } else {
- menu_model->AddItemWithStringId(UNINSTALL, IDS_APP_LIST_UNINSTALL_ITEM);
- }
- }
+
+ menu_model->AddSeparator(ui::NORMAL_SEPARATOR);
+ if (arc_prefs->IsShortcut(app_id()))
+ menu_model->AddItemWithStringId(UNINSTALL, IDS_APP_LIST_REMOVE_SHORTCUT);
+ else if (!app_info->sticky)
+ menu_model->AddItemWithStringId(UNINSTALL, IDS_APP_LIST_UNINSTALL_ITEM);
+
// App Info item.
menu_model->AddItemWithStringId(SHOW_APP_INFO,
IDS_APP_CONTEXT_MENU_SHOW_INFO);
}
+bool ArcAppContextMenu::IsCommandIdEnabled(int command_id) const {
+ const ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(profile());
+ DCHECK(arc_prefs);
+ std::unique_ptr<ArcAppListPrefs::AppInfo> app_info =
+ arc_prefs->GetApp(app_id());
+
+ switch (command_id) {
+ case UNINSTALL:
+ return app_info &&
+ !app_info->sticky &&
+ (app_info->ready || app_info->shortcut);
+ case SHOW_APP_INFO:
+ return app_info && app_info->ready;
+ default:
+ return app_list::AppContextMenu::IsCommandIdEnabled(command_id);
+ }
+
+ return false;
+}
+
void ArcAppContextMenu::ExecuteCommand(int command_id, int event_flags) {
switch (command_id) {
case LAUNCH_NEW:
@@ -96,11 +122,3 @@ void ArcAppContextMenu::ShowPackageInfo() {
if (arc::ShowPackageInfo(app_info->package_name))
controller()->DismissView();
}
-
-bool ArcAppContextMenu::CanBeUninstalled() const {
- const ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(profile());
- DCHECK(arc_prefs);
- std::unique_ptr<ArcAppListPrefs::AppInfo> app_info =
- arc_prefs->GetApp(app_id());
- return app_info && app_info->ready && !app_info->sticky;
-}

Powered by Google App Engine
This is Rietveld 408576698