| 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 880269afd800d454cdfcc0c00affe6782503f379..4711d28893331fa4768121694b69e6f5de4fc23a 100644
|
| --- a/ui/app_list/views/app_list_view_unittest.cc
|
| +++ b/ui/app_list/views/app_list_view_unittest.cc
|
| @@ -33,8 +33,6 @@
|
| namespace app_list {
|
| namespace test {
|
|
|
| -namespace {
|
| -
|
| enum TestType {
|
| TEST_TYPE_START = 0,
|
| NORMAL = TEST_TYPE_START,
|
| @@ -43,24 +41,6 @@ enum TestType {
|
| 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;
|
| -
|
| // Allows the same tests to run with different contexts: either an Ash-style
|
| // root window or a desktop window tree host.
|
| class AppListViewTestContext {
|
| @@ -126,6 +106,35 @@ class AppListViewTestContext {
|
| DISALLOW_COPY_AND_ASSIGN(AppListViewTestContext);
|
| };
|
|
|
| +namespace {
|
| +
|
| +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 SearchResult {
|
| + public:
|
| + TestTileSearchResult() { set_display_type(DISPLAY_TILE); }
|
| + virtual ~TestTileSearchResult() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(TestTileSearchResult);
|
| +};
|
| +
|
| // 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.
|
| @@ -147,6 +156,99 @@ class UnitTestViewDelegate : public app_list::test::AppListTestViewDelegate {
|
| DISALLOW_COPY_AND_ASSIGN(UnitTestViewDelegate);
|
| };
|
|
|
| +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
|
| +
|
| AppListViewTestContext::AppListViewTestContext(int test_type,
|
| gfx::NativeView parent)
|
| : test_type_(static_cast<TestType>(test_type)) {
|
| @@ -313,7 +415,6 @@ void AppListViewTestContext::RunStartPageTest() {
|
| ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage(
|
| ContentsView::NAMED_PAGE_START));
|
| EXPECT_FALSE(main_view->search_box_view()->visible());
|
| - EXPECT_EQ(3u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
|
|
| gfx::Size view_size(view_->GetPreferredSize());
|
| ShowContentsViewPageAndVerify(
|
| @@ -325,10 +426,12 @@ void AppListViewTestContext::RunStartPageTest() {
|
| EXPECT_EQ(view_size.ToString(), view_->GetPreferredSize().ToString());
|
|
|
| // Check tiles hide and show on deletion and addition.
|
| - model->CreateAndAddItem("Test app");
|
| - EXPECT_EQ(4u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| - model->DeleteItem(model->GetItemName(0));
|
| - EXPECT_EQ(3u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| + model->results()->Add(new TestTileSearchResult());
|
| + start_page_view->Update();
|
| + EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| + model->results()->RemoveAll();
|
| + start_page_view->Update();
|
| + EXPECT_EQ(0u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| } else {
|
| EXPECT_EQ(NULL, start_page_view);
|
| }
|
| @@ -410,21 +513,25 @@ void AppListViewTestContext::RunProfileChangeTest() {
|
| EXPECT_EQ(view_->app_list_main_view()->contents_view(),
|
| contents_switcher_view->contents_view());
|
| EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
|
| - EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| } 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()->CreateAndAddItem("Test App");
|
| - if (test_type_ == EXPERIMENTAL)
|
| - EXPECT_EQ(2u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| + delegate_->GetTestModel()->results()->Add(new TestTileSearchResult());
|
| + if (test_type_ == EXPERIMENTAL) {
|
| + start_page_view->Update();
|
| + EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| + }
|
|
|
| // Old model updates should be ignored.
|
| - original_test_model->CreateAndAddItem("Test App 2");
|
| - if (test_type_ == EXPERIMENTAL)
|
| - EXPECT_EQ(2u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| + original_test_model->results()->Add(new TestTileSearchResult());
|
| + original_test_model->results()->Add(new TestTileSearchResult());
|
| + if (test_type_ == EXPERIMENTAL) {
|
| + start_page_view->Update();
|
| + EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views()));
|
| + }
|
|
|
| Close();
|
| }
|
| @@ -519,99 +626,6 @@ void AppListViewTestContext::RunSearchResultsTest() {
|
| 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());
|
|
|