 Chromium Code Reviews
 Chromium Code Reviews Issue 1756193008:
  Support uninstalling ARC app from Chrome launcher  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1756193008:
  Support uninstalling ARC app from Chrome launcher  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| 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 08fdea000bf872f3d495f98640cb37f4b7221df5..6f0c9a6311d1d4e979562164ac3f0e078d8458f8 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 | 
| @@ -7,6 +7,7 @@ | 
| #include "chrome/browser/profiles/profile.h" | 
| #include "chrome/browser/ui/app_list/app_context_menu_delegate.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/grit/generated_resources.h" | 
| ArcAppContextMenu::ArcAppContextMenu( | 
| @@ -26,6 +27,10 @@ void ArcAppContextMenu::BuildMenu(ui::SimpleMenuModel* menu_model) { | 
| menu_model->AddSeparator(ui::NORMAL_SEPARATOR); | 
| // Create default items. | 
| AppContextMenu::BuildMenu(menu_model); | 
| + if (CanBeUninstalled()) { | 
| + menu_model->AddSeparator(ui::NORMAL_SEPARATOR); | 
| + menu_model->AddItemWithStringId(UNINSTALL, IDS_APP_LIST_UNINSTALL_ITEM); | 
| + } | 
| } | 
| bool ArcAppContextMenu::IsCommandIdEnabled(int command_id) const { | 
| @@ -38,8 +43,27 @@ bool ArcAppContextMenu::IsCommandIdEnabled(int command_id) const { | 
| } | 
| void ArcAppContextMenu::ExecuteCommand(int command_id, int event_flags) { | 
| - if (command_id == LAUNCH_NEW) | 
| - delegate()->ExecuteLaunchCommand(event_flags); | 
| - else | 
| - AppContextMenu::ExecuteCommand(command_id, event_flags); | 
| + switch (command_id) { | 
| + case LAUNCH_NEW: | 
| + delegate()->ExecuteLaunchCommand(event_flags); | 
| + break; | 
| + case UNINSTALL: | 
| + UninstallApp(); | 
| + break; | 
| + default: | 
| + AppContextMenu::ExecuteCommand(command_id, event_flags); | 
| + } | 
| +} | 
| + | 
| +void ArcAppContextMenu::UninstallApp() { | 
| + ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(profile()); | 
| + scoped_ptr<ArcAppListPrefs::AppInfo> app_info = arc_prefs->GetApp(app_id()); | 
| + arc::UninstallApp(app_info->package_name, | 
| 
khmel
2016/03/08 00:09:54
nit: DCHECK(app_info.get()).
 
victorhsieh0
2016/03/08 00:33:07
Done with error check.
 | 
| + base::Bind(&arc::OnUninstallAppResponse)); | 
| +} | 
| + | 
| +bool ArcAppContextMenu::CanBeUninstalled() const { | 
| + ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(profile()); | 
| + scoped_ptr<ArcAppListPrefs::AppInfo> app_info = arc_prefs->GetApp(app_id()); | 
| + return app_info && app_info->ready && !app_info->sticky; | 
| } |