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

Unified Diff: ui/app_list/views/apps_grid_view_unittest.cc

Issue 645853013: Remove some platform specific stuff from views. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/app_list/views/apps_grid_view_folder_delegate.h ('k') | ui/app_list/views/cached_label.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
deleted file mode 100644
index 144095f71df8bcc09e414ae88b29258565a0876a..0000000000000000000000000000000000000000
--- a/ui/app_list/views/apps_grid_view_unittest.cc
+++ /dev/null
@@ -1,800 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/app_list/views/apps_grid_view.h"
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/command_line.h"
-#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/app_list/app_list_constants.h"
-#include "ui/app_list/app_list_folder_item.h"
-#include "ui/app_list/app_list_item.h"
-#include "ui/app_list/app_list_model.h"
-#include "ui/app_list/app_list_switches.h"
-#include "ui/app_list/pagination_model.h"
-#include "ui/app_list/test/app_list_test_model.h"
-#include "ui/app_list/views/app_list_item_view.h"
-#include "ui/app_list/views/apps_grid_view_folder_delegate.h"
-#include "ui/app_list/views/test/apps_grid_view_test_api.h"
-#include "ui/views/test/views_test_base.h"
-
-namespace app_list {
-namespace test {
-
-namespace {
-
-const int kCols = 2;
-const int kRows = 2;
-const int kTilesPerPage = kCols * kRows;
-
-const int kWidth = 320;
-const int kHeight = 240;
-
-class PageFlipWaiter : public PaginationModelObserver {
- public:
- PageFlipWaiter(base::MessageLoopForUI* ui_loop, PaginationModel* model)
- : ui_loop_(ui_loop), model_(model), wait_(false) {
- model_->AddObserver(this);
- }
-
- virtual ~PageFlipWaiter() {
- model_->RemoveObserver(this);
- }
-
- void Wait() {
- DCHECK(!wait_);
- wait_ = true;
-
- ui_loop_->Run();
- wait_ = false;
- }
-
- void Reset() { selected_pages_.clear(); }
-
- const std::string& selected_pages() const { return selected_pages_; }
-
- private:
- // PaginationModelObserver overrides:
- virtual void TotalPagesChanged() override {
- }
- virtual void SelectedPageChanged(int old_selected,
- int new_selected) override {
- if (!selected_pages_.empty())
- selected_pages_ += ',';
- selected_pages_ += base::IntToString(new_selected);
-
- if (wait_)
- ui_loop_->Quit();
- }
- virtual void TransitionStarted() override {
- }
- virtual void TransitionChanged() override {
- }
-
- base::MessageLoopForUI* ui_loop_;
- PaginationModel* model_;
- bool wait_;
- std::string selected_pages_;
-
- DISALLOW_COPY_AND_ASSIGN(PageFlipWaiter);
-};
-
-} // namespace
-
-class AppsGridViewTest : public views::ViewsTestBase {
- public:
- AppsGridViewTest() {}
- virtual ~AppsGridViewTest() {}
-
- // testing::Test overrides:
- virtual void SetUp() override {
- views::ViewsTestBase::SetUp();
- model_.reset(new AppListTestModel);
- model_->SetFoldersEnabled(true);
-
- apps_grid_view_.reset(new AppsGridView(NULL));
- apps_grid_view_->SetLayout(kCols, kRows);
- apps_grid_view_->SetBoundsRect(gfx::Rect(gfx::Size(kWidth, kHeight)));
- apps_grid_view_->SetModel(model_.get());
- apps_grid_view_->SetItemList(model_->top_level_item_list());
-
- test_api_.reset(new AppsGridViewTestApi(apps_grid_view_.get()));
- }
- virtual void TearDown() override {
- apps_grid_view_.reset(); // Release apps grid view before models.
- views::ViewsTestBase::TearDown();
- }
-
- protected:
- void EnsureFoldersEnabled() {
- // Folders require AppList sync to be enabled.
- CommandLine::ForCurrentProcess()->AppendSwitch(
- switches::kEnableSyncAppList);
- }
-
- AppListItemView* GetItemViewAt(int index) {
- return static_cast<AppListItemView*>(
- test_api_->GetViewAtModelIndex(index));
- }
-
- AppListItemView* GetItemViewForPoint(const gfx::Point& point) {
- for (size_t i = 0; i < model_->top_level_item_list()->item_count(); ++i) {
- AppListItemView* view = GetItemViewAt(i);
- if (view->bounds().Contains(point))
- return view;
- }
- return NULL;
- }
-
- gfx::Rect GetItemTileRectAt(int row, int col) {
- DCHECK_GT(model_->top_level_item_list()->item_count(), 0u);
-
- gfx::Insets insets(apps_grid_view_->GetInsets());
- gfx::Rect rect(gfx::Point(insets.left(), insets.top()),
- GetItemViewAt(0)->bounds().size());
- rect.Offset(col * rect.width(), row * rect.height());
- return rect;
- }
-
- PaginationModel* GetPaginationModel() {
- return apps_grid_view_->pagination_model();
- }
-
- // Points are in |apps_grid_view_|'s coordinates.
- AppListItemView* SimulateDrag(AppsGridView::Pointer pointer,
- const gfx::Point& from,
- const gfx::Point& to) {
- AppListItemView* view = GetItemViewForPoint(from);
- DCHECK(view);
-
- gfx::Point translated_from = gfx::PointAtOffsetFromOrigin(
- from - view->bounds().origin());
- gfx::Point translated_to = gfx::PointAtOffsetFromOrigin(
- to - view->bounds().origin());
-
- ui::MouseEvent pressed_event(ui::ET_MOUSE_PRESSED,
- translated_from, from, 0, 0);
- apps_grid_view_->InitiateDrag(view, pointer, pressed_event);
-
- ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED,
- translated_to, to, 0, 0);
- apps_grid_view_->UpdateDragFromItem(pointer, drag_event);
- return view;
- }
-
- void SimulateKeyPress(ui::KeyboardCode key_code) {
- ui::KeyEvent key_event(ui::ET_KEY_PRESSED, key_code, ui::EF_NONE);
- apps_grid_view_->OnKeyPressed(key_event);
- }
-
- scoped_ptr<AppListTestModel> model_;
- scoped_ptr<AppsGridView> apps_grid_view_;
- scoped_ptr<AppsGridViewTestApi> test_api_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(AppsGridViewTest);
-};
-
-class TestAppsGridViewFolderDelegate : public AppsGridViewFolderDelegate {
- public:
- TestAppsGridViewFolderDelegate() : show_bubble_(false) {}
- virtual ~TestAppsGridViewFolderDelegate() {}
-
- // Overridden from AppsGridViewFolderDelegate:
- virtual void UpdateFolderViewBackground(bool show_bubble) override {
- show_bubble_ = show_bubble;
- }
-
- virtual void ReparentItem(AppListItemView* original_drag_view,
- const gfx::Point& drag_point_in_folder_grid)
- override {}
-
- virtual void DispatchDragEventForReparent(
- AppsGridView::Pointer pointer,
- const gfx::Point& drag_point_in_folder_grid) override {}
-
- virtual void DispatchEndDragEventForReparent(
- bool events_forwarded_to_drag_drop_host,
- bool cancel_drag) override {}
-
- virtual bool IsPointOutsideOfFolderBoundary(const gfx::Point& point)
- override {
- return false;
- }
-
- virtual bool IsOEMFolder() const override { return false; }
-
- virtual void SetRootLevelDragViewVisible(bool visible) override {}
-
- bool show_bubble() { return show_bubble_; }
-
- private:
- bool show_bubble_;
-
- DISALLOW_COPY_AND_ASSIGN(TestAppsGridViewFolderDelegate);
-};
-
-TEST_F(AppsGridViewTest, CreatePage) {
- // Fully populates a page.
- const int kPages = 1;
- model_->PopulateApps(kPages * kTilesPerPage);
- EXPECT_EQ(kPages, GetPaginationModel()->total_pages());
-
- // Adds one more and gets a new page created.
- model_->CreateAndAddItem("Extra");
- EXPECT_EQ(kPages + 1, GetPaginationModel()->total_pages());
-}
-
-TEST_F(AppsGridViewTest, EnsureHighlightedVisible) {
- const int kPages = 3;
- model_->PopulateApps(kPages * kTilesPerPage);
- EXPECT_EQ(kPages, GetPaginationModel()->total_pages());
- EXPECT_EQ(0, GetPaginationModel()->selected_page());
-
- // Highlight first one and last one one first page and first page should be
- // selected.
- model_->HighlightItemAt(0);
- EXPECT_EQ(0, GetPaginationModel()->selected_page());
- model_->HighlightItemAt(kTilesPerPage - 1);
- EXPECT_EQ(0, GetPaginationModel()->selected_page());
-
- // Highlight first one on 2nd page and 2nd page should be selected.
- model_->HighlightItemAt(kTilesPerPage + 1);
- EXPECT_EQ(1, GetPaginationModel()->selected_page());
-
- // Highlight last one in the model and last page should be selected.
- model_->HighlightItemAt(model_->top_level_item_list()->item_count() - 1);
- EXPECT_EQ(kPages - 1, GetPaginationModel()->selected_page());
-}
-
-TEST_F(AppsGridViewTest, RemoveSelectedLastApp) {
- const int kTotalItems = 2;
- const int kLastItemIndex = kTotalItems - 1;
-
- model_->PopulateApps(kTotalItems);
-
- AppListItemView* last_view = GetItemViewAt(kLastItemIndex);
- apps_grid_view_->SetSelectedView(last_view);
- model_->DeleteItem(model_->GetItemName(kLastItemIndex));
-
- EXPECT_FALSE(apps_grid_view_->IsSelectedView(last_view));
-
- // No crash happens.
- AppListItemView* view = GetItemViewAt(0);
- apps_grid_view_->SetSelectedView(view);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(view));
-}
-
-TEST_F(AppsGridViewTest, MouseDragWithFolderDisabled) {
- model_->SetFoldersEnabled(false);
- const int kTotalItems = 4;
- model_->PopulateApps(kTotalItems);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
- model_->GetModelContent());
-
- gfx::Point from = GetItemTileRectAt(0, 0).CenterPoint();
- gfx::Point to = GetItemTileRectAt(0, 1).CenterPoint();
-
- // Dragging changes model order.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(std::string("Item 1,Item 0,Item 2,Item 3"),
- model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Canceling drag should keep existing order.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- apps_grid_view_->EndDrag(true);
- EXPECT_EQ(std::string("Item 1,Item 0,Item 2,Item 3"),
- model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Deleting an item keeps remaining intact.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- model_->DeleteItem(model_->GetItemName(0));
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(std::string("Item 1,Item 2,Item 3"),
- model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Adding a launcher item cancels the drag and respects the order.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- EXPECT_TRUE(apps_grid_view_->has_dragged_view());
- model_->CreateAndAddItem("Extra");
- // No need to EndDrag explicitly - adding an item should do this.
- EXPECT_FALSE(apps_grid_view_->has_dragged_view());
- // Even though cancelled, mouse move events can still arrive via the item
- // view. Ensure that behaves sanely, and doesn't start a new drag.
- ui::MouseEvent drag_event(
- ui::ET_MOUSE_DRAGGED, gfx::Point(1, 1), gfx::Point(2, 2), 0, 0);
- apps_grid_view_->UpdateDragFromItem(AppsGridView::MOUSE, drag_event);
- EXPECT_FALSE(apps_grid_view_->has_dragged_view());
-
- EXPECT_EQ(std::string("Item 1,Item 2,Item 3,Extra"),
- model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-}
-
-TEST_F(AppsGridViewTest, MouseDragItemIntoFolder) {
- EnsureFoldersEnabled();
-
- size_t kTotalItems = 3;
- model_->PopulateApps(kTotalItems);
- EXPECT_EQ(model_->top_level_item_list()->item_count(), kTotalItems);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2"), model_->GetModelContent());
-
- gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint();
- gfx::Point to = GetItemTileRectAt(0, 0).CenterPoint();
-
- // Dragging item_1 over item_0 creates a folder.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(kTotalItems - 1, model_->top_level_item_list()->item_count());
- EXPECT_EQ(AppListFolderItem::kItemType,
- model_->top_level_item_list()->item_at(0)->GetItemType());
- AppListFolderItem* folder_item = static_cast<AppListFolderItem*>(
- model_->top_level_item_list()->item_at(0));
- EXPECT_EQ(2u, folder_item->ChildItemCount());
- AppListItem* item_0 = model_->FindItem("Item 0");
- EXPECT_TRUE(item_0->IsInFolder());
- EXPECT_EQ(folder_item->id(), item_0->folder_id());
- AppListItem* item_1 = model_->FindItem("Item 1");
- EXPECT_TRUE(item_1->IsInFolder());
- EXPECT_EQ(folder_item->id(), item_1->folder_id());
- std::string expected_items = folder_item->id() + ",Item 2";
- EXPECT_EQ(expected_items, model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Dragging item_2 to the folder adds item_2 to the folder.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- apps_grid_view_->EndDrag(false);
-
- EXPECT_EQ(kTotalItems - 2, model_->top_level_item_list()->item_count());
- EXPECT_EQ(folder_item->id(), model_->GetModelContent());
- EXPECT_EQ(3u, folder_item->ChildItemCount());
- item_0 = model_->FindItem("Item 0");
- EXPECT_TRUE(item_0->IsInFolder());
- EXPECT_EQ(folder_item->id(), item_0->folder_id());
- item_1 = model_->FindItem("Item 1");
- EXPECT_TRUE(item_1->IsInFolder());
- EXPECT_EQ(folder_item->id(), item_1->folder_id());
- AppListItem* item_2 = model_->FindItem("Item 2");
- EXPECT_TRUE(item_2->IsInFolder());
- EXPECT_EQ(folder_item->id(), item_2->folder_id());
- test_api_->LayoutToIdealBounds();
-}
-
-TEST_F(AppsGridViewTest, MouseDragMaxItemsInFolder) {
- EnsureFoldersEnabled();
-
- // Create and add a folder with 15 items in it.
- size_t kTotalItems = kMaxFolderItems - 1;
- model_->CreateAndPopulateFolderWithApps(kTotalItems);
- EXPECT_EQ(1u, model_->top_level_item_list()->item_count());
- EXPECT_EQ(AppListFolderItem::kItemType,
- model_->top_level_item_list()->item_at(0)->GetItemType());
- AppListFolderItem* folder_item = static_cast<AppListFolderItem*>(
- model_->top_level_item_list()->item_at(0));
- EXPECT_EQ(kTotalItems, folder_item->ChildItemCount());
-
- // Create and add another 2 items.
- model_->PopulateAppWithId(kTotalItems);
- model_->PopulateAppWithId(kTotalItems + 1);
- EXPECT_EQ(3u, model_->top_level_item_list()->item_count());
- EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(0)->id());
- EXPECT_EQ(model_->GetItemName(kMaxFolderItems - 1),
- model_->top_level_item_list()->item_at(1)->id());
- EXPECT_EQ(model_->GetItemName(kMaxFolderItems),
- model_->top_level_item_list()->item_at(2)->id());
-
- gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint();
- gfx::Point to = GetItemTileRectAt(0, 0).CenterPoint();
-
- // Dragging one item into the folder, the folder should accept the item.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
- EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(0)->id());
- EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount());
- EXPECT_EQ(model_->GetItemName(kMaxFolderItems),
- model_->top_level_item_list()->item_at(1)->id());
- test_api_->LayoutToIdealBounds();
-
- // Dragging the last item over the folder, the folder won't accept the new
- // item.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
- EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount());
- test_api_->LayoutToIdealBounds();
-}
-
-// Check that moving items around doesn't allow a drop to happen into a full
-// folder.
-TEST_F(AppsGridViewTest, MouseDragMaxItemsInFolderWithMovement) {
- EnsureFoldersEnabled();
-
- // Create and add a folder with 16 items in it.
- size_t kTotalItems = kMaxFolderItems;
- model_->CreateAndPopulateFolderWithApps(kTotalItems);
- EXPECT_EQ(1u, model_->top_level_item_list()->item_count());
- EXPECT_EQ(AppListFolderItem::kItemType,
- model_->top_level_item_list()->item_at(0)->GetItemType());
- AppListFolderItem* folder_item = static_cast<AppListFolderItem*>(
- model_->top_level_item_list()->item_at(0));
- EXPECT_EQ(kTotalItems, folder_item->ChildItemCount());
-
- // Create and add another item.
- model_->PopulateAppWithId(kTotalItems);
- EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
- EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(0)->id());
- EXPECT_EQ(model_->GetItemName(kMaxFolderItems),
- model_->top_level_item_list()->item_at(1)->id());
-
- AppListItemView* folder_view =
- GetItemViewForPoint(GetItemTileRectAt(0, 0).CenterPoint());
-
- // Drag the new item to the left so that the grid reorders.
- gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint();
- gfx::Point to = GetItemTileRectAt(0, 0).bottom_left();
- AppListItemView* dragged_view = SimulateDrag(AppsGridView::MOUSE, from, to);
- test_api_->LayoutToIdealBounds();
-
- // The grid now looks like | blank | folder |.
- EXPECT_EQ(NULL, GetItemViewForPoint(GetItemTileRectAt(0, 0).CenterPoint()));
- EXPECT_EQ(folder_view,
- GetItemViewForPoint(GetItemTileRectAt(0, 1).CenterPoint()));
-
- // Move onto the folder and end the drag.
- to = GetItemTileRectAt(0, 1).CenterPoint();
- gfx::Point translated_to =
- gfx::PointAtOffsetFromOrigin(to - dragged_view->bounds().origin());
- ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED, translated_to, to, 0, 0);
- apps_grid_view_->UpdateDragFromItem(AppsGridView::MOUSE, drag_event);
- apps_grid_view_->EndDrag(false);
-
- // The item should not have moved into the folder.
- EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
- EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount());
- test_api_->LayoutToIdealBounds();
-}
-
-TEST_F(AppsGridViewTest, MouseDragItemReorder) {
- // This test assumes Folders are enabled.
- EnsureFoldersEnabled();
-
- 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());
-
- // 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 - 4);
- 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());
-
- // Drag left, past the folder dropping circle.
- drag_vector.set_x(-3 * half_tile_width + 4);
- SimulateDrag(AppsGridView::MOUSE, top_right, top_right + drag_vector);
- apps_grid_view_->EndDrag(false);
- 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) {
- EnsureFoldersEnabled();
-
- size_t kTotalItems = 2;
- model_->CreateAndPopulateFolderWithApps(kTotalItems);
- model_->PopulateAppWithId(kTotalItems);
- EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
- EXPECT_EQ(AppListFolderItem::kItemType,
- model_->top_level_item_list()->item_at(0)->GetItemType());
- AppListFolderItem* folder_item = static_cast<AppListFolderItem*>(
- model_->top_level_item_list()->item_at(0));
- EXPECT_EQ("Item 2", model_->top_level_item_list()->item_at(1)->id());
-
- gfx::Point from = GetItemTileRectAt(0, 0).CenterPoint();
- gfx::Point to = GetItemTileRectAt(0, 1).CenterPoint();
-
- // Dragging folder over item_1 should leads to re-ordering these two
- // items.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
- EXPECT_EQ("Item 2", model_->top_level_item_list()->item_at(0)->id());
- EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(1)->id());
- test_api_->LayoutToIdealBounds();
-}
-
-TEST_F(AppsGridViewTest, MouseDragWithCancelDeleteAddItem) {
- size_t kTotalItems = 4;
- model_->PopulateApps(kTotalItems);
- EXPECT_EQ(model_->top_level_item_list()->item_count(), kTotalItems);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
- model_->GetModelContent());
-
- gfx::Point from = GetItemTileRectAt(0, 0).CenterPoint();
- gfx::Point to = GetItemTileRectAt(0, 1).CenterPoint();
-
- // Canceling drag should keep existing order.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- apps_grid_view_->EndDrag(true);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
- model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Deleting an item keeps remaining intact.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- model_->DeleteItem(model_->GetItemName(2));
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 3"), model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Adding a launcher item cancels the drag and respects the order.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- model_->CreateAndAddItem("Extra");
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 3,Extra"),
- model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-}
-
-TEST_F(AppsGridViewTest, MouseDragFlipPage) {
- test_api_->SetPageFlipDelay(10);
- GetPaginationModel()->SetTransitionDurations(10, 10);
-
- PageFlipWaiter page_flip_waiter(message_loop(), GetPaginationModel());
-
- const int kPages = 3;
- model_->PopulateApps(kPages * kTilesPerPage);
- EXPECT_EQ(kPages, GetPaginationModel()->total_pages());
- EXPECT_EQ(0, GetPaginationModel()->selected_page());
-
- gfx::Point from = GetItemTileRectAt(0, 0).CenterPoint();
- gfx::Point to = gfx::Point(apps_grid_view_->width(),
- apps_grid_view_->height() / 2);
-
- // Drag to right edge.
- page_flip_waiter.Reset();
- SimulateDrag(AppsGridView::MOUSE, from, to);
-
- // Page should be flipped after sometime to hit page 1 and 2 then stop.
- while (test_api_->HasPendingPageFlip()) {
- page_flip_waiter.Wait();
- }
- EXPECT_EQ("1,2", page_flip_waiter.selected_pages());
- EXPECT_EQ(2, GetPaginationModel()->selected_page());
-
- apps_grid_view_->EndDrag(true);
-
- // Now drag to the left edge and test the other direction.
- to.set_x(0);
-
- page_flip_waiter.Reset();
- SimulateDrag(AppsGridView::MOUSE, from, to);
-
- while (test_api_->HasPendingPageFlip()) {
- page_flip_waiter.Wait();
- }
- EXPECT_EQ("1,0", page_flip_waiter.selected_pages());
- EXPECT_EQ(0, GetPaginationModel()->selected_page());
-
- apps_grid_view_->EndDrag(true);
-}
-
-TEST_F(AppsGridViewTest, SimultaneousDragWithFolderDisabled) {
- model_->SetFoldersEnabled(false);
- const int kTotalItems = 4;
- model_->PopulateApps(kTotalItems);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
- model_->GetModelContent());
-
- gfx::Point mouse_from = GetItemTileRectAt(0, 0).CenterPoint();
- gfx::Point mouse_to = GetItemTileRectAt(0, 1).CenterPoint();
-
- gfx::Point touch_from = GetItemTileRectAt(1, 0).CenterPoint();
- gfx::Point touch_to = GetItemTileRectAt(1, 1).CenterPoint();
-
- // Starts a mouse drag first then a touch drag.
- SimulateDrag(AppsGridView::MOUSE, mouse_from, mouse_to);
- SimulateDrag(AppsGridView::TOUCH, touch_from, touch_to);
- // Finishes the drag and mouse drag wins.
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(std::string("Item 1,Item 0,Item 2,Item 3"),
- model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Starts a touch drag first then a mouse drag.
- SimulateDrag(AppsGridView::TOUCH, touch_from, touch_to);
- SimulateDrag(AppsGridView::MOUSE, mouse_from, mouse_to);
- // Finishes the drag and touch drag wins.
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(std::string("Item 1,Item 0,Item 3,Item 2"),
- model_->GetModelContent());
- test_api_->LayoutToIdealBounds();
-}
-
-TEST_F(AppsGridViewTest, UpdateFolderBackgroundOnCancelDrag) {
- EnsureFoldersEnabled();
-
- const int kTotalItems = 4;
- TestAppsGridViewFolderDelegate folder_delegate;
- apps_grid_view_->set_folder_delegate(&folder_delegate);
- model_->PopulateApps(kTotalItems);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
- model_->GetModelContent());
-
- gfx::Point mouse_from = GetItemTileRectAt(0, 0).CenterPoint();
- gfx::Point mouse_to = GetItemTileRectAt(0, 1).CenterPoint();
-
- // Starts a mouse drag and then cancels it.
- SimulateDrag(AppsGridView::MOUSE, mouse_from, mouse_to);
- EXPECT_TRUE(folder_delegate.show_bubble());
- apps_grid_view_->EndDrag(true);
- EXPECT_FALSE(folder_delegate.show_bubble());
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
- model_->GetModelContent());
-}
-
-TEST_F(AppsGridViewTest, HighlightWithKeyboard) {
- const int kPages = 3;
- const int kItems = (kPages - 1) * kTilesPerPage + 1;
- model_->PopulateApps(kItems);
-
- const int first_index = 0;
- const int last_index = kItems - 1;
- const int last_index_on_page1_first_row = kRows - 1;
- const int last_index_on_page1 = kTilesPerPage - 1;
- const int first_index_on_page2 = kTilesPerPage;
- const int first_index_on_page2_last_row = 2 * kTilesPerPage - kRows;
- const int last_index_on_page2_last_row = 2 * kTilesPerPage - 1;
-
- // Try moving off the item beyond the first one.
- apps_grid_view_->SetSelectedView(GetItemViewAt(first_index));
- SimulateKeyPress(ui::VKEY_UP);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(first_index)));
- SimulateKeyPress(ui::VKEY_LEFT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(first_index)));
-
- // Move to the last item and try to go past it.
- apps_grid_view_->SetSelectedView(GetItemViewAt(last_index));
- SimulateKeyPress(ui::VKEY_DOWN);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(last_index)));
- SimulateKeyPress(ui::VKEY_RIGHT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(last_index)));
-
- // Move right on last item on page 1 should get to first item on page 2's last
- // row and vice versa.
- apps_grid_view_->SetSelectedView(GetItemViewAt(last_index_on_page1));
- SimulateKeyPress(ui::VKEY_RIGHT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- first_index_on_page2_last_row)));
- SimulateKeyPress(ui::VKEY_LEFT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- last_index_on_page1)));
-
- // Up/down on page boundary does nothing.
- apps_grid_view_->SetSelectedView(GetItemViewAt(last_index_on_page1));
- SimulateKeyPress(ui::VKEY_DOWN);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- last_index_on_page1)));
- apps_grid_view_->SetSelectedView(
- GetItemViewAt(first_index_on_page2_last_row));
- apps_grid_view_->
- SetSelectedView(GetItemViewAt(last_index_on_page1_first_row));
- SimulateKeyPress(ui::VKEY_UP);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- last_index_on_page1_first_row)));
-
- // Page up and down should go to the same item on the next and last page.
- apps_grid_view_->SetSelectedView(GetItemViewAt(first_index_on_page2));
- SimulateKeyPress(ui::VKEY_PRIOR);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- first_index)));
- SimulateKeyPress(ui::VKEY_NEXT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- first_index_on_page2)));
-
- // Moving onto a a page with too few apps to support the expected index snaps
- // to the last available index.
- apps_grid_view_->SetSelectedView(GetItemViewAt(last_index_on_page2_last_row));
- SimulateKeyPress(ui::VKEY_RIGHT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- last_index)));
- apps_grid_view_->SetSelectedView(GetItemViewAt(last_index_on_page2_last_row));
- SimulateKeyPress(ui::VKEY_NEXT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- last_index)));
-
-
-
- // After page switch, arrow keys select first item on current page.
- apps_grid_view_->SetSelectedView(GetItemViewAt(first_index));
- GetPaginationModel()->SelectPage(1, false);
- SimulateKeyPress(ui::VKEY_UP);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(
- first_index_on_page2)));
-}
-
-TEST_F(AppsGridViewTest, ItemLabelShortNameOverride) {
- // If the app's full name and short name differ, the title label's tooltip
- // should always be the full name of the app.
- std::string expected_text("xyz");
- std::string expected_tooltip("tooltip");
- AppListItem* item = model_->CreateAndAddItem("Item with short name");
- model_->SetItemNameAndShortName(item, expected_tooltip, expected_text);
-
- base::string16 actual_tooltip;
- AppListItemView* item_view = GetItemViewAt(0);
- ASSERT_TRUE(item_view);
- const views::Label* title_label = item_view->title();
- EXPECT_TRUE(title_label->GetTooltipText(
- title_label->bounds().CenterPoint(), &actual_tooltip));
- EXPECT_EQ(expected_tooltip, base::UTF16ToUTF8(actual_tooltip));
- EXPECT_EQ(expected_text, base::UTF16ToUTF8(title_label->text()));
-}
-
-TEST_F(AppsGridViewTest, ItemLabelNoShortName) {
- // If the app's full name and short name are the same, use the default tooltip
- // behavior of the label (only show a tooltip if the title is truncated).
- std::string title("a");
- AppListItem* item = model_->CreateAndAddItem(title);
- model_->SetItemNameAndShortName(item, title, "");
-
- base::string16 actual_tooltip;
- AppListItemView* item_view = GetItemViewAt(0);
- ASSERT_TRUE(item_view);
- const views::Label* title_label = item_view->title();
- EXPECT_FALSE(title_label->GetTooltipText(
- title_label->bounds().CenterPoint(), &actual_tooltip));
- EXPECT_EQ(title, base::UTF16ToUTF8(title_label->text()));
-}
-
-} // namespace test
-} // namespace app_list
« no previous file with comments | « ui/app_list/views/apps_grid_view_folder_delegate.h ('k') | ui/app_list/views/cached_label.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698