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 0201fa07238e60ccbf0dba6fe703f7eec623132a..2ff37d760582f548a865c6e0c2dd481960f91fea 100644 |
--- a/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc |
+++ b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/command_line.h" |
#include "base/prefs/pref_service.h" |
#include "base/prefs/scoped_user_pref_update.h" |
#include "base/strings/utf_string_conversions.h" |
@@ -27,6 +28,7 @@ |
#include "chrome/browser/ui/sync/one_click_signin_helper.h" |
#include "chrome/browser/ui/webui/signin/login_ui_service.h" |
#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" |
+#include "chrome/common/chrome_switches.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
#include "chrome/test/base/testing_browser_process.h" |
@@ -193,6 +195,7 @@ class OneClickTestProfileSyncService : public TestProfileSyncService { |
class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness { |
public: |
OneClickSigninHelperTest(); |
+ virtual ~OneClickSigninHelperTest(); |
virtual void SetUp() OVERRIDE; |
virtual void TearDown() OVERRIDE; |
@@ -217,6 +220,11 @@ class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness { |
FakeProfileOAuth2TokenService* fake_oauth2_token_service_; |
protected: |
+ enum SetupArgument { ENABLE_WEB_BASED_SIGNIN, DISABLE_WEB_BASED_SIGNIN }; |
+ |
+ // A helper method to SetUp(void). |
+ void SetUp(SetupArgument arg); |
+ |
GoogleServiceAuthError no_error_; |
private: |
@@ -238,7 +246,17 @@ OneClickSigninHelperTest::OneClickSigninHelperTest() |
trusted_signin_process_id_(-1) { |
} |
+OneClickSigninHelperTest::~OneClickSigninHelperTest() {} |
+ |
void OneClickSigninHelperTest::SetUp() { |
+ SetUp(ENABLE_WEB_BASED_SIGNIN); |
+} |
+ |
+void OneClickSigninHelperTest::SetUp(SetupArgument arg) { |
+ if (arg == ENABLE_WEB_BASED_SIGNIN) { |
+ CommandLine::ForCurrentProcess()->AppendSwitch( |
+ switches::kEnableWebBasedSignin); |
+ } |
signin::ForceWebBasedSigninFlowForTesting(true); |
content::RenderViewHostTestHarness::SetUp(); |
SetTrustedSigninProcessID(process()->GetID()); |
@@ -334,6 +352,7 @@ content::BrowserContext* OneClickSigninHelperTest::CreateBrowserContext() { |
class OneClickSigninHelperIOTest : public OneClickSigninHelperTest { |
public: |
OneClickSigninHelperIOTest(); |
+ virtual ~OneClickSigninHelperIOTest(); |
virtual void SetUp() OVERRIDE; |
@@ -354,6 +373,8 @@ OneClickSigninHelperIOTest::OneClickSigninHelperIOTest() |
valid_gaia_url_("https://accounts.google.com/") { |
} |
+OneClickSigninHelperIOTest::~OneClickSigninHelperIOTest() {} |
+ |
void OneClickSigninHelperIOTest::SetUp() { |
OneClickSigninHelperTest::SetUp(); |
ASSERT_TRUE(testing_profile_manager_.SetUp()); |
@@ -385,6 +406,17 @@ OneClickSigninHelperIncognitoTest::CreateBrowserContext() { |
return builder.Build().release(); |
} |
+class OneClickSigninHelperDisableWebBasedSigninTest |
+ : public OneClickSigninHelperTest { |
+ public: |
+ // No additional data members => no need to declare a virtual destructor. |
+ virtual void SetUp() OVERRIDE; |
+}; |
+ |
+void OneClickSigninHelperDisableWebBasedSigninTest::SetUp() { |
+ OneClickSigninHelperTest::SetUp(DISABLE_WEB_BASED_SIGNIN); |
+} |
Roger Tawa OOO till Jul 10th
2014/02/12 15:36:50
Please use testing::TestWithParam and TEST_P macro
vabr (Chromium)
2014/02/12 18:42:15
Modifications to the unit-test dropped.
|
+ |
TEST_F(OneClickSigninHelperTest, CanOfferNoContents) { |
std::string error_message; |
EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
@@ -845,3 +877,39 @@ TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabledByPolicy) { |
OneClickSigninHelper::CanOfferOnIOThreadImpl( |
valid_gaia_url_, &request_, io_data.get())); |
} |
+ |
+TEST_F(OneClickSigninHelperDisableWebBasedSigninTest, CanOffer) { |
+ CreateSigninManager(std::string()); |
+ |
+ EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
+ WillRepeatedly(Return(true)); |
Roger Tawa OOO till Jul 10th
2014/02/12 15:36:50
Indent 2 less.
vabr (Chromium)
2014/02/12 18:42:15
Modifications to the unit-test dropped.
|
+ |
+ // Whithout the "enable-web-based-signin" flag, CanOffer should always return |
+ // false, independently of the OneClick setting. |
+ for (int i = 0; i < 2; ++i) { |
+ bool enable_one_click = !i; |
+ EnableOneClick(enable_one_click); |
+ SCOPED_TRACE(testing::Message() |
+ << "enable_one_click = " << enable_one_click); |
+ std::string error_message; |
+ |
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
+ web_contents(), |
+ OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
+ "user@gmail.com", |
+ &error_message)); |
+ EXPECT_EQ("", error_message); |
+ EXPECT_FALSE( |
+ OneClickSigninHelper::CanOffer(web_contents(), |
+ OneClickSigninHelper::CAN_OFFER_FOR_ALL, |
+ "user@gmail.com", |
+ &error_message)); |
+ EXPECT_EQ("", error_message); |
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
+ web_contents(), |
+ OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
+ std::string(), |
+ &error_message)); |
+ EXPECT_EQ("", error_message); |
+ } |
+} |