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

Unified Diff: ui/app_list/views/app_list_view_unittest.cc

Issue 220393003: Add a unit test for resetting the app list on a reshow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@trent_whole_app_list_unit_test
Patch Set: fix NULL icon cases for app list folders Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/app_list/test/app_list_test_model.cc ('k') | ui/app_list/views/apps_container_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 62ec3f21e97cf6ccb6c1c8e85664f099a613142f..a6dd89365268d4385410b08f9e2d81e8d147b0b7 100644
--- a/ui/app_list/views/app_list_view_unittest.cc
+++ b/ui/app_list/views/app_list_view_unittest.cc
@@ -12,9 +12,13 @@
#include "ui/app_list/pagination_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"
#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_view.h"
#include "ui/app_list/views/search_box_view.h"
+#include "ui/app_list/views/test/apps_grid_view_test_api.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/window.h"
#include "ui/views/test/views_test_base.h"
@@ -40,6 +44,10 @@ class AppListViewTestContext {
// 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();
+
// A standard set of checks on a view, e.g., ensuring it is drawn and visible.
static void CheckView(views::View* subview);
@@ -55,6 +63,12 @@ class AppListViewTestContext {
bool is_landscape() const { return is_landscape_; }
private:
+ // Shows the app list and waits until a paint occurs.
+ void Show();
+
+ // Closes the app list. This sets |view_| to NULL.
+ void Close();
+
const bool is_landscape_;
scoped_ptr<base::RunLoop> run_loop_;
PaginationModel pagination_model_;
@@ -119,18 +133,30 @@ void AppListViewTestContext::CheckView(views::View* subview) {
EXPECT_TRUE(subview->IsDrawn());
}
-void AppListViewTestContext::RunDisplayTest() {
- EXPECT_FALSE(view_->GetWidget()->IsVisible());
- EXPECT_EQ(-1, pagination_model_.total_pages());
+void AppListViewTestContext::Show() {
view_->GetWidget()->Show();
- delegate_->GetTestModel()->PopulateApps(kInitialItems);
-
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_);
+}
+
+void AppListViewTestContext::RunDisplayTest() {
+ EXPECT_FALSE(view_->GetWidget()->IsVisible());
+ EXPECT_EQ(-1, pagination_model_.total_pages());
+ delegate_->GetTestModel()->PopulateApps(kInitialItems);
+
+ Show();
if (is_landscape_)
EXPECT_EQ(2, pagination_model_.total_pages());
else
@@ -143,12 +169,51 @@ void AppListViewTestContext::RunDisplayTest() {
EXPECT_NO_FATAL_FAILURE(CheckView(main_view->search_box_view()));
EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view()));
- view_->GetWidget()->Close();
- run_loop_.reset(new base::RunLoop);
- run_loop_->Run();
+ Close();
+}
- // |view_| should have been deleted and set to NULL via ViewClosing().
- EXPECT_FALSE(view_);
+void AppListViewTestContext::RunReshowWithOpenFolderTest() {
+ EXPECT_FALSE(view_->GetWidget()->IsVisible());
+ EXPECT_EQ(-1, pagination_model_.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();
}
class AppListViewTestAura : public views::ViewsTestBase,
@@ -245,6 +310,16 @@ 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());
+}
+
INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance,
AppListViewTestAura,
::testing::Bool());
« no previous file with comments | « ui/app_list/test/app_list_test_model.cc ('k') | ui/app_list/views/apps_container_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698