OLD | NEW |
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 "ui/app_list/app_list_model.h" | 5 #include "ui/app_list/app_list_model.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 folder, folder->item_list()->item_at(num_observed_apps))); | 285 folder, folder->item_list()->item_at(num_observed_apps))); |
286 } | 286 } |
287 | 287 |
288 TEST_F(AppListModelFolderTest, MergeItems) { | 288 TEST_F(AppListModelFolderTest, MergeItems) { |
289 model_.PopulateApps(3); | 289 model_.PopulateApps(3); |
290 ASSERT_EQ(3u, model_.top_level_item_list()->item_count()); | 290 ASSERT_EQ(3u, model_.top_level_item_list()->item_count()); |
291 AppListItem* item0 = model_.top_level_item_list()->item_at(0); | 291 AppListItem* item0 = model_.top_level_item_list()->item_at(0); |
292 AppListItem* item1 = model_.top_level_item_list()->item_at(1); | 292 AppListItem* item1 = model_.top_level_item_list()->item_at(1); |
293 AppListItem* item2 = model_.top_level_item_list()->item_at(2); | 293 AppListItem* item2 = model_.top_level_item_list()->item_at(2); |
294 | 294 |
| 295 // Merge an item onto a non-existent target. |
| 296 EXPECT_EQ(std::string(), model_.MergeItems("nonexistent", item0->id())); |
| 297 ASSERT_EQ(3u, model_.top_level_item_list()->item_count()); |
| 298 |
| 299 // Merge a non-existent item onto a target. |
| 300 EXPECT_EQ(std::string(), model_.MergeItems(item0->id(), "nonexistent")); |
| 301 ASSERT_EQ(3u, model_.top_level_item_list()->item_count()); |
| 302 |
| 303 // Merge an item onto itself (should have no effect). This should not be |
| 304 // possible, but there have been bugs in the past that made it possible (see |
| 305 // http://crbug.com/415530), so it should be handled correctly. |
| 306 EXPECT_EQ(std::string(), model_.MergeItems(item0->id(), item0->id())); |
| 307 ASSERT_EQ(3u, model_.top_level_item_list()->item_count()); |
| 308 |
295 // Merge two items. | 309 // Merge two items. |
296 std::string folder1_id = model_.MergeItems(item0->id(), item1->id()); | 310 std::string folder1_id = model_.MergeItems(item0->id(), item1->id()); |
297 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // Folder + 1 item | 311 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // Folder + 1 item |
298 AppListFolderItem* folder1_item = model_.FindFolderItem(folder1_id); | 312 AppListFolderItem* folder1_item = model_.FindFolderItem(folder1_id); |
299 ASSERT_TRUE(folder1_item); | 313 ASSERT_TRUE(folder1_item); |
300 EXPECT_EQ("Item 0,Item 1", GetItemListContents(folder1_item->item_list())); | 314 EXPECT_EQ("Item 0,Item 1", GetItemListContents(folder1_item->item_list())); |
301 | 315 |
| 316 // Merge an item onto an item that is already in a folder (should have no |
| 317 // effect). This should not be possible, but it should be handled correctly |
| 318 // if it does happen. |
| 319 EXPECT_EQ(std::string(), model_.MergeItems(item1->id(), item2->id())); |
| 320 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // Folder + 1 item |
| 321 EXPECT_EQ("Item 0,Item 1", GetItemListContents(folder1_item->item_list())); |
| 322 |
302 // Merge an item from the new folder into the third item. | 323 // Merge an item from the new folder into the third item. |
303 std::string folder2_id = model_.MergeItems(item2->id(), item1->id()); | 324 std::string folder2_id = model_.MergeItems(item2->id(), item1->id()); |
304 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // 2 folders | 325 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // 2 folders |
305 AppListFolderItem* folder2_item = model_.FindFolderItem(folder2_id); | 326 AppListFolderItem* folder2_item = model_.FindFolderItem(folder2_id); |
306 EXPECT_EQ("Item 0", GetItemListContents(folder1_item->item_list())); | 327 EXPECT_EQ("Item 0", GetItemListContents(folder1_item->item_list())); |
307 EXPECT_EQ("Item 2,Item 1", GetItemListContents(folder2_item->item_list())); | 328 EXPECT_EQ("Item 2,Item 1", GetItemListContents(folder2_item->item_list())); |
308 | 329 |
309 // Merge the remaining item to the new folder, ensure it is added to the end. | 330 // Merge the remaining item to the new folder, ensure it is added to the end. |
310 std::string folder_id = model_.MergeItems(folder2_id, item0->id()); | 331 std::string folder_id = model_.MergeItems(folder2_id, item0->id()); |
311 EXPECT_EQ(folder2_id, folder_id); | 332 EXPECT_EQ(folder2_id, folder_id); |
312 EXPECT_EQ("Item 2,Item 1,Item 0", | 333 EXPECT_EQ("Item 2,Item 1,Item 0", |
313 GetItemListContents(folder2_item->item_list())); | 334 GetItemListContents(folder2_item->item_list())); |
314 | 335 |
315 // The empty folder should be deleted. | 336 // The empty folder should be deleted. |
316 folder1_item = model_.FindFolderItem(folder1_id); | 337 folder1_item = model_.FindFolderItem(folder1_id); |
317 EXPECT_FALSE(folder1_item); | 338 EXPECT_FALSE(folder1_item); |
| 339 EXPECT_EQ(1u, model_.top_level_item_list()->item_count()); // 1 folder |
318 } | 340 } |
319 | 341 |
320 TEST_F(AppListModelFolderTest, AddItemToFolder) { | 342 TEST_F(AppListModelFolderTest, AddItemToFolder) { |
321 AppListFolderItem* folder = | 343 AppListFolderItem* folder = |
322 new AppListFolderItem("folder1", AppListFolderItem::FOLDER_TYPE_NORMAL); | 344 new AppListFolderItem("folder1", AppListFolderItem::FOLDER_TYPE_NORMAL); |
323 model_.AddItem(folder); | 345 model_.AddItem(folder); |
324 AppListItem* item0 = new AppListItem("Item 0"); | 346 AppListItem* item0 = new AppListItem("Item 0"); |
325 model_.AddItemToFolder(item0, folder->id()); | 347 model_.AddItemToFolder(item0, folder->id()); |
326 ASSERT_EQ(1u, model_.top_level_item_list()->item_count()); | 348 ASSERT_EQ(1u, model_.top_level_item_list()->item_count()); |
327 AppListFolderItem* folder_item = model_.FindFolderItem(folder->id()); | 349 AppListFolderItem* folder_item = model_.FindFolderItem(folder->id()); |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 model_.SetFoldersEnabled(false); | 515 model_.SetFoldersEnabled(false); |
494 ASSERT_FALSE(model_.FindFolderItem(folder_id)); | 516 ASSERT_FALSE(model_.FindFolderItem(folder_id)); |
495 ASSERT_TRUE(model_.FindFolderItem(oem_folder_id)); | 517 ASSERT_TRUE(model_.FindFolderItem(oem_folder_id)); |
496 EXPECT_EQ("Item 0,Item 1,oem_folder", GetModelContents()); | 518 EXPECT_EQ("Item 0,Item 1,oem_folder", GetModelContents()); |
497 | 519 |
498 // Ensure folder creation fails. | 520 // Ensure folder creation fails. |
499 EXPECT_EQ(std::string(), model_.MergeItems(item0->id(), item1->id())); | 521 EXPECT_EQ(std::string(), model_.MergeItems(item0->id(), item1->id())); |
500 } | 522 } |
501 | 523 |
502 } // namespace app_list | 524 } // namespace app_list |
OLD | NEW |