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

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

Issue 665233002: Experimental app list: Added "All apps" button on start page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/app-list-factor-folderimagesource
Patch Set: Rebase. Created 6 years, 1 month 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/app_list_view.h" 5 #include "ui/app_list/views/app_list_view.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/app_list/app_list_switches.h" 12 #include "ui/app_list/app_list_switches.h"
13 #include "ui/app_list/pagination_model.h" 13 #include "ui/app_list/pagination_model.h"
14 #include "ui/app_list/search_box_model.h" 14 #include "ui/app_list/search_box_model.h"
15 #include "ui/app_list/test/app_list_test_model.h" 15 #include "ui/app_list/test/app_list_test_model.h"
16 #include "ui/app_list/test/app_list_test_view_delegate.h" 16 #include "ui/app_list/test/app_list_test_view_delegate.h"
17 #include "ui/app_list/test/test_search_result.h" 17 #include "ui/app_list/test/test_search_result.h"
18 #include "ui/app_list/views/app_list_folder_view.h" 18 #include "ui/app_list/views/app_list_folder_view.h"
19 #include "ui/app_list/views/app_list_main_view.h" 19 #include "ui/app_list/views/app_list_main_view.h"
20 #include "ui/app_list/views/apps_container_view.h" 20 #include "ui/app_list/views/apps_container_view.h"
21 #include "ui/app_list/views/apps_grid_view.h" 21 #include "ui/app_list/views/apps_grid_view.h"
22 #include "ui/app_list/views/contents_switcher_view.h" 22 #include "ui/app_list/views/contents_switcher_view.h"
23 #include "ui/app_list/views/contents_view.h" 23 #include "ui/app_list/views/contents_view.h"
24 #include "ui/app_list/views/search_box_view.h" 24 #include "ui/app_list/views/search_box_view.h"
25 #include "ui/app_list/views/search_result_list_view.h" 25 #include "ui/app_list/views/search_result_list_view.h"
26 #include "ui/app_list/views/search_result_tile_item_view.h"
26 #include "ui/app_list/views/start_page_view.h" 27 #include "ui/app_list/views/start_page_view.h"
27 #include "ui/app_list/views/test/apps_grid_view_test_api.h" 28 #include "ui/app_list/views/test/apps_grid_view_test_api.h"
28 #include "ui/app_list/views/tile_item_view.h" 29 #include "ui/app_list/views/tile_item_view.h"
29 #include "ui/views/controls/textfield/textfield.h" 30 #include "ui/views/controls/textfield/textfield.h"
30 #include "ui/views/test/views_test_base.h" 31 #include "ui/views/test/views_test_base.h"
31 #include "ui/views/views_delegate.h" 32 #include "ui/views/views_delegate.h"
32 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 33 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
33 34
34 namespace app_list { 35 namespace app_list {
35 namespace test { 36 namespace test {
36 37
37 namespace { 38 namespace {
38 39
39 enum TestType { 40 enum TestType {
40 TEST_TYPE_START = 0, 41 TEST_TYPE_START = 0,
41 NORMAL = TEST_TYPE_START, 42 NORMAL = TEST_TYPE_START,
42 LANDSCAPE, 43 LANDSCAPE,
43 EXPERIMENTAL, 44 EXPERIMENTAL,
44 TEST_TYPE_END, 45 TEST_TYPE_END,
45 }; 46 };
46 47
47 size_t GetVisibleTileItemViews(const std::vector<TileItemView*>& tiles) { 48 template <class T>
49 size_t GetVisibleViews(const std::vector<T*>& tiles) {
48 size_t count = 0; 50 size_t count = 0;
49 for (std::vector<TileItemView*>::const_iterator it = tiles.begin(); 51 for (const auto& tile : tiles) {
50 it != tiles.end(); 52 if (tile->visible())
51 ++it) {
52 if ((*it)->visible())
53 count++; 53 count++;
54 } 54 }
55 return count; 55 return count;
56 } 56 }
57 57
58 void SimulateClick(views::View* view) {
59 gfx::Point center = view->GetLocalBounds().CenterPoint();
60 view->OnMousePressed(ui::MouseEvent(ui::ET_MOUSE_PRESSED,
61 center,
62 center,
63 ui::EF_LEFT_MOUSE_BUTTON,
64 ui::EF_LEFT_MOUSE_BUTTON));
65 view->OnMouseReleased(ui::MouseEvent(ui::ET_MOUSE_RELEASED,
66 center,
67 center,
68 ui::EF_LEFT_MOUSE_BUTTON,
69 ui::EF_LEFT_MOUSE_BUTTON));
70 }
71
58 // Choose a set that is 3 regular app list pages and 2 landscape app list pages. 72 // Choose a set that is 3 regular app list pages and 2 landscape app list pages.
59 const int kInitialItems = 34; 73 const int kInitialItems = 34;
60 74
61 class TestTileSearchResult : public TestSearchResult { 75 class TestTileSearchResult : public TestSearchResult {
62 public: 76 public:
63 TestTileSearchResult() { set_display_type(DISPLAY_TILE); } 77 TestTileSearchResult() { set_display_type(DISPLAY_TILE); }
64 ~TestTileSearchResult() override {} 78 ~TestTileSearchResult() override {}
65 79
66 private: 80 private:
67 DISALLOW_COPY_AND_ASSIGN(TestTileSearchResult); 81 DISALLOW_COPY_AND_ASSIGN(TestTileSearchResult);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 // Whether the experimental "landscape" app launcher UI is being tested. 122 // Whether the experimental "landscape" app launcher UI is being tested.
109 bool is_landscape() const { 123 bool is_landscape() const {
110 return test_type_ == LANDSCAPE || test_type_ == EXPERIMENTAL; 124 return test_type_ == LANDSCAPE || test_type_ == EXPERIMENTAL;
111 } 125 }
112 126
113 private: 127 private:
114 // Switches the active launcher page in the contents view and lays out to 128 // Switches the active launcher page in the contents view and lays out to
115 // ensure all launcher pages are in the correct position. 129 // ensure all launcher pages are in the correct position.
116 void ShowContentsViewPageAndVerify(AppListModel::State state); 130 void ShowContentsViewPageAndVerify(AppListModel::State state);
117 131
132 // Tests that the app list is in |state|.
133 void VerifyPageActive(AppListModel::State state);
134
118 // Shows the app list and waits until a paint occurs. 135 // Shows the app list and waits until a paint occurs.
119 void Show(); 136 void Show();
120 137
121 // Closes the app list. This sets |view_| to NULL. 138 // Closes the app list. This sets |view_| to NULL.
122 void Close(); 139 void Close();
123 140
124 // Gets the PaginationModel owned by |view_|. 141 // Gets the PaginationModel owned by |view_|.
125 PaginationModel* GetPaginationModel(); 142 PaginationModel* GetPaginationModel();
126 143
127 const TestType test_type_; 144 const TestType test_type_;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 EXPECT_TRUE(subview->visible()); 214 EXPECT_TRUE(subview->visible());
198 EXPECT_TRUE(subview->IsDrawn()); 215 EXPECT_TRUE(subview->IsDrawn());
199 } 216 }
200 217
201 void AppListViewTestContext::ShowContentsViewPageAndVerify( 218 void AppListViewTestContext::ShowContentsViewPageAndVerify(
202 AppListModel::State state) { 219 AppListModel::State state) {
203 ContentsView* contents_view = view_->app_list_main_view()->contents_view(); 220 ContentsView* contents_view = view_->app_list_main_view()->contents_view();
204 int index = contents_view->GetPageIndexForState(state); 221 int index = contents_view->GetPageIndexForState(state);
205 contents_view->SetActivePage(index); 222 contents_view->SetActivePage(index);
206 contents_view->Layout(); 223 contents_view->Layout();
224 VerifyPageActive(state);
225 }
226
227 void AppListViewTestContext::VerifyPageActive(AppListModel::State state) {
228 ContentsView* contents_view = view_->app_list_main_view()->contents_view();
229 int index = contents_view->GetPageIndexForState(state);
207 for (int i = 0; i < contents_view->NumLauncherPages(); ++i) { 230 for (int i = 0; i < contents_view->NumLauncherPages(); ++i) {
208 EXPECT_EQ(i == index, 231 EXPECT_EQ(i == index,
209 contents_view->GetDefaultContentsBounds() == 232 contents_view->GetDefaultContentsBounds() ==
210 contents_view->GetPageView(i)->bounds()); 233 contents_view->GetPageView(i)->bounds());
211 } 234 }
212 EXPECT_EQ(state, delegate_->GetTestModel()->state()); 235 EXPECT_EQ(state, delegate_->GetTestModel()->state());
213 } 236 }
214 237
215 void AppListViewTestContext::Show() { 238 void AppListViewTestContext::Show() {
216 view_->GetWidget()->Show(); 239 view_->GetWidget()->Show();
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 main_view->contents_view()->start_page_view(); 362 main_view->contents_view()->start_page_view();
340 // Checks on the main view. 363 // Checks on the main view.
341 EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 364 EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
342 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); 365 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view()));
343 if (test_type_ == EXPERIMENTAL) { 366 if (test_type_ == EXPERIMENTAL) {
344 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view)); 367 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
345 368
346 // Show the start page view. 369 // Show the start page view.
347 ShowContentsViewPageAndVerify(AppListModel::STATE_START); 370 ShowContentsViewPageAndVerify(AppListModel::STATE_START);
348 EXPECT_FALSE(main_view->search_box_view()->visible()); 371 EXPECT_FALSE(main_view->search_box_view()->visible());
372 gfx::Size view_size(view_->GetPreferredSize());
349 373
350 gfx::Size view_size(view_->GetPreferredSize()); 374 // Simulate clicking the "All apps" button. Check that we navigate to the
351 ShowContentsViewPageAndVerify(AppListModel::STATE_APPS); 375 // apps grid view.
376 SimulateClick(start_page_view->all_apps_button());
377 main_view->contents_view()->Layout();
378 VerifyPageActive(AppListModel::STATE_APPS);
352 EXPECT_TRUE(main_view->search_box_view()->visible()); 379 EXPECT_TRUE(main_view->search_box_view()->visible());
353 380
354 // Hiding and showing the search box should not affect the app list's 381 // Hiding and showing the search box should not affect the app list's
355 // preferred size. This is a regression test for http://crbug.com/386912. 382 // preferred size. This is a regression test for http://crbug.com/386912.
356 EXPECT_EQ(view_size.ToString(), view_->GetPreferredSize().ToString()); 383 EXPECT_EQ(view_size.ToString(), view_->GetPreferredSize().ToString());
357 384
358 // Check tiles hide and show on deletion and addition. 385 // Check tiles hide and show on deletion and addition.
359 model->results()->Add(new TestTileSearchResult()); 386 model->results()->Add(new TestTileSearchResult());
360 start_page_view->UpdateForTesting(); 387 start_page_view->UpdateForTesting();
361 EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views())); 388 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
362 model->results()->DeleteAll(); 389 model->results()->DeleteAll();
363 start_page_view->UpdateForTesting(); 390 start_page_view->UpdateForTesting();
364 EXPECT_EQ(0u, GetVisibleTileItemViews(start_page_view->tile_views())); 391 EXPECT_EQ(0u, GetVisibleViews(start_page_view->tile_views()));
365 } else { 392 } else {
366 EXPECT_EQ(NULL, start_page_view); 393 EXPECT_EQ(NULL, start_page_view);
367 } 394 }
368 395
369 Close(); 396 Close();
370 } 397 }
371 398
372 void AppListViewTestContext::RunPageSwitchingAnimationTest() { 399 void AppListViewTestContext::RunPageSwitchingAnimationTest() {
373 if (test_type_ == EXPERIMENTAL) { 400 if (test_type_ == EXPERIMENTAL) {
374 Show(); 401 Show();
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view)); 475 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
449 } else { 476 } else {
450 EXPECT_EQ(NULL, contents_switcher_view); 477 EXPECT_EQ(NULL, contents_switcher_view);
451 EXPECT_EQ(NULL, start_page_view); 478 EXPECT_EQ(NULL, start_page_view);
452 } 479 }
453 480
454 // New model updates should be processed by the start page view. 481 // New model updates should be processed by the start page view.
455 delegate_->GetTestModel()->results()->Add(new TestTileSearchResult()); 482 delegate_->GetTestModel()->results()->Add(new TestTileSearchResult());
456 if (test_type_ == EXPERIMENTAL) { 483 if (test_type_ == EXPERIMENTAL) {
457 start_page_view->UpdateForTesting(); 484 start_page_view->UpdateForTesting();
458 EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views())); 485 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
459 } 486 }
460 487
461 // Old model updates should be ignored. 488 // Old model updates should be ignored.
462 original_test_model->results()->Add(new TestTileSearchResult()); 489 original_test_model->results()->Add(new TestTileSearchResult());
463 original_test_model->results()->Add(new TestTileSearchResult()); 490 original_test_model->results()->Add(new TestTileSearchResult());
464 if (test_type_ == EXPERIMENTAL) { 491 if (test_type_ == EXPERIMENTAL) {
465 start_page_view->UpdateForTesting(); 492 start_page_view->UpdateForTesting();
466 EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views())); 493 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
467 } 494 }
468 495
469 Close(); 496 Close();
470 } 497 }
471 498
472 void AppListViewTestContext::RunSearchResultsTest() { 499 void AppListViewTestContext::RunSearchResultsTest() {
473 EXPECT_FALSE(view_->GetWidget()->IsVisible()); 500 EXPECT_FALSE(view_->GetWidget()->IsVisible());
474 EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 501 EXPECT_EQ(-1, GetPaginationModel()->total_pages());
475 AppListTestModel* model = delegate_->GetTestModel(); 502 AppListTestModel* model = delegate_->GetTestModel();
476 model->PopulateApps(3); 503 model->PopulateApps(3);
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance, 744 INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance,
718 AppListViewTestAura, 745 AppListViewTestAura,
719 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); 746 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END));
720 747
721 INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance, 748 INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance,
722 AppListViewTestDesktop, 749 AppListViewTestDesktop,
723 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); 750 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END));
724 751
725 } // namespace test 752 } // namespace test
726 } // namespace app_list 753 } // namespace app_list
OLDNEW
« no previous file with comments | « ui/app_list/views/all_apps_tile_item_view.cc ('k') | ui/app_list/views/search_result_tile_item_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698