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

Side by Side Diff: ui/app_list/views/apps_grid_view_unittest.cc

Issue 553753003: Rework app list item drag zones. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fasdaj
Patch Set: address comments Created 6 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
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 "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 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 apps_grid_view_->EndDrag(false); 413 apps_grid_view_->EndDrag(false);
414 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); 414 EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
415 EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount()); 415 EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount());
416 test_api_->LayoutToIdealBounds(); 416 test_api_->LayoutToIdealBounds();
417 } 417 }
418 418
419 TEST_F(AppsGridViewTest, MouseDragItemReorder) { 419 TEST_F(AppsGridViewTest, MouseDragItemReorder) {
420 // This test assumes Folders are enabled. 420 // This test assumes Folders are enabled.
421 EnsureFoldersEnabled(); 421 EnsureFoldersEnabled();
422 422
423 size_t kTotalItems = 2; 423 model_->PopulateApps(4);
424 model_->PopulateApps(kTotalItems); 424 EXPECT_EQ(4u, model_->top_level_item_list()->item_count());
425 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); 425 EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
426 EXPECT_EQ(std::string("Item 0,Item 1"), model_->GetModelContent()); 426 model_->GetModelContent());
427 427
428 gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint(); 428 // Dragging an item towards its neighbours should not reorder until the drag
429 int reorder_offset = (GetItemTileRectAt(0, 1).CenterPoint() - 429 // is past the folder drop point.
430 GetItemTileRectAt(0, 0).CenterPoint()).Length() - 430 gfx::Point top_right = GetItemTileRectAt(0, 1).CenterPoint();
431 kReorderDroppingCircleRadius - kGridIconDimension / 2 + 431 gfx::Vector2d drag_vector;
432 5; 432 int half_tile_width =
433 gfx::Point to = gfx::Point(from.x() - reorder_offset, from.y()); 433 (GetItemTileRectAt(0, 1).x() - GetItemTileRectAt(0, 0).x()) / 2;
434 int tile_height = GetItemTileRectAt(1, 0).y() - GetItemTileRectAt(0, 0).y();
434 435
435 // Dragging item_1 closing to item_0 should leads to re-ordering these two 436 // Drag left but stop before the folder dropping circle.
436 // items. 437 drag_vector.set_x(-half_tile_width - 5);
437 SimulateDrag(AppsGridView::MOUSE, from, to); 438 SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector);
438 apps_grid_view_->EndDrag(false); 439 apps_grid_view_->EndDrag(false);
439 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); 440 EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
440 EXPECT_EQ(std::string("Item 1,Item 0"), model_->GetModelContent()); 441 model_->GetModelContent());
441 test_api_->LayoutToIdealBounds(); 442
443 // Drag left, past the folder dropping circle.
444 drag_vector.set_x(-3 * half_tile_width + 5);
445 SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector);
446 apps_grid_view_->EndDrag(false);
447 EXPECT_EQ(std::string("Item 1,Item 0,Item 2,Item 3"),
448 model_->GetModelContent());
449
450 // Drag down, between apps 2 and 3. The gap should open up, making space for
451 // app 0 in the bottom left.
452 drag_vector.set_x(-half_tile_width);
453 drag_vector.set_y(tile_height);
454 SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector);
455 apps_grid_view_->EndDrag(false);
456 EXPECT_EQ(std::string("Item 1,Item 2,Item 0,Item 3"),
457 model_->GetModelContent());
458
459 // Drag up, between apps 1 and 2. The gap should open up, making space for app
460 // 0 in the top right.
461 gfx::Point bottom_left = GetItemTileRectAt(1, 0).CenterPoint();
462 drag_vector.set_x(half_tile_width);
463 drag_vector.set_y(-tile_height);
464 SimulateDrag(AppsGridView::MOUSE, bottom_left, bottom_left + drag_vector);
465 apps_grid_view_->EndDrag(false);
466 EXPECT_EQ(std::string("Item 1,Item 0,Item 2,Item 3"),
467 model_->GetModelContent());
468
469 // Dragging down past the last app should reorder to the last position.
470 drag_vector.set_x(half_tile_width);
471 drag_vector.set_y(2 * tile_height);
472 SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector);
473 apps_grid_view_->EndDrag(false);
474 EXPECT_EQ(std::string("Item 1,Item 2,Item 3,Item 0"),
475 model_->GetModelContent());
442 } 476 }
443 477
444 TEST_F(AppsGridViewTest, MouseDragFolderReorder) { 478 TEST_F(AppsGridViewTest, MouseDragFolderReorder) {
445 EnsureFoldersEnabled(); 479 EnsureFoldersEnabled();
446 480
447 size_t kTotalItems = 2; 481 size_t kTotalItems = 2;
448 model_->CreateAndPopulateFolderWithApps(kTotalItems); 482 model_->CreateAndPopulateFolderWithApps(kTotalItems);
449 model_->PopulateAppWithId(kTotalItems); 483 model_->PopulateAppWithId(kTotalItems);
450 EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); 484 EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
451 EXPECT_EQ(AppListFolderItem::kItemType, 485 EXPECT_EQ(AppListFolderItem::kItemType,
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 AppListItemView* item_view = GetItemViewAt(0); 740 AppListItemView* item_view = GetItemViewAt(0);
707 ASSERT_TRUE(item_view); 741 ASSERT_TRUE(item_view);
708 const views::Label* title_label = item_view->title(); 742 const views::Label* title_label = item_view->title();
709 EXPECT_FALSE(title_label->GetTooltipText( 743 EXPECT_FALSE(title_label->GetTooltipText(
710 title_label->bounds().CenterPoint(), &actual_tooltip)); 744 title_label->bounds().CenterPoint(), &actual_tooltip));
711 EXPECT_EQ(title, base::UTF16ToUTF8(title_label->text())); 745 EXPECT_EQ(title, base::UTF16ToUTF8(title_label->text()));
712 } 746 }
713 747
714 } // namespace test 748 } // namespace test
715 } // namespace app_list 749 } // namespace app_list
OLDNEW
« ui/app_list/views/apps_grid_view.cc ('K') | « ui/app_list/views/apps_grid_view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698