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

Unified Diff: ui/app_list/apps_grid_view_unittest.cc

Issue 11784034: Skeleton for app_list on OSX, and refactoring for enable_app_list=1 on OS=="mac". (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase for 175876 and 175961 Created 7 years, 11 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/apps_grid_view.cc ('k') | ui/app_list/cocoa/app_list_view_window.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/app_list/apps_grid_view_unittest.cc
diff --git a/ui/app_list/apps_grid_view_unittest.cc b/ui/app_list/apps_grid_view_unittest.cc
deleted file mode 100644
index 8c611a84a3d19552e111026bbbb2f723ed3e7de0..0000000000000000000000000000000000000000
--- a/ui/app_list/apps_grid_view_unittest.cc
+++ /dev/null
@@ -1,395 +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/apps_grid_view.h"
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop.h"
-#include "base/stringprintf.h"
-#include "base/timer.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/app_list/app_list_item_model.h"
-#include "ui/app_list/app_list_item_view.h"
-#include "ui/app_list/app_list_model.h"
-#include "ui/app_list/pagination_model.h"
-#include "ui/app_list/test/apps_grid_view_test_api.h"
-
-namespace app_list {
-namespace test {
-
-namespace {
-
-const int kIconDimension = 48;
-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(MessageLoopForUI* ui_loop,
- PaginationModel* model)
- : ui_loop_(ui_loop),
- model_(model),
- wait_(false),
- page_changed_(false) {
- model_->AddObserver(this);
- }
-
- virtual ~PageFlipWaiter() {
- model_->RemoveObserver(this);
- }
-
- bool Wait(int time_out_ms) {
- DCHECK(!wait_);
- wait_ = true;
- page_changed_ = false;
- wait_timer_.Stop();
- wait_timer_.Start(FROM_HERE,
- base::TimeDelta::FromMilliseconds(time_out_ms),
- this, &PageFlipWaiter::OnWaitTimeOut);
- ui_loop_->Run();
- wait_ = false;
- return page_changed_;
- }
-
- private:
- void OnWaitTimeOut() {
- ui_loop_->Quit();
- }
-
- // PaginationModelObserver overrides:
- virtual void TotalPagesChanged() OVERRIDE {
- }
- virtual void SelectedPageChanged(int old_selected,
- int new_selected) OVERRIDE {
- page_changed_ = true;
- if (wait_)
- ui_loop_->Quit();
- }
- virtual void TransitionChanged() OVERRIDE {
- }
-
- MessageLoopForUI* ui_loop_;
- PaginationModel* model_;
- bool wait_;
- bool page_changed_;
- base::OneShotTimer<PageFlipWaiter> wait_timer_;
-
- DISALLOW_COPY_AND_ASSIGN(PageFlipWaiter);
-};
-
-} // namespace
-
-class AppsGridViewTest : public testing::Test {
- public:
- AppsGridViewTest() {}
- virtual ~AppsGridViewTest() {}
-
- // testing::Test overrides:
- virtual void SetUp() OVERRIDE {
- model_.reset(new AppListModel);
- pagination_model_.reset(new PaginationModel);
-
- apps_grid_view_.reset(new AppsGridView(NULL, pagination_model_.get()));
- apps_grid_view_->SetLayout(kIconDimension, kCols, kRows);
- apps_grid_view_->SetBoundsRect(gfx::Rect(gfx::Size(kWidth, kHeight)));
- apps_grid_view_->SetModel(model_.get());
-
- test_api_.reset(new AppsGridViewTestApi(apps_grid_view_.get()));
- }
- virtual void TearDown() OVERRIDE {
- apps_grid_view_.reset(); // Release apps grid view before models.
- }
-
- protected:
- void PopulateApps(int n) {
- for (int i = 0; i < n; ++i) {
- std::string title = base::StringPrintf("Item %d", i);
- model_->apps()->Add(CreateItem(title));
- }
- }
-
- // Get a string of all apps in |model| joined with ','.
- std::string GetModelContent() {
- std::string content;
- for (size_t i = 0; i < model_->apps()->item_count(); ++i) {
- if (i > 0)
- content += ',';
- content += model_->apps()->GetItemAt(i)->title();
- }
- return content;
- }
-
- AppListItemModel* CreateItem(const std::string& title) {
- AppListItemModel* item = new AppListItemModel;
- item->SetTitle(title);
- return item;
- }
-
- void HighlightItemAt(int index) {
- AppListItemModel* item = model_->apps()->GetItemAt(index);
- item->SetHighlighted(true);
- }
-
- 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_->apps()->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_->apps()->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;
- }
-
- // Points are in |apps_grid_view_|'s coordinates.
- void 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);
- apps_grid_view_->InitiateDrag(view, pointer, pressed_event);
-
- ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED,
- translated_to, to, 0);
- apps_grid_view_->UpdateDrag(view, pointer, drag_event);
- }
-
- void SimulateKeyPress(ui::KeyboardCode key_code) {
- ui::KeyEvent key_event(ui::ET_KEY_PRESSED, key_code, 0, false);
- apps_grid_view_->OnKeyPressed(key_event);
- }
-
- scoped_ptr<AppListModel> model_;
- scoped_ptr<PaginationModel> pagination_model_;
- scoped_ptr<AppsGridView> apps_grid_view_;
- scoped_ptr<AppsGridViewTestApi> test_api_;
-
- MessageLoopForUI message_loop_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(AppsGridViewTest);
-};
-
-TEST_F(AppsGridViewTest, CreatePage) {
- // Fully populates a page.
- const int kPages = 1;
- PopulateApps(kPages * kTilesPerPage);
- EXPECT_EQ(kPages, pagination_model_->total_pages());
-
- // Adds one more and gets a new page created.
- model_->apps()->Add(CreateItem(std::string("Extra")));
- EXPECT_EQ(kPages + 1, pagination_model_->total_pages());
-}
-
-TEST_F(AppsGridViewTest, EnsureHighlightedVisible) {
- const int kPages = 3;
- PopulateApps(kPages * kTilesPerPage);
- EXPECT_EQ(kPages, pagination_model_->total_pages());
- EXPECT_EQ(0, pagination_model_->selected_page());
-
- // Highlight first one and last one one first page and first page should be
- // selected.
- HighlightItemAt(0);
- EXPECT_EQ(0, pagination_model_->selected_page());
- HighlightItemAt(kTilesPerPage - 1);
- EXPECT_EQ(0, pagination_model_->selected_page());
-
- // Highlight first one on 2nd page and 2nd page should be selected.
- HighlightItemAt(kTilesPerPage + 1);
- EXPECT_EQ(1, pagination_model_->selected_page());
-
- // Highlight last one in the model and last page should be selected.
- HighlightItemAt(model_->apps()->item_count() - 1);
- EXPECT_EQ(kPages - 1, pagination_model_->selected_page());
-}
-
-TEST_F(AppsGridViewTest, RemoveSelectedLastApp) {
- const int kTotalItems = 2;
- const int kLastItemIndex = kTotalItems - 1;
-
- PopulateApps(kTotalItems);
-
- AppListItemView* last_view = GetItemViewAt(kLastItemIndex);
- apps_grid_view_->SetSelectedView(last_view);
- model_->apps()->DeleteAt(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, MouseDrag) {
- const int kTotalItems = 4;
- PopulateApps(kTotalItems);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
- 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"),
- 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"),
- GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Deleting an item keeps remaining intact.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- model_->apps()->DeleteAt(1);
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(std::string("Item 1,Item 2,Item 3"),
- GetModelContent());
- test_api_->LayoutToIdealBounds();
-
- // Adding a launcher item cancels the drag and respects the order.
- SimulateDrag(AppsGridView::MOUSE, from, to);
- model_->apps()->Add(CreateItem(std::string("Extra")));
- apps_grid_view_->EndDrag(false);
- EXPECT_EQ(std::string("Item 1,Item 2,Item 3,Extra"),
- GetModelContent());
- test_api_->LayoutToIdealBounds();
-}
-
-TEST_F(AppsGridViewTest, MouseDragFlipPage) {
- test_api_->SetPageFlipDelay(10);
- pagination_model_->SetTransitionDurations(10, 10);
-
- PageFlipWaiter page_flip_waiter(&message_loop_,
- pagination_model_.get());
-
- const int kPages = 3;
- PopulateApps(kPages * kTilesPerPage);
- EXPECT_EQ(kPages, pagination_model_->total_pages());
- EXPECT_EQ(0, pagination_model_->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.
- SimulateDrag(AppsGridView::MOUSE, from, to);
-
- // Page should be flipped after sometime.
- EXPECT_TRUE(page_flip_waiter.Wait(100));
- EXPECT_EQ(1, pagination_model_->selected_page());
-
- // Stay there and page should be flipped again.
- EXPECT_TRUE(page_flip_waiter.Wait(100));
- EXPECT_EQ(2, pagination_model_->selected_page());
-
- // Stay there longer and no page flip happen since we are at the last page.
- EXPECT_FALSE(page_flip_waiter.Wait(100));
- EXPECT_EQ(2, pagination_model_->selected_page());
-
- apps_grid_view_->EndDrag(true);
-
- // Now drag to the left edge and test the other direction.
- to.set_x(0);
-
- SimulateDrag(AppsGridView::MOUSE, from, to);
-
- EXPECT_TRUE(page_flip_waiter.Wait(100));
- EXPECT_EQ(1, pagination_model_->selected_page());
-
- EXPECT_TRUE(page_flip_waiter.Wait(100));
- EXPECT_EQ(0, pagination_model_->selected_page());
-
- EXPECT_FALSE(page_flip_waiter.Wait(100));
- EXPECT_EQ(0, pagination_model_->selected_page());
- apps_grid_view_->EndDrag(true);
-}
-
-TEST_F(AppsGridViewTest, SimultaneousDrag) {
- const int kTotalItems = 4;
- PopulateApps(kTotalItems);
- EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
- 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"),
- 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"),
- GetModelContent());
- test_api_->LayoutToIdealBounds();
-}
-
-TEST_F(AppsGridViewTest, HighlightWithKeyboard) {
- const int kTotalitems = 2;
- PopulateApps(kTotalitems);
- apps_grid_view_->SetSelectedView(GetItemViewAt(0));
-
- // Try moving off the item to an invalid location.
- SimulateKeyPress(ui::VKEY_UP);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(0)));
- SimulateKeyPress(ui::VKEY_DOWN);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(0)));
- SimulateKeyPress(ui::VKEY_LEFT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(0)));
-
- // Move to the second item and try to go past it.
- SimulateKeyPress(ui::VKEY_RIGHT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(1)));
- SimulateKeyPress(ui::VKEY_RIGHT);
- EXPECT_TRUE(apps_grid_view_->IsSelectedView(GetItemViewAt(1)));
-}
-
-} // namespace test
-} // namespace app_list
« no previous file with comments | « ui/app_list/apps_grid_view.cc ('k') | ui/app_list/cocoa/app_list_view_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698