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

Side by Side Diff: ash/launcher/launcher_model_unittest.cc

Issue 22793011: ash:Shelf - Enable Alternate Shelf and Side Shelf by default. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 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/display/display_controller_unittest.cc ('k') | ash/launcher/launcher_navigator_unittest.cc » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/launcher/launcher_model.h" 5 #include "ash/launcher/launcher_model.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 9
10 #include "ash/ash_switches.h"
10 #include "ash/launcher/launcher_model_observer.h" 11 #include "ash/launcher/launcher_model_observer.h"
12 #include "base/command_line.h"
11 #include "base/strings/stringprintf.h" 13 #include "base/strings/stringprintf.h"
12 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
13 15
14 namespace ash { 16 namespace ash {
15 17
16 namespace { 18 namespace {
17 19
18 // LauncherModelObserver implementation that tracks what message are invoked. 20 // LauncherModelObserver implementation that tracks what message are invoked.
19 class TestLauncherModelObserver : public LauncherModelObserver { 21 class TestLauncherModelObserver : public LauncherModelObserver {
20 public: 22 public:
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 TestLauncherModelObserver observer; 138 TestLauncherModelObserver observer;
137 LauncherModel model; 139 LauncherModel model;
138 140
139 // Model is initially populated with one item. 141 // Model is initially populated with one item.
140 EXPECT_EQ(1, model.item_count()); 142 EXPECT_EQ(1, model.item_count());
141 143
142 // Insert browser short cut at index 0. 144 // Insert browser short cut at index 0.
143 LauncherItem browser_shortcut; 145 LauncherItem browser_shortcut;
144 browser_shortcut.type = TYPE_BROWSER_SHORTCUT; 146 browser_shortcut.type = TYPE_BROWSER_SHORTCUT;
145 int browser_shortcut_index = model.Add(browser_shortcut); 147 int browser_shortcut_index = model.Add(browser_shortcut);
148 EXPECT_EQ(1, browser_shortcut_index);
149
150 // platform app items should be after browser shortcut.
151 LauncherItem item;
152 item.type = TYPE_PLATFORM_APP;
153 int platform_app_index1 = model.Add(item);
154 EXPECT_EQ(2, platform_app_index1);
155
156 // Add another platform app item, it should follow first.
157 int platform_app_index2 = model.Add(item);
158 EXPECT_EQ(3, platform_app_index2);
159
160 // APP_SHORTCUT priority is higher than PLATFORM_APP but same as
161 // BROWSER_SHORTCUT. So APP_SHORTCUT is located after BROWSER_SHORCUT.
162 item.type = TYPE_APP_SHORTCUT;
163 int app_shortcut_index1 = model.Add(item);
164 EXPECT_EQ(2, app_shortcut_index1);
165
166 item.type = TYPE_APP_SHORTCUT;
167 int app_shortcut_index2 = model.Add(item);
168 EXPECT_EQ(3, app_shortcut_index2);
169
170 // Check that AddAt() figures out the correct indexes for app shortcuts.
171 // APP_SHORTCUT and BROWSER_SHORTCUT has the same weight.
172 // So APP_SHORTCUT is located at index 0. And, BROWSER_SHORTCUT is located at
173 // index 1.
174 item.type = TYPE_APP_SHORTCUT;
175 int app_shortcut_index3 = model.AddAt(1, item);
176 EXPECT_EQ(1, app_shortcut_index3);
177
178 item.type = TYPE_APP_SHORTCUT;
179 int app_shortcut_index4 = model.AddAt(6, item);
180 EXPECT_EQ(5, app_shortcut_index4);
181
182 item.type = TYPE_APP_SHORTCUT;
183 int app_shortcut_index5 = model.AddAt(3, item);
184 EXPECT_EQ(3, app_shortcut_index5);
185
186 // Before there are any panels, no icons should be right aligned.
187 EXPECT_EQ(model.item_count(), model.FirstPanelIndex());
188
189 // Check that AddAt() figures out the correct indexes for platform apps and
190 // panels.
191 item.type = TYPE_PLATFORM_APP;
192 int platform_app_index3 = model.AddAt(3, item);
193 EXPECT_EQ(7, platform_app_index3);
194
195 item.type = TYPE_APP_PANEL;
196 int app_panel_index1 = model.AddAt(2, item);
197 EXPECT_EQ(10, app_panel_index1);
198
199 item.type = TYPE_PLATFORM_APP;
200 int platform_app_index4 = model.AddAt(11, item);
201 EXPECT_EQ(10, platform_app_index4);
202
203 item.type = TYPE_APP_PANEL;
204 int app_panel_index2 = model.AddAt(12, item);
205 EXPECT_EQ(12, app_panel_index2);
206
207 item.type = TYPE_PLATFORM_APP;
208 int platform_app_index5 = model.AddAt(7, item);
209 EXPECT_EQ(7, platform_app_index5);
210
211 item.type = TYPE_APP_PANEL;
212 int app_panel_index3 = model.AddAt(13, item);
213 EXPECT_EQ(13, app_panel_index3);
214
215 // Right aligned index should be the first app panel index.
216 EXPECT_EQ(12, model.FirstPanelIndex());
217
218 EXPECT_EQ(TYPE_BROWSER_SHORTCUT, model.items()[2].type);
219 EXPECT_EQ(TYPE_APP_LIST, model.items()[0].type);
220 }
221
222 // Assertions around where items are added.
223 TEST(LauncherModel, AddIndicesForLegacyShelfLayout) {
224 CommandLine::ForCurrentProcess()->AppendSwitch(
225 ash::switches::kAshDisableAlternateShelfLayout);
226 TestLauncherModelObserver observer;
227 LauncherModel model;
228
229 // Model is initially populated with one item.
230 EXPECT_EQ(1, model.item_count());
231
232 // Insert browser short cut at index 0.
233 LauncherItem browser_shortcut;
234 browser_shortcut.type = TYPE_BROWSER_SHORTCUT;
235 int browser_shortcut_index = model.Add(browser_shortcut);
146 EXPECT_EQ(0, browser_shortcut_index); 236 EXPECT_EQ(0, browser_shortcut_index);
147 237
148 // platform app items should be after browser shortcut. 238 // platform app items should be after browser shortcut.
149 LauncherItem item; 239 LauncherItem item;
150 item.type = TYPE_PLATFORM_APP; 240 item.type = TYPE_PLATFORM_APP;
151 int platform_app_index1 = model.Add(item); 241 int platform_app_index1 = model.Add(item);
152 EXPECT_EQ(1, platform_app_index1); 242 EXPECT_EQ(1, platform_app_index1);
153 243
154 // Add another platform app item, it should follow first. 244 // Add another platform app item, it should follow first.
155 int platform_app_index2 = model.Add(item); 245 int platform_app_index2 = model.Add(item);
156 EXPECT_EQ(2, platform_app_index2); 246 EXPECT_EQ(2, platform_app_index2);
157 247
158 // APP_SHORTCUT's priority is higher than PLATFORM_APP but same as 248 // APP_SHORTCUT priority is higher than PLATFORM_APP but same as
159 // BROWSER_SHORTCUT. So APP_SHORTCUT is located after BROWSER_SHORCUT. 249 // BROWSER_SHORTCUT. So APP_SHORTCUT is located after BROWSER_SHORCUT.
160 item.type = TYPE_APP_SHORTCUT; 250 item.type = TYPE_APP_SHORTCUT;
161 int app_shortcut_index1 = model.Add(item); 251 int app_shortcut_index1 = model.Add(item);
162 EXPECT_EQ(1, app_shortcut_index1); 252 EXPECT_EQ(1, app_shortcut_index1);
163 253
164 item.type = TYPE_APP_SHORTCUT; 254 item.type = TYPE_APP_SHORTCUT;
165 int app_shortcut_index2 = model.Add(item); 255 int app_shortcut_index2 = model.Add(item);
166 EXPECT_EQ(2, app_shortcut_index2); 256 EXPECT_EQ(2, app_shortcut_index2);
167 257
168 // Check that AddAt() figures out the correct indexes for app shortcuts. 258 // Check that AddAt() figures out the correct indexes for app shortcuts.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 TEST(LauncherModel, CorrectMoveItemsWhenStateChange) { 341 TEST(LauncherModel, CorrectMoveItemsWhenStateChange) {
252 LauncherModel model; 342 LauncherModel model;
253 343
254 // The app list should be the last item in the list. 344 // The app list should be the last item in the list.
255 EXPECT_EQ(1, model.item_count()); 345 EXPECT_EQ(1, model.item_count());
256 346
257 // The first item is the browser. 347 // The first item is the browser.
258 LauncherItem browser_shortcut; 348 LauncherItem browser_shortcut;
259 browser_shortcut.type = TYPE_BROWSER_SHORTCUT; 349 browser_shortcut.type = TYPE_BROWSER_SHORTCUT;
260 int browser_shortcut_index = model.Add(browser_shortcut); 350 int browser_shortcut_index = model.Add(browser_shortcut);
351 EXPECT_EQ(1, browser_shortcut_index);
352
353 // Add three shortcuts. They should all be moved between the two.
354 LauncherItem item;
355 item.type = TYPE_APP_SHORTCUT;
356 int app1_index = model.Add(item);
357 EXPECT_EQ(2, app1_index);
358 int app2_index = model.Add(item);
359 EXPECT_EQ(3, app2_index);
360 int app3_index = model.Add(item);
361 EXPECT_EQ(4, app3_index);
362
363 // Now change the type of the second item and make sure that it is moving
364 // behind the shortcuts.
365 item.type = TYPE_PLATFORM_APP;
366 model.Set(app2_index, item);
367
368 // The item should have moved in front of the app launcher.
369 EXPECT_EQ(TYPE_PLATFORM_APP, model.items()[4].type);
370 }
371
372 TEST(LauncherModel, CorrectMoveItemsWhenStateChangeForLegacyShelfLayout) {
373 CommandLine::ForCurrentProcess()->AppendSwitch(
374 ash::switches::kAshDisableAlternateShelfLayout);
375 LauncherModel model;
376
377 // The app list should be the last item in the list.
378 EXPECT_EQ(1, model.item_count());
379
380 // The first item is the browser.
381 LauncherItem browser_shortcut;
382 browser_shortcut.type = TYPE_BROWSER_SHORTCUT;
383 int browser_shortcut_index = model.Add(browser_shortcut);
261 EXPECT_EQ(0, browser_shortcut_index); 384 EXPECT_EQ(0, browser_shortcut_index);
262 385
263 // Add three shortcuts. They should all be moved between the two. 386 // Add three shortcuts. They should all be moved between the two.
264 LauncherItem item; 387 LauncherItem item;
265 item.type = TYPE_APP_SHORTCUT; 388 item.type = TYPE_APP_SHORTCUT;
266 int app1_index = model.Add(item); 389 int app1_index = model.Add(item);
267 EXPECT_EQ(1, app1_index); 390 EXPECT_EQ(1, app1_index);
268 int app2_index = model.Add(item); 391 int app2_index = model.Add(item);
269 EXPECT_EQ(2, app2_index); 392 EXPECT_EQ(2, app2_index);
270 int app3_index = model.Add(item); 393 int app3_index = model.Add(item);
271 EXPECT_EQ(3, app3_index); 394 EXPECT_EQ(3, app3_index);
272 395
273 // Now change the type of the second item and make sure that it is moving 396 // Now change the type of the second item and make sure that it is moving
274 // behind the shortcuts. 397 // behind the shortcuts.
275 item.type = TYPE_PLATFORM_APP; 398 item.type = TYPE_PLATFORM_APP;
276 model.Set(app2_index, item); 399 model.Set(app2_index, item);
277 400
278 // The item should have moved in front of the app launcher. 401 // The item should have moved in front of the app launcher.
279 EXPECT_EQ(TYPE_PLATFORM_APP, model.items()[3].type); 402 EXPECT_EQ(TYPE_PLATFORM_APP, model.items()[3].type);
280 } 403 }
281 404
282 } // namespace ash 405 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/display_controller_unittest.cc ('k') | ash/launcher/launcher_navigator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698