app_list_view_unittest.cc revision 6d86b77056ed63eb6871182f42a9fd5f07550f90
1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/app_list_view.h" 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/command_line.h" 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/run_loop.h" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/strings/string_util.h" 106d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/app_list_switches.h" 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/pagination_model.h" 146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "ui/app_list/search_box_model.h" 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/test/app_list_test_model.h" 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/test/app_list_test_view_delegate.h" 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/app_list_folder_view.h" 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/app_list_main_view.h" 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/apps_container_view.h" 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/apps_grid_view.h" 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/app_list/views/contents_switcher_view.h" 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/contents_view.h" 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/search_box_view.h" 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/app_list/views/search_result_list_view.h" 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/start_page_view.h" 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/test/apps_grid_view_test_api.h" 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/app_list/views/tile_item_view.h" 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/aura/test/aura_test_base.h" 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/aura/window.h" 306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "ui/views/controls/textfield/textfield.h" 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/views/test/views_test_base.h" 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/views/views_delegate.h" 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace app_list { 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace test { 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace { 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)enum TestType { 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TEST_TYPE_START = 0, 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NORMAL = TEST_TYPE_START, 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) LANDSCAPE, 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPERIMENTAL, 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TEST_TYPE_END, 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool IsViewAtOrigin(views::View* view) { 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return view->bounds().origin().IsOrigin(); 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)size_t GetVisibleTileItemViews(const std::vector<TileItemView*>& tiles) { 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) size_t count = 0; 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) for (std::vector<TileItemView*>::const_iterator it = tiles.begin(); 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) it != tiles.end(); 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ++it) { 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if ((*it)->visible()) 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) count++; 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return count; 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Choose a set that is 3 regular app list pages and 2 landscape app list pages. 64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const int kInitialItems = 34; 65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Allows the same tests to run with different contexts: either an Ash-style 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// root window or a desktop window tree host. 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class AppListViewTestContext { 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListViewTestContext(int test_type, aura::Window* parent); 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ~AppListViewTestContext(); 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Test displaying the app list and performs a standard set of checks on its 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // top level views. Then closes the window. 75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void RunDisplayTest(); 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Hides and reshows the app list with a folder open, expecting the main grid 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // view to be shown. 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void RunReshowWithOpenFolderTest(); 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Tests displaying of the experimental app list and shows the start page. 82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void RunStartPageTest(); 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 846d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Tests switching rapidly between multiple pages of the launcher. 856d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void RunPageSwitchingAnimationTest(); 866d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 87f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Tests changing the App List profile. 8846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) void RunProfileChangeTest(); 8946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 90f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Tests displaying of the search results. 91f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void RunSearchResultsTest(); 92f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // A standard set of checks on a view, e.g., ensuring it is drawn and visible. 94cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static void CheckView(views::View* subview); 95cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 96cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Invoked when the Widget is closing, and the view it contains is about to 97cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // be torn down. This only occurs in a run loop and will be used as a signal 98cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // to quit. 99cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void NativeWidgetClosing() { 100cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) view_ = NULL; 101cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_->Quit(); 102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 103cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Whether the experimental "landscape" app launcher UI is being tested. 105cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool is_landscape() const { 106cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return test_type_ == LANDSCAPE || test_type_ == EXPERIMENTAL; 107cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 108cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 109cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 1106d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Switches the active launcher page in the contents view and lays out to 1116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // ensure all launcher pages are in the correct position. 1126d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void ShowContentsViewPageAndVerify(int index); 1136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Shows the app list and waits until a paint occurs. 115cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void Show(); 116cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 117cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Closes the app list. This sets |view_| to NULL. 118cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void Close(); 119cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 12046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Gets the PaginationModel owned by |view_|. 12146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PaginationModel* GetPaginationModel(); 12246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 123cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const TestType test_type_; 124cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<base::RunLoop> run_loop_; 125cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) app_list::AppListView* view_; // Owned by native widget. 126cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) app_list::test::AppListTestViewDelegate* delegate_; // Owned by |view_|; 127cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 128cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppListViewTestContext); 129cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 130cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 131cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Extend the regular AppListTestViewDelegate to communicate back to the test 132cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// context. Note the test context doesn't simply inherit this, because the 133cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// delegate is owned by the view. 134cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class UnitTestViewDelegate : public app_list::test::AppListTestViewDelegate { 135cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 136cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) UnitTestViewDelegate(AppListViewTestContext* parent) : parent_(parent) {} 137cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 138cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Overridden from app_list::AppListViewDelegate: 139cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool ShouldCenterWindow() const OVERRIDE { 140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return app_list::switches::IsCenteredAppListEnabled(); 141cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 142cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 143cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Overridden from app_list::test::AppListTestViewDelegate: 144cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void ViewClosing() OVERRIDE { parent_->NativeWidgetClosing(); } 145cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 146cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 147cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListViewTestContext* parent_; 148cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 149cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(UnitTestViewDelegate); 150cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 151cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 152cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)AppListViewTestContext::AppListViewTestContext(int test_type, 153cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) aura::Window* parent) 154cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) : test_type_(static_cast<TestType>(test_type)) { 155cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) switch (test_type_) { 156cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) case NORMAL: 157cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) break; 158cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) case LANDSCAPE: 159cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::CommandLine::ForCurrentProcess()->AppendSwitch( 160cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) switches::kEnableCenteredAppList); 161cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) break; 162cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) case EXPERIMENTAL: 163cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::CommandLine::ForCurrentProcess()->AppendSwitch( 164cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) switches::kEnableExperimentalAppList); 165cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) break; 166cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) default: 167cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NOTREACHED(); 168cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) break; 169cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 170cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 171cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) delegate_ = new UnitTestViewDelegate(this); 172cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) view_ = new app_list::AppListView(delegate_); 173cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 174cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Initialize centered around a point that ensures the window is wholly shown. 175cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) view_->InitAsBubbleAtFixedLocation(parent, 17646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 0, 177cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) gfx::Point(300, 300), 178cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::BubbleBorder::FLOAT, 179cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) false /* border_accepts_events */); 180cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 181cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 182cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)AppListViewTestContext::~AppListViewTestContext() { 183cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The view observes the PaginationModel which is about to get destroyed, so 184cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // if the view is not already deleted by the time this destructor is called, 185cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // there will be problems. 186cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(view_); 187cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 188cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 189cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// static 190cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AppListViewTestContext::CheckView(views::View* subview) { 191cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ASSERT_TRUE(subview); 192cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(subview->parent()); 193cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(subview->visible()); 194cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(subview->IsDrawn()); 195cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 196cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1976d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)void AppListViewTestContext::ShowContentsViewPageAndVerify(int index) { 1986d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ContentsView* contents_view = view_->app_list_main_view()->contents_view(); 1996d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->SetActivePage(index); 2006d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->Layout(); 2016d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) for (int i = 0; i < contents_view->NumLauncherPages(); ++i) { 2026d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_EQ(i == index, IsViewAtOrigin(contents_view->GetPageView(i))); 2036d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) } 2046d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)} 2056d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 206cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AppListViewTestContext::Show() { 207cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) view_->GetWidget()->Show(); 208cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_.reset(new base::RunLoop); 209cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) view_->SetNextPaintCallback(run_loop_->QuitClosure()); 210cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_->Run(); 211cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 212cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(view_->GetWidget()->IsVisible()); 213cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 214cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 215cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AppListViewTestContext::Close() { 216cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) view_->GetWidget()->Close(); 217cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_.reset(new base::RunLoop); 218cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_->Run(); 219cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 220cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // |view_| should have been deleted and set to NULL via ViewClosing(). 221cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(view_); 222cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 223cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 22446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)PaginationModel* AppListViewTestContext::GetPaginationModel() { 22546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return view_->GetAppsPaginationModel(); 22646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 22746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 228cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AppListViewTestContext::RunDisplayTest() { 229cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(view_->GetWidget()->IsVisible()); 23046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 231cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) delegate_->GetTestModel()->PopulateApps(kInitialItems); 232cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 233cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Show(); 234cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (is_landscape()) 23546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(2, GetPaginationModel()->total_pages()); 236cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) else 23746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(3, GetPaginationModel()->total_pages()); 23846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(0, GetPaginationModel()->selected_page()); 239cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 240cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Checks on the main view. 241cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListMainView* main_view = view_->app_list_main_view(); 242cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 243cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view->search_box_view())); 244cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); 245cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 246cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Close(); 247cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 248cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 249cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AppListViewTestContext::RunReshowWithOpenFolderTest() { 250cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(view_->GetWidget()->IsVisible()); 25146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 252cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 253cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListTestModel* model = delegate_->GetTestModel(); 254cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) model->PopulateApps(kInitialItems); 255cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string folder_id = 256cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) model->MergeItems(model->top_level_item_list()->item_at(0)->id(), 257cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) model->top_level_item_list()->item_at(1)->id()); 258cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 259cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListFolderItem* folder_item = model->FindFolderItem(folder_id); 260cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(folder_item); 261cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 262cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Show(); 263cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 264cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The main grid view should be showing initially. 265cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListMainView* main_view = view_->app_list_main_view(); 266cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppsContainerView* container_view = 267cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) main_view->contents_view()->apps_container_view(); 268cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 269cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(container_view->apps_grid_view())); 270cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(container_view->app_list_folder_view()->visible()); 271cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 272cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppsGridViewTestApi test_api(container_view->apps_grid_view()); 273cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_api.PressItemAt(0); 274cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 275cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // After pressing the folder item, the folder view should be showing. 276cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 277cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(container_view->app_list_folder_view())); 278cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(container_view->apps_grid_view()->visible()); 279cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 280cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) view_->GetWidget()->Hide(); 281cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(view_->GetWidget()->IsVisible()); 282cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 283cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Show(); 284cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 285cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The main grid view should be showing after a reshow. 286cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 287cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(container_view->apps_grid_view())); 288cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(container_view->app_list_folder_view()->visible()); 289cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 290cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Close(); 291cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 292cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 293cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AppListViewTestContext::RunStartPageTest() { 294cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(view_->GetWidget()->IsVisible()); 29546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 296cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListTestModel* model = delegate_->GetTestModel(); 297cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) model->PopulateApps(3); 298cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 299cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Show(); 300cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 301cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListMainView* main_view = view_->app_list_main_view(); 302cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) StartPageView* start_page_view = 303cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) main_view->contents_view()->start_page_view(); 304cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Checks on the main view. 305cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 306cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); 307cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (test_type_ == EXPERIMENTAL) { 308cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view)); 309cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 310f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ContentsView* contents_view = main_view->contents_view(); 3116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage( 312f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ContentsView::NAMED_PAGE_START)); 313cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(main_view->search_box_view()->visible()); 314cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(3u, GetVisibleTileItemViews(start_page_view->tile_views())); 315cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 3166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ShowContentsViewPageAndVerify( 317f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); 318cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(main_view->search_box_view()->visible()); 319cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 320cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Check tiles hide and show on deletion and addition. 321cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) model->CreateAndAddItem("Test app"); 322cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(4u, GetVisibleTileItemViews(start_page_view->tile_views())); 323cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) model->DeleteItem(model->GetItemName(0)); 324cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(3u, GetVisibleTileItemViews(start_page_view->tile_views())); 325cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else { 326cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(NULL, start_page_view); 327cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 328cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 329cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Close(); 330cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 331cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 3326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)void AppListViewTestContext::RunPageSwitchingAnimationTest() { 3336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) if (test_type_ == EXPERIMENTAL) { 3346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) Show(); 3356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 3366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) AppListMainView* main_view = view_->app_list_main_view(); 3376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Checks on the main view. 3386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view)); 3396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(main_view->contents_view())); 3406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 3416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ContentsView* contents_view = main_view->contents_view(); 3426d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Pad the ContentsView with blank pages so we have at least 3 views. 3436d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) while (contents_view->NumLauncherPages() < 3) 3446d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->AddBlankPageForTesting(); 3456d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 3466d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->SetActivePage(0); 3476d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->Layout(); 3486d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0))); 3496d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1))); 3506d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2))); 3516d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 3526d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Change pages. View should not have moved without Layout(). 3536d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->SetActivePage(1); 3546d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0))); 3556d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1))); 3566d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2))); 3576d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 3586d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Change to a third page. This queues up the second animation behind the 3596d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // first. 3606d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->SetActivePage(2); 3616d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(0))); 3626d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1))); 3636d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(2))); 3646d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 3656d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Call Layout(). Should jump to the third page. 3666d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->Layout(); 3676d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(0))); 3686d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(IsViewAtOrigin(contents_view->GetPageView(1))); 3696d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->GetPageView(2))); 3706d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) } 3716d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 3726d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) Close(); 3736d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)} 3746d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 37546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void AppListViewTestContext::RunProfileChangeTest() { 37646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_FALSE(view_->GetWidget()->IsVisible()); 37746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 37846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) delegate_->GetTestModel()->PopulateApps(kInitialItems); 37946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 38046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) Show(); 38146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 38246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (is_landscape()) 38346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(2, GetPaginationModel()->total_pages()); 38446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) else 38546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(3, GetPaginationModel()->total_pages()); 38646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 38746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Change the profile. The original model needs to be kept alive for 38846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // observers to unregister themselves. 38946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) scoped_ptr<AppListTestModel> original_test_model( 39046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) delegate_->ReleaseTestModel()); 39146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) delegate_->set_next_profile_app_count(1); 39246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 39346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // The original ContentsView is destroyed here. 39446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) view_->SetProfileByPath(base::FilePath()); 39546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(1, GetPaginationModel()->total_pages()); 39646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 39746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) StartPageView* start_page_view = 39846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) view_->app_list_main_view()->contents_view()->start_page_view(); 399f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ContentsSwitcherView* contents_switcher_view = 400f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) view_->app_list_main_view()->contents_switcher_view(); 40146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (test_type_ == EXPERIMENTAL) { 402f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(contents_switcher_view)); 403f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(view_->app_list_main_view()->contents_view(), 404f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_switcher_view->contents_view()); 40546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view)); 40646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views())); 40746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } else { 408f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(NULL, contents_switcher_view); 40946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(NULL, start_page_view); 41046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 41146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 41246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // New model updates should be processed by the start page view. 41346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) delegate_->GetTestModel()->CreateAndAddItem("Test App"); 41446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (test_type_ == EXPERIMENTAL) 41546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(2u, GetVisibleTileItemViews(start_page_view->tile_views())); 41646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 41746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Old model updates should be ignored. 41846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) original_test_model->CreateAndAddItem("Test App 2"); 41946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (test_type_ == EXPERIMENTAL) 42046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_EQ(2u, GetVisibleTileItemViews(start_page_view->tile_views())); 42146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 42246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) Close(); 42346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 42446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 425f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void AppListViewTestContext::RunSearchResultsTest() { 426f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_FALSE(view_->GetWidget()->IsVisible()); 427f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(-1, GetPaginationModel()->total_pages()); 428f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AppListTestModel* model = delegate_->GetTestModel(); 429f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) model->PopulateApps(3); 430f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 431f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Show(); 432f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 433f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AppListMainView* main_view = view_->app_list_main_view(); 434f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ContentsView* contents_view = main_view->contents_view(); 4356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ShowContentsViewPageAndVerify( 436f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); 437f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view())); 438f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(main_view->search_box_view()->visible()); 439f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 440f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Show the search results. 441f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->ShowSearchResults(true); 442f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->Layout(); 443f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(contents_view->IsShowingSearchResults()); 444f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(main_view->search_box_view()->visible()); 445f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 446f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (test_type_ == EXPERIMENTAL) { 447f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE( 448f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START)); 449f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->start_page_view())); 450f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } else { 451f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(contents_view->IsNamedPageActive( 452f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ContentsView::NAMED_PAGE_SEARCH_RESULTS)); 453f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->search_results_view())); 454f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 455f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 456f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Hide the search results. 457f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->ShowSearchResults(false); 458f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->Layout(); 459f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_FALSE(contents_view->IsShowingSearchResults()); 460f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (test_type_ == EXPERIMENTAL) { 461f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE( 462f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START)); 463f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->start_page_view())); 464f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_FALSE(main_view->search_box_view()->visible()); 465f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } else { 466f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE( 467f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_APPS)); 468f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view())); 469f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(main_view->search_box_view()->visible()); 470f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 471f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 4726d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) if (test_type_ == EXPERIMENTAL) { 4736d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Check that typing into the dummy search box triggers the search page. 4746d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::string16 search_text = base::UTF8ToUTF16("test"); 4756d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SearchBoxView* dummy_search_box = 4766d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->start_page_view()->dummy_search_box_view(); 4776d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(dummy_search_box->IsDrawn()); 4786d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) dummy_search_box->search_box()->InsertText(search_text); 4796d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->Layout(); 4806d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Check that the current search is using |search_text|. 4816d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_EQ(search_text, delegate_->GetTestModel()->search_box()->text()); 4826d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(contents_view->IsShowingSearchResults()); 4836d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(dummy_search_box->IsDrawn()); 4846d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(main_view->search_box_view()->visible()); 4856d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_EQ(search_text, main_view->search_box_view()->search_box()->text()); 4866d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE( 4876d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->IsNamedPageActive(ContentsView::NAMED_PAGE_START)); 4886d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->start_page_view())); 4896d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 4906d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Check that typing into the real search box triggers the search page. 4916d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ShowContentsViewPageAndVerify( 4926d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); 4936d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(IsViewAtOrigin(contents_view->apps_container_view())); 4946d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 4956d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::string16 new_search_text = base::UTF8ToUTF16("apple"); 4966d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) main_view->search_box_view()->search_box()->SetText(base::string16()); 4976d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) main_view->search_box_view()->search_box()->InsertText(new_search_text); 4986d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Check that the current search is using |search_text|. 4996d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_EQ(new_search_text, delegate_->GetTestModel()->search_box()->text()); 5006d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_EQ(new_search_text, 5016d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) main_view->search_box_view()->search_box()->text()); 5026d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(contents_view->IsShowingSearchResults()); 5036d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_FALSE(dummy_search_box->IsDrawn()); 5046d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(main_view->search_box_view()->visible()); 5056d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(dummy_search_box->search_box()->text().empty()); 5066d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 5076d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Check that the dummy search box is clear when reshowing the start page. 5086d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ShowContentsViewPageAndVerify( 5096d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) contents_view->GetPageIndexForNamedPage(ContentsView::NAMED_PAGE_APPS)); 5106d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ShowContentsViewPageAndVerify(contents_view->GetPageIndexForNamedPage( 5116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ContentsView::NAMED_PAGE_START)); 5126d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(dummy_search_box->IsDrawn()); 5136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_TRUE(dummy_search_box->search_box()->text().empty()); 5146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) } 5156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 516f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Close(); 517f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 518f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 519cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class AppListViewTestAura : public views::ViewsTestBase, 520cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public ::testing::WithParamInterface<int> { 521cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 522cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListViewTestAura() {} 523cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual ~AppListViewTestAura() {} 524cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 525cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // testing::Test overrides: 526cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetUp() OVERRIDE { 527cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::ViewsTestBase::SetUp(); 528cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_context_.reset(new AppListViewTestContext(GetParam(), GetContext())); 529cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 530cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 531cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void TearDown() OVERRIDE { 532cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_context_.reset(); 533cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::ViewsTestBase::TearDown(); 534cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 535cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 536cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) protected: 537cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<AppListViewTestContext> test_context_; 538cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 539cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 540cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppListViewTestAura); 541cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 542cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 543cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class AppListViewTestDesktop : public views::ViewsTestBase, 544cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public ::testing::WithParamInterface<int> { 545cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 546cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListViewTestDesktop() {} 547cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual ~AppListViewTestDesktop() {} 548cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 549cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // testing::Test overrides: 550cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetUp() OVERRIDE { 551cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) set_views_delegate(new AppListViewTestViewsDelegate(this)); 552cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::ViewsTestBase::SetUp(); 553cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_context_.reset(new AppListViewTestContext(GetParam(), NULL)); 554cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 555cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 556cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void TearDown() OVERRIDE { 557cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_context_.reset(); 558cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::ViewsTestBase::TearDown(); 559cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 560cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 561cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) protected: 562cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<AppListViewTestContext> test_context_; 563cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 564cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 565cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) class AppListViewTestViewsDelegate : public views::TestViewsDelegate { 566cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 567cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListViewTestViewsDelegate(AppListViewTestDesktop* parent) 568cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) : parent_(parent) {} 569cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 570cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Overridden from views::ViewsDelegate: 571cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void OnBeforeWidgetInit( 572cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::Widget::InitParams* params, 573cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::internal::NativeWidgetDelegate* delegate) OVERRIDE; 574cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 575cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 576cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListViewTestDesktop* parent_; 577cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 578cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppListViewTestViewsDelegate); 579cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) }; 580cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 581cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppListViewTestDesktop); 582cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 583cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 584cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AppListViewTestDesktop::AppListViewTestViewsDelegate::OnBeforeWidgetInit( 585cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::Widget::InitParams* params, 586cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) views::internal::NativeWidgetDelegate* delegate) { 587cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Mimic the logic in ChromeViewsDelegate::OnBeforeWidgetInit(). Except, for 588cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// ChromeOS, use the root window from the AuraTestHelper rather than depending 589cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// on ash::Shell:GetPrimaryRootWindow(). Also assume non-ChromeOS is never the 590cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Ash desktop, as that is covered by AppListViewTestAura. 591cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_CHROMEOS) 592cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (!params->parent && !params->context) 593cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) params->context = parent_->GetContext(); 594cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#elif defined(USE_AURA) 595cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (params->parent == NULL && params->context == NULL && !params->child) 596cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) params->native_widget = new views::DesktopNativeWidgetAura(delegate); 597cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 598cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 599cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 600cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace 601cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 602cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Tests showing the app list with basic test model in an ash-style root window. 603cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(AppListViewTestAura, Display) { 604cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunDisplayTest()); 605cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 606cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 607cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Tests showing the app list on the desktop. Note on ChromeOS, this will still 608cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// use the regular root window. 609cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(AppListViewTestDesktop, Display) { 610cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunDisplayTest()); 611cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 612cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 613cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Tests that the main grid view is shown after hiding and reshowing the app 614cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// list with a folder view open. This is a regression test for crbug.com/357058. 615cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(AppListViewTestAura, ReshowWithOpenFolder) { 616cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunReshowWithOpenFolderTest()); 617cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 618cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 619cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(AppListViewTestDesktop, ReshowWithOpenFolder) { 620cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunReshowWithOpenFolderTest()); 621cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 622cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 623cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Tests that the start page view operates correctly. 624cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(AppListViewTestAura, StartPageTest) { 625cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunStartPageTest()); 626cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 627cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 628cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_P(AppListViewTestDesktop, StartPageTest) { 629cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunStartPageTest()); 6306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)} 6316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 6326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)// Tests that the start page view operates correctly. 6336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)TEST_P(AppListViewTestAura, PageSwitchingAnimationTest) { 6346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunPageSwitchingAnimationTest()); 6356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)} 6366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 6376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)TEST_P(AppListViewTestDesktop, PageSwitchingAnimationTest) { 6386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunPageSwitchingAnimationTest()); 639cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 640cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 64146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Tests that the profile changes operate correctly. 64246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_P(AppListViewTestAura, ProfileChangeTest) { 64346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunProfileChangeTest()); 64446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 64546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 64646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_P(AppListViewTestDesktop, ProfileChangeTest) { 64746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunProfileChangeTest()); 64846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 64946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 650f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Tests that the correct views are displayed for showing search results. 651f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_P(AppListViewTestAura, SearchResultsTest) { 652f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunSearchResultsTest()); 653f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 654f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 655f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_P(AppListViewTestDesktop, SearchResultsTest) { 656f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_NO_FATAL_FAILURE(test_context_->RunSearchResultsTest()); 657f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 658f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 659cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance, 660cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListViewTestAura, 661cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); 662cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 663cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance, 664cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) AppListViewTestDesktop, 665cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); 666cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 667cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace test 668cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace app_list 669