Index: ui/app_list/views/apps_grid_view_unittest.cc |
diff --git a/ui/app_list/views/apps_grid_view_unittest.cc b/ui/app_list/views/apps_grid_view_unittest.cc |
index c6fd60b50d2e303a10d854db12167a69d69d1738..febc17cc1fa5eb59854760a1cd36b2274761e4ed 100644 |
--- a/ui/app_list/views/apps_grid_view_unittest.cc |
+++ b/ui/app_list/views/apps_grid_view_unittest.cc |
@@ -420,25 +420,59 @@ TEST_F(AppsGridViewTest, MouseDragItemReorder) { |
// This test assumes Folders are enabled. |
EnsureFoldersEnabled(); |
- size_t kTotalItems = 2; |
- model_->PopulateApps(kTotalItems); |
- EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); |
- EXPECT_EQ(std::string("Item 0,Item 1"), model_->GetModelContent()); |
+ model_->PopulateApps(4); |
+ EXPECT_EQ(4u, model_->top_level_item_list()->item_count()); |
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"), |
+ model_->GetModelContent()); |
- gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint(); |
- int reorder_offset = (GetItemTileRectAt(0, 1).CenterPoint() - |
- GetItemTileRectAt(0, 0).CenterPoint()).Length() - |
- kReorderDroppingCircleRadius - kGridIconDimension / 2 + |
- 5; |
- gfx::Point to = gfx::Point(from.x() - reorder_offset, from.y()); |
+ // Dragging an item towards its neighbours should not reorder until the drag |
+ // is past the folder drop point. |
+ gfx::Point top_right = GetItemTileRectAt(0, 1).CenterPoint(); |
+ gfx::Vector2d drag_vector; |
+ int half_tile_width = |
+ (GetItemTileRectAt(0, 1).x() - GetItemTileRectAt(0, 0).x()) / 2; |
+ int tile_height = GetItemTileRectAt(1, 0).y() - GetItemTileRectAt(0, 0).y(); |
+ |
+ // Drag left but stop before the folder dropping circle. |
+ drag_vector.set_x(-half_tile_width - 5); |
+ SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector); |
+ apps_grid_view_->EndDrag(false); |
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"), |
+ model_->GetModelContent()); |
- // Dragging item_1 closing to item_0 should leads to re-ordering these two |
- // items. |
- SimulateDrag(AppsGridView::MOUSE, from, to); |
+ // Drag left, past the folder dropping circle. |
+ drag_vector.set_x(-3 * half_tile_width + 5); |
+ SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector); |
apps_grid_view_->EndDrag(false); |
- EXPECT_EQ(2u, model_->top_level_item_list()->item_count()); |
- EXPECT_EQ(std::string("Item 1,Item 0"), model_->GetModelContent()); |
- test_api_->LayoutToIdealBounds(); |
+ EXPECT_EQ(std::string("Item 1,Item 0,Item 2,Item 3"), |
+ model_->GetModelContent()); |
+ |
+ // Drag down, between apps 2 and 3. The gap should open up, making space for |
+ // app 0 in the bottom left. |
+ drag_vector.set_x(-half_tile_width); |
+ drag_vector.set_y(tile_height); |
+ SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector); |
+ apps_grid_view_->EndDrag(false); |
+ EXPECT_EQ(std::string("Item 1,Item 2,Item 0,Item 3"), |
+ model_->GetModelContent()); |
+ |
+ // Drag up, between apps 1 and 2. The gap should open up, making space for app |
+ // 0 in the top right. |
+ gfx::Point bottom_left = GetItemTileRectAt(1, 0).CenterPoint(); |
+ drag_vector.set_x(half_tile_width); |
+ drag_vector.set_y(-tile_height); |
+ SimulateDrag(AppsGridView::MOUSE, bottom_left, bottom_left + drag_vector); |
+ apps_grid_view_->EndDrag(false); |
+ EXPECT_EQ(std::string("Item 1,Item 0,Item 2,Item 3"), |
+ model_->GetModelContent()); |
+ |
+ // Dragging down past the last app should reorder to the last position. |
+ drag_vector.set_x(half_tile_width); |
+ drag_vector.set_y(2 * tile_height); |
+ SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector); |
+ apps_grid_view_->EndDrag(false); |
+ EXPECT_EQ(std::string("Item 1,Item 2,Item 3,Item 0"), |
+ model_->GetModelContent()); |
} |
TEST_F(AppsGridViewTest, MouseDragFolderReorder) { |