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

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

Issue 2791463002: mash: Remove ShelfDelegate; move functions to ShelfModel. (Closed)
Patch Set: Address comment. Created 3 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
« no previous file with comments | « ash/shelf/shelf_model.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_model.h" 5 #include "ash/shelf/shelf_model.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 9
10 #include "ash/shelf/shelf_model_observer.h" 10 #include "ash/shelf/shelf_model_observer.h"
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 } 248 }
249 249
250 // Assertions around id generation and usage. 250 // Assertions around id generation and usage.
251 TEST_F(ShelfModelTest, ShelfIDTests) { 251 TEST_F(ShelfModelTest, ShelfIDTests) {
252 // Get the next to use ID counter. 252 // Get the next to use ID counter.
253 ShelfID id = model_->next_id(); 253 ShelfID id = model_->next_id();
254 254
255 // Calling this function multiple times does not change the returned ID. 255 // Calling this function multiple times does not change the returned ID.
256 EXPECT_EQ(model_->next_id(), id); 256 EXPECT_EQ(model_->next_id(), id);
257 257
258 // Check that when we reserve a value it will be the previously retrieved ID, 258 // Adding another item to the list should produce a new ID.
259 // but it will not change the item count and retrieving the next ID should
260 // produce something new.
261 EXPECT_EQ(model_->reserve_external_id(), id);
262 EXPECT_EQ(1, model_->item_count());
263 ShelfID id2 = model_->next_id();
264 EXPECT_NE(id2, id);
265
266 // Adding another item to the list should also produce a new ID.
267 ShelfItem item; 259 ShelfItem item;
268 item.type = TYPE_APP; 260 item.type = TYPE_APP;
269 model_->Add(item); 261 model_->Add(item);
270 EXPECT_NE(model_->next_id(), id2); 262 EXPECT_NE(model_->next_id(), id);
271 } 263 }
272 264
273 // This verifies that converting an existing item into a lower weight category 265 // This verifies that converting an existing item into a lower weight category
274 // (e.g. shortcut to running but not pinned app) will move it to the proper 266 // (e.g. shortcut to running but not pinned app) will move it to the proper
275 // location. See crbug.com/248769. 267 // location. See crbug.com/248769.
276 TEST_F(ShelfModelTest, CorrectMoveItemsWhenStateChange) { 268 TEST_F(ShelfModelTest, CorrectMoveItemsWhenStateChange) {
277 // The first item is the app list and last item is the browser. 269 // The first item is the app list and last item is the browser.
278 ShelfItem browser_shortcut; 270 ShelfItem browser_shortcut;
279 browser_shortcut.type = TYPE_BROWSER_SHORTCUT; 271 browser_shortcut.type = TYPE_BROWSER_SHORTCUT;
280 int browser_shortcut_index = model_->Add(browser_shortcut); 272 int browser_shortcut_index = model_->Add(browser_shortcut);
(...skipping 12 matching lines...) Expand all
293 285
294 // Now change the type of the second item and make sure that it is moving 286 // Now change the type of the second item and make sure that it is moving
295 // behind the shortcuts. 287 // behind the shortcuts.
296 item.type = TYPE_APP; 288 item.type = TYPE_APP;
297 model_->Set(app2_index, item); 289 model_->Set(app2_index, item);
298 290
299 // The item should have moved in front of the app launcher. 291 // The item should have moved in front of the app launcher.
300 EXPECT_EQ(TYPE_APP, model_->items()[4].type); 292 EXPECT_EQ(TYPE_APP, model_->items()[4].type);
301 } 293 }
302 294
295 // Test conversion between ShelfID and application [launch] ids.
296 TEST_F(ShelfModelTest, IdentifierConversion) {
297 const std::string app_id1("app_id1");
298 const std::string launch_id("launch_id");
299 const ShelfID unknown_shelf_id = 123;
300
301 // Expect kInvalidShelfID and empty app ids for input not found in the model.
302 EXPECT_EQ(kInvalidShelfID, model_->GetShelfIDForAppID(std::string()));
303 EXPECT_EQ(kInvalidShelfID, model_->GetShelfIDForAppID(app_id1));
304 EXPECT_EQ(kInvalidShelfID,
305 model_->GetShelfIDForAppIDAndLaunchID(app_id1, std::string()));
306 EXPECT_EQ(kInvalidShelfID,
307 model_->GetShelfIDForAppIDAndLaunchID(app_id1, launch_id));
308 EXPECT_TRUE(model_->GetAppIDForShelfID(kInvalidShelfID).empty());
309 EXPECT_TRUE(model_->GetAppIDForShelfID(unknown_shelf_id).empty());
310
311 // Add an example app with an app id and a launch id.
312 ShelfItem item;
313 item.type = TYPE_PINNED_APP;
314 item.app_launch_id = AppLaunchId(app_id1, launch_id);
315 const ShelfID assigned_shelf_id1 = model_->next_id();
316 const int index = model_->Add(item);
317
318 // Ensure the item ids can be found and converted as expected.
319 EXPECT_NE(kInvalidShelfID, assigned_shelf_id1);
320 EXPECT_EQ(assigned_shelf_id1, model_->GetShelfIDForAppID(app_id1));
321 EXPECT_EQ(assigned_shelf_id1,
322 model_->GetShelfIDForAppIDAndLaunchID(app_id1, launch_id));
323 EXPECT_EQ(app_id1, model_->GetAppIDForShelfID(assigned_shelf_id1));
324
325 // Removing the example app should again yield invalid ids.
326 model_->RemoveItemAt(index);
327 EXPECT_EQ(kInvalidShelfID, model_->GetShelfIDForAppID(app_id1));
328 EXPECT_EQ(kInvalidShelfID,
329 model_->GetShelfIDForAppIDAndLaunchID(app_id1, launch_id));
330 EXPECT_TRUE(model_->GetAppIDForShelfID(assigned_shelf_id1).empty());
331
332 // Add an example app with a different app id and no launch id.
333 const std::string app_id2("app_id2");
334 item.app_launch_id = AppLaunchId(app_id2);
335 const ShelfID assigned_shelf_id2 = model_->next_id();
336 model_->Add(item);
337
338 // Ensure the item ids can be found and converted as expected.
339 EXPECT_NE(kInvalidShelfID, assigned_shelf_id2);
340 EXPECT_NE(assigned_shelf_id1, assigned_shelf_id2);
341 EXPECT_EQ(assigned_shelf_id2, model_->GetShelfIDForAppID(app_id2));
342 EXPECT_EQ(assigned_shelf_id2,
343 model_->GetShelfIDForAppIDAndLaunchID(app_id2, std::string()));
344 EXPECT_EQ(kInvalidShelfID,
345 model_->GetShelfIDForAppIDAndLaunchID(app_id2, launch_id));
346 EXPECT_EQ(app_id2, model_->GetAppIDForShelfID(assigned_shelf_id2));
347 }
348
349 // Test pinning and unpinning a closed app, and checking if it is pinned.
350 TEST_F(ShelfModelTest, ClosedAppPinning) {
351 const std::string app_id("app_id");
352
353 // Check the initial state.
354 EXPECT_FALSE(model_->IsAppPinned(app_id));
355 EXPECT_EQ(1, model_->item_count());
356
357 // Pinning a previously unknown app should add an item.
358 model_->PinAppWithID(app_id);
359 EXPECT_TRUE(model_->IsAppPinned(app_id));
360 EXPECT_EQ(2, model_->item_count());
361 EXPECT_EQ(TYPE_PINNED_APP, model_->items()[1].type);
362 EXPECT_EQ(app_id, model_->items()[1].app_launch_id.app_id());
363
364 // Pinning the same app id again should have no change.
365 model_->PinAppWithID(app_id);
366 EXPECT_TRUE(model_->IsAppPinned(app_id));
367 EXPECT_EQ(2, model_->item_count());
368 EXPECT_EQ(TYPE_PINNED_APP, model_->items()[1].type);
369 EXPECT_EQ(app_id, model_->items()[1].app_launch_id.app_id());
370
371 // Unpinning the app should remove the item.
372 model_->UnpinAppWithID(app_id);
373 EXPECT_FALSE(model_->IsAppPinned(app_id));
374 EXPECT_EQ(1, model_->item_count());
375
376 // Unpinning the same app id again should have no change.
377 model_->UnpinAppWithID(app_id);
378 EXPECT_FALSE(model_->IsAppPinned(app_id));
379 EXPECT_EQ(1, model_->item_count());
380 }
381
382 // Test pinning and unpinning a running app, and checking if it is pinned.
383 TEST_F(ShelfModelTest, RunningAppPinning) {
384 const std::string app_id("app_id");
385
386 // Check the initial state.
387 EXPECT_FALSE(model_->IsAppPinned(app_id));
388 EXPECT_EQ(1, model_->item_count());
389
390 // Add an example running app.
391 ShelfItem item;
392 item.type = TYPE_APP;
393 item.status = STATUS_RUNNING;
394 item.app_launch_id = AppLaunchId(app_id);
395 const ShelfID assigned_shelf_id = model_->next_id();
396 const int index = model_->Add(item);
397
398 // The item should be added but not pinned.
399 EXPECT_FALSE(model_->IsAppPinned(app_id));
400 EXPECT_EQ(2, model_->item_count());
401 EXPECT_EQ(TYPE_APP, model_->items()[index].type);
402 EXPECT_EQ(app_id, model_->items()[index].app_launch_id.app_id());
403 EXPECT_EQ(assigned_shelf_id, model_->items()[index].id);
404
405 // Pinning the item should just change its type.
406 model_->PinAppWithID(app_id);
407 EXPECT_TRUE(model_->IsAppPinned(app_id));
408 EXPECT_EQ(2, model_->item_count());
409 EXPECT_EQ(TYPE_PINNED_APP, model_->items()[index].type);
410 EXPECT_EQ(app_id, model_->items()[index].app_launch_id.app_id());
411 EXPECT_EQ(assigned_shelf_id, model_->items()[index].id);
412
413 // Pinning the same app id again should have no change.
414 model_->PinAppWithID(app_id);
415 EXPECT_TRUE(model_->IsAppPinned(app_id));
416 EXPECT_EQ(2, model_->item_count());
417 EXPECT_EQ(TYPE_PINNED_APP, model_->items()[index].type);
418 EXPECT_EQ(app_id, model_->items()[index].app_launch_id.app_id());
419 EXPECT_EQ(assigned_shelf_id, model_->items()[index].id);
420
421 // Unpinning the app should leave the item unpinnned but running.
422 model_->UnpinAppWithID(app_id);
423 EXPECT_FALSE(model_->IsAppPinned(app_id));
424 EXPECT_EQ(2, model_->item_count());
425 EXPECT_EQ(TYPE_APP, model_->items()[index].type);
426 EXPECT_EQ(app_id, model_->items()[index].app_launch_id.app_id());
427 EXPECT_EQ(assigned_shelf_id, model_->items()[index].id);
428
429 // Unpinning the same app id again should have no change.
430 model_->UnpinAppWithID(app_id);
431 EXPECT_FALSE(model_->IsAppPinned(app_id));
432 EXPECT_EQ(2, model_->item_count());
433 EXPECT_EQ(TYPE_APP, model_->items()[index].type);
434 EXPECT_EQ(app_id, model_->items()[index].app_launch_id.app_id());
435 EXPECT_EQ(assigned_shelf_id, model_->items()[index].id);
436 }
437
303 } // namespace ash 438 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_model.cc ('k') | ash/shelf/shelf_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698