Index: ui/app_list/views/app_list_view_unittest.cc |
diff --git a/ui/app_list/views/app_list_view_unittest.cc b/ui/app_list/views/app_list_view_unittest.cc |
index 280331c0bb5f0d800c1f4097c81c08a36ab121b6..a01c10eeba34a73bb6d12eefca9d23132df570a9 100644 |
--- a/ui/app_list/views/app_list_view_unittest.cc |
+++ b/ui/app_list/views/app_list_view_unittest.cc |
@@ -7,9 +7,11 @@ |
#include "base/command_line.h" |
#include "base/run_loop.h" |
#include "base/strings/string_util.h" |
+#include "base/strings/utf_string_conversions.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/app_list/app_list_switches.h" |
#include "ui/app_list/pagination_model.h" |
+#include "ui/app_list/search_box_model.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" |
@@ -25,6 +27,7 @@ |
#include "ui/app_list/views/tile_item_view.h" |
#include "ui/aura/test/aura_test_base.h" |
#include "ui/aura/window.h" |
+#include "ui/views/controls/textfield/textfield.h" |
#include "ui/views/test/views_test_base.h" |
#include "ui/views/views_delegate.h" |
#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" |
@@ -104,6 +107,10 @@ class AppListViewTestContext { |
} |
private: |
+ // Switches the active launcher page in the contents view and lays out to |
+ // ensure all launcher pages are in the correct position. |
+ void ShowContentsViewPageAndVerify(int index); |
+ |
// Shows the app list and waits until a paint occurs. |
void Show(); |
@@ -187,6 +194,15 @@ void AppListViewTestContext::CheckView(views::View* subview) { |
EXPECT_TRUE(subview->IsDrawn()); |
} |
+void AppListViewTestContext::ShowContentsViewPageAndVerify(int index) { |
+ ContentsView* contents_view = view_->app_list_main_view()->contents_view(); |
+ contents_view->SetActivePage(index); |
+ contents_view->Layout(); |
+ for (int i = 0; i < contents_view->NumLauncherPages(); ++i) { |
+ EXPECT_EQ(i == index, IsViewAtOrigin(contents_view->GetPageView(i))); |
+ } |
+} |
+ |
void AppListViewTestContext::Show() { |
view_->GetWidget()->Show(); |
run_loop_.reset(new base::RunLoop); |
@@ -292,20 +308,14 @@ void AppListViewTestContext::RunStartPageTest() { |
EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view)); |
ContentsView* contents_view = main_view->contents_view(); |
- contents_view->SetActivePage(contents_view->GetPageIndexForNamedPage( |
+ ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage( |
ContentsView::NAMED_PAGE_START)); |
- contents_view->Layout(); |
EXPECT_FALSE(main_view->search_box_view()->visible()); |
- EXPECT_TRUE(IsViewAtOrigin(start_page_view)); |
- EXPECT_FALSE(IsViewAtOrigin(contents_view->apps_container_view())); |
EXPECT_EQ(3u, GetVisibleTileItemViews(start_page_view->tile_views())); |
- contents_view->SetActivePage( |
+ ShowContentsViewPageAndVerify( |
contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); |
- contents_view->Layout(); |
EXPECT_TRUE(main_view->search_box_view()->visible()); |
- EXPECT_FALSE(IsViewAtOrigin(start_page_view)); |
- EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view())); |
// Check tiles hide and show on deletion and addition. |
model->CreateAndAddItem("Test app"); |
@@ -422,7 +432,7 @@ void AppListViewTestContext::RunSearchResultsTest() { |
AppListMainView* main_view = view_->app_list_main_view(); |
ContentsView* contents_view = main_view->contents_view(); |
- contents_view->SetActivePage( |
+ ShowContentsViewPageAndVerify( |
contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); |
EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view())); |
EXPECT_TRUE(main_view->search_box_view()->visible()); |
@@ -459,6 +469,50 @@ void AppListViewTestContext::RunSearchResultsTest() { |
EXPECT_TRUE(main_view->search_box_view()->visible()); |
} |
+ if (test_type_ == EXPERIMENTAL) { |
+ // Check that typing into the dummy search box triggers the search page. |
+ base::string16 search_text = base::UTF8ToUTF16("test"); |
+ SearchBoxView* dummy_search_box = |
+ contents_view->start_page_view()->dummy_search_box_view(); |
+ EXPECT_TRUE(dummy_search_box->IsDrawn()); |
+ dummy_search_box->search_box()->InsertText(search_text); |
+ contents_view->Layout(); |
+ // Check that the current search is using |search_text|. |
+ EXPECT_EQ(search_text, delegate_->GetTestModel()->search_box()->text()); |
+ EXPECT_TRUE(contents_view->IsShowingSearchResults()); |
+ EXPECT_FALSE(dummy_search_box->IsDrawn()); |
+ EXPECT_TRUE(main_view->search_box_view()->visible()); |
+ EXPECT_EQ(search_text, main_view->search_box_view()->search_box()->text()); |
+ EXPECT_TRUE( |
+ contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START)); |
+ EXPECT_TRUE(IsViewAtOrigin(contents_view->start_page_view())); |
+ |
+ // Check that typing into the real search box triggers the search page. |
+ ShowContentsViewPageAndVerify( |
+ contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); |
+ EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view())); |
+ |
+ base::string16 new_search_text = base::UTF8ToUTF16("apple"); |
+ main_view->search_box_view()->search_box()->SetText(base::string16()); |
+ main_view->search_box_view()->search_box()->InsertText(new_search_text); |
+ // Check that the current search is using |search_text|. |
+ EXPECT_EQ(new_search_text, delegate_->GetTestModel()->search_box()->text()); |
+ EXPECT_EQ(new_search_text, |
+ main_view->search_box_view()->search_box()->text()); |
+ EXPECT_TRUE(contents_view->IsShowingSearchResults()); |
+ EXPECT_FALSE(dummy_search_box->IsDrawn()); |
+ EXPECT_TRUE(main_view->search_box_view()->visible()); |
+ EXPECT_TRUE(dummy_search_box->search_box()->text().empty()); |
+ |
+ // Check that the dummy search box is clear when reshowing the start page. |
+ ShowContentsViewPageAndVerify( |
+ contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); |
+ ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage( |
+ ContentsView::NAMED_PAGE_START)); |
+ EXPECT_TRUE(dummy_search_box->IsDrawn()); |
+ EXPECT_TRUE(dummy_search_box->search_box()->text().empty()); |
+ } |
+ |
Close(); |
} |