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

Side by Side Diff: ash/shelf/shelf_navigator_unittest.cc

Issue 229453005: Shelf Cleanup AlternateShelfLayout P1 Attempt 3 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/shelf/shelf_model_unittest.cc ('k') | ash/shelf/shelf_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/shelf/shelf_navigator.h" 5 #include "ash/shelf/shelf_navigator.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/shelf/shelf.h" 8 #include "ash/shelf/shelf.h"
9 #include "ash/shelf/shelf_item_types.h" 9 #include "ash/shelf/shelf_item_types.h"
10 #include "ash/shelf/shelf_model.h" 10 #include "ash/shelf/shelf_model.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 } 62 }
63 63
64 const ShelfModel& model() { return *model_.get(); } 64 const ShelfModel& model() { return *model_.get(); }
65 65
66 private: 66 private:
67 scoped_ptr<ShelfModel> model_; 67 scoped_ptr<ShelfModel> model_;
68 68
69 DISALLOW_COPY_AND_ASSIGN(ShelfNavigatorTest); 69 DISALLOW_COPY_AND_ASSIGN(ShelfNavigatorTest);
70 }; 70 };
71 71
72 class ShelfNavigatorLegacyShelfLayoutTest : public ShelfNavigatorTest {
73 public:
74 ShelfNavigatorLegacyShelfLayoutTest() : ShelfNavigatorTest() {}
75
76 protected:
77 virtual void SetUp() OVERRIDE {
78 CommandLine::ForCurrentProcess()->AppendSwitch(
79 switches::kAshDisableAlternateShelfLayout);
80 ShelfNavigatorTest::SetUp();
81 }
82
83 private:
84 DISALLOW_COPY_AND_ASSIGN(ShelfNavigatorLegacyShelfLayoutTest);
85 };
86
87 } // namespace 72 } // namespace
88 73
89 TEST_F(ShelfNavigatorTest, BasicCycle) { 74 TEST_F(ShelfNavigatorTest, BasicCycle) {
90 // An app shortcut and three platform apps. 75 // An app shortcut and three platform apps.
91 ShelfItemType types[] = { 76 ShelfItemType types[] = {
92 TYPE_APP_SHORTCUT, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, 77 TYPE_APP_SHORTCUT, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP,
93 }; 78 };
94 // ShelfModel automatically adds BROWSER_SHORTCUT item at the 79 // ShelfModel automatically adds BROWSER_SHORTCUT item at the
95 // beginning, so '3' refers the first TYPE_PLATFORM_APP item. 80 // beginning, so '3' refers the first TYPE_PLATFORM_APP item.
96 SetupMockShelfModel(types, arraysize(types), 3); 81 SetupMockShelfModel(types, arraysize(types), 3);
97 82
98 EXPECT_EQ(4, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); 83 EXPECT_EQ(4, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
99 84
100 // Fourth one. It will skip the APP_SHORTCUT at the beginning of the list and 85 // Fourth one. It will skip the APP_SHORTCUT at the beginning of the list and
101 // the APP_LIST item which is automatically added at the end of items. 86 // the APP_LIST item which is automatically added at the end of items.
102 EXPECT_EQ(5, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD)); 87 EXPECT_EQ(5, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD));
103 } 88 }
104 89
105 TEST_F(ShelfNavigatorLegacyShelfLayoutTest, BasicCycle) {
106 // An app shortcut and three platform apps.
107 ShelfItemType types[] = {
108 TYPE_APP_SHORTCUT, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP,
109 };
110 // ShelfModel automatically adds BROWSER_SHORTCUT item at the
111 // beginning, so '2' refers the first TYPE_PLATFORM_APP item.
112 SetupMockShelfModel(types, arraysize(types), 2);
113
114 EXPECT_EQ(3, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
115
116 // Fourth one. It will skip the APP_SHORTCUT at the beginning of the list and
117 // the APP_LIST item which is automatically added at the end of items.
118 EXPECT_EQ(4, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD));
119 }
120
121 TEST_F(ShelfNavigatorTest, WrapToBeginning) { 90 TEST_F(ShelfNavigatorTest, WrapToBeginning) {
122 ShelfItemType types[] = { 91 ShelfItemType types[] = {
123 TYPE_APP_SHORTCUT, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, 92 TYPE_APP_SHORTCUT, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP,
124 }; 93 };
125 SetupMockShelfModel(types, arraysize(types), 5); 94 SetupMockShelfModel(types, arraysize(types), 5);
126 95
127 // Second one. It skips the APP_LIST item at the end of the list, 96 // Second one. It skips the APP_LIST item at the end of the list,
128 // wraps to the beginning, and skips BROWSER_SHORTCUT and APP_SHORTCUT 97 // wraps to the beginning, and skips BROWSER_SHORTCUT and APP_SHORTCUT
129 // at the beginning of the list. 98 // at the beginning of the list.
130 EXPECT_EQ(3, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); 99 EXPECT_EQ(3, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
131 } 100 }
132 101
133 TEST_F(ShelfNavigatorLegacyShelfLayoutTest, WrapToBeginning) {
134 ShelfItemType types[] = {
135 TYPE_APP_SHORTCUT, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, TYPE_PLATFORM_APP,
136 };
137 SetupMockShelfModel(types, arraysize(types), 4);
138
139 // Second one. It skips the APP_LIST item at the end of the list,
140 // wraps to the beginning, and skips BROWSER_SHORTCUT and APP_SHORTCUT
141 // at the beginning of the list.
142 EXPECT_EQ(2, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
143 }
144
145 TEST_F(ShelfNavigatorTest, Empty) { 102 TEST_F(ShelfNavigatorTest, Empty) {
146 SetupMockShelfModel(NULL, 0, -1); 103 SetupMockShelfModel(NULL, 0, -1);
147 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); 104 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
148 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD)); 105 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD));
149 } 106 }
150 107
151 TEST_F(ShelfNavigatorTest, SingleEntry) { 108 TEST_F(ShelfNavigatorTest, SingleEntry) {
152 ShelfItemType type = TYPE_PLATFORM_APP; 109 ShelfItemType type = TYPE_PLATFORM_APP;
153 SetupMockShelfModel(&type, 1, 2); 110 SetupMockShelfModel(&type, 1, 2);
154 111
155 // If there's only one item there and it is already active, there's no item 112 // If there's only one item there and it is already active, there's no item
156 // to be activated next. 113 // to be activated next.
157 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); 114 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
158 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD)); 115 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD));
159 } 116 }
160 117
161 TEST_F(ShelfNavigatorLegacyShelfLayoutTest, SingleEntry) {
162 ShelfItemType type = TYPE_PLATFORM_APP;
163 SetupMockShelfModel(&type, 1, 1);
164
165 // If there's only one item there and it is already active, there's no item
166 // to be activated next.
167 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
168 EXPECT_EQ(-1, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD));
169 }
170
171 TEST_F(ShelfNavigatorTest, NoActive) { 118 TEST_F(ShelfNavigatorTest, NoActive) {
172 ShelfItemType types[] = { 119 ShelfItemType types[] = {
173 TYPE_PLATFORM_APP, TYPE_PLATFORM_APP, 120 TYPE_PLATFORM_APP, TYPE_PLATFORM_APP,
174 }; 121 };
175 // Special case: no items are 'STATUS_ACTIVE'. 122 // Special case: no items are 'STATUS_ACTIVE'.
176 SetupMockShelfModel(types, arraysize(types), -1); 123 SetupMockShelfModel(types, arraysize(types), -1);
177 124
178 // If there are no active status, pick the first running item as a fallback. 125 // If there are no active status, pick the first running item as a fallback.
179 EXPECT_EQ(2, GetNextActivatedItemIndex(model(), CYCLE_FORWARD)); 126 EXPECT_EQ(2, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
180 EXPECT_EQ(2, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD)); 127 EXPECT_EQ(2, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD));
181 } 128 }
182 129
183 TEST_F(ShelfNavigatorLegacyShelfLayoutTest, NoActive) {
184 ShelfItemType types[] = {
185 TYPE_PLATFORM_APP, TYPE_PLATFORM_APP,
186 };
187 // Special case: no items are 'STATUS_ACTIVE'.
188 SetupMockShelfModel(types, arraysize(types), -1);
189
190 // If there are no active status, pick the first running item as a fallback.
191 EXPECT_EQ(1, GetNextActivatedItemIndex(model(), CYCLE_FORWARD));
192 EXPECT_EQ(1, GetNextActivatedItemIndex(model(), CYCLE_BACKWARD));
193 }
194
195 } // namespace ash 130 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_model_unittest.cc ('k') | ash/shelf/shelf_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698