Chromium Code Reviews| Index: chrome/browser/ui/sync/one_click_signin_helper_unittest.cc |
| diff --git a/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc |
| index 15571d8fa28b8d66c1b3f89f942d851195b31f48..4f82a5aae2885c94e57096f729698a193a0673bd 100644 |
| --- a/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc |
| +++ b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc |
| @@ -5,109 +5,88 @@ |
| #include "chrome/browser/content_settings/cookie_settings.h" |
| #include "chrome/browser/prefs/pref_service.h" |
| #include "chrome/browser/profiles/profile.h" |
| -#include "chrome/browser/profiles/profile_manager.h" |
| #include "chrome/browser/signin/signin_manager_factory.h" |
| #include "chrome/browser/signin/signin_manager_fake.h" |
| #include "chrome/browser/ui/sync/one_click_signin_helper.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/test/base/testing_profile.h" |
| -#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| #include "content/public/browser/browser_context.h" |
| -#include "content/public/browser/navigation_controller.h" |
| -#include "content/public/browser/site_instance.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/test/test_browser_thread.h" |
| -#include "content/public/test/web_contents_tester.h" |
| -#include "testing/gmock/include/gmock/gmock-actions.h" |
| -#include "testing/gmock/include/gmock/gmock.h" |
| +#include "content/public/test/test_renderer_host.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace { |
| -class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness { |
| +class OneClickSigninHelperTest : public content::RenderViewHostTestHarness { |
| public: |
| - OneClickSigninHelperTest() : signin_manager_(NULL) { |
| + OneClickSigninHelperTest() { |
| } |
| - virtual void TearDown() OVERRIDE; |
| + virtual void SetUp() OVERRIDE; |
| protected: |
| - // Marks the current thread as the UI thread, so that calls that assume |
| - // they are called on that thread work. |
| - void MarkCurrentThreadAsUIThread(); |
| - |
| // Creates a mock WebContents for tests. If |use_incognito| is true then |
| - // a WebContents for an incognito profile is created. |
| - content::WebContents* CreateMockWebContents(bool use_incognito); |
| + // a WebContents for an incognito profile is created. If |username| is |
| + // is not empty, the profile of the mock WebContents will be connected to |
| + // the given account. |
| + content::WebContents* CreateMockWebContents(bool use_incognito, |
| + const std::string& username); |
| void EnableOneClick(bool enable); |
| void AllowSigninCookies(bool enable); |
| - // Marks the profile as connected to the given account. If |username| is the |
| - // empty string, the profile is not connected. |
| - void ConnectProfileToAccount(const std::string& username); |
| - |
| private: |
| // Members to fake that we are on the UI thread. |
| scoped_ptr<content::TestBrowserThread> ui_thread_; |
| - // Mock objects used during tests. The objects need to be torn down in the |
| - // correct order, see TearDown(). |
| - scoped_ptr<content::WebContents> web_contents_; |
| - scoped_ptr<TestingProfile> profile_; |
| - SigninManager* signin_manager_; |
| - |
| DISALLOW_COPY_AND_ASSIGN(OneClickSigninHelperTest); |
| }; |
| -void OneClickSigninHelperTest::TearDown() { |
| - // Destroy things in proper order. |
| - web_contents_.reset(); |
| - profile_.reset(); |
| - ui_thread_.reset(); |
| - MessageLoop::current()->RunAllPending(); |
| - ChromeRenderViewHostTestHarness::TearDown(); |
| -} |
| +void OneClickSigninHelperTest::SetUp() { |
| + // Don't call base class so that default browser context and test WebContents |
| + // are not created now. They will be created in CreateMockWebContents() |
| + // as needed. |
| -void OneClickSigninHelperTest::MarkCurrentThreadAsUIThread() { |
| + // Marks the current thread as the UI thread, so that calls that assume |
| + // they are called on that thread work. |
| ui_thread_.reset(new content::TestBrowserThread( |
|
James Hawkins
2012/06/06 16:36:37
nit: I'm sorry I didn't suggest this before, but n
Roger Tawa OOO till Jul 10th
2012/06/06 17:05:02
Done.
|
| content::BrowserThread::UI, &message_loop_)); |
| } |
| content::WebContents* OneClickSigninHelperTest::CreateMockWebContents( |
| - bool use_incognito) { |
| - EXPECT_TRUE(web_contents_.get() == NULL); |
| + bool use_incognito, |
| + const std::string& username) { |
| + TestingProfile* testing_profile = new TestingProfile(); |
| + browser_context_.reset(testing_profile); |
| - profile_.reset(new TestingProfile()); |
| - signin_manager_ = static_cast<SigninManager*>( |
| + testing_profile->set_incognito(use_incognito); |
| + SigninManager* signin_manager = static_cast<SigninManager*>( |
| SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse( |
| - profile_.get(), FakeSigninManager::Build)); |
| + testing_profile, FakeSigninManager::Build)); |
| + if (!username.empty()) { |
| + signin_manager->StartSignIn(username, std::string(), std::string(), |
| + std::string()); |
| + } |
| - profile_->set_incognito(use_incognito); |
| - web_contents_.reset(content::WebContentsTester::CreateTestWebContents( |
| - profile_.get(), NULL)); |
| - return web_contents_.get(); |
| + return CreateTestWebContents(); |
| } |
| void OneClickSigninHelperTest::EnableOneClick(bool enable) { |
| - PrefService* pref_service = profile_->GetPrefs(); |
| + PrefService* pref_service = Profile::FromBrowserContext( |
| + browser_context_.get())->GetPrefs(); |
| pref_service->SetBoolean(prefs::kReverseAutologinEnabled, enable); |
| } |
| void OneClickSigninHelperTest::AllowSigninCookies(bool enable) { |
| CookieSettings* cookie_settings = |
| - CookieSettings::Factory::GetForProfile(profile_.get()); |
| + CookieSettings::Factory::GetForProfile( |
| + Profile::FromBrowserContext(browser_context_.get())); |
| cookie_settings->SetDefaultCookieSetting( |
| enable ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK); |
| } |
| -void OneClickSigninHelperTest::ConnectProfileToAccount( |
| - const std::string& username) { |
| - signin_manager_->StartSignIn(username, std::string(), std::string(), |
| - std::string()); |
| -} |
| - |
| } // namespace |
| TEST_F(OneClickSigninHelperTest, CanOfferNoContents) { |
| @@ -116,8 +95,7 @@ TEST_F(OneClickSigninHelperTest, CanOfferNoContents) { |
| } |
| TEST_F(OneClickSigninHelperTest, CanOffer) { |
| - MarkCurrentThreadAsUIThread(); |
| - content::WebContents* web_contents = CreateMockWebContents(false); |
| + content::WebContents* web_contents = CreateMockWebContents(false, ""); |
| EnableOneClick(true); |
| EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, true)); |
| @@ -129,25 +107,22 @@ TEST_F(OneClickSigninHelperTest, CanOffer) { |
| } |
| TEST_F(OneClickSigninHelperTest, CanOfferProfileConnected) { |
| - MarkCurrentThreadAsUIThread(); |
| - content::WebContents* web_contents = CreateMockWebContents(false); |
| - ConnectProfileToAccount("foo@gmail.com"); |
| + content::WebContents* web_contents = CreateMockWebContents(false, |
| + "foo@gmail.com"); |
| EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true)); |
| EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, false)); |
| } |
| TEST_F(OneClickSigninHelperTest, CanOfferIncognito) { |
| - MarkCurrentThreadAsUIThread(); |
| - content::WebContents* web_contents = CreateMockWebContents(true); |
| + content::WebContents* web_contents = CreateMockWebContents(true, ""); |
| EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true)); |
| EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, false)); |
| } |
| TEST_F(OneClickSigninHelperTest, CanOfferNoSigninCookies) { |
| - MarkCurrentThreadAsUIThread(); |
| - content::WebContents* web_contents = CreateMockWebContents(true); |
| + content::WebContents* web_contents = CreateMockWebContents(false, ""); |
| AllowSigninCookies(false); |
| EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true)); |