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

Unified Diff: ui/app_list/views/app_list_main_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/app_list_main_view.cc ('k') | ui/app_list/views/app_list_menu_views.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/app_list/views/app_list_main_view_unittest.cc
diff --git a/ui/app_list/views/app_list_main_view_unittest.cc b/ui/app_list/views/app_list_main_view_unittest.cc
deleted file mode 100644
index 08cd351bfbc404d14111386bea62998f0042bce2..0000000000000000000000000000000000000000
--- a/ui/app_list/views/app_list_main_view_unittest.cc
+++ /dev/null
@@ -1,341 +0,0 @@
-// Copyright 2013 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/app_list_main_view.h"
-
-#include "base/memory/scoped_ptr.h"
-#include "base/run_loop.h"
-#include "base/time/time.h"
-#include "base/timer/timer.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/app_list/test/app_list_test_model.h"
-#include "ui/app_list/test/app_list_test_view_delegate.h"
-#include "ui/app_list/views/app_list_folder_view.h"
-#include "ui/app_list/views/app_list_item_view.h"
-#include "ui/app_list/views/apps_container_view.h"
-#include "ui/app_list/views/apps_grid_view.h"
-#include "ui/app_list/views/contents_view.h"
-#include "ui/app_list/views/test/apps_grid_view_test_api.h"
-#include "ui/views/test/views_test_base.h"
-#include "ui/views/view_model.h"
-#include "ui/views/widget/widget.h"
-
-namespace app_list {
-namespace test {
-
-namespace {
-
-const int kInitialItems = 2;
-
-class GridViewVisibleWaiter {
- public:
- explicit GridViewVisibleWaiter(AppsGridView* grid_view)
- : grid_view_(grid_view) {}
- ~GridViewVisibleWaiter() {}
-
- void Wait() {
- if (grid_view_->visible())
- return;
-
- check_timer_.Start(FROM_HERE,
- base::TimeDelta::FromMilliseconds(50),
- base::Bind(&GridViewVisibleWaiter::OnTimerCheck,
- base::Unretained(this)));
- run_loop_.reset(new base::RunLoop);
- run_loop_->Run();
- check_timer_.Stop();
- }
-
- private:
- void OnTimerCheck() {
- if (grid_view_->visible())
- run_loop_->Quit();
- }
-
- AppsGridView* grid_view_;
- scoped_ptr<base::RunLoop> run_loop_;
- base::RepeatingTimer<GridViewVisibleWaiter> check_timer_;
-
- DISALLOW_COPY_AND_ASSIGN(GridViewVisibleWaiter);
-};
-
-class AppListMainViewTest : public views::ViewsTestBase {
- public:
- AppListMainViewTest()
- : widget_(NULL),
- main_view_(NULL) {}
-
- virtual ~AppListMainViewTest() {}
-
- // testing::Test overrides:
- virtual void SetUp() override {
- views::ViewsTestBase::SetUp();
- delegate_.reset(new AppListTestViewDelegate);
-
- // In Ash, the third argument is a container aura::Window, but it is always
- // NULL on Windows, and not needed for tests. It is only used to determine
- // the scale factor for preloading icons.
- main_view_ = new AppListMainView(delegate_.get(), 0, NULL);
- main_view_->SetPaintToLayer(true);
- main_view_->model()->SetFoldersEnabled(true);
-
- widget_ = new views::Widget;
- views::Widget::InitParams params =
- CreateParams(views::Widget::InitParams::TYPE_POPUP);
- params.bounds.set_size(main_view_->GetPreferredSize());
- widget_->Init(params);
-
- widget_->SetContentsView(main_view_);
- }
-
- virtual void TearDown() override {
- widget_->Close();
- views::ViewsTestBase::TearDown();
- delegate_.reset();
- }
-
- // |point| is in |grid_view|'s coordinates.
- AppListItemView* GetItemViewAtPointInGrid(AppsGridView* grid_view,
- const gfx::Point& point) {
- const views::ViewModelT<AppListItemView>* view_model =
- grid_view->view_model_for_test();
- for (int i = 0; i < view_model->view_size(); ++i) {
- views::View* view = view_model->view_at(i);
- if (view->bounds().Contains(point)) {
- return static_cast<AppListItemView*>(view);
- }
- }
-
- return NULL;
- }
-
- void SimulateClick(views::View* view) {
- gfx::Point center = view->GetLocalBounds().CenterPoint();
- view->OnMousePressed(ui::MouseEvent(ui::ET_MOUSE_PRESSED,
- center,
- center,
- ui::EF_LEFT_MOUSE_BUTTON,
- ui::EF_LEFT_MOUSE_BUTTON));
- view->OnMouseReleased(ui::MouseEvent(ui::ET_MOUSE_RELEASED,
- center,
- center,
- ui::EF_LEFT_MOUSE_BUTTON,
- ui::EF_LEFT_MOUSE_BUTTON));
- }
-
- // |point| is in |grid_view|'s coordinates.
- AppListItemView* SimulateInitiateDrag(AppsGridView* grid_view,
- AppsGridView::Pointer pointer,
- const gfx::Point& point) {
- AppListItemView* view = GetItemViewAtPointInGrid(grid_view, point);
- DCHECK(view);
-
- gfx::Point translated =
- gfx::PointAtOffsetFromOrigin(point - view->bounds().origin());
- ui::MouseEvent pressed_event(ui::ET_MOUSE_PRESSED, translated, point, 0, 0);
- grid_view->InitiateDrag(view, pointer, pressed_event);
- return view;
- }
-
- // |point| is in |grid_view|'s coordinates.
- void SimulateUpdateDrag(AppsGridView* grid_view,
- AppsGridView::Pointer pointer,
- AppListItemView* drag_view,
- const gfx::Point& point) {
- DCHECK(drag_view);
- gfx::Point translated =
- gfx::PointAtOffsetFromOrigin(point - drag_view->bounds().origin());
- ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED, translated, point, 0, 0);
- grid_view->UpdateDragFromItem(pointer, drag_event);
- }
-
- AppsGridView* RootGridView() {
- return main_view_->contents_view()->apps_container_view()->apps_grid_view();
- }
-
- AppListFolderView* FolderView() {
- return main_view_->contents_view()
- ->apps_container_view()
- ->app_list_folder_view();
- }
-
- AppsGridView* FolderGridView() { return FolderView()->items_grid_view(); }
-
- const views::ViewModelT<AppListItemView>* RootViewModel() {
- return RootGridView()->view_model_for_test();
- }
-
- const views::ViewModelT<AppListItemView>* FolderViewModel() {
- return FolderGridView()->view_model_for_test();
- }
-
- AppListItemView* CreateAndOpenSingleItemFolder() {
- // Prepare single folder with a single item in it.
- AppListFolderItem* folder_item =
- delegate_->GetTestModel()->CreateSingleItemFolder("single_item_folder",
- "single");
- EXPECT_EQ(folder_item,
- delegate_->GetTestModel()->FindFolderItem("single_item_folder"));
- EXPECT_EQ(AppListFolderItem::kItemType, folder_item->GetItemType());
-
- EXPECT_EQ(1, RootViewModel()->view_size());
- AppListItemView* folder_item_view =
- static_cast<AppListItemView*>(RootViewModel()->view_at(0));
- EXPECT_EQ(folder_item_view->item(), folder_item);
-
- // Click on the folder to open it.
- EXPECT_FALSE(FolderView()->visible());
- SimulateClick(folder_item_view);
- base::RunLoop().RunUntilIdle();
- EXPECT_TRUE(FolderView()->visible());
-
-#if defined(OS_WIN)
- AppsGridViewTestApi folder_grid_view_test_api(FolderGridView());
- folder_grid_view_test_api.DisableSynchronousDrag();
-#endif
- return folder_item_view;
- }
-
- AppListItemView* StartDragForReparent(int index_in_folder) {
- // Start to drag the item in folder.
- views::View* item_view = FolderViewModel()->view_at(index_in_folder);
- gfx::Point point = item_view->bounds().CenterPoint();
- AppListItemView* dragged =
- SimulateInitiateDrag(FolderGridView(), AppsGridView::MOUSE, point);
- EXPECT_EQ(item_view, dragged);
- EXPECT_FALSE(RootGridView()->visible());
- EXPECT_TRUE(FolderView()->visible());
-
- // Drag it to top left corner.
- point = gfx::Point(0, 0);
- // Two update drags needed to actually drag the view. The first changes
- // state and the 2nd one actually moves the view. The 2nd call can be
- // removed when UpdateDrag is fixed.
- SimulateUpdateDrag(FolderGridView(), AppsGridView::MOUSE, dragged, point);
- SimulateUpdateDrag(FolderGridView(), AppsGridView::MOUSE, dragged, point);
- base::RunLoop().RunUntilIdle();
-
- // Wait until the folder view is invisible and root grid view shows up.
- GridViewVisibleWaiter(RootGridView()).Wait();
- EXPECT_TRUE(RootGridView()->visible());
- EXPECT_EQ(0, FolderView()->layer()->opacity());
-
- return dragged;
- }
-
- protected:
- views::Widget* widget_; // Owned by native window.
- AppListMainView* main_view_; // Owned by |widget_|.
- scoped_ptr<AppListTestViewDelegate> delegate_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(AppListMainViewTest);
-};
-
-} // namespace
-
-// Tests changing the AppListModel when switching profiles.
-TEST_F(AppListMainViewTest, ModelChanged) {
- delegate_->GetTestModel()->PopulateApps(kInitialItems);
- EXPECT_EQ(kInitialItems, RootViewModel()->view_size());
-
- // The model is owned by a profile keyed service, which is never destroyed
- // until after profile switching.
- scoped_ptr<AppListModel> old_model(delegate_->ReleaseTestModel());
-
- const int kReplacementItems = 5;
- delegate_->ReplaceTestModel(kReplacementItems);
- main_view_->ModelChanged();
- EXPECT_EQ(kReplacementItems, RootViewModel()->view_size());
-}
-
-// Tests dragging an item out of a single item folder and drop it at the last
-// slot.
-TEST_F(AppListMainViewTest, DragLastItemFromFolderAndDropAtLastSlot) {
- AppListItemView* folder_item_view = CreateAndOpenSingleItemFolder();
- const gfx::Rect first_slot_tile = folder_item_view->bounds();
-
- EXPECT_EQ(1, FolderViewModel()->view_size());
-
- AppListItemView* dragged = StartDragForReparent(0);
-
- // Drop it to the slot on the right of first slot.
- gfx::Rect drop_target_tile(first_slot_tile);
- drop_target_tile.Offset(first_slot_tile.width() * 2, 0);
- gfx::Point point = drop_target_tile.CenterPoint();
- SimulateUpdateDrag(FolderGridView(), AppsGridView::MOUSE, dragged, point);
-
- // Drop it.
- FolderGridView()->EndDrag(false);
-
- // Folder icon view should be gone and there is only one item view.
- EXPECT_EQ(1, RootViewModel()->view_size());
- EXPECT_EQ(
- AppListItemView::kViewClassName,
- static_cast<views::View*>(RootViewModel()->view_at(0))->GetClassName());
-
- // The item view should be in slot 1 instead of slot 2 where it is dropped.
- AppsGridViewTestApi root_grid_view_test_api(RootGridView());
- root_grid_view_test_api.LayoutToIdealBounds();
- EXPECT_EQ(first_slot_tile, RootViewModel()->view_at(0)->bounds());
-
- // Single item folder should be auto removed.
- EXPECT_EQ(NULL,
- delegate_->GetTestModel()->FindFolderItem("single_item_folder"));
-}
-
-// Tests dragging an item out of a single item folder and dropping it onto the
-// page switcher. Regression test for http://crbug.com/415530/.
-TEST_F(AppListMainViewTest, DragReparentItemOntoPageSwitcher) {
- AppListItemView* folder_item_view = CreateAndOpenSingleItemFolder();
- const gfx::Rect first_slot_tile = folder_item_view->bounds();
-
- delegate_->GetTestModel()->PopulateApps(20);
-
- EXPECT_EQ(1, FolderViewModel()->view_size());
- EXPECT_EQ(21, RootViewModel()->view_size());
-
- AppListItemView* dragged = StartDragForReparent(0);
-
- gfx::Rect main_view_bounds = main_view_->bounds();
- // Drag the reparent item to the page switcher.
- gfx::Point point =
- gfx::Point(main_view_bounds.width() / 2,
- main_view_bounds.bottom() - first_slot_tile.height());
- SimulateUpdateDrag(FolderGridView(), AppsGridView::MOUSE, dragged, point);
-
- // Drop it.
- FolderGridView()->EndDrag(false);
-
- // The folder should be destroyed.
- EXPECT_EQ(21, RootViewModel()->view_size());
- EXPECT_EQ(NULL,
- delegate_->GetTestModel()->FindFolderItem("single_item_folder"));
-}
-
-// Test that an interrupted drag while reparenting an item from a folder, when
-// canceled via the root grid, correctly forwards the cancelation to the drag
-// ocurring from the folder.
-TEST_F(AppListMainViewTest, MouseDragItemOutOfFolderWithCancel) {
- CreateAndOpenSingleItemFolder();
- AppListItemView* dragged = StartDragForReparent(0);
-
- // Now add an item to the model, not in any folder, e.g., as if by Sync.
- EXPECT_TRUE(RootGridView()->has_dragged_view());
- EXPECT_TRUE(FolderGridView()->has_dragged_view());
- delegate_->GetTestModel()->CreateAndAddItem("Extra");
-
- // The drag operation should get canceled.
- EXPECT_FALSE(RootGridView()->has_dragged_view());
- EXPECT_FALSE(FolderGridView()->has_dragged_view());
-
- // Additional mouse move operations should be ignored.
- gfx::Point point(1, 1);
- SimulateUpdateDrag(FolderGridView(), AppsGridView::MOUSE, dragged, point);
- EXPECT_FALSE(RootGridView()->has_dragged_view());
- EXPECT_FALSE(FolderGridView()->has_dragged_view());
-}
-
-} // namespace test
-} // namespace app_list
« no previous file with comments | « ui/app_list/views/app_list_main_view.cc ('k') | ui/app_list/views/app_list_menu_views.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698