OLD | NEW |
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 "ui/app_list/views/apps_grid_view.h" | 5 #include "ui/app_list/views/apps_grid_view.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 apps_grid_view_->SetItemList(model_->top_level_item_list()); | 115 apps_grid_view_->SetItemList(model_->top_level_item_list()); |
116 | 116 |
117 test_api_.reset(new AppsGridViewTestApi(apps_grid_view_.get())); | 117 test_api_.reset(new AppsGridViewTestApi(apps_grid_view_.get())); |
118 } | 118 } |
119 virtual void TearDown() OVERRIDE { | 119 virtual void TearDown() OVERRIDE { |
120 apps_grid_view_.reset(); // Release apps grid view before models. | 120 apps_grid_view_.reset(); // Release apps grid view before models. |
121 views::ViewsTestBase::TearDown(); | 121 views::ViewsTestBase::TearDown(); |
122 } | 122 } |
123 | 123 |
124 protected: | 124 protected: |
| 125 void EnsureFoldersEnabled() { |
| 126 // Folders require AppList sync to be enabled. |
| 127 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 128 switches::kEnableSyncAppList); |
| 129 } |
| 130 |
125 AppListItemView* GetItemViewAt(int index) { | 131 AppListItemView* GetItemViewAt(int index) { |
126 return static_cast<AppListItemView*>( | 132 return static_cast<AppListItemView*>( |
127 test_api_->GetViewAtModelIndex(index)); | 133 test_api_->GetViewAtModelIndex(index)); |
128 } | 134 } |
129 | 135 |
130 AppListItemView* GetItemViewForPoint(const gfx::Point& point) { | 136 AppListItemView* GetItemViewForPoint(const gfx::Point& point) { |
131 for (size_t i = 0; i < model_->top_level_item_list()->item_count(); ++i) { | 137 for (size_t i = 0; i < model_->top_level_item_list()->item_count(); ++i) { |
132 AppListItemView* view = GetItemViewAt(i); | 138 AppListItemView* view = GetItemViewAt(i); |
133 if (view->bounds().Contains(point)) | 139 if (view->bounds().Contains(point)) |
134 return view; | 140 return view; |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 | 268 |
263 EXPECT_FALSE(apps_grid_view_->IsSelectedView(last_view)); | 269 EXPECT_FALSE(apps_grid_view_->IsSelectedView(last_view)); |
264 | 270 |
265 // No crash happens. | 271 // No crash happens. |
266 AppListItemView* view = GetItemViewAt(0); | 272 AppListItemView* view = GetItemViewAt(0); |
267 apps_grid_view_->SetSelectedView(view); | 273 apps_grid_view_->SetSelectedView(view); |
268 EXPECT_TRUE(apps_grid_view_->IsSelectedView(view)); | 274 EXPECT_TRUE(apps_grid_view_->IsSelectedView(view)); |
269 } | 275 } |
270 | 276 |
271 TEST_F(AppsGridViewTest, MouseDragWithFolderDisabled) { | 277 TEST_F(AppsGridViewTest, MouseDragWithFolderDisabled) { |
272 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kDisableFolderUI); | 278 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kDisableSyncAppList); |
273 const int kTotalItems = 4; | 279 const int kTotalItems = 4; |
274 model_->PopulateApps(kTotalItems); | 280 model_->PopulateApps(kTotalItems); |
275 EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"), | 281 EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"), |
276 model_->GetModelContent()); | 282 model_->GetModelContent()); |
277 | 283 |
278 gfx::Point from = GetItemTileRectAt(0, 0).CenterPoint(); | 284 gfx::Point from = GetItemTileRectAt(0, 0).CenterPoint(); |
279 gfx::Point to = GetItemTileRectAt(0, 1).CenterPoint(); | 285 gfx::Point to = GetItemTileRectAt(0, 1).CenterPoint(); |
280 | 286 |
281 // Dragging changes model order. | 287 // Dragging changes model order. |
282 SimulateDrag(AppsGridView::MOUSE, from, to); | 288 SimulateDrag(AppsGridView::MOUSE, from, to); |
(...skipping 20 matching lines...) Expand all Loading... |
303 // Adding a launcher item cancels the drag and respects the order. | 309 // Adding a launcher item cancels the drag and respects the order. |
304 SimulateDrag(AppsGridView::MOUSE, from, to); | 310 SimulateDrag(AppsGridView::MOUSE, from, to); |
305 model_->CreateAndAddItem("Extra"); | 311 model_->CreateAndAddItem("Extra"); |
306 apps_grid_view_->EndDrag(false); | 312 apps_grid_view_->EndDrag(false); |
307 EXPECT_EQ(std::string("Item 1,Item 2,Item 3,Extra"), | 313 EXPECT_EQ(std::string("Item 1,Item 2,Item 3,Extra"), |
308 model_->GetModelContent()); | 314 model_->GetModelContent()); |
309 test_api_->LayoutToIdealBounds(); | 315 test_api_->LayoutToIdealBounds(); |
310 } | 316 } |
311 | 317 |
312 TEST_F(AppsGridViewTest, MouseDragItemIntoFolder) { | 318 TEST_F(AppsGridViewTest, MouseDragItemIntoFolder) { |
| 319 EnsureFoldersEnabled(); |
| 320 |
313 size_t kTotalItems = 3; | 321 size_t kTotalItems = 3; |
314 model_->PopulateApps(kTotalItems); | 322 model_->PopulateApps(kTotalItems); |
315 EXPECT_EQ(model_->top_level_item_list()->item_count(), kTotalItems); | 323 EXPECT_EQ(model_->top_level_item_list()->item_count(), kTotalItems); |
316 EXPECT_EQ(std::string("Item 0,Item 1,Item 2"), model_->GetModelContent()); | 324 EXPECT_EQ(std::string("Item 0,Item 1,Item 2"), model_->GetModelContent()); |
317 | 325 |
318 gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint(); | 326 gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint(); |
319 gfx::Point to = GetItemTileRectAt(0, 0).CenterPoint(); | 327 gfx::Point to = GetItemTileRectAt(0, 0).CenterPoint(); |
320 | 328 |
321 // Dragging item_1 over item_0 creates a folder. | 329 // Dragging item_1 over item_0 creates a folder. |
322 SimulateDrag(AppsGridView::MOUSE, from, to); | 330 SimulateDrag(AppsGridView::MOUSE, from, to); |
(...skipping 27 matching lines...) Expand all Loading... |
350 item_1 = model_->FindItem("Item 1"); | 358 item_1 = model_->FindItem("Item 1"); |
351 EXPECT_TRUE(item_1->IsInFolder()); | 359 EXPECT_TRUE(item_1->IsInFolder()); |
352 EXPECT_EQ(folder_item->id(), item_1->folder_id()); | 360 EXPECT_EQ(folder_item->id(), item_1->folder_id()); |
353 AppListItem* item_2 = model_->FindItem("Item 2"); | 361 AppListItem* item_2 = model_->FindItem("Item 2"); |
354 EXPECT_TRUE(item_2->IsInFolder()); | 362 EXPECT_TRUE(item_2->IsInFolder()); |
355 EXPECT_EQ(folder_item->id(), item_2->folder_id()); | 363 EXPECT_EQ(folder_item->id(), item_2->folder_id()); |
356 test_api_->LayoutToIdealBounds(); | 364 test_api_->LayoutToIdealBounds(); |
357 } | 365 } |
358 | 366 |
359 TEST_F(AppsGridViewTest, MouseDragMaxItemsInFolder) { | 367 TEST_F(AppsGridViewTest, MouseDragMaxItemsInFolder) { |
| 368 EnsureFoldersEnabled(); |
| 369 |
360 // Create and add a folder with 15 items in it. | 370 // Create and add a folder with 15 items in it. |
361 size_t kTotalItems = kMaxFolderItems - 1; | 371 size_t kTotalItems = kMaxFolderItems - 1; |
362 model_->CreateAndPopulateFolderWithApps(kTotalItems); | 372 model_->CreateAndPopulateFolderWithApps(kTotalItems); |
363 EXPECT_EQ(1u, model_->top_level_item_list()->item_count()); | 373 EXPECT_EQ(1u, model_->top_level_item_list()->item_count()); |
364 EXPECT_EQ(AppListFolderItem::kItemType, | 374 EXPECT_EQ(AppListFolderItem::kItemType, |
365 model_->top_level_item_list()->item_at(0)->GetItemType()); | 375 model_->top_level_item_list()->item_at(0)->GetItemType()); |
366 AppListFolderItem* folder_item = static_cast<AppListFolderItem*>( | 376 AppListFolderItem* folder_item = static_cast<AppListFolderItem*>( |
367 model_->top_level_item_list()->item_at(0)); | 377 model_->top_level_item_list()->item_at(0)); |
368 EXPECT_EQ(kTotalItems, folder_item->ChildItemCount()); | 378 EXPECT_EQ(kTotalItems, folder_item->ChildItemCount()); |
369 | 379 |
(...skipping 26 matching lines...) Expand all Loading... |
396 apps_grid_view_->EndDrag(false); | 406 apps_grid_view_->EndDrag(false); |
397 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); | 407 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); |
398 EXPECT_EQ(model_->GetItemName(kMaxFolderItems), | 408 EXPECT_EQ(model_->GetItemName(kMaxFolderItems), |
399 model_->top_level_item_list()->item_at(0)->id()); | 409 model_->top_level_item_list()->item_at(0)->id()); |
400 EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(1)->id()); | 410 EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(1)->id()); |
401 EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount()); | 411 EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount()); |
402 test_api_->LayoutToIdealBounds(); | 412 test_api_->LayoutToIdealBounds(); |
403 } | 413 } |
404 | 414 |
405 TEST_F(AppsGridViewTest, MouseDragItemReorder) { | 415 TEST_F(AppsGridViewTest, MouseDragItemReorder) { |
| 416 // This test assumes Folders are enabled. |
| 417 EnsureFoldersEnabled(); |
| 418 |
406 size_t kTotalItems = 2; | 419 size_t kTotalItems = 2; |
407 model_->PopulateApps(kTotalItems); | 420 model_->PopulateApps(kTotalItems); |
408 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); | 421 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); |
409 EXPECT_EQ(std::string("Item 0,Item 1"), model_->GetModelContent()); | 422 EXPECT_EQ(std::string("Item 0,Item 1"), model_->GetModelContent()); |
410 | 423 |
411 gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint(); | 424 gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint(); |
412 int reorder_offset = (GetItemTileRectAt(0, 1).CenterPoint() - | 425 int reorder_offset = (GetItemTileRectAt(0, 1).CenterPoint() - |
413 GetItemTileRectAt(0, 0).CenterPoint()).Length() - | 426 GetItemTileRectAt(0, 0).CenterPoint()).Length() - |
414 kReorderDroppingCircleRadius - | 427 kReorderDroppingCircleRadius - |
415 kPreferredIconDimension / 2 + 5; | 428 kPreferredIconDimension / 2 + 5; |
416 gfx::Point to = gfx::Point(from.x() - reorder_offset, from.y()); | 429 gfx::Point to = gfx::Point(from.x() - reorder_offset, from.y()); |
417 | 430 |
418 // Dragging item_1 closing to item_0 should leads to re-ordering these two | 431 // Dragging item_1 closing to item_0 should leads to re-ordering these two |
419 // items. | 432 // items. |
420 SimulateDrag(AppsGridView::MOUSE, from, to); | 433 SimulateDrag(AppsGridView::MOUSE, from, to); |
421 apps_grid_view_->EndDrag(false); | 434 apps_grid_view_->EndDrag(false); |
422 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); | 435 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); |
423 EXPECT_EQ(std::string("Item 1,Item 0"), model_->GetModelContent()); | 436 EXPECT_EQ(std::string("Item 1,Item 0"), model_->GetModelContent()); |
424 test_api_->LayoutToIdealBounds(); | 437 test_api_->LayoutToIdealBounds(); |
425 } | 438 } |
426 | 439 |
427 TEST_F(AppsGridViewTest, MouseDragFolderReorder) { | 440 TEST_F(AppsGridViewTest, MouseDragFolderReorder) { |
| 441 EnsureFoldersEnabled(); |
| 442 |
428 size_t kTotalItems = 2; | 443 size_t kTotalItems = 2; |
429 model_->CreateAndPopulateFolderWithApps(kTotalItems); | 444 model_->CreateAndPopulateFolderWithApps(kTotalItems); |
430 model_->PopulateAppWithId(kTotalItems); | 445 model_->PopulateAppWithId(kTotalItems); |
431 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); | 446 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); |
432 EXPECT_EQ(AppListFolderItem::kItemType, | 447 EXPECT_EQ(AppListFolderItem::kItemType, |
433 model_->top_level_item_list()->item_at(0)->GetItemType()); | 448 model_->top_level_item_list()->item_at(0)->GetItemType()); |
434 AppListFolderItem* folder_item = static_cast<AppListFolderItem*>( | 449 AppListFolderItem* folder_item = static_cast<AppListFolderItem*>( |
435 model_->top_level_item_list()->item_at(0)); | 450 model_->top_level_item_list()->item_at(0)); |
436 EXPECT_EQ("Item 2", model_->top_level_item_list()->item_at(1)->id()); | 451 EXPECT_EQ("Item 2", model_->top_level_item_list()->item_at(1)->id()); |
437 | 452 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 | 539 |
525 EXPECT_TRUE(page_flip_waiter.Wait(0)); | 540 EXPECT_TRUE(page_flip_waiter.Wait(0)); |
526 EXPECT_EQ(0, pagination_model_->selected_page()); | 541 EXPECT_EQ(0, pagination_model_->selected_page()); |
527 | 542 |
528 EXPECT_FALSE(page_flip_waiter.Wait(100)); | 543 EXPECT_FALSE(page_flip_waiter.Wait(100)); |
529 EXPECT_EQ(0, pagination_model_->selected_page()); | 544 EXPECT_EQ(0, pagination_model_->selected_page()); |
530 apps_grid_view_->EndDrag(true); | 545 apps_grid_view_->EndDrag(true); |
531 } | 546 } |
532 | 547 |
533 TEST_F(AppsGridViewTest, SimultaneousDragWithFolderDisabled) { | 548 TEST_F(AppsGridViewTest, SimultaneousDragWithFolderDisabled) { |
534 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kDisableFolderUI); | 549 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kDisableSyncAppList); |
535 const int kTotalItems = 4; | 550 const int kTotalItems = 4; |
536 model_->PopulateApps(kTotalItems); | 551 model_->PopulateApps(kTotalItems); |
537 EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"), | 552 EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"), |
538 model_->GetModelContent()); | 553 model_->GetModelContent()); |
539 | 554 |
540 gfx::Point mouse_from = GetItemTileRectAt(0, 0).CenterPoint(); | 555 gfx::Point mouse_from = GetItemTileRectAt(0, 0).CenterPoint(); |
541 gfx::Point mouse_to = GetItemTileRectAt(0, 1).CenterPoint(); | 556 gfx::Point mouse_to = GetItemTileRectAt(0, 1).CenterPoint(); |
542 | 557 |
543 gfx::Point touch_from = GetItemTileRectAt(1, 0).CenterPoint(); | 558 gfx::Point touch_from = GetItemTileRectAt(1, 0).CenterPoint(); |
544 gfx::Point touch_to = GetItemTileRectAt(1, 1).CenterPoint(); | 559 gfx::Point touch_to = GetItemTileRectAt(1, 1).CenterPoint(); |
(...skipping 11 matching lines...) Expand all Loading... |
556 SimulateDrag(AppsGridView::TOUCH, touch_from, touch_to); | 571 SimulateDrag(AppsGridView::TOUCH, touch_from, touch_to); |
557 SimulateDrag(AppsGridView::MOUSE, mouse_from, mouse_to); | 572 SimulateDrag(AppsGridView::MOUSE, mouse_from, mouse_to); |
558 // Finishes the drag and touch drag wins. | 573 // Finishes the drag and touch drag wins. |
559 apps_grid_view_->EndDrag(false); | 574 apps_grid_view_->EndDrag(false); |
560 EXPECT_EQ(std::string("Item 1,Item 0,Item 3,Item 2"), | 575 EXPECT_EQ(std::string("Item 1,Item 0,Item 3,Item 2"), |
561 model_->GetModelContent()); | 576 model_->GetModelContent()); |
562 test_api_->LayoutToIdealBounds(); | 577 test_api_->LayoutToIdealBounds(); |
563 } | 578 } |
564 | 579 |
565 TEST_F(AppsGridViewTest, UpdateFolderBackgroundOnCancelDrag) { | 580 TEST_F(AppsGridViewTest, UpdateFolderBackgroundOnCancelDrag) { |
| 581 EnsureFoldersEnabled(); |
| 582 |
566 const int kTotalItems = 4; | 583 const int kTotalItems = 4; |
567 TestAppsGridViewFolderDelegate folder_delegate; | 584 TestAppsGridViewFolderDelegate folder_delegate; |
568 apps_grid_view_->set_folder_delegate(&folder_delegate); | 585 apps_grid_view_->set_folder_delegate(&folder_delegate); |
569 model_->PopulateApps(kTotalItems); | 586 model_->PopulateApps(kTotalItems); |
570 EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"), | 587 EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"), |
571 model_->GetModelContent()); | 588 model_->GetModelContent()); |
572 | 589 |
573 gfx::Point mouse_from = GetItemTileRectAt(0, 0).CenterPoint(); | 590 gfx::Point mouse_from = GetItemTileRectAt(0, 0).CenterPoint(); |
574 gfx::Point mouse_to = GetItemTileRectAt(0, 1).CenterPoint(); | 591 gfx::Point mouse_to = GetItemTileRectAt(0, 1).CenterPoint(); |
575 | 592 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
691 AppListItemView* item_view = GetItemViewAt(0); | 708 AppListItemView* item_view = GetItemViewAt(0); |
692 ASSERT_TRUE(item_view); | 709 ASSERT_TRUE(item_view); |
693 const views::Label* title_label = item_view->title(); | 710 const views::Label* title_label = item_view->title(); |
694 EXPECT_FALSE(title_label->GetTooltipText( | 711 EXPECT_FALSE(title_label->GetTooltipText( |
695 title_label->bounds().CenterPoint(), &actual_tooltip)); | 712 title_label->bounds().CenterPoint(), &actual_tooltip)); |
696 EXPECT_EQ(title, base::UTF16ToUTF8(title_label->text())); | 713 EXPECT_EQ(title, base::UTF16ToUTF8(title_label->text())); |
697 } | 714 } |
698 | 715 |
699 } // namespace test | 716 } // namespace test |
700 } // namespace app_list | 717 } // namespace app_list |
OLD | NEW |