| 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
|
| deleted file mode 100644
|
| index 2ee50d4684dd227b454690ecd4d999eac5083dda..0000000000000000000000000000000000000000
|
| --- a/ui/app_list/views/app_list_view_unittest.cc
|
| +++ /dev/null
|
| @@ -1,718 +0,0 @@
|
| -// Copyright 2014 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_view.h"
|
| -
|
| -#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/test/test_search_result.h"
|
| -#include "ui/app_list/views/app_list_folder_view.h"
|
| -#include "ui/app_list/views/app_list_main_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_switcher_view.h"
|
| -#include "ui/app_list/views/contents_view.h"
|
| -#include "ui/app_list/views/search_box_view.h"
|
| -#include "ui/app_list/views/search_result_list_view.h"
|
| -#include "ui/app_list/views/start_page_view.h"
|
| -#include "ui/app_list/views/test/apps_grid_view_test_api.h"
|
| -#include "ui/app_list/views/tile_item_view.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"
|
| -
|
| -namespace app_list {
|
| -namespace test {
|
| -
|
| -namespace {
|
| -
|
| -enum TestType {
|
| - TEST_TYPE_START = 0,
|
| - NORMAL = TEST_TYPE_START,
|
| - LANDSCAPE,
|
| - EXPERIMENTAL,
|
| - TEST_TYPE_END,
|
| -};
|
| -
|
| -bool IsViewAtOrigin(views::View* view) {
|
| - return view->bounds().origin().IsOrigin();
|
| -}
|
| -
|
| -size_t GetVisibleTileItemViews(const std::vector<TileItemView*>& tiles) {
|
| - size_t count = 0;
|
| - for (std::vector<TileItemView*>::const_iterator it = tiles.begin();
|
| - it != tiles.end();
|
| - ++it) {
|
| - if ((*it)->visible())
|
| - count++;
|
| - }
|
| - return count;
|
| -}
|
| -
|
| -// Choose a set that is 3 regular app list pages and 2 landscape app list pages.
|
| -const int kInitialItems = 34;
|
| -
|
| -class TestTileSearchResult : public TestSearchResult {
|
| - public:
|
| - TestTileSearchResult() { set_display_type(DISPLAY_TILE); }
|
| - virtual ~TestTileSearchResult() {}
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(TestTileSearchResult);
|
| -};
|
| -
|
| -// Allows the same tests to run with different contexts: either an Ash-style
|
| -// root window or a desktop window tree host.
|
| -class AppListViewTestContext {
|
| - public:
|
| - AppListViewTestContext(int test_type, gfx::NativeView parent);
|
| - ~AppListViewTestContext();
|
| -
|
| - // Test displaying the app list and performs a standard set of checks on its
|
| - // top level views. Then closes the window.
|
| - void RunDisplayTest();
|
| -
|
| - // Hides and reshows the app list with a folder open, expecting the main grid
|
| - // view to be shown.
|
| - void RunReshowWithOpenFolderTest();
|
| -
|
| - // Tests displaying of the experimental app list and shows the start page.
|
| - void RunStartPageTest();
|
| -
|
| - // Tests switching rapidly between multiple pages of the launcher.
|
| - void RunPageSwitchingAnimationTest();
|
| -
|
| - // Tests changing the App List profile.
|
| - void RunProfileChangeTest();
|
| -
|
| - // Tests displaying of the search results.
|
| - void RunSearchResultsTest();
|
| -
|
| - // A standard set of checks on a view, e.g., ensuring it is drawn and visible.
|
| - static void CheckView(views::View* subview);
|
| -
|
| - // Invoked when the Widget is closing, and the view it contains is about to
|
| - // be torn down. This only occurs in a run loop and will be used as a signal
|
| - // to quit.
|
| - void NativeWidgetClosing() {
|
| - view_ = NULL;
|
| - run_loop_->Quit();
|
| - }
|
| -
|
| - // Whether the experimental "landscape" app launcher UI is being tested.
|
| - bool is_landscape() const {
|
| - return test_type_ == LANDSCAPE || test_type_ == EXPERIMENTAL;
|
| - }
|
| -
|
| - 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();
|
| -
|
| - // Closes the app list. This sets |view_| to NULL.
|
| - void Close();
|
| -
|
| - // Gets the PaginationModel owned by |view_|.
|
| - PaginationModel* GetPaginationModel();
|
| -
|
| - const TestType test_type_;
|
| - scoped_ptr<base::RunLoop> run_loop_;
|
| - app_list::AppListView* view_; // Owned by native widget.
|
| - scoped_ptr<app_list::test::AppListTestViewDelegate> delegate_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AppListViewTestContext);
|
| -};
|
| -
|
| -// Extend the regular AppListTestViewDelegate to communicate back to the test
|
| -// context. Note the test context doesn't simply inherit this, because the
|
| -// delegate is owned by the view.
|
| -class UnitTestViewDelegate : public app_list::test::AppListTestViewDelegate {
|
| - public:
|
| - UnitTestViewDelegate(AppListViewTestContext* parent) : parent_(parent) {}
|
| -
|
| - // Overridden from app_list::AppListViewDelegate:
|
| - virtual bool ShouldCenterWindow() const override {
|
| - return app_list::switches::IsCenteredAppListEnabled();
|
| - }
|
| -
|
| - // Overridden from app_list::test::AppListTestViewDelegate:
|
| - virtual void ViewClosing() override { parent_->NativeWidgetClosing(); }
|
| -
|
| - private:
|
| - AppListViewTestContext* parent_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(UnitTestViewDelegate);
|
| -};
|
| -
|
| -AppListViewTestContext::AppListViewTestContext(int test_type,
|
| - gfx::NativeView parent)
|
| - : test_type_(static_cast<TestType>(test_type)) {
|
| - switch (test_type_) {
|
| - case NORMAL:
|
| - break;
|
| - case LANDSCAPE:
|
| - base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| - switches::kEnableCenteredAppList);
|
| - break;
|
| - case EXPERIMENTAL:
|
| - base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| - switches::kEnableExperimentalAppList);
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| -
|
| - delegate_.reset(new UnitTestViewDelegate(this));
|
| - view_ = new app_list::AppListView(delegate_.get());
|
| -
|
| - // Initialize centered around a point that ensures the window is wholly shown.
|
| - view_->InitAsBubbleAtFixedLocation(parent,
|
| - 0,
|
| - gfx::Point(300, 300),
|
| - views::BubbleBorder::FLOAT,
|
| - false /* border_accepts_events */);
|
| -}
|
| -
|
| -AppListViewTestContext::~AppListViewTestContext() {
|
| - // The view observes the PaginationModel which is about to get destroyed, so
|
| - // if the view is not already deleted by the time this destructor is called,
|
| - // there will be problems.
|
| - EXPECT_FALSE(view_);
|
| -}
|
| -
|
| -// static
|
| -void AppListViewTestContext::CheckView(views::View* subview) {
|
| - ASSERT_TRUE(subview);
|
| - EXPECT_TRUE(subview->parent());
|
| - EXPECT_TRUE(subview->visible());
|
| - 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);
|
| - view_->SetNextPaintCallback(run_loop_->QuitClosure());
|
| - run_loop_->Run();
|
| -
|
| - EXPECT_TRUE(view_->GetWidget()->IsVisible());
|
| -}
|
| -
|
| -void AppListViewTestContext::Close() {
|
| - view_->GetWidget()->Close();
|
| - run_loop_.reset(new base::RunLoop);
|
| - run_loop_->Run();
|
| -
|
| - // |view_| should have been deleted and set to NULL via ViewClosing().
|
| - EXPECT_FALSE(view_);
|
| -}
|
| -
|
| -PaginationModel* AppListViewTestContext::GetPaginationModel() {
|
| - return view_->GetAppsPaginationModel();
|
| -}
|
| -
|
| -void AppListViewTestContext::RunDisplayTest() {
|
| - EXPECT_FALSE(view_->GetWidget()->IsVisible());
|
| - EXPECT_EQ(-1, GetPaginationModel()->total_pages());
|
| - delegate_->GetTestModel()->PopulateApps(kInitialItems);
|
| -
|
| - Show();
|
| -
|
| - // Explicitly enforce the exact dimensions of the app list. Feel free to
|
| - // change these if you need to (they are just here to prevent against
|
| - // accidental changes to the window size).
|
| - switch (test_type_) {
|
| - case NORMAL:
|
| - EXPECT_EQ("400x500", view_->bounds().size().ToString());
|
| - break;
|
| - case LANDSCAPE:
|
| - // NOTE: Height should not exceed 402, because otherwise there might not
|
| - // be enough space to accomodate the virtual keyboard. (LANDSCAPE mode is
|
| - // enabled by default when the virtual keyboard is enabled.)
|
| - EXPECT_EQ("576x402", view_->bounds().size().ToString());
|
| - break;
|
| - case EXPERIMENTAL:
|
| - EXPECT_EQ("768x560", view_->bounds().size().ToString());
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| -
|
| - if (is_landscape())
|
| - EXPECT_EQ(2, GetPaginationModel()->total_pages());
|
| - else
|
| - EXPECT_EQ(3, GetPaginationModel()->total_pages());
|
| - EXPECT_EQ(0, GetPaginationModel()->selected_page());
|
| -
|
| - // Checks on the main view.
|
| - AppListMainView* main_view = view_->app_list_main_view();
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view()));
|
| -
|
| - EXPECT_TRUE(main_view->contents_view()->IsNamedPageActive(
|
| - test_type_ == EXPERIMENTAL ? ContentsView::NAMED_PAGE_START
|
| - : ContentsView::NAMED_PAGE_APPS));
|
| -
|
| - Close();
|
| -}
|
| -
|
| -void AppListViewTestContext::RunReshowWithOpenFolderTest() {
|
| - EXPECT_FALSE(view_->GetWidget()->IsVisible());
|
| - EXPECT_EQ(-1, GetPaginationModel()->total_pages());
|
| -
|
| - AppListTestModel* model = delegate_->GetTestModel();
|
| - model->PopulateApps(kInitialItems);
|
| - const std::string folder_id =
|
| - model->MergeItems(model->top_level_item_list()->item_at(0)->id(),
|
| - model->top_level_item_list()->item_at(1)->id());
|
| -
|
| - AppListFolderItem* folder_item = model->FindFolderItem(folder_id);
|
| - EXPECT_TRUE(folder_item);
|
| -
|
| - Show();
|
| -
|
| - // The main grid view should be showing initially.
|
| - AppListMainView* main_view = view_->app_list_main_view();
|
| - AppsContainerView* container_view =
|
| - main_view->contents_view()->apps_container_view();
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(container_view->apps_grid_view()));
|
| - EXPECT_FALSE(container_view->app_list_folder_view()->visible());
|
| -
|
| - AppsGridViewTestApi test_api(container_view->apps_grid_view());
|
| - test_api.PressItemAt(0);
|
| -
|
| - // After pressing the folder item, the folder view should be showing.
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(container_view->app_list_folder_view()));
|
| - EXPECT_FALSE(container_view->apps_grid_view()->visible());
|
| -
|
| - view_->GetWidget()->Hide();
|
| - EXPECT_FALSE(view_->GetWidget()->IsVisible());
|
| -
|
| - Show();
|
| -
|
| - // The main grid view should be showing after a reshow.
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(container_view->apps_grid_view()));
|
| - EXPECT_FALSE(container_view->app_list_folder_view()->visible());
|
| -
|
| - Close();
|
| -}
|
| -
|
| -void AppListViewTestContext::RunStartPageTest() {
|
| - EXPECT_FALSE(view_->GetWidget()->IsVisible());
|
| - EXPECT_EQ(-1, GetPaginationModel()->total_pages());
|
| - AppListTestModel* model = delegate_->GetTestModel();
|
| - model->PopulateApps(3);
|
| -
|
| - Show();
|
| -
|
| - AppListMainView* main_view = view_->app_list_main_view();
|
| - StartPageView* start_page_view =
|
| - main_view->contents_view()->start_page_view();
|
| - // Checks on the main view.
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view()));
|
| - if (test_type_ == EXPERIMENTAL) {
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
|
| -
|
| - // Show the start page view.
|
| - ContentsView* contents_view = main_view->contents_view();
|
| - ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage(
|
| - ContentsView::NAMED_PAGE_START));
|
| - EXPECT_FALSE(main_view->search_box_view()->visible());
|
| -
|
| - gfx::Size view_size(view_->GetPreferredSize());
|
| - ShowContentsViewPageAndVerify(
|
| - contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS));
|
| - EXPECT_TRUE(main_view->search_box_view()->visible());
|
| -
|
| - // Hiding and showing the search box should not affect the app list's
|
| - // preferred size. This is a regression test for http://crbug.com/386912.
|
| - EXPECT_EQ(view_size.ToString(), view_->GetPreferredSize().ToString());
|
| -
|
| - // Check tiles hide and show on deletion and addition.
|
| - model->results()->Add(new TestTileSearchResult());
|
| - start_page_view->UpdateForTesting();
|
| - EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| - model->results()->DeleteAll();
|
| - start_page_view->UpdateForTesting();
|
| - EXPECT_EQ(0u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| - } else {
|
| - EXPECT_EQ(NULL, start_page_view);
|
| - }
|
| -
|
| - Close();
|
| -}
|
| -
|
| -void AppListViewTestContext::RunPageSwitchingAnimationTest() {
|
| - if (test_type_ == EXPERIMENTAL) {
|
| - Show();
|
| -
|
| - AppListMainView* main_view = view_->app_list_main_view();
|
| - // Checks on the main view.
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view));
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view()));
|
| -
|
| - ContentsView* contents_view = main_view->contents_view();
|
| - // Pad the ContentsView with blank pages so we have at least 3 views.
|
| - while (contents_view->NumLauncherPages() < 3)
|
| - contents_view->AddBlankPageForTesting();
|
| -
|
| - contents_view->SetActivePage(0);
|
| - contents_view->Layout();
|
| - EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0)));
|
| - EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1)));
|
| - EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2)));
|
| -
|
| - // Change pages. View should not have moved without Layout().
|
| - contents_view->SetActivePage(1);
|
| - EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0)));
|
| - EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1)));
|
| - EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2)));
|
| -
|
| - // Change to a third page. This queues up the second animation behind the
|
| - // first.
|
| - contents_view->SetActivePage(2);
|
| - EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0)));
|
| - EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1)));
|
| - EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2)));
|
| -
|
| - // Call Layout(). Should jump to the third page.
|
| - contents_view->Layout();
|
| - EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(0)));
|
| - EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1)));
|
| - EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(2)));
|
| - }
|
| -
|
| - Close();
|
| -}
|
| -
|
| -void AppListViewTestContext::RunProfileChangeTest() {
|
| - EXPECT_FALSE(view_->GetWidget()->IsVisible());
|
| - EXPECT_EQ(-1, GetPaginationModel()->total_pages());
|
| - delegate_->GetTestModel()->PopulateApps(kInitialItems);
|
| -
|
| - Show();
|
| -
|
| - if (is_landscape())
|
| - EXPECT_EQ(2, GetPaginationModel()->total_pages());
|
| - else
|
| - EXPECT_EQ(3, GetPaginationModel()->total_pages());
|
| -
|
| - // Change the profile. The original model needs to be kept alive for
|
| - // observers to unregister themselves.
|
| - scoped_ptr<AppListTestModel> original_test_model(
|
| - delegate_->ReleaseTestModel());
|
| - delegate_->set_next_profile_app_count(1);
|
| -
|
| - // The original ContentsView is destroyed here.
|
| - view_->SetProfileByPath(base::FilePath());
|
| - EXPECT_EQ(1, GetPaginationModel()->total_pages());
|
| -
|
| - StartPageView* start_page_view =
|
| - view_->app_list_main_view()->contents_view()->start_page_view();
|
| - ContentsSwitcherView* contents_switcher_view =
|
| - view_->app_list_main_view()->contents_switcher_view();
|
| - if (test_type_ == EXPERIMENTAL) {
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(contents_switcher_view));
|
| - EXPECT_EQ(view_->app_list_main_view()->contents_view(),
|
| - contents_switcher_view->contents_view());
|
| - EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
|
| - } else {
|
| - EXPECT_EQ(NULL, contents_switcher_view);
|
| - EXPECT_EQ(NULL, start_page_view);
|
| - }
|
| -
|
| - // New model updates should be processed by the start page view.
|
| - delegate_->GetTestModel()->results()->Add(new TestTileSearchResult());
|
| - if (test_type_ == EXPERIMENTAL) {
|
| - start_page_view->UpdateForTesting();
|
| - EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| - }
|
| -
|
| - // Old model updates should be ignored.
|
| - original_test_model->results()->Add(new TestTileSearchResult());
|
| - original_test_model->results()->Add(new TestTileSearchResult());
|
| - if (test_type_ == EXPERIMENTAL) {
|
| - start_page_view->UpdateForTesting();
|
| - EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| - }
|
| -
|
| - Close();
|
| -}
|
| -
|
| -void AppListViewTestContext::RunSearchResultsTest() {
|
| - EXPECT_FALSE(view_->GetWidget()->IsVisible());
|
| - EXPECT_EQ(-1, GetPaginationModel()->total_pages());
|
| - AppListTestModel* model = delegate_->GetTestModel();
|
| - model->PopulateApps(3);
|
| -
|
| - Show();
|
| -
|
| - AppListMainView* main_view = view_->app_list_main_view();
|
| - ContentsView* contents_view = main_view->contents_view();
|
| - ShowContentsViewPageAndVerify(
|
| - contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS));
|
| - EXPECT_TRUE(main_view->search_box_view()->visible());
|
| -
|
| - // Show the search results.
|
| - contents_view->ShowSearchResults(true);
|
| - contents_view->Layout();
|
| - EXPECT_TRUE(contents_view->IsShowingSearchResults());
|
| - EXPECT_TRUE(main_view->search_box_view()->visible());
|
| -
|
| - if (test_type_ == EXPERIMENTAL) {
|
| - EXPECT_TRUE(
|
| - contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START));
|
| - EXPECT_TRUE(IsViewAtOrigin(contents_view->start_page_view()));
|
| - } else {
|
| - EXPECT_TRUE(contents_view->IsNamedPageActive(
|
| - ContentsView::NAMED_PAGE_SEARCH_RESULTS));
|
| - EXPECT_TRUE(IsViewAtOrigin(contents_view->search_results_view()));
|
| - }
|
| -
|
| - // Hide the search results.
|
| - contents_view->ShowSearchResults(false);
|
| - contents_view->Layout();
|
| - EXPECT_FALSE(contents_view->IsShowingSearchResults());
|
| -
|
| - // Check that we return to the page that we were on before the search.
|
| - EXPECT_TRUE(contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_APPS));
|
| - EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view()));
|
| - EXPECT_TRUE(main_view->search_box_view()->visible());
|
| -
|
| - if (test_type_ == EXPERIMENTAL) {
|
| - ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage(
|
| - ContentsView::NAMED_PAGE_START));
|
| -
|
| - // 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();
|
| -}
|
| -
|
| -class AppListViewTestAura : public views::ViewsTestBase,
|
| - public ::testing::WithParamInterface<int> {
|
| - public:
|
| - AppListViewTestAura() {}
|
| - virtual ~AppListViewTestAura() {}
|
| -
|
| - // testing::Test overrides:
|
| - virtual void SetUp() override {
|
| - views::ViewsTestBase::SetUp();
|
| -
|
| - // On Ash (only) the app list is placed into an aura::Window "container",
|
| - // which is also used to determine the context. In tests, use the ash root
|
| - // window as the parent. This only works on aura where the root window is a
|
| - // NativeView as well as a NativeWindow.
|
| - gfx::NativeView container = NULL;
|
| -#if defined(USE_AURA)
|
| - container = GetContext();
|
| -#endif
|
| -
|
| - test_context_.reset(new AppListViewTestContext(GetParam(), container));
|
| - }
|
| -
|
| - virtual void TearDown() override {
|
| - test_context_.reset();
|
| - views::ViewsTestBase::TearDown();
|
| - }
|
| -
|
| - protected:
|
| - scoped_ptr<AppListViewTestContext> test_context_;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(AppListViewTestAura);
|
| -};
|
| -
|
| -class AppListViewTestDesktop : public views::ViewsTestBase,
|
| - public ::testing::WithParamInterface<int> {
|
| - public:
|
| - AppListViewTestDesktop() {}
|
| - virtual ~AppListViewTestDesktop() {}
|
| -
|
| - // testing::Test overrides:
|
| - virtual void SetUp() override {
|
| - set_views_delegate(new AppListViewTestViewsDelegate(this));
|
| - views::ViewsTestBase::SetUp();
|
| - test_context_.reset(new AppListViewTestContext(GetParam(), NULL));
|
| - }
|
| -
|
| - virtual void TearDown() override {
|
| - test_context_.reset();
|
| - views::ViewsTestBase::TearDown();
|
| - }
|
| -
|
| - protected:
|
| - scoped_ptr<AppListViewTestContext> test_context_;
|
| -
|
| - private:
|
| - class AppListViewTestViewsDelegate : public views::TestViewsDelegate {
|
| - public:
|
| - AppListViewTestViewsDelegate(AppListViewTestDesktop* parent)
|
| - : parent_(parent) {}
|
| -
|
| - // Overridden from views::ViewsDelegate:
|
| - virtual void OnBeforeWidgetInit(
|
| - views::Widget::InitParams* params,
|
| - views::internal::NativeWidgetDelegate* delegate) override;
|
| -
|
| - private:
|
| - AppListViewTestDesktop* parent_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AppListViewTestViewsDelegate);
|
| - };
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AppListViewTestDesktop);
|
| -};
|
| -
|
| -void AppListViewTestDesktop::AppListViewTestViewsDelegate::OnBeforeWidgetInit(
|
| - views::Widget::InitParams* params,
|
| - views::internal::NativeWidgetDelegate* delegate) {
|
| -// Mimic the logic in ChromeViewsDelegate::OnBeforeWidgetInit(). Except, for
|
| -// ChromeOS, use the root window from the AuraTestHelper rather than depending
|
| -// on ash::Shell:GetPrimaryRootWindow(). Also assume non-ChromeOS is never the
|
| -// Ash desktop, as that is covered by AppListViewTestAura.
|
| -#if defined(OS_CHROMEOS)
|
| - if (!params->parent && !params->context)
|
| - params->context = parent_->GetContext();
|
| -#elif defined(USE_AURA)
|
| - if (params->parent == NULL && params->context == NULL && !params->child)
|
| - params->native_widget = new views::DesktopNativeWidgetAura(delegate);
|
| -#endif
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// Tests showing the app list with basic test model in an ash-style root window.
|
| -TEST_P(AppListViewTestAura, Display) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunDisplayTest());
|
| -}
|
| -
|
| -// Tests showing the app list on the desktop. Note on ChromeOS, this will still
|
| -// use the regular root window.
|
| -TEST_P(AppListViewTestDesktop, Display) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunDisplayTest());
|
| -}
|
| -
|
| -// Tests that the main grid view is shown after hiding and reshowing the app
|
| -// list with a folder view open. This is a regression test for crbug.com/357058.
|
| -TEST_P(AppListViewTestAura, ReshowWithOpenFolder) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunReshowWithOpenFolderTest());
|
| -}
|
| -
|
| -TEST_P(AppListViewTestDesktop, ReshowWithOpenFolder) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunReshowWithOpenFolderTest());
|
| -}
|
| -
|
| -// Tests that the start page view operates correctly.
|
| -TEST_P(AppListViewTestAura, StartPageTest) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunStartPageTest());
|
| -}
|
| -
|
| -TEST_P(AppListViewTestDesktop, StartPageTest) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunStartPageTest());
|
| -}
|
| -
|
| -// Tests that the start page view operates correctly.
|
| -TEST_P(AppListViewTestAura, PageSwitchingAnimationTest) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunPageSwitchingAnimationTest());
|
| -}
|
| -
|
| -TEST_P(AppListViewTestDesktop, PageSwitchingAnimationTest) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunPageSwitchingAnimationTest());
|
| -}
|
| -
|
| -// Tests that the profile changes operate correctly.
|
| -TEST_P(AppListViewTestAura, ProfileChangeTest) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunProfileChangeTest());
|
| -}
|
| -
|
| -TEST_P(AppListViewTestDesktop, ProfileChangeTest) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunProfileChangeTest());
|
| -}
|
| -
|
| -// Tests that the correct views are displayed for showing search results.
|
| -TEST_P(AppListViewTestAura, SearchResultsTest) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunSearchResultsTest());
|
| -}
|
| -
|
| -TEST_P(AppListViewTestDesktop, SearchResultsTest) {
|
| - EXPECT_NO_FATAL_FAILURE(test_context_->RunSearchResultsTest());
|
| -}
|
| -
|
| -INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance,
|
| - AppListViewTestAura,
|
| - ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END));
|
| -
|
| -INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance,
|
| - AppListViewTestDesktop,
|
| - ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END));
|
| -
|
| -} // namespace test
|
| -} // namespace app_list
|
|
|