Index: chrome/browser/ui/app_list/app_context_menu_unittest.cc |
diff --git a/chrome/browser/ui/app_list/app_context_menu_unittest.cc b/chrome/browser/ui/app_list/app_context_menu_unittest.cc |
index 2569317b01795b81e4a113097a46c9df57dc0046..10495a1b5aa04fd4c9b627da8190480993bece47 100644 |
--- a/chrome/browser/ui/app_list/app_context_menu_unittest.cc |
+++ b/chrome/browser/ui/app_list/app_context_menu_unittest.cc |
@@ -24,6 +24,7 @@ |
#if defined(OS_CHROMEOS) |
#include "chrome/browser/ui/app_list/arc/arc_app_item.h" |
+#include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" |
#include "chrome/browser/ui/app_list/arc/arc_app_test.h" |
#include "components/arc/test/fake_app_instance.h" |
#include "components/arc/test/fake_arc_bridge_service.h" |
@@ -149,18 +150,23 @@ class AppContextMenuTest : public AppListTestBase { |
bool is_checked; |
}; |
+ void ValidateItemState(const ui::MenuModel* menu_model, |
+ int index, |
+ const MenuState& state) { |
+ EXPECT_EQ(state.command_id, menu_model->GetCommandIdAt(index)); |
+ if (state.command_id == -1) |
+ return; // Don't check separator. |
+ EXPECT_EQ(state.is_enabled, menu_model->IsEnabledAt(index)); |
+ EXPECT_EQ(state.is_checked, menu_model->IsItemCheckedAt(index)); |
+ } |
+ |
void ValidateMenuState(const ui::MenuModel* menu_model, |
const std::vector<MenuState>& states) { |
ASSERT_NE(nullptr, menu_model); |
size_t state_index = 0; |
for (int i = 0; i < menu_model->GetItemCount(); ++i) { |
ASSERT_LT(state_index, states.size()); |
- const MenuState& state = states[state_index++]; |
- EXPECT_EQ(state.command_id, menu_model->GetCommandIdAt(i)); |
- if (state.command_id == -1) |
- continue; // Don't check separator. |
- EXPECT_EQ(state.is_enabled, menu_model->IsEnabledAt(i)); |
- EXPECT_EQ(state.is_checked, menu_model->IsItemCheckedAt(i)); |
+ ValidateItemState(menu_model, i, states[state_index++]); |
} |
EXPECT_EQ(state_index, states.size()); |
} |
@@ -348,7 +354,7 @@ TEST_F(AppContextMenuTest, ArcMenu) { |
ArcAppTest arc_test; |
arc_test.SetUp(profile()); |
- const arc::mojom::AppInfo& app_info = arc_test.fake_apps()[0]; |
+ const arc::mojom::AppInfo& app_info = arc_test.fake_apps()[1]; |
khmel
2016/10/03 23:48:03
0 app is sticky and does not have uninstall item.
|
const std::string app_id = ArcAppTest::GetAppId(app_info); |
controller()->SetAppPinnable(app_id, AppListControllerDelegate::PIN_EDITABLE); |
@@ -360,17 +366,14 @@ TEST_F(AppContextMenuTest, ArcMenu) { |
ui::MenuModel* menu = item.GetContextMenuModel(); |
ASSERT_NE(nullptr, menu); |
- ASSERT_EQ(4, menu->GetItemCount()); |
- EXPECT_EQ(app_list::AppContextMenu::LAUNCH_NEW, menu->GetCommandIdAt(0)); |
- EXPECT_TRUE(menu->IsEnabledAt(0)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(0)); |
- EXPECT_EQ(-1, menu->GetCommandIdAt(1)); // separator |
- EXPECT_EQ(app_list::AppContextMenu::TOGGLE_PIN, menu->GetCommandIdAt(2)); |
- EXPECT_TRUE(menu->IsEnabledAt(2)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(2)); |
- EXPECT_EQ(app_list::AppContextMenu::SHOW_APP_INFO, menu->GetCommandIdAt(3)); |
- EXPECT_TRUE(menu->IsEnabledAt(3)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(3)); |
+ ASSERT_EQ(6, menu->GetItemCount()); |
+ ValidateItemState(menu, 0, MenuState(app_list::AppContextMenu::LAUNCH_NEW)); |
+ ValidateItemState(menu, 1, MenuState()); // separator |
+ ValidateItemState(menu, 2, MenuState(app_list::AppContextMenu::TOGGLE_PIN)); |
+ ValidateItemState(menu, 3, MenuState()); // separator |
+ ValidateItemState(menu, 4, MenuState(app_list::AppContextMenu::UNINSTALL)); |
+ ValidateItemState( |
+ menu, 5, MenuState(app_list::AppContextMenu::SHOW_APP_INFO)); |
// Test activate request. |
EXPECT_EQ(0u, arc_test.app_instance()->launch_requests().size()); |
@@ -386,31 +389,82 @@ TEST_F(AppContextMenuTest, ArcMenu) { |
// It is not expected that menu model is unchanged on GetContextMenuModel. Arc |
// app menu requires model to be recalculated. |
menu = item.GetContextMenuModel(); |
- ASSERT_EQ(2, menu->GetItemCount()); |
- EXPECT_EQ(app_list::AppContextMenu::TOGGLE_PIN, menu->GetCommandIdAt(0)); |
- EXPECT_TRUE(menu->IsEnabledAt(0)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(0)); |
- EXPECT_EQ(app_list::AppContextMenu::SHOW_APP_INFO, menu->GetCommandIdAt(1)); |
- EXPECT_TRUE(menu->IsEnabledAt(1)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(1)); |
+ ASSERT_EQ(4, menu->GetItemCount()); |
+ ValidateItemState(menu, 0, MenuState(app_list::AppContextMenu::TOGGLE_PIN)); |
+ ValidateItemState(menu, 1, MenuState()); // separator |
+ ValidateItemState(menu, 2, MenuState(app_list::AppContextMenu::UNINSTALL)); |
+ ValidateItemState( |
+ menu, 3, MenuState(app_list::AppContextMenu::SHOW_APP_INFO)); |
+ // This makes all apps non-ready. |
+ controller()->SetAppOpen(app_id, false); |
+ arc::InstanceHolder<arc::mojom::AppInstance>::Observer* instance_observer = |
+ arc_test.arc_app_list_prefs(); |
+ instance_observer->OnInstanceClosed(); |
+ |
+ menu = item.GetContextMenuModel(); |
+ ASSERT_EQ(6, menu->GetItemCount()); |
+ ValidateItemState(menu, 0, MenuState(app_list::AppContextMenu::LAUNCH_NEW)); |
+ ValidateItemState(menu, 1, MenuState()); // separator |
+ ValidateItemState(menu, 2, MenuState(app_list::AppContextMenu::TOGGLE_PIN)); |
+ ValidateItemState(menu, 3, MenuState()); // separator |
+ ValidateItemState( |
+ menu, 4, MenuState(app_list::AppContextMenu::UNINSTALL, false, false)); |
+ ValidateItemState( |
+ menu, 5, |
+ MenuState(app_list::AppContextMenu::SHOW_APP_INFO, false, false)); |
+ |
+ // Uninstall all apps. |
arc_test.app_instance()->RefreshAppList(); |
arc_test.app_instance()->SendRefreshAppList( |
std::vector<arc::mojom::AppInfo>()); |
controller()->SetAppOpen(app_id, false); |
+ // No app available case. |
menu = item.GetContextMenuModel(); |
- ASSERT_EQ(4, menu->GetItemCount()); |
- EXPECT_EQ(app_list::AppContextMenu::LAUNCH_NEW, menu->GetCommandIdAt(0)); |
- EXPECT_TRUE(menu->IsEnabledAt(0)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(0)); |
- EXPECT_EQ(-1, menu->GetCommandIdAt(1)); // separator |
- EXPECT_EQ(app_list::AppContextMenu::TOGGLE_PIN, menu->GetCommandIdAt(2)); |
- EXPECT_TRUE(menu->IsEnabledAt(2)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(2)); |
- EXPECT_EQ(app_list::AppContextMenu::SHOW_APP_INFO, menu->GetCommandIdAt(3)); |
- EXPECT_TRUE(menu->IsEnabledAt(3)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(3)); |
+ EXPECT_EQ(0, menu->GetItemCount()); |
+} |
+ |
+ |
+TEST_F(AppContextMenuTest, ArcMenuShortcut) { |
+ ArcAppTest arc_test; |
+ arc_test.SetUp(profile()); |
+ |
+ const arc::mojom::ShortcutInfo& shortcut_info = arc_test.fake_shortcuts()[0]; |
+ const std::string app_id = ArcAppTest::GetAppId(shortcut_info); |
+ controller()->SetAppPinnable(app_id, AppListControllerDelegate::PIN_EDITABLE); |
+ |
+ arc_test.app_instance()->SendInstallShortcuts(arc_test.fake_shortcuts()); |
+ |
+ ArcAppItem item(profile(), nullptr, app_id, std::string()); |
+ |
+ ui::MenuModel* menu = item.GetContextMenuModel(); |
+ ASSERT_NE(nullptr, menu); |
+ |
+ ASSERT_EQ(6, menu->GetItemCount()); |
+ ValidateItemState(menu, 0, MenuState(app_list::AppContextMenu::LAUNCH_NEW)); |
+ ValidateItemState(menu, 1, MenuState()); // separator |
+ ValidateItemState(menu, 2, MenuState(app_list::AppContextMenu::TOGGLE_PIN)); |
+ ValidateItemState(menu, 3, MenuState()); // separator |
+ ValidateItemState(menu, 4, MenuState(app_list::AppContextMenu::UNINSTALL)); |
+ ValidateItemState( |
+ menu, 5, MenuState(app_list::AppContextMenu::SHOW_APP_INFO)); |
+ |
+ // This makes all apps non-ready. Shortcut is still uninstall-able. |
+ arc::InstanceHolder<arc::mojom::AppInstance>::Observer* instance_observer = |
+ arc_test.arc_app_list_prefs(); |
+ instance_observer->OnInstanceClosed(); |
+ |
+ menu = item.GetContextMenuModel(); |
+ ASSERT_EQ(6, menu->GetItemCount()); |
+ ValidateItemState(menu, 0, MenuState(app_list::AppContextMenu::LAUNCH_NEW)); |
+ ValidateItemState(menu, 1, MenuState()); // separator |
+ ValidateItemState(menu, 2, MenuState(app_list::AppContextMenu::TOGGLE_PIN)); |
+ ValidateItemState(menu, 3, MenuState()); // separator |
+ ValidateItemState(menu, 4, MenuState(app_list::AppContextMenu::UNINSTALL)); |
+ ValidateItemState( |
+ menu, 5, |
+ MenuState(app_list::AppContextMenu::SHOW_APP_INFO, false, false)); |
} |
TEST_F(AppContextMenuTest, ArcMenuStickyItem) { |
@@ -430,46 +484,14 @@ TEST_F(AppContextMenuTest, ArcMenuStickyItem) { |
ui::MenuModel* menu = item.GetContextMenuModel(); |
ASSERT_NE(nullptr, menu); |
- ASSERT_EQ(4, menu->GetItemCount()); |
- EXPECT_EQ(app_list::AppContextMenu::LAUNCH_NEW, menu->GetCommandIdAt(0)); |
- EXPECT_TRUE(menu->IsEnabledAt(0)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(0)); |
- EXPECT_EQ(-1, menu->GetCommandIdAt(1)); // separator |
- EXPECT_EQ(app_list::AppContextMenu::TOGGLE_PIN, menu->GetCommandIdAt(2)); |
- EXPECT_TRUE(menu->IsEnabledAt(2)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(2)); |
- EXPECT_EQ(app_list::AppContextMenu::SHOW_APP_INFO, menu->GetCommandIdAt(3)); |
- EXPECT_TRUE(menu->IsEnabledAt(3)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(3)); |
- |
- // No "uninstall" entry. |
- } |
- |
- { |
- // Verify normal app menu |
- const arc::mojom::AppInfo& app_info = arc_test.fake_apps()[1]; |
- const std::string app_id = ArcAppTest::GetAppId(app_info); |
- controller()->SetAppPinnable(app_id, |
- AppListControllerDelegate::PIN_EDITABLE); |
- ArcAppItem item(profile(), nullptr, app_id, std::string()); |
- ui::MenuModel* menu = item.GetContextMenuModel(); |
- ASSERT_NE(nullptr, menu); |
- |
- ASSERT_EQ(6, menu->GetItemCount()); |
- EXPECT_EQ(app_list::AppContextMenu::LAUNCH_NEW, menu->GetCommandIdAt(0)); |
- EXPECT_TRUE(menu->IsEnabledAt(0)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(0)); |
- EXPECT_EQ(-1, menu->GetCommandIdAt(1)); // separator |
- EXPECT_EQ(app_list::AppContextMenu::TOGGLE_PIN, menu->GetCommandIdAt(2)); |
- EXPECT_TRUE(menu->IsEnabledAt(2)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(2)); |
- EXPECT_EQ(-1, menu->GetCommandIdAt(3)); // separator |
- EXPECT_EQ(app_list::AppContextMenu::UNINSTALL, menu->GetCommandIdAt(4)); |
- EXPECT_TRUE(menu->IsEnabledAt(4)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(4)); |
- EXPECT_EQ(app_list::AppContextMenu::SHOW_APP_INFO, menu->GetCommandIdAt(5)); |
- EXPECT_TRUE(menu->IsEnabledAt(5)); |
- EXPECT_FALSE(menu->IsItemCheckedAt(5)); |
+ ASSERT_EQ(5, menu->GetItemCount()); |
+ ValidateItemState(menu, 0, MenuState(app_list::AppContextMenu::LAUNCH_NEW)); |
+ ValidateItemState(menu, 1, MenuState()); // separator |
+ ValidateItemState(menu, 2, MenuState(app_list::AppContextMenu::TOGGLE_PIN)); |
+ ValidateItemState(menu, 3, MenuState()); // separator |
+ ValidateItemState( |
+ menu, 4, MenuState(app_list::AppContextMenu::SHOW_APP_INFO)); |
} |
} |
+ |
#endif |