Chromium Code Reviews| Index: ash/launcher/launcher_navigator_unittest.cc |
| diff --git a/ash/launcher/launcher_navigator_unittest.cc b/ash/launcher/launcher_navigator_unittest.cc |
| index 60133909a71c9b8b618856570fac24191418f0d6..2a3aae171b12c7f1c9261afe2b923ef3759ad6f3 100644 |
| --- a/ash/launcher/launcher_navigator_unittest.cc |
| +++ b/ash/launcher/launcher_navigator_unittest.cc |
| @@ -4,9 +4,11 @@ |
| #include "ash/launcher/launcher_navigator.h" |
| +#include "ash/ash_switches.h" |
| #include "ash/launcher/launcher.h" |
| #include "ash/launcher/launcher_model.h" |
| #include "ash/launcher/launcher_types.h" |
| +#include "base/command_line.h" |
| #include "base/compiler_specific.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -62,6 +64,21 @@ class LauncherNavigatorTest : public testing::Test { |
| DISALLOW_COPY_AND_ASSIGN(LauncherNavigatorTest); |
| }; |
| +class LauncherNavigatorLegacyShelfLayoutTest : public LauncherNavigatorTest { |
| + public: |
| + LauncherNavigatorLegacyShelfLayoutTest() : LauncherNavigatorTest() {} |
| + |
| + protected: |
| + virtual void SetUp() OVERRIDE { |
| + CommandLine::ForCurrentProcess()->AppendSwitch( |
| + ash::switches::kAshDisableAlternateShelfLayout); |
| + LauncherNavigatorTest::SetUp(); |
| + } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(LauncherNavigatorLegacyShelfLayoutTest); |
| +}; |
| + |
| } // namespace |
| TEST_F(LauncherNavigatorTest, BasicCycle) { |
| @@ -69,6 +86,22 @@ TEST_F(LauncherNavigatorTest, BasicCycle) { |
| LauncherItemType types[] = { |
| TYPE_APP_SHORTCUT, TYPE_TABBED, TYPE_TABBED, TYPE_TABBED, |
| }; |
| + // LauncherModel automatically adds BROWSER_SHORTCUT and APP_LIST item at the |
| + // beginning, so '3' refers the first TYPE_TABBED item. |
| + SetupMockLauncherModel(types, arraysize(types), 3); |
| + |
| + EXPECT_EQ(4, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); |
| + |
| + // Fifth one. It will skip the APP_SHORTCUT and APP_LIST at the beginning |
|
James Cook
2013/08/22 00:19:12
nit: one space after APP_LIST
Harry McCleave
2013/08/27 00:37:00
Done.
|
| + // of the list. |
| + EXPECT_EQ(5, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD)); |
| +} |
| + |
| +TEST_F(LauncherNavigatorLegacyShelfLayoutTest, BasicCycle) { |
| + // An app shortcut and three windows |
| + LauncherItemType types[] = { |
| + TYPE_APP_SHORTCUT, TYPE_TABBED, TYPE_TABBED, TYPE_TABBED, |
| + }; |
| // LauncherModel automatically adds BROWSER_SHORTCUT item at the |
| // beginning, so '2' refers the first TYPE_TABBED item. |
| SetupMockLauncherModel(types, arraysize(types), 2); |
| @@ -84,6 +117,17 @@ TEST_F(LauncherNavigatorTest, WrapToBeginning) { |
| LauncherItemType types[] = { |
| TYPE_APP_SHORTCUT, TYPE_TABBED, TYPE_TABBED, TYPE_TABBED, |
| }; |
| + SetupMockLauncherModel(types, arraysize(types), 5); |
| + |
| + // Second one. It wraps to the beginning, and skips APP_LIST and |
| + // BROWSER_SHORTCUT items at the beginning of the list. |
| + EXPECT_EQ(3, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); |
| +} |
| + |
| +TEST_F(LauncherNavigatorLegacyShelfLayoutTest, WrapToBeginning) { |
| + LauncherItemType types[] = { |
| + TYPE_APP_SHORTCUT, TYPE_TABBED, TYPE_TABBED, TYPE_TABBED, |
| + }; |
| SetupMockLauncherModel(types, arraysize(types), 4); |
| // Second one. It skips the APP_LIST item at the end of the list, |
| @@ -100,6 +144,16 @@ TEST_F(LauncherNavigatorTest, Empty) { |
| TEST_F(LauncherNavigatorTest, SingleEntry) { |
| LauncherItemType type = TYPE_TABBED; |
| + SetupMockLauncherModel(&type, 1, 2); |
| + |
| + // If there's only one item there and it is already active, there's no item |
| + // to be activated next. |
| + EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); |
| + EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD)); |
| +} |
| + |
| +TEST_F(LauncherNavigatorLegacyShelfLayoutTest, SingleEntry) { |
| + LauncherItemType type = TYPE_TABBED; |
| SetupMockLauncherModel(&type, 1, 1); |
| // If there's only one item there and it is already active, there's no item |
| @@ -116,6 +170,18 @@ TEST_F(LauncherNavigatorTest, NoActive) { |
| SetupMockLauncherModel(types, arraysize(types), -1); |
| // If there are no active status, pick the first running item as a fallback. |
| + EXPECT_EQ(2, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); |
| + EXPECT_EQ(2, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD)); |
| +} |
| + |
| +TEST_F(LauncherNavigatorLegacyShelfLayoutTest, NoActive) { |
| + LauncherItemType types[] = { |
| + TYPE_TABBED, TYPE_TABBED, |
| + }; |
| + // Special case: no items are 'STATUS_ACTIVE'. |
| + SetupMockLauncherModel(types, arraysize(types), -1); |
| + |
| + // If there are no active status, pick the first running item as a fallback. |
| EXPECT_EQ(1, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); |
| EXPECT_EQ(1, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD)); |
| } |