Index: chrome/browser/ui/app_list/app_list_shower_views_unittest.cc |
diff --git a/chrome/browser/ui/app_list/test/app_list_shower_unittest.cc b/chrome/browser/ui/app_list/app_list_shower_views_unittest.cc |
similarity index 58% |
rename from chrome/browser/ui/app_list/test/app_list_shower_unittest.cc |
rename to chrome/browser/ui/app_list/app_list_shower_views_unittest.cc |
index 0174963472e8d4a0a994a95f81bfaffc07f2bc8a..fb2f7476abaf9af52ade0454c7b738828045f27c 100644 |
--- a/chrome/browser/ui/app_list/test/app_list_shower_unittest.cc |
+++ b/chrome/browser/ui/app_list/app_list_shower_views_unittest.cc |
@@ -2,26 +2,38 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "chrome/browser/ui/app_list/app_list_shower_views.h" |
+ |
#include "base/files/file_path.h" |
#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/ui/app_list/app_list.h" |
-#include "chrome/browser/ui/app_list/app_list_factory.h" |
-#include "chrome/browser/ui/app_list/app_list_shower.h" |
+#include "chrome/browser/ui/app_list/app_list_shower_delegate.h" |
#include "chrome/browser/ui/app_list/scoped_keep_alive.h" |
#include "chrome/browser/ui/app_list/test/fake_profile.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-class FakeAppList : public AppList { |
+namespace { |
+ |
+class FakeAppListShower : public AppListShower { |
public: |
- explicit FakeAppList(Profile* profile) |
- : profile_(profile) { |
+ explicit FakeAppListShower(AppListShowerDelegate* delegate) |
+ : AppListShower(delegate), has_view_(false), visible_(false) {} |
+ |
+ // AppListShower: |
+ virtual void HandleViewBeingDestroyed() OVERRIDE { |
+ AppListShower::HandleViewBeingDestroyed(); |
+ has_view_ = false; |
+ visible_ = false; |
} |
- std::string profile_name() { |
- return profile_->GetProfileName(); |
+ virtual bool IsAppListVisible() const OVERRIDE { return visible_; } |
+ |
+ virtual app_list::AppListView* MakeViewForCurrentProfile() OVERRIDE { |
+ has_view_ = true; |
+ return NULL; |
} |
- // AppList overrides. |
+ virtual void UpdateViewForNewProfile() OVERRIDE {} |
+ |
virtual void Show() OVERRIDE { |
visible_ = true; |
} |
@@ -30,54 +42,28 @@ class FakeAppList : public AppList { |
visible_ = false; |
} |
- virtual void MoveNearCursor() OVERRIDE { |
+ virtual bool HasView() const OVERRIDE { |
+ return has_view_; |
} |
- virtual bool IsVisible() OVERRIDE { |
- return visible_; |
- } |
- |
- virtual void Prerender() OVERRIDE { |
- prerendered_ = true; |
- } |
- |
- virtual gfx::NativeWindow GetWindow() OVERRIDE { |
- return NULL; |
- } |
- |
- virtual void SetProfile(Profile* profile) OVERRIDE { |
- profile_ = profile; |
- } |
- |
- Profile* profile_; |
+ private: |
+ bool has_view_; |
bool visible_; |
- bool prerendered_; |
-}; |
- |
-class FakeFactory : public AppListFactory { |
- public: |
- FakeFactory() |
- : views_created_(0) { |
- } |
- |
- virtual AppList* CreateAppList( |
- Profile* profile, |
- AppListService* service, |
- const base::Closure& on_should_dismiss) OVERRIDE { |
- views_created_++; |
- return new FakeAppList(profile); |
- } |
- int views_created_; |
+ DISALLOW_COPY_AND_ASSIGN(FakeAppListShower); |
}; |
-class AppListShowerUnitTest : public testing::Test { |
+} // namespace |
+ |
+class AppListShowerUnitTest : public testing::Test, |
+ public AppListShowerDelegate { |
public: |
+ AppListShowerUnitTest() |
+ : views_created_(0), |
+ views_dismissed_(0) {} |
+ |
virtual void SetUp() OVERRIDE { |
- factory_ = new FakeFactory; |
- shower_.reset( |
- new AppListShower(scoped_ptr<AppListFactory>(factory_), |
- NULL /* service */)); |
+ shower_.reset(new FakeAppListShower(this)); |
profile1_ = CreateProfile("p1").Pass(); |
profile2_ = CreateProfile("p2").Pass(); |
} |
@@ -89,19 +75,26 @@ class AppListShowerUnitTest : public testing::Test { |
return make_scoped_ptr(new FakeProfile(name)); |
} |
- FakeAppList* GetCurrentAppList() { |
- return static_cast<FakeAppList*>(shower_->app_list()); |
+ // AppListCreatorDelegate: |
+ virtual AppListControllerDelegate* GetControllerDelegateForCreate() OVERRIDE { |
+ return NULL; |
} |
bool HasKeepAlive() const { |
return shower_->keep_alive_.get() != NULL; |
} |
- // Owned by |shower_|. |
- FakeFactory* factory_; |
- scoped_ptr<AppListShower> shower_; |
+ virtual void OnViewCreated() OVERRIDE { ++views_created_; } |
+ virtual void OnViewDismissed() OVERRIDE { ++views_dismissed_; } |
+ virtual void MoveNearCursor(app_list::AppListView* view) OVERRIDE {} |
+ |
+ protected: |
+ scoped_ptr<FakeAppListShower> shower_; |
scoped_ptr<FakeProfile> profile1_; |
scoped_ptr<FakeProfile> profile2_; |
+ |
+ int views_created_; |
+ int views_dismissed_; |
}; |
TEST_F(AppListShowerUnitTest, Preconditions) { |
@@ -126,17 +119,23 @@ TEST_F(AppListShowerUnitTest, HidingViewRemovesKeepalive) { |
} |
TEST_F(AppListShowerUnitTest, HideAndShowReusesView) { |
+ EXPECT_EQ(0, views_created_); |
shower_->ShowForProfile(profile1_.get()); |
+ EXPECT_EQ(1, views_created_); |
+ EXPECT_EQ(0, views_dismissed_); |
shower_->DismissAppList(); |
+ EXPECT_EQ(1, views_dismissed_); |
shower_->ShowForProfile(profile1_.get()); |
- EXPECT_EQ(1, factory_->views_created_); |
+ EXPECT_EQ(1, views_created_); |
} |
TEST_F(AppListShowerUnitTest, CloseAndShowRecreatesView) { |
shower_->ShowForProfile(profile1_.get()); |
shower_->HandleViewBeingDestroyed(); |
+ // Destroying implies hiding. A separate notification shouldn't go out. |
+ EXPECT_EQ(0, views_dismissed_); |
shower_->ShowForProfile(profile1_.get()); |
- EXPECT_EQ(2, factory_->views_created_); |
+ EXPECT_EQ(2, views_created_); |
} |
TEST_F(AppListShowerUnitTest, CloseRemovesView) { |
@@ -157,10 +156,11 @@ TEST_F(AppListShowerUnitTest, CloseAppListClearsProfile) { |
TEST_F(AppListShowerUnitTest, SwitchingProfiles) { |
shower_->ShowForProfile(profile1_.get()); |
- EXPECT_EQ("p1", GetCurrentAppList()->profile_name()); |
+ EXPECT_EQ("p1", shower_->profile()->GetProfileName()); |
shower_->ShowForProfile(profile2_.get()); |
- EXPECT_EQ("p2", GetCurrentAppList()->profile_name()); |
+ EXPECT_EQ("p2", shower_->profile()->GetProfileName()); |
// Shouldn't create new view for second profile - it should switch in place. |
- EXPECT_EQ(1, factory_->views_created_); |
+ EXPECT_EQ(1, views_created_); |
+ EXPECT_EQ(0, views_dismissed_); |
} |