Chromium Code Reviews| OLD | NEW |
|---|---|
| 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" |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 36 namespace { | 36 namespace { |
| 37 | 37 |
| 38 enum TestType { | 38 enum TestType { |
| 39 TEST_TYPE_START = 0, | 39 TEST_TYPE_START = 0, |
| 40 NORMAL = TEST_TYPE_START, | 40 NORMAL = TEST_TYPE_START, |
| 41 LANDSCAPE, | 41 LANDSCAPE, |
| 42 EXPERIMENTAL, | 42 EXPERIMENTAL, |
| 43 TEST_TYPE_END, | 43 TEST_TYPE_END, |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 bool IsViewAtOrigin(views::View* view) { | |
| 47 return view->bounds().origin().IsOrigin(); | |
| 48 } | |
| 49 | |
| 50 size_t GetVisibleTileItemViews(const std::vector<TileItemView*>& tiles) { | 46 size_t GetVisibleTileItemViews(const std::vector<TileItemView*>& tiles) { |
| 51 size_t count = 0; | 47 size_t count = 0; |
| 52 for (std::vector<TileItemView*>::const_iterator it = tiles.begin(); | 48 for (std::vector<TileItemView*>::const_iterator it = tiles.begin(); |
| 53 it != tiles.end(); | 49 it != tiles.end(); |
| 54 ++it) { | 50 ++it) { |
| 55 if ((*it)->visible()) | 51 if ((*it)->visible()) |
| 56 count++; | 52 count++; |
| 57 } | 53 } |
| 58 return count; | 54 return count; |
| 59 } | 55 } |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 199 EXPECT_TRUE(subview->parent()); | 195 EXPECT_TRUE(subview->parent()); |
| 200 EXPECT_TRUE(subview->visible()); | 196 EXPECT_TRUE(subview->visible()); |
| 201 EXPECT_TRUE(subview->IsDrawn()); | 197 EXPECT_TRUE(subview->IsDrawn()); |
| 202 } | 198 } |
| 203 | 199 |
| 204 void AppListViewTestContext::ShowContentsViewPageAndVerify(int index) { | 200 void AppListViewTestContext::ShowContentsViewPageAndVerify(int index) { |
| 205 ContentsView* contents_view = view_->app_list_main_view()->contents_view(); | 201 ContentsView* contents_view = view_->app_list_main_view()->contents_view(); |
| 206 contents_view->SetActivePage(index); | 202 contents_view->SetActivePage(index); |
| 207 contents_view->Layout(); | 203 contents_view->Layout(); |
| 208 for (int i = 0; i < contents_view->NumLauncherPages(); ++i) { | 204 for (int i = 0; i < contents_view->NumLauncherPages(); ++i) { |
| 209 EXPECT_EQ(i == index, IsViewAtOrigin(contents_view->GetPageView(i))); | 205 EXPECT_EQ(i == index, |
| 206 contents_view->GetDefaultContentsBounds() == | |
| 207 contents_view->GetPageView(i)->bounds()); | |
| 210 } | 208 } |
| 211 } | 209 } |
| 212 | 210 |
| 213 void AppListViewTestContext::Show() { | 211 void AppListViewTestContext::Show() { |
| 214 view_->GetWidget()->Show(); | 212 view_->GetWidget()->Show(); |
| 215 run_loop_.reset(new base::RunLoop); | 213 run_loop_.reset(new base::RunLoop); |
| 216 view_->SetNextPaintCallback(run_loop_->QuitClosure()); | 214 view_->SetNextPaintCallback(run_loop_->QuitClosure()); |
| 217 run_loop_->Run(); | 215 run_loop_->Run(); |
| 218 | 216 |
| 219 EXPECT_TRUE(view_->GetWidget()->IsVisible()); | 217 EXPECT_TRUE(view_->GetWidget()->IsVisible()); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 377 EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); | 375 EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); |
| 378 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); | 376 EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); |
| 379 | 377 |
| 380 ContentsView* contents_view = main_view->contents_view(); | 378 ContentsView* contents_view = main_view->contents_view(); |
| 381 // Pad the ContentsView with blank pages so we have at least 3 views. | 379 // Pad the ContentsView with blank pages so we have at least 3 views. |
| 382 while (contents_view->NumLauncherPages() < 3) | 380 while (contents_view->NumLauncherPages() < 3) |
| 383 contents_view->AddBlankPageForTesting(); | 381 contents_view->AddBlankPageForTesting(); |
| 384 | 382 |
| 385 contents_view->SetActivePage(0); | 383 contents_view->SetActivePage(0); |
| 386 contents_view->Layout(); | 384 contents_view->Layout(); |
| 387 EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0))); | 385 |
| 388 EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1))); | 386 const gfx::Rect expected_bounds = contents_view->GetDefaultContentsBounds(); |
| 389 EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2))); | 387 |
| 388 EXPECT_EQ(expected_bounds, contents_view->GetPageView(0)->bounds()); | |
| 389 EXPECT_NE(expected_bounds, contents_view->GetPageView(1)->bounds()); | |
| 390 EXPECT_NE(expected_bounds, contents_view->GetPageView(2)->bounds()); | |
| 390 | 391 |
| 391 // Change pages. View should not have moved without Layout(). | 392 // Change pages. View should not have moved without Layout(). |
| 392 contents_view->SetActivePage(1); | 393 contents_view->SetActivePage(1); |
| 393 EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0))); | 394 EXPECT_EQ(expected_bounds, contents_view->GetPageView(0)->bounds()); |
| 394 EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1))); | 395 EXPECT_NE(expected_bounds, contents_view->GetPageView(1)->bounds()); |
| 395 EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2))); | 396 EXPECT_NE(expected_bounds, contents_view->GetPageView(2)->bounds()); |
| 396 | 397 |
| 397 // Change to a third page. This queues up the second animation behind the | 398 // Change to a third page. This queues up the second animation behind the |
| 398 // first. | 399 // first. |
| 399 contents_view->SetActivePage(2); | 400 contents_view->SetActivePage(2); |
| 400 EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0))); | 401 EXPECT_EQ(expected_bounds, contents_view->GetPageView(0)->bounds()); |
| 401 EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1))); | 402 EXPECT_NE(expected_bounds, contents_view->GetPageView(1)->bounds()); |
| 402 EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2))); | 403 EXPECT_NE(expected_bounds, contents_view->GetPageView(2)->bounds()); |
| 403 | 404 |
| 404 // Call Layout(). Should jump to the third page. | 405 // Call Layout(). Should jump to the third page. |
| 405 contents_view->Layout(); | 406 contents_view->Layout(); |
| 406 EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(0))); | 407 EXPECT_NE(expected_bounds, contents_view->GetPageView(0)->bounds()); |
| 407 EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1))); | 408 EXPECT_NE(expected_bounds, contents_view->GetPageView(1)->bounds()); |
| 408 EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(2))); | 409 EXPECT_EQ(expected_bounds, contents_view->GetPageView(2)->bounds()); |
| 409 } | 410 } |
| 410 | 411 |
| 411 Close(); | 412 Close(); |
| 412 } | 413 } |
| 413 | 414 |
| 414 void AppListViewTestContext::RunProfileChangeTest() { | 415 void AppListViewTestContext::RunProfileChangeTest() { |
| 415 EXPECT_FALSE(view_->GetWidget()->IsVisible()); | 416 EXPECT_FALSE(view_->GetWidget()->IsVisible()); |
| 416 EXPECT_EQ(-1, GetPaginationModel()->total_pages()); | 417 EXPECT_EQ(-1, GetPaginationModel()->total_pages()); |
| 417 delegate_->GetTestModel()->PopulateApps(kInitialItems); | 418 delegate_->GetTestModel()->PopulateApps(kInitialItems); |
| 418 | 419 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 478 ShowContentsViewPageAndVerify( | 479 ShowContentsViewPageAndVerify( |
| 479 contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); | 480 contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); |
| 480 EXPECT_TRUE(main_view->search_box_view()->visible()); | 481 EXPECT_TRUE(main_view->search_box_view()->visible()); |
| 481 | 482 |
| 482 // Show the search results. | 483 // Show the search results. |
| 483 contents_view->ShowSearchResults(true); | 484 contents_view->ShowSearchResults(true); |
| 484 contents_view->Layout(); | 485 contents_view->Layout(); |
| 485 EXPECT_TRUE(contents_view->IsShowingSearchResults()); | 486 EXPECT_TRUE(contents_view->IsShowingSearchResults()); |
| 486 EXPECT_TRUE(main_view->search_box_view()->visible()); | 487 EXPECT_TRUE(main_view->search_box_view()->visible()); |
| 487 | 488 |
| 489 const gfx::Rect active_contents_bounds = | |
|
Matt Giuca
2014/10/24 03:21:40
Why not "default_contents_bounds"?
calamity
2014/10/24 06:13:07
Done.
| |
| 490 contents_view->GetDefaultContentsBounds(); | |
| 488 if (test_type_ == EXPERIMENTAL) { | 491 if (test_type_ == EXPERIMENTAL) { |
| 489 EXPECT_TRUE( | 492 EXPECT_TRUE( |
| 490 contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START)); | 493 contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START)); |
| 491 EXPECT_TRUE(IsViewAtOrigin(contents_view->start_page_view())); | 494 EXPECT_EQ(active_contents_bounds, |
| 495 contents_view->start_page_view()->bounds()); | |
| 492 } else { | 496 } else { |
| 493 EXPECT_TRUE(contents_view->IsNamedPageActive( | 497 EXPECT_TRUE(contents_view->IsNamedPageActive( |
| 494 ContentsView::NAMED_PAGE_SEARCH_RESULTS)); | 498 ContentsView::NAMED_PAGE_SEARCH_RESULTS)); |
| 495 EXPECT_TRUE(IsViewAtOrigin(contents_view->search_results_view())); | 499 EXPECT_EQ(active_contents_bounds, |
| 500 contents_view->search_results_view()->bounds()); | |
| 496 } | 501 } |
| 497 | 502 |
| 498 // Hide the search results. | 503 // Hide the search results. |
| 499 contents_view->ShowSearchResults(false); | 504 contents_view->ShowSearchResults(false); |
| 500 contents_view->Layout(); | 505 contents_view->Layout(); |
| 501 EXPECT_FALSE(contents_view->IsShowingSearchResults()); | 506 EXPECT_FALSE(contents_view->IsShowingSearchResults()); |
| 502 | 507 |
| 503 // Check that we return to the page that we were on before the search. | 508 // Check that we return to the page that we were on before the search. |
| 504 EXPECT_TRUE(contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_APPS)); | 509 EXPECT_TRUE(contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_APPS)); |
| 505 EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view())); | 510 EXPECT_EQ(active_contents_bounds, |
| 511 contents_view->apps_container_view()->bounds()); | |
| 506 EXPECT_TRUE(main_view->search_box_view()->visible()); | 512 EXPECT_TRUE(main_view->search_box_view()->visible()); |
| 507 | 513 |
| 508 if (test_type_ == EXPERIMENTAL) { | 514 if (test_type_ == EXPERIMENTAL) { |
| 509 ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage( | 515 ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage( |
| 510 ContentsView::NAMED_PAGE_START)); | 516 ContentsView::NAMED_PAGE_START)); |
| 511 | 517 |
| 512 // Check that typing into the dummy search box triggers the search page. | 518 // Check that typing into the dummy search box triggers the search page. |
| 513 base::string16 search_text = base::UTF8ToUTF16("test"); | 519 base::string16 search_text = base::UTF8ToUTF16("test"); |
| 514 SearchBoxView* dummy_search_box = | 520 SearchBoxView* dummy_search_box = |
| 515 contents_view->start_page_view()->dummy_search_box_view(); | 521 contents_view->start_page_view()->dummy_search_box_view(); |
| 516 EXPECT_TRUE(dummy_search_box->IsDrawn()); | 522 EXPECT_TRUE(dummy_search_box->IsDrawn()); |
| 517 dummy_search_box->search_box()->InsertText(search_text); | 523 dummy_search_box->search_box()->InsertText(search_text); |
| 518 contents_view->Layout(); | 524 contents_view->Layout(); |
| 519 // Check that the current search is using |search_text|. | 525 // Check that the current search is using |search_text|. |
| 520 EXPECT_EQ(search_text, delegate_->GetTestModel()->search_box()->text()); | 526 EXPECT_EQ(search_text, delegate_->GetTestModel()->search_box()->text()); |
| 521 EXPECT_TRUE(contents_view->IsShowingSearchResults()); | 527 EXPECT_TRUE(contents_view->IsShowingSearchResults()); |
| 522 EXPECT_FALSE(dummy_search_box->IsDrawn()); | 528 EXPECT_FALSE(dummy_search_box->IsDrawn()); |
| 523 EXPECT_TRUE(main_view->search_box_view()->visible()); | 529 EXPECT_TRUE(main_view->search_box_view()->visible()); |
| 524 EXPECT_EQ(search_text, main_view->search_box_view()->search_box()->text()); | 530 EXPECT_EQ(search_text, main_view->search_box_view()->search_box()->text()); |
| 525 EXPECT_TRUE( | 531 EXPECT_TRUE( |
| 526 contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START)); | 532 contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START)); |
| 527 EXPECT_TRUE(IsViewAtOrigin(contents_view->start_page_view())); | 533 EXPECT_EQ(active_contents_bounds, |
| 534 contents_view->start_page_view()->bounds()); | |
| 528 | 535 |
| 529 // Check that typing into the real search box triggers the search page. | 536 // Check that typing into the real search box triggers the search page. |
| 530 ShowContentsViewPageAndVerify( | 537 ShowContentsViewPageAndVerify( |
| 531 contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); | 538 contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); |
| 532 EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view())); | 539 EXPECT_EQ(active_contents_bounds, |
| 540 contents_view->apps_container_view()->bounds()); | |
| 533 | 541 |
| 534 base::string16 new_search_text = base::UTF8ToUTF16("apple"); | 542 base::string16 new_search_text = base::UTF8ToUTF16("apple"); |
| 535 main_view->search_box_view()->search_box()->SetText(base::string16()); | 543 main_view->search_box_view()->search_box()->SetText(base::string16()); |
| 536 main_view->search_box_view()->search_box()->InsertText(new_search_text); | 544 main_view->search_box_view()->search_box()->InsertText(new_search_text); |
| 537 // Check that the current search is using |search_text|. | 545 // Check that the current search is using |search_text|. |
| 538 EXPECT_EQ(new_search_text, delegate_->GetTestModel()->search_box()->text()); | 546 EXPECT_EQ(new_search_text, delegate_->GetTestModel()->search_box()->text()); |
| 539 EXPECT_EQ(new_search_text, | 547 EXPECT_EQ(new_search_text, |
| 540 main_view->search_box_view()->search_box()->text()); | 548 main_view->search_box_view()->search_box()->text()); |
| 541 EXPECT_TRUE(contents_view->IsShowingSearchResults()); | 549 EXPECT_TRUE(contents_view->IsShowingSearchResults()); |
| 542 EXPECT_FALSE(dummy_search_box->IsDrawn()); | 550 EXPECT_FALSE(dummy_search_box->IsDrawn()); |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 708 INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance, | 716 INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance, |
| 709 AppListViewTestAura, | 717 AppListViewTestAura, |
| 710 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); | 718 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); |
| 711 | 719 |
| 712 INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance, | 720 INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance, |
| 713 AppListViewTestDesktop, | 721 AppListViewTestDesktop, |
| 714 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); | 722 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); |
| 715 | 723 |
| 716 } // namespace test | 724 } // namespace test |
| 717 } // namespace app_list | 725 } // namespace app_list |
| OLD | NEW |