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

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

Issue 2342773002: Removed experimental app list flags. Experimental is now the only way. (Closed)
Patch Set: Respond to nit. Created 4 years, 3 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 unified diff | Download patch
« no previous file with comments | « ui/app_list/app_list_switches.cc ('k') | ui/app_list/views/search_result_page_view_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 30 matching lines...) Expand all
41 #include "ui/views/test/test_views_delegate.h" 41 #include "ui/views/test/test_views_delegate.h"
42 #include "ui/views/test/views_test_base.h" 42 #include "ui/views/test/views_test_base.h"
43 #include "ui/views/views_delegate.h" 43 #include "ui/views/views_delegate.h"
44 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 44 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
45 45
46 namespace app_list { 46 namespace app_list {
47 namespace test { 47 namespace test {
48 48
49 namespace { 49 namespace {
50 50
51 enum TestType {
52 TEST_TYPE_START = 0,
53 NORMAL = TEST_TYPE_START,
54 LANDSCAPE,
55 EXPERIMENTAL,
56 TEST_TYPE_END,
57 };
58
59 template <class T> 51 template <class T>
60 size_t GetVisibleViews(const std::vector<T*>& tiles) { 52 size_t GetVisibleViews(const std::vector<T*>& tiles) {
61 size_t count = 0; 53 size_t count = 0;
62 for (const auto& tile : tiles) { 54 for (const auto& tile : tiles) {
63 if (tile->visible()) 55 if (tile->visible())
64 count++; 56 count++;
65 } 57 }
66 return count; 58 return count;
67 } 59 }
68 60
(...skipping 16 matching lines...) Expand all
85 ~TestStartPageSearchResult() override {} 77 ~TestStartPageSearchResult() override {}
86 78
87 private: 79 private:
88 DISALLOW_COPY_AND_ASSIGN(TestStartPageSearchResult); 80 DISALLOW_COPY_AND_ASSIGN(TestStartPageSearchResult);
89 }; 81 };
90 82
91 // Allows the same tests to run with different contexts: either an Ash-style 83 // Allows the same tests to run with different contexts: either an Ash-style
92 // root window or a desktop window tree host. 84 // root window or a desktop window tree host.
93 class AppListViewTestContext { 85 class AppListViewTestContext {
94 public: 86 public:
95 AppListViewTestContext(int test_type, gfx::NativeView parent); 87 explicit AppListViewTestContext(gfx::NativeView parent);
96 ~AppListViewTestContext(); 88 ~AppListViewTestContext();
97 89
98 // Test displaying the app list and performs a standard set of checks on its 90 // Test displaying the app list and performs a standard set of checks on its
99 // top level views. Then closes the window. 91 // top level views. Then closes the window.
100 void RunDisplayTest(); 92 void RunDisplayTest();
101 93
102 // Hides and reshows the app list with a folder open, expecting the main grid 94 // Hides and reshows the app list with a folder open, expecting the main grid
103 // view to be shown. 95 // view to be shown.
104 void RunReshowWithOpenFolderTest(); 96 void RunReshowWithOpenFolderTest();
105 97
(...skipping 19 matching lines...) Expand all
125 static void CheckView(views::View* subview); 117 static void CheckView(views::View* subview);
126 118
127 // Invoked when the Widget is closing, and the view it contains is about to 119 // Invoked when the Widget is closing, and the view it contains is about to
128 // be torn down. This only occurs in a run loop and will be used as a signal 120 // be torn down. This only occurs in a run loop and will be used as a signal
129 // to quit. 121 // to quit.
130 void NativeWidgetClosing() { 122 void NativeWidgetClosing() {
131 view_ = NULL; 123 view_ = NULL;
132 run_loop_->Quit(); 124 run_loop_->Quit();
133 } 125 }
134 126
135 // Whether the experimental "landscape" app launcher UI is being tested.
136 bool is_landscape() const {
137 return test_type_ == LANDSCAPE || test_type_ == EXPERIMENTAL;
138 }
139
140 private: 127 private:
141 // Switches the launcher to |state| and lays out to ensure all launcher pages 128 // Switches the launcher to |state| and lays out to ensure all launcher pages
142 // are in the correct position. Checks that the state is where it should be 129 // are in the correct position. Checks that the state is where it should be
143 // and returns false on failure. 130 // and returns false on failure.
144 bool SetAppListState(AppListModel::State state); 131 bool SetAppListState(AppListModel::State state);
145 132
146 // Returns true if all of the pages are in their correct position for |state|. 133 // Returns true if all of the pages are in their correct position for |state|.
147 bool IsStateShown(AppListModel::State state); 134 bool IsStateShown(AppListModel::State state);
148 135
149 // Shows the app list and waits until a paint occurs. 136 // Shows the app list and waits until a paint occurs.
150 void Show(); 137 void Show();
151 138
152 // Closes the app list. This sets |view_| to NULL. 139 // Closes the app list. This sets |view_| to NULL.
153 void Close(); 140 void Close();
154 141
155 // Checks the search box widget is at |expected| in the contents view's 142 // Checks the search box widget is at |expected| in the contents view's
156 // coordinate space. 143 // coordinate space.
157 bool CheckSearchBoxWidget(const gfx::Rect& expected); 144 bool CheckSearchBoxWidget(const gfx::Rect& expected);
158 145
159 // Gets the PaginationModel owned by |view_|. 146 // Gets the PaginationModel owned by |view_|.
160 PaginationModel* GetPaginationModel(); 147 PaginationModel* GetPaginationModel();
161 148
162 const TestType test_type_;
163 std::unique_ptr<base::RunLoop> run_loop_; 149 std::unique_ptr<base::RunLoop> run_loop_;
164 app_list::AppListView* view_; // Owned by native widget. 150 app_list::AppListView* view_; // Owned by native widget.
165 std::unique_ptr<app_list::test::AppListTestViewDelegate> delegate_; 151 std::unique_ptr<app_list::test::AppListTestViewDelegate> delegate_;
166 152
167 DISALLOW_COPY_AND_ASSIGN(AppListViewTestContext); 153 DISALLOW_COPY_AND_ASSIGN(AppListViewTestContext);
168 }; 154 };
169 155
170 // Extend the regular AppListTestViewDelegate to communicate back to the test 156 // Extend the regular AppListTestViewDelegate to communicate back to the test
171 // context. Note the test context doesn't simply inherit this, because the 157 // context. Note the test context doesn't simply inherit this, because the
172 // delegate is owned by the view. 158 // delegate is owned by the view.
173 class UnitTestViewDelegate : public app_list::test::AppListTestViewDelegate { 159 class UnitTestViewDelegate : public app_list::test::AppListTestViewDelegate {
174 public: 160 public:
175 explicit UnitTestViewDelegate(AppListViewTestContext* parent) 161 explicit UnitTestViewDelegate(AppListViewTestContext* parent)
176 : parent_(parent) {} 162 : parent_(parent) {}
177 163
178 // Overridden from app_list::AppListViewDelegate: 164 // Overridden from app_list::AppListViewDelegate:
179 bool ShouldCenterWindow() const override { 165 bool ShouldCenterWindow() const override {
180 return app_list::switches::IsCenteredAppListEnabled(); 166 return app_list::switches::IsCenteredAppListEnabled();
181 } 167 }
182 168
183 // Overridden from app_list::test::AppListTestViewDelegate: 169 // Overridden from app_list::test::AppListTestViewDelegate:
184 void ViewClosing() override { parent_->NativeWidgetClosing(); } 170 void ViewClosing() override { parent_->NativeWidgetClosing(); }
185 171
186 private: 172 private:
187 AppListViewTestContext* parent_; 173 AppListViewTestContext* parent_;
188 174
189 DISALLOW_COPY_AND_ASSIGN(UnitTestViewDelegate); 175 DISALLOW_COPY_AND_ASSIGN(UnitTestViewDelegate);
190 }; 176 };
191 177
192 AppListViewTestContext::AppListViewTestContext(int test_type, 178 AppListViewTestContext::AppListViewTestContext(gfx::NativeView parent) {
193 gfx::NativeView parent)
194 : test_type_(static_cast<TestType>(test_type)) {
195 switch (test_type_) {
196 case NORMAL:
197 base::CommandLine::ForCurrentProcess()->AppendSwitch(
198 switches::kDisableExperimentalAppList);
199 break;
200 case LANDSCAPE:
201 base::CommandLine::ForCurrentProcess()->AppendSwitch(
202 switches::kDisableExperimentalAppList);
203 base::CommandLine::ForCurrentProcess()->AppendSwitch(
204 switches::kEnableCenteredAppList);
205 break;
206 case EXPERIMENTAL:
207 base::CommandLine::ForCurrentProcess()->AppendSwitch(
208 switches::kEnableExperimentalAppList);
209 break;
210 default:
211 NOTREACHED();
212 break;
213 }
214
215 delegate_.reset(new UnitTestViewDelegate(this)); 179 delegate_.reset(new UnitTestViewDelegate(this));
216 view_ = new app_list::AppListView(delegate_.get()); 180 view_ = new app_list::AppListView(delegate_.get());
217 181
218 // Initialize centered around a point that ensures the window is wholly shown. 182 // Initialize centered around a point that ensures the window is wholly shown.
219 view_->InitAsBubbleAtFixedLocation(parent, 183 view_->InitAsBubbleAtFixedLocation(parent,
220 0, 184 0,
221 gfx::Point(300, 300), 185 gfx::Point(300, 300),
222 views::BubbleBorder::FLOAT, 186 views::BubbleBorder::FLOAT,
223 false /* border_accepts_events */); 187 false /* border_accepts_events */);
224 } 188 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 void AppListViewTestContext::RunDisplayTest() { 261 void AppListViewTestContext::RunDisplayTest() {
298 EXPECT_FALSE(view_->GetWidget()->IsVisible()); 262 EXPECT_FALSE(view_->GetWidget()->IsVisible());
299 EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 263 EXPECT_EQ(-1, GetPaginationModel()->total_pages());
300 delegate_->GetTestModel()->PopulateApps(kInitialItems); 264 delegate_->GetTestModel()->PopulateApps(kInitialItems);
301 265
302 Show(); 266 Show();
303 267
304 // Explicitly enforce the exact dimensions of the app list. Feel free to 268 // Explicitly enforce the exact dimensions of the app list. Feel free to
305 // change these if you need to (they are just here to prevent against 269 // change these if you need to (they are just here to prevent against
306 // accidental changes to the window size). 270 // accidental changes to the window size).
307 switch (test_type_) { 271 EXPECT_EQ("768x570", view_->bounds().size().ToString());
308 case NORMAL:
309 EXPECT_EQ("400x500", view_->bounds().size().ToString());
310 break;
311 case LANDSCAPE:
312 // NOTE: Height should not exceed 402, because otherwise there might not
313 // be enough space to accomodate the virtual keyboard. (LANDSCAPE mode is
314 // enabled by default when the virtual keyboard is enabled.)
315 EXPECT_EQ("576x402", view_->bounds().size().ToString());
316 break;
317 case EXPERIMENTAL:
318 EXPECT_EQ("768x570", view_->bounds().size().ToString());
319 break;
320 default:
321 NOTREACHED();
322 break;
323 }
324 272
325 if (is_landscape()) 273 EXPECT_EQ(2, GetPaginationModel()->total_pages());
326 EXPECT_EQ(2, GetPaginationModel()->total_pages());
327 else
328 EXPECT_EQ(3, GetPaginationModel()->total_pages());
329 EXPECT_EQ(0, GetPaginationModel()->selected_page()); 274 EXPECT_EQ(0, GetPaginationModel()->selected_page());
330 275
331 // Checks on the main view. 276 // Checks on the main view.
332 AppListMainView* main_view = view_->app_list_main_view(); 277 AppListMainView* main_view = view_->app_list_main_view();
333 EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 278 EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
334 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); 279 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view()));
335 280
336 AppListModel::State expected = test_type_ == EXPERIMENTAL 281 AppListModel::State expected = AppListModel::STATE_START;
337 ? AppListModel::STATE_START
338 : AppListModel::STATE_APPS;
339 EXPECT_TRUE(main_view->contents_view()->IsStateActive(expected)); 282 EXPECT_TRUE(main_view->contents_view()->IsStateActive(expected));
340 EXPECT_EQ(expected, delegate_->GetTestModel()->state()); 283 EXPECT_EQ(expected, delegate_->GetTestModel()->state());
341 284
342 Close(); 285 Close();
343 } 286 }
344 287
345 void AppListViewTestContext::RunReshowWithOpenFolderTest() { 288 void AppListViewTestContext::RunReshowWithOpenFolderTest() {
346 EXPECT_FALSE(view_->GetWidget()->IsVisible()); 289 EXPECT_FALSE(view_->GetWidget()->IsVisible());
347 EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 290 EXPECT_EQ(-1, GetPaginationModel()->total_pages());
348 291
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 323
381 // The main grid view should be showing after a reshow. 324 // The main grid view should be showing after a reshow.
382 EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 325 EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
383 EXPECT_NO_FATAL_FAILURE(CheckView(container_view->apps_grid_view())); 326 EXPECT_NO_FATAL_FAILURE(CheckView(container_view->apps_grid_view()));
384 EXPECT_FALSE(container_view->app_list_folder_view()->visible()); 327 EXPECT_FALSE(container_view->app_list_folder_view()->visible());
385 328
386 Close(); 329 Close();
387 } 330 }
388 331
389 void AppListViewTestContext::RunBackTest() { 332 void AppListViewTestContext::RunBackTest() {
390 if (test_type_ != EXPERIMENTAL) {
391 Close();
392 return;
393 }
394
395 EXPECT_FALSE(view_->GetWidget()->IsVisible()); 333 EXPECT_FALSE(view_->GetWidget()->IsVisible());
396 EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 334 EXPECT_EQ(-1, GetPaginationModel()->total_pages());
397 335
398 Show(); 336 Show();
399 337
400 AppListMainView* main_view = view_->app_list_main_view(); 338 AppListMainView* main_view = view_->app_list_main_view();
401 ContentsView* contents_view = main_view->contents_view(); 339 ContentsView* contents_view = main_view->contents_view();
402 SearchBoxView* search_box_view = main_view->search_box_view(); 340 SearchBoxView* search_box_view = main_view->search_box_view();
403 341
404 // Show the apps grid. 342 // Show the apps grid.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 model->PopulateApps(3); 388 model->PopulateApps(3);
451 389
452 Show(); 390 Show();
453 391
454 AppListMainView* main_view = view_->app_list_main_view(); 392 AppListMainView* main_view = view_->app_list_main_view();
455 StartPageView* start_page_view = 393 StartPageView* start_page_view =
456 main_view->contents_view()->start_page_view(); 394 main_view->contents_view()->start_page_view();
457 // Checks on the main view. 395 // Checks on the main view.
458 EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 396 EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
459 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); 397 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view()));
460 if (test_type_ == EXPERIMENTAL) { 398 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
461 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
462 399
463 // Show the start page view. 400 // Show the start page view.
464 EXPECT_TRUE(SetAppListState(AppListModel::STATE_START)); 401 EXPECT_TRUE(SetAppListState(AppListModel::STATE_START));
465 gfx::Size view_size(view_->GetPreferredSize()); 402 gfx::Size view_size(view_->GetPreferredSize());
466 403
467 // The "All apps" button should have its "parent background color" set 404 // The "All apps" button should have its "parent background color" set
468 // to the tiles container's background color. 405 // to the tiles container's background color.
469 TileItemView* all_apps_button = start_page_view->all_apps_button(); 406 TileItemView* all_apps_button = start_page_view->all_apps_button();
470 EXPECT_TRUE(all_apps_button->visible()); 407 EXPECT_TRUE(all_apps_button->visible());
471 EXPECT_EQ(kLabelBackgroundColor, 408 EXPECT_EQ(kLabelBackgroundColor, all_apps_button->parent_background_color());
472 all_apps_button->parent_background_color());
473 409
474 // Simulate clicking the "All apps" button. Check that we navigate to the 410 // Simulate clicking the "All apps" button. Check that we navigate to the
475 // apps grid view. 411 // apps grid view.
476 SimulateClick(all_apps_button); 412 SimulateClick(all_apps_button);
477 main_view->contents_view()->Layout(); 413 main_view->contents_view()->Layout();
478 EXPECT_TRUE(IsStateShown(AppListModel::STATE_APPS)); 414 EXPECT_TRUE(IsStateShown(AppListModel::STATE_APPS));
479 415
480 // Hiding and showing the search box should not affect the app list's 416 // Hiding and showing the search box should not affect the app list's
481 // preferred size. This is a regression test for http://crbug.com/386912. 417 // preferred size. This is a regression test for http://crbug.com/386912.
482 EXPECT_EQ(view_size.ToString(), view_->GetPreferredSize().ToString()); 418 EXPECT_EQ(view_size.ToString(), view_->GetPreferredSize().ToString());
483 419
484 // Check tiles hide and show on deletion and addition. 420 // Check tiles hide and show on deletion and addition.
485 EXPECT_TRUE(SetAppListState(AppListModel::STATE_START)); 421 EXPECT_TRUE(SetAppListState(AppListModel::STATE_START));
486 model->results()->Add(new TestStartPageSearchResult()); 422 model->results()->Add(new TestStartPageSearchResult());
487 start_page_view->UpdateForTesting(); 423 start_page_view->UpdateForTesting();
488 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views())); 424 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
489 model->results()->DeleteAll(); 425 model->results()->DeleteAll();
490 start_page_view->UpdateForTesting(); 426 start_page_view->UpdateForTesting();
491 EXPECT_EQ(0u, GetVisibleViews(start_page_view->tile_views())); 427 EXPECT_EQ(0u, GetVisibleViews(start_page_view->tile_views()));
492 428
493 // Tiles should not update when the start page is not active but should be 429 // Tiles should not update when the start page is not active but should be
494 // correct once the start page is shown. 430 // correct once the start page is shown.
495 EXPECT_TRUE(SetAppListState(AppListModel::STATE_APPS)); 431 EXPECT_TRUE(SetAppListState(AppListModel::STATE_APPS));
496 model->results()->Add(new TestStartPageSearchResult()); 432 model->results()->Add(new TestStartPageSearchResult());
497 start_page_view->UpdateForTesting(); 433 start_page_view->UpdateForTesting();
498 EXPECT_EQ(0u, GetVisibleViews(start_page_view->tile_views())); 434 EXPECT_EQ(0u, GetVisibleViews(start_page_view->tile_views()));
499 EXPECT_TRUE(SetAppListState(AppListModel::STATE_START)); 435 EXPECT_TRUE(SetAppListState(AppListModel::STATE_START));
500 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views())); 436 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
501 } else {
502 EXPECT_EQ(NULL, start_page_view);
503 }
504 437
505 Close(); 438 Close();
506 } 439 }
507 440
508 void AppListViewTestContext::RunPageSwitchingAnimationTest() { 441 void AppListViewTestContext::RunPageSwitchingAnimationTest() {
509 if (test_type_ == EXPERIMENTAL) { 442 Show();
510 Show();
511 443
512 AppListMainView* main_view = view_->app_list_main_view(); 444 AppListMainView* main_view = view_->app_list_main_view();
513 // Checks on the main view. 445 // Checks on the main view.
514 EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 446 EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
515 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); 447 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view()));
516 448
517 ContentsView* contents_view = main_view->contents_view(); 449 ContentsView* contents_view = main_view->contents_view();
518 450
519 contents_view->SetActiveState(AppListModel::STATE_START); 451 contents_view->SetActiveState(AppListModel::STATE_START);
520 contents_view->Layout(); 452 contents_view->Layout();
521 453
522 IsStateShown(AppListModel::STATE_START); 454 IsStateShown(AppListModel::STATE_START);
523 455
524 // Change pages. View should not have moved without Layout(). 456 // Change pages. View should not have moved without Layout().
525 contents_view->SetActiveState(AppListModel::STATE_SEARCH_RESULTS); 457 contents_view->SetActiveState(AppListModel::STATE_SEARCH_RESULTS);
526 IsStateShown(AppListModel::STATE_START); 458 IsStateShown(AppListModel::STATE_START);
527 459
528 // Change to a third page. This queues up the second animation behind the 460 // Change to a third page. This queues up the second animation behind the
529 // first. 461 // first.
530 contents_view->SetActiveState(AppListModel::STATE_APPS); 462 contents_view->SetActiveState(AppListModel::STATE_APPS);
531 IsStateShown(AppListModel::STATE_START); 463 IsStateShown(AppListModel::STATE_START);
532 464
533 // Call Layout(). Should jump to the third page. 465 // Call Layout(). Should jump to the third page.
534 contents_view->Layout(); 466 contents_view->Layout();
535 IsStateShown(AppListModel::STATE_APPS); 467 IsStateShown(AppListModel::STATE_APPS);
536 }
537 468
538 Close(); 469 Close();
539 } 470 }
540 471
541 void AppListViewTestContext::RunProfileChangeTest() { 472 void AppListViewTestContext::RunProfileChangeTest() {
542 EXPECT_FALSE(view_->GetWidget()->IsVisible()); 473 EXPECT_FALSE(view_->GetWidget()->IsVisible());
543 EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 474 EXPECT_EQ(-1, GetPaginationModel()->total_pages());
544 delegate_->GetTestModel()->PopulateApps(kInitialItems); 475 delegate_->GetTestModel()->PopulateApps(kInitialItems);
545 476
546 Show(); 477 Show();
547 478
548 if (is_landscape()) 479 EXPECT_EQ(2, GetPaginationModel()->total_pages());
549 EXPECT_EQ(2, GetPaginationModel()->total_pages());
550 else
551 EXPECT_EQ(3, GetPaginationModel()->total_pages());
552 480
553 // Change the profile. The original model needs to be kept alive for 481 // Change the profile. The original model needs to be kept alive for
554 // observers to unregister themselves. 482 // observers to unregister themselves.
555 std::unique_ptr<AppListTestModel> original_test_model( 483 std::unique_ptr<AppListTestModel> original_test_model(
556 delegate_->ReleaseTestModel()); 484 delegate_->ReleaseTestModel());
557 delegate_->set_next_profile_app_count(1); 485 delegate_->set_next_profile_app_count(1);
558 486
559 // The original ContentsView is destroyed here. 487 // The original ContentsView is destroyed here.
560 view_->SetProfileByPath(base::FilePath()); 488 view_->SetProfileByPath(base::FilePath());
561 EXPECT_EQ(1, GetPaginationModel()->total_pages()); 489 EXPECT_EQ(1, GetPaginationModel()->total_pages());
562 490
563 StartPageView* start_page_view = 491 StartPageView* start_page_view =
564 view_->app_list_main_view()->contents_view()->start_page_view(); 492 view_->app_list_main_view()->contents_view()->start_page_view();
565 if (test_type_ == EXPERIMENTAL) 493 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
566 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
567 else
568 EXPECT_EQ(NULL, start_page_view);
569 494
570 // New model updates should be processed by the start page view. 495 // New model updates should be processed by the start page view.
571 delegate_->GetTestModel()->results()->Add(new TestStartPageSearchResult()); 496 delegate_->GetTestModel()->results()->Add(new TestStartPageSearchResult());
572 if (test_type_ == EXPERIMENTAL) { 497 start_page_view->UpdateForTesting();
573 start_page_view->UpdateForTesting(); 498 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
574 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
575 }
576 499
577 // Old model updates should be ignored. 500 // Old model updates should be ignored.
578 original_test_model->results()->Add(new TestStartPageSearchResult()); 501 original_test_model->results()->Add(new TestStartPageSearchResult());
579 original_test_model->results()->Add(new TestStartPageSearchResult()); 502 original_test_model->results()->Add(new TestStartPageSearchResult());
580 if (test_type_ == EXPERIMENTAL) { 503 start_page_view->UpdateForTesting();
581 start_page_view->UpdateForTesting(); 504 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
582 EXPECT_EQ(1u, GetVisibleViews(start_page_view->tile_views()));
583 }
584 505
585 Close(); 506 Close();
586 } 507 }
587 508
588 void AppListViewTestContext::RunSearchResultsTest() { 509 void AppListViewTestContext::RunSearchResultsTest() {
589 EXPECT_FALSE(view_->GetWidget()->IsVisible()); 510 EXPECT_FALSE(view_->GetWidget()->IsVisible());
590 EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 511 EXPECT_EQ(-1, GetPaginationModel()->total_pages());
591 AppListTestModel* model = delegate_->GetTestModel(); 512 AppListTestModel* model = delegate_->GetTestModel();
592 model->PopulateApps(3); 513 model->PopulateApps(3);
593 514
(...skipping 10 matching lines...) Expand all
604 525
605 EXPECT_TRUE(IsStateShown(AppListModel::STATE_SEARCH_RESULTS)); 526 EXPECT_TRUE(IsStateShown(AppListModel::STATE_SEARCH_RESULTS));
606 527
607 // Hide the search results. 528 // Hide the search results.
608 contents_view->ShowSearchResults(false); 529 contents_view->ShowSearchResults(false);
609 contents_view->Layout(); 530 contents_view->Layout();
610 531
611 // Check that we return to the page that we were on before the search. 532 // Check that we return to the page that we were on before the search.
612 EXPECT_TRUE(IsStateShown(AppListModel::STATE_APPS)); 533 EXPECT_TRUE(IsStateShown(AppListModel::STATE_APPS));
613 534
614 if (test_type_ == EXPERIMENTAL) { 535 // Check that typing into the search box triggers the search page.
615 // Check that typing into the search box triggers the search page. 536 EXPECT_TRUE(SetAppListState(AppListModel::STATE_START));
616 EXPECT_TRUE(SetAppListState(AppListModel::STATE_START)); 537 view_->Layout();
617 view_->Layout(); 538 EXPECT_TRUE(IsStateShown(AppListModel::STATE_START));
618 EXPECT_TRUE(IsStateShown(AppListModel::STATE_START));
619 539
620 base::string16 search_text = base::UTF8ToUTF16("test"); 540 base::string16 search_text = base::UTF8ToUTF16("test");
621 main_view->search_box_view()->search_box()->SetText(base::string16()); 541 main_view->search_box_view()->search_box()->SetText(base::string16());
622 main_view->search_box_view()->search_box()->InsertText(search_text); 542 main_view->search_box_view()->search_box()->InsertText(search_text);
623 // Check that the current search is using |search_text|. 543 // Check that the current search is using |search_text|.
624 EXPECT_EQ(search_text, delegate_->GetTestModel()->search_box()->text()); 544 EXPECT_EQ(search_text, delegate_->GetTestModel()->search_box()->text());
625 EXPECT_EQ(search_text, main_view->search_box_view()->search_box()->text()); 545 EXPECT_EQ(search_text, main_view->search_box_view()->search_box()->text());
626 contents_view->Layout(); 546 contents_view->Layout();
627 EXPECT_TRUE( 547 EXPECT_TRUE(contents_view->IsStateActive(AppListModel::STATE_SEARCH_RESULTS));
628 contents_view->IsStateActive(AppListModel::STATE_SEARCH_RESULTS)); 548 EXPECT_TRUE(CheckSearchBoxWidget(contents_view->GetDefaultSearchBoxBounds()));
629 EXPECT_TRUE(
630 CheckSearchBoxWidget(contents_view->GetDefaultSearchBoxBounds()));
631 549
632 // Check that typing into the search box triggers the search page. 550 // Check that typing into the search box triggers the search page.
633 EXPECT_TRUE(SetAppListState(AppListModel::STATE_APPS)); 551 EXPECT_TRUE(SetAppListState(AppListModel::STATE_APPS));
634 contents_view->Layout(); 552 contents_view->Layout();
635 EXPECT_TRUE(IsStateShown(AppListModel::STATE_APPS)); 553 EXPECT_TRUE(IsStateShown(AppListModel::STATE_APPS));
636 EXPECT_TRUE( 554 EXPECT_TRUE(CheckSearchBoxWidget(contents_view->GetDefaultSearchBoxBounds()));
637 CheckSearchBoxWidget(contents_view->GetDefaultSearchBoxBounds()));
638 555
639 base::string16 new_search_text = base::UTF8ToUTF16("apple"); 556 base::string16 new_search_text = base::UTF8ToUTF16("apple");
640 main_view->search_box_view()->search_box()->SetText(base::string16()); 557 main_view->search_box_view()->search_box()->SetText(base::string16());
641 main_view->search_box_view()->search_box()->InsertText(new_search_text); 558 main_view->search_box_view()->search_box()->InsertText(new_search_text);
642 // Check that the current search is using |new_search_text|. 559 // Check that the current search is using |new_search_text|.
643 EXPECT_EQ(new_search_text, delegate_->GetTestModel()->search_box()->text()); 560 EXPECT_EQ(new_search_text, delegate_->GetTestModel()->search_box()->text());
644 EXPECT_EQ(new_search_text, 561 EXPECT_EQ(new_search_text,
645 main_view->search_box_view()->search_box()->text()); 562 main_view->search_box_view()->search_box()->text());
646 contents_view->Layout(); 563 contents_view->Layout();
647 EXPECT_TRUE(IsStateShown(AppListModel::STATE_SEARCH_RESULTS)); 564 EXPECT_TRUE(IsStateShown(AppListModel::STATE_SEARCH_RESULTS));
648 EXPECT_TRUE( 565 EXPECT_TRUE(CheckSearchBoxWidget(contents_view->GetDefaultSearchBoxBounds()));
649 CheckSearchBoxWidget(contents_view->GetDefaultSearchBoxBounds()));
650 }
651 566
652 Close(); 567 Close();
653 } 568 }
654 569
655 void AppListViewTestContext::RunAppListOverlayTest() { 570 void AppListViewTestContext::RunAppListOverlayTest() {
656 Show(); 571 Show();
657 572
658 AppListMainView* main_view = view_->app_list_main_view(); 573 AppListMainView* main_view = view_->app_list_main_view();
659 SearchBoxView* search_box_view = main_view->search_box_view(); 574 SearchBoxView* search_box_view = main_view->search_box_view();
660 575
661 // The search box should not be enabled when the app list overlay is shown. 576 // The search box should not be enabled when the app list overlay is shown.
662 view_->SetAppListOverlayVisible(true); 577 view_->SetAppListOverlayVisible(true);
663 EXPECT_FALSE(search_box_view->enabled()); 578 EXPECT_FALSE(search_box_view->enabled());
664 579
665 // The search box should be refocused when the app list overlay is hidden. 580 // The search box should be refocused when the app list overlay is hidden.
666 view_->SetAppListOverlayVisible(false); 581 view_->SetAppListOverlayVisible(false);
667 EXPECT_TRUE(search_box_view->enabled()); 582 EXPECT_TRUE(search_box_view->enabled());
668 EXPECT_EQ(search_box_view->search_box(), 583 EXPECT_EQ(search_box_view->search_box(),
669 view_->GetWidget()->GetFocusManager()->GetFocusedView()); 584 view_->GetWidget()->GetFocusManager()->GetFocusedView());
670 585
671 Close(); 586 Close();
672 } 587 }
673 588
674 class AppListViewTestAura : public views::ViewsTestBase, 589 class AppListViewTestAura : public views::ViewsTestBase {
675 public ::testing::WithParamInterface<int> {
676 public: 590 public:
677 AppListViewTestAura() {} 591 AppListViewTestAura() {}
678 virtual ~AppListViewTestAura() {} 592 ~AppListViewTestAura() override {}
679 593
680 // testing::Test overrides: 594 // testing::Test overrides:
681 void SetUp() override { 595 void SetUp() override {
682 views::ViewsTestBase::SetUp(); 596 views::ViewsTestBase::SetUp();
683 597
684 // On Ash (only) the app list is placed into an aura::Window "container", 598 // On Ash (only) the app list is placed into an aura::Window "container",
685 // which is also used to determine the context. In tests, use the ash root 599 // which is also used to determine the context. In tests, use the ash root
686 // window as the parent. This only works on aura where the root window is a 600 // window as the parent. This only works on aura where the root window is a
687 // NativeView as well as a NativeWindow. 601 // NativeView as well as a NativeWindow.
688 gfx::NativeView container = NULL; 602 gfx::NativeView container = NULL;
689 #if defined(USE_AURA) 603 #if defined(USE_AURA)
690 container = GetContext(); 604 container = GetContext();
691 #endif 605 #endif
692 606
693 test_context_.reset(new AppListViewTestContext(GetParam(), container)); 607 test_context_.reset(new AppListViewTestContext(container));
694 } 608 }
695 609
696 void TearDown() override { 610 void TearDown() override {
697 test_context_.reset(); 611 test_context_.reset();
698 views::ViewsTestBase::TearDown(); 612 views::ViewsTestBase::TearDown();
699 } 613 }
700 614
701 protected: 615 protected:
702 std::unique_ptr<AppListViewTestContext> test_context_; 616 std::unique_ptr<AppListViewTestContext> test_context_;
703 617
704 private: 618 private:
705 DISALLOW_COPY_AND_ASSIGN(AppListViewTestAura); 619 DISALLOW_COPY_AND_ASSIGN(AppListViewTestAura);
706 }; 620 };
707 621
708 class AppListViewTestDesktop : public views::ViewsTestBase, 622 class AppListViewTestDesktop : public views::ViewsTestBase {
709 public ::testing::WithParamInterface<int> {
710 public: 623 public:
711 AppListViewTestDesktop() {} 624 AppListViewTestDesktop() {}
712 virtual ~AppListViewTestDesktop() {} 625 ~AppListViewTestDesktop() override {}
713 626
714 // testing::Test overrides: 627 // testing::Test overrides:
715 void SetUp() override { 628 void SetUp() override {
716 set_views_delegate(base::MakeUnique<AppListViewTestViewsDelegate>(this)); 629 set_views_delegate(base::MakeUnique<AppListViewTestViewsDelegate>(this));
717 views::ViewsTestBase::SetUp(); 630 views::ViewsTestBase::SetUp();
718 test_context_.reset(new AppListViewTestContext(GetParam(), NULL)); 631 test_context_.reset(new AppListViewTestContext(NULL));
719 } 632 }
720 633
721 void TearDown() override { 634 void TearDown() override {
722 test_context_.reset(); 635 test_context_.reset();
723 views::ViewsTestBase::TearDown(); 636 views::ViewsTestBase::TearDown();
724 } 637 }
725 638
726 protected: 639 protected:
727 std::unique_ptr<AppListViewTestContext> test_context_; 640 std::unique_ptr<AppListViewTestContext> test_context_;
728 641
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 params->context = parent_->GetContext(); 677 params->context = parent_->GetContext();
765 #elif defined(USE_AURA) 678 #elif defined(USE_AURA)
766 if (params->parent == NULL && params->context == NULL && !params->child) 679 if (params->parent == NULL && params->context == NULL && !params->child)
767 params->native_widget = new views::DesktopNativeWidgetAura(delegate); 680 params->native_widget = new views::DesktopNativeWidgetAura(delegate);
768 #endif 681 #endif
769 } 682 }
770 683
771 } // namespace 684 } // namespace
772 685
773 // Tests showing the app list with basic test model in an ash-style root window. 686 // Tests showing the app list with basic test model in an ash-style root window.
774 TEST_P(AppListViewTestAura, Display) { 687 TEST_F(AppListViewTestAura, Display) {
775 EXPECT_NO_FATAL_FAILURE(test_context_->RunDisplayTest()); 688 EXPECT_NO_FATAL_FAILURE(test_context_->RunDisplayTest());
776 } 689 }
777 690
778 // Tests showing the app list on the desktop. Note on ChromeOS, this will still 691 // Tests showing the app list on the desktop. Note on ChromeOS, this will still
779 // use the regular root window. 692 // use the regular root window.
780 TEST_P(AppListViewTestDesktop, Display) { 693 TEST_F(AppListViewTestDesktop, Display) {
781 EXPECT_NO_FATAL_FAILURE(test_context_->RunDisplayTest()); 694 EXPECT_NO_FATAL_FAILURE(test_context_->RunDisplayTest());
782 } 695 }
783 696
784 // Tests that the main grid view is shown after hiding and reshowing the app 697 // Tests that the main grid view is shown after hiding and reshowing the app
785 // list with a folder view open. This is a regression test for crbug.com/357058. 698 // list with a folder view open. This is a regression test for crbug.com/357058.
786 TEST_P(AppListViewTestAura, ReshowWithOpenFolder) { 699 TEST_F(AppListViewTestAura, ReshowWithOpenFolder) {
787 EXPECT_NO_FATAL_FAILURE(test_context_->RunReshowWithOpenFolderTest()); 700 EXPECT_NO_FATAL_FAILURE(test_context_->RunReshowWithOpenFolderTest());
788 } 701 }
789 702
790 TEST_P(AppListViewTestDesktop, ReshowWithOpenFolder) { 703 TEST_F(AppListViewTestDesktop, ReshowWithOpenFolder) {
791 EXPECT_NO_FATAL_FAILURE(test_context_->RunReshowWithOpenFolderTest()); 704 EXPECT_NO_FATAL_FAILURE(test_context_->RunReshowWithOpenFolderTest());
792 } 705 }
793 706
794 // Tests that the start page view operates correctly. 707 // Tests that the start page view operates correctly.
795 TEST_P(AppListViewTestAura, StartPageTest) { 708 TEST_F(AppListViewTestAura, StartPageTest) {
796 EXPECT_NO_FATAL_FAILURE(test_context_->RunStartPageTest()); 709 EXPECT_NO_FATAL_FAILURE(test_context_->RunStartPageTest());
797 } 710 }
798 711
799 TEST_P(AppListViewTestDesktop, StartPageTest) { 712 TEST_F(AppListViewTestDesktop, StartPageTest) {
800 EXPECT_NO_FATAL_FAILURE(test_context_->RunStartPageTest()); 713 EXPECT_NO_FATAL_FAILURE(test_context_->RunStartPageTest());
801 } 714 }
802 715
803 // Tests that the start page view operates correctly. 716 // Tests that the start page view operates correctly.
804 TEST_P(AppListViewTestAura, PageSwitchingAnimationTest) { 717 TEST_F(AppListViewTestAura, PageSwitchingAnimationTest) {
805 EXPECT_NO_FATAL_FAILURE(test_context_->RunPageSwitchingAnimationTest()); 718 EXPECT_NO_FATAL_FAILURE(test_context_->RunPageSwitchingAnimationTest());
806 } 719 }
807 720
808 TEST_P(AppListViewTestDesktop, PageSwitchingAnimationTest) { 721 TEST_F(AppListViewTestDesktop, PageSwitchingAnimationTest) {
809 EXPECT_NO_FATAL_FAILURE(test_context_->RunPageSwitchingAnimationTest()); 722 EXPECT_NO_FATAL_FAILURE(test_context_->RunPageSwitchingAnimationTest());
810 } 723 }
811 724
812 // Tests that the profile changes operate correctly. 725 // Tests that the profile changes operate correctly.
813 TEST_P(AppListViewTestAura, ProfileChangeTest) { 726 TEST_F(AppListViewTestAura, ProfileChangeTest) {
814 EXPECT_NO_FATAL_FAILURE(test_context_->RunProfileChangeTest()); 727 EXPECT_NO_FATAL_FAILURE(test_context_->RunProfileChangeTest());
815 } 728 }
816 729
817 TEST_P(AppListViewTestDesktop, ProfileChangeTest) { 730 TEST_F(AppListViewTestDesktop, ProfileChangeTest) {
818 EXPECT_NO_FATAL_FAILURE(test_context_->RunProfileChangeTest()); 731 EXPECT_NO_FATAL_FAILURE(test_context_->RunProfileChangeTest());
819 } 732 }
820 733
821 // Tests that the correct views are displayed for showing search results. 734 // Tests that the correct views are displayed for showing search results.
822 TEST_P(AppListViewTestAura, SearchResultsTest) { 735 TEST_F(AppListViewTestAura, SearchResultsTest) {
823 EXPECT_NO_FATAL_FAILURE(test_context_->RunSearchResultsTest()); 736 EXPECT_NO_FATAL_FAILURE(test_context_->RunSearchResultsTest());
824 } 737 }
825 738
826 TEST_P(AppListViewTestDesktop, SearchResultsTest) { 739 TEST_F(AppListViewTestDesktop, SearchResultsTest) {
827 EXPECT_NO_FATAL_FAILURE(test_context_->RunSearchResultsTest()); 740 EXPECT_NO_FATAL_FAILURE(test_context_->RunSearchResultsTest());
828 } 741 }
829 742
830 // Tests that the back button navigates through the app list correctly. 743 // Tests that the back button navigates through the app list correctly.
831 TEST_P(AppListViewTestAura, BackTest) { 744 TEST_F(AppListViewTestAura, BackTest) {
832 EXPECT_NO_FATAL_FAILURE(test_context_->RunBackTest()); 745 EXPECT_NO_FATAL_FAILURE(test_context_->RunBackTest());
833 } 746 }
834 747
835 TEST_P(AppListViewTestDesktop, BackTest) { 748 TEST_F(AppListViewTestDesktop, BackTest) {
836 EXPECT_NO_FATAL_FAILURE(test_context_->RunBackTest()); 749 EXPECT_NO_FATAL_FAILURE(test_context_->RunBackTest());
837 } 750 }
838 751
839 // Tests that the correct views are displayed for showing search results. 752 // Tests that the correct views are displayed for showing search results.
840 TEST_P(AppListViewTestAura, AppListOverlayTest) { 753 TEST_F(AppListViewTestAura, AppListOverlayTest) {
841 EXPECT_NO_FATAL_FAILURE(test_context_->RunAppListOverlayTest()); 754 EXPECT_NO_FATAL_FAILURE(test_context_->RunAppListOverlayTest());
842 } 755 }
843 756
844 TEST_P(AppListViewTestDesktop, AppListOverlayTest) { 757 TEST_F(AppListViewTestDesktop, AppListOverlayTest) {
845 EXPECT_NO_FATAL_FAILURE(test_context_->RunAppListOverlayTest()); 758 EXPECT_NO_FATAL_FAILURE(test_context_->RunAppListOverlayTest());
846 } 759 }
847 760
848 #if defined(USE_AURA)
849 INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance,
850 AppListViewTestAura,
851 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END));
852 #endif
853
854 INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance,
855 AppListViewTestDesktop,
856 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END));
857
858 } // namespace test 761 } // namespace test
859 } // namespace app_list 762 } // namespace app_list
OLDNEW
« no previous file with comments | « ui/app_list/app_list_switches.cc ('k') | ui/app_list/views/search_result_page_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698