Index: chrome/browser/profile_resetter/profile_resetter_unittest.cc |
diff --git a/chrome/browser/profile_resetter/profile_resetter_unittest.cc b/chrome/browser/profile_resetter/profile_resetter_unittest.cc |
index 64ad49168efa9fcf76149a80c864cda375b3102a..2cb521b9516b12650d1f07d4ce7f70e3b9c95443 100644 |
--- a/chrome/browser/profile_resetter/profile_resetter_unittest.cc |
+++ b/chrome/browser/profile_resetter/profile_resetter_unittest.cc |
@@ -5,90 +5,151 @@ |
#include "chrome/browser/profile_resetter/profile_resetter.h" |
#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/message_loop.h" |
-#include "content/public/test/test_browser_thread.h" |
+#include "base/prefs/pref_service.h" |
+#include "chrome/browser/prefs/session_startup_pref.h" |
+#include "chrome/browser/search_engines/template_url_service_test_util.h" |
+#include "chrome/common/pref_names.h" |
+#include "chrome/test/base/testing_profile.h" |
+#include "content/public/test/test_utils.h" |
#include "testing/gmock/include/gmock/gmock.h" |
namespace { |
class MockObject { |
public: |
+ void RunLoop() { |
+ EXPECT_CALL(*this, Callback()); |
+ runner_ = new content::MessageLoopRunner; |
+ runner_->Run(); |
+ } |
+ |
+ void StopLoop() { |
+ DCHECK(runner_); |
+ Callback(); |
+ runner_->Quit(); |
+ } |
+ |
+ private: |
MOCK_METHOD0(Callback, void(void)); |
+ |
+ scoped_refptr<content::MessageLoopRunner> runner_; |
}; |
class ProfileResetterTest : public testing::Test { |
- public: |
- ProfileResetterTest() |
- : ui_thread_(content::BrowserThread::UI, &message_loop_), |
- resetter_(NULL) {} |
- |
- ~ProfileResetterTest() {} |
- |
- private: |
- base::MessageLoopForUI message_loop_; |
- content::TestBrowserThread ui_thread_; |
- |
protected: |
+ ProfileResetterTest(); |
+ ~ProfileResetterTest(); |
+ // testing::Test: |
+ virtual void SetUp() OVERRIDE; |
+ virtual void TearDown() OVERRIDE; |
+ |
testing::StrictMock<MockObject> mock_object_; |
- ProfileResetter resetter_; |
+ TemplateURLServiceTestUtil test_util_; |
+ scoped_ptr<ProfileResetter> resetter_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ProfileResetterTest); |
}; |
+ProfileResetterTest::ProfileResetterTest() {} |
+ |
+ProfileResetterTest::~ProfileResetterTest() {} |
+ |
+void ProfileResetterTest::SetUp() { |
+ test_util_.SetUp(); |
+ resetter_.reset(new ProfileResetter(test_util_.profile())); |
+} |
+ |
+void ProfileResetterTest::TearDown() { |
+ test_util_.TearDown(); |
+} |
+ |
TEST_F(ProfileResetterTest, ResetDefaultSearchEngine) { |
- EXPECT_CALL(mock_object_, Callback()); |
- resetter_.Reset( |
+ test_util_.VerifyLoad(); |
+ resetter_->Reset( |
ProfileResetter::DEFAULT_SEARCH_ENGINE, |
ProfileResetter::DISABLE_EXTENSIONS, |
- base::Bind(&MockObject::Callback, base::Unretained(&mock_object_))); |
+ base::Bind(&MockObject::StopLoop, base::Unretained(&mock_object_))); |
+ mock_object_.RunLoop(); |
} |
TEST_F(ProfileResetterTest, ResetHomepage) { |
- EXPECT_CALL(mock_object_, Callback()); |
- resetter_.Reset( |
+ PrefService* prefs = test_util_.profile()->GetPrefs(); |
+ DCHECK(prefs); |
+ prefs->SetBoolean(prefs::kHomePageIsNewTabPage, false); |
+ prefs->SetString(prefs::kHomePage, "http://google.com"); |
+ prefs->SetBoolean(prefs::kShowHomeButton, true); |
+ |
+ resetter_->Reset( |
ProfileResetter::HOMEPAGE, |
ProfileResetter::DISABLE_EXTENSIONS, |
- base::Bind(&MockObject::Callback, base::Unretained(&mock_object_))); |
+ base::Bind(&MockObject::StopLoop, base::Unretained(&mock_object_))); |
+ mock_object_.RunLoop(); |
+ |
+ EXPECT_TRUE(prefs->GetBoolean(prefs::kHomePageIsNewTabPage)); |
+ EXPECT_EQ(std::string(), prefs->GetString(prefs::kHomePage)); |
+ EXPECT_FALSE(prefs->GetBoolean(prefs::kShowHomeButton)); |
} |
TEST_F(ProfileResetterTest, ResetContentSettings) { |
- EXPECT_CALL(mock_object_, Callback()); |
- resetter_.Reset( |
+ resetter_->Reset( |
ProfileResetter::CONTENT_SETTINGS, |
ProfileResetter::DISABLE_EXTENSIONS, |
- base::Bind(&MockObject::Callback, base::Unretained(&mock_object_))); |
+ base::Bind(&MockObject::StopLoop, base::Unretained(&mock_object_))); |
+ mock_object_.RunLoop(); |
} |
TEST_F(ProfileResetterTest, ResetCookiesAndSiteData) { |
- EXPECT_CALL(mock_object_, Callback()); |
- resetter_.Reset( |
+ resetter_->Reset( |
ProfileResetter::COOKIES_AND_SITE_DATA, |
ProfileResetter::DISABLE_EXTENSIONS, |
- base::Bind(&MockObject::Callback, base::Unretained(&mock_object_))); |
+ base::Bind(&MockObject::StopLoop, base::Unretained(&mock_object_))); |
+ mock_object_.RunLoop(); |
} |
TEST_F(ProfileResetterTest, ResetExtensionsByDisabling) { |
- EXPECT_CALL(mock_object_, Callback()); |
- resetter_.Reset( |
+ resetter_->Reset( |
ProfileResetter::EXTENSIONS, |
ProfileResetter::DISABLE_EXTENSIONS, |
- base::Bind(&MockObject::Callback, base::Unretained(&mock_object_))); |
+ base::Bind(&MockObject::StopLoop, base::Unretained(&mock_object_))); |
+ mock_object_.RunLoop(); |
} |
TEST_F(ProfileResetterTest, ResetExtensionsByUninstalling) { |
- EXPECT_CALL(mock_object_, Callback()); |
- resetter_.Reset( |
+ resetter_->Reset( |
ProfileResetter::EXTENSIONS, |
ProfileResetter::UNINSTALL_EXTENSIONS, |
- base::Bind(&MockObject::Callback, base::Unretained(&mock_object_))); |
+ base::Bind(&MockObject::StopLoop, base::Unretained(&mock_object_))); |
+ mock_object_.RunLoop(); |
+} |
+ |
+TEST_F(ProfileResetterTest, ResetStartPage) { |
+ PrefService* prefs = test_util_.profile()->GetPrefs(); |
+ DCHECK(prefs); |
+ |
+ SessionStartupPref startup_pref(SessionStartupPref::URLS); |
+ startup_pref.urls.push_back(GURL("http://foo")); |
+ startup_pref.urls.push_back(GURL("http://bar")); |
+ SessionStartupPref::SetStartupPref(prefs, startup_pref); |
+ |
+ resetter_->Reset( |
+ ProfileResetter::STARTUP_PAGE, |
+ ProfileResetter::DISABLE_EXTENSIONS, |
+ base::Bind(&MockObject::StopLoop, base::Unretained(&mock_object_))); |
+ mock_object_.RunLoop(); |
+ |
+ startup_pref = SessionStartupPref::GetStartupPref(prefs); |
+ EXPECT_EQ(SessionStartupPref::GetDefaultStartupType(), startup_pref.type); |
+ EXPECT_EQ(std::vector<GURL>(), startup_pref.urls); |
} |
TEST_F(ProfileResetterTest, ResetExtensionsAll) { |
// mock_object_ is a StrictMock, so we verify that it is called only once. |
- EXPECT_CALL(mock_object_, Callback()); |
- resetter_.Reset( |
+ test_util_.VerifyLoad(); |
+ resetter_->Reset( |
ProfileResetter::ALL, |
ProfileResetter::UNINSTALL_EXTENSIONS, |
- base::Bind(&MockObject::Callback, base::Unretained(&mock_object_))); |
+ base::Bind(&MockObject::StopLoop, base::Unretained(&mock_object_))); |
+ mock_object_.RunLoop(); |
} |
} // namespace |