Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: chrome/browser/ui/sync/one_click_signin_helper_unittest.cc

Issue 12374007: signin: force web signin flow initiated visits to accounts.google.com to their own process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/sync/one_click_signin_helper.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/prefs/pref_service.h" 5 #include "base/prefs/pref_service.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/content_settings/cookie_settings.h" 8 #include "chrome/browser/content_settings/cookie_settings.h"
9 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 9 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
10 #include "chrome/browser/prefs/scoped_user_pref_update.h" 10 #include "chrome/browser/prefs/scoped_user_pref_update.h"
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 226
227 virtual void SetUp() OVERRIDE; 227 virtual void SetUp() OVERRIDE;
228 virtual void TearDown() OVERRIDE; 228 virtual void TearDown() OVERRIDE;
229 229
230 // Creates the sign-in manager for tests. If |use_incognito| is true then 230 // Creates the sign-in manager for tests. If |use_incognito| is true then
231 // a WebContents for an incognito profile is created. If |username| is 231 // a WebContents for an incognito profile is created. If |username| is
232 // is not empty, the profile of the mock WebContents will be connected to 232 // is not empty, the profile of the mock WebContents will be connected to
233 // the given account. 233 // the given account.
234 void CreateSigninManager(bool use_incognito, const std::string& username); 234 void CreateSigninManager(bool use_incognito, const std::string& username);
235 235
236 // Set the ID of the signin process that the test will assume to be the
237 // only process allowed to sign the user in to Chrome.
238 void SetTrustedSigninProcessID(int id);
239
236 void AddEmailToOneClickRejectedList(const std::string& email); 240 void AddEmailToOneClickRejectedList(const std::string& email);
237 void EnableOneClick(bool enable); 241 void EnableOneClick(bool enable);
238 void AllowSigninCookies(bool enable); 242 void AllowSigninCookies(bool enable);
239 void SetAllowedUsernamePattern(const std::string& pattern); 243 void SetAllowedUsernamePattern(const std::string& pattern);
240 244
241 SigninManagerMock* signin_manager_; 245 SigninManagerMock* signin_manager_;
242 246
243 protected: 247 protected:
244 TestingProfile* profile_; 248 TestingProfile* profile_;
245 249
246 private: 250 private:
247 // Members to fake that we are on the UI thread. 251 // Members to fake that we are on the UI thread.
248 content::TestBrowserThread ui_thread_; 252 content::TestBrowserThread ui_thread_;
249 253
254 // The ID of the signin process the test will assume to be trusted.
255 // By default, set to the test RenderProcessHost's process ID, but
256 // overridden by SetTrustedSigninProcessID.
257 int trusted_signin_process_id_;
258
250 DISALLOW_COPY_AND_ASSIGN(OneClickSigninHelperTest); 259 DISALLOW_COPY_AND_ASSIGN(OneClickSigninHelperTest);
251 }; 260 };
252 261
253 OneClickSigninHelperTest::OneClickSigninHelperTest() 262 OneClickSigninHelperTest::OneClickSigninHelperTest()
254 : profile_(NULL), 263 : profile_(NULL),
255 ui_thread_(content::BrowserThread::UI, &message_loop_) { 264 ui_thread_(content::BrowserThread::UI, &message_loop_),
265 trusted_signin_process_id_(-1) {
256 } 266 }
257 267
258 void OneClickSigninHelperTest::SetUp() { 268 void OneClickSigninHelperTest::SetUp() {
259 SyncPromoUI::ForceWebBasedSigninFlowForTesting(true); 269 SyncPromoUI::ForceWebBasedSigninFlowForTesting(true);
260 profile_ = new TestingProfile(); 270 profile_ = new TestingProfile();
261 browser_context_.reset(profile_); 271 browser_context_.reset(profile_);
262 content::RenderViewHostTestHarness::SetUp(); 272 content::RenderViewHostTestHarness::SetUp();
273 SetTrustedSigninProcessID(process()->GetID());
263 } 274 }
264 275
265 void OneClickSigninHelperTest::TearDown() { 276 void OneClickSigninHelperTest::TearDown() {
266 SyncPromoUI::ForceWebBasedSigninFlowForTesting(false); 277 SyncPromoUI::ForceWebBasedSigninFlowForTesting(false);
267 content::RenderViewHostTestHarness::TearDown(); 278 content::RenderViewHostTestHarness::TearDown();
268 } 279 }
269 280
281 void OneClickSigninHelperTest::SetTrustedSigninProcessID(int id) {
282 trusted_signin_process_id_ = id;
283 }
284
270 void OneClickSigninHelperTest::CreateSigninManager( 285 void OneClickSigninHelperTest::CreateSigninManager(
271 bool use_incognito, 286 bool use_incognito,
272 const std::string& username) { 287 const std::string& username) {
273 profile_->set_incognito(use_incognito); 288 profile_->set_incognito(use_incognito);
274 signin_manager_ = static_cast<SigninManagerMock*>( 289 signin_manager_ = static_cast<SigninManagerMock*>(
275 SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse( 290 SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse(
276 profile_, BuildSigninManagerMock)); 291 profile_, BuildSigninManagerMock));
277 292 if (signin_manager_)
293 signin_manager_->SetSigninProcess(trusted_signin_process_id_);
278 if (!username.empty()) { 294 if (!username.empty()) {
295 ASSERT_TRUE(signin_manager_);
279 signin_manager_->StartSignIn(username, std::string(), std::string(), 296 signin_manager_->StartSignIn(username, std::string(), std::string(),
280 std::string()); 297 std::string());
281 } 298 }
282 } 299 }
283 300
284 void OneClickSigninHelperTest::EnableOneClick(bool enable) { 301 void OneClickSigninHelperTest::EnableOneClick(bool enable) {
285 PrefService* pref_service = Profile::FromBrowserContext( 302 PrefService* pref_service = Profile::FromBrowserContext(
286 browser_context_.get())->GetPrefs(); 303 browser_context_.get())->GetPrefs();
287 pref_service->SetBoolean(prefs::kReverseAutologinEnabled, enable); 304 pref_service->SetBoolean(prefs::kReverseAutologinEnabled, enable);
288 } 305 }
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 EXPECT_FALSE(OneClickSigninHelper::CanOffer( 583 EXPECT_FALSE(OneClickSigninHelper::CanOffer(
567 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, 584 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL,
568 "user@gmail.com", &error_message)); 585 "user@gmail.com", &error_message));
569 EXPECT_EQ("", error_message); 586 EXPECT_EQ("", error_message);
570 EXPECT_FALSE(OneClickSigninHelper::CanOffer( 587 EXPECT_FALSE(OneClickSigninHelper::CanOffer(
571 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, 588 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY,
572 "", &error_message)); 589 "", &error_message));
573 EXPECT_EQ("", error_message); 590 EXPECT_EQ("", error_message);
574 } 591 }
575 592
593 TEST_F(OneClickSigninHelperTest, CanOfferUntrustedProcess) {
594 content::MockRenderProcessHost trusted(browser_context_.get());
595 ASSERT_NE(trusted.GetID(), process()->GetID());
596 // Make sure the RenderProcessHost used by the test is untrusted.
597 SetTrustedSigninProcessID(trusted.GetID());
598 CreateSigninManager(false, "");
599
600 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)).
601 WillRepeatedly(Return(true));
602
603 EnableOneClick(true);
604 EXPECT_FALSE(OneClickSigninHelper::CanOffer(
605 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL,
606 "user@gmail.com", NULL));
607 }
608
576 TEST_F(OneClickSigninHelperTest, CanOfferDisabledByPolicy) { 609 TEST_F(OneClickSigninHelperTest, CanOfferDisabledByPolicy) {
577 CreateSigninManager(false, ""); 610 CreateSigninManager(false, "");
578 611
579 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). 612 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)).
580 WillRepeatedly(Return(true)); 613 WillRepeatedly(Return(true));
581 614
582 EnableOneClick(true); 615 EnableOneClick(true);
583 EXPECT_TRUE(OneClickSigninHelper::CanOffer( 616 EXPECT_TRUE(OneClickSigninHelper::CanOffer(
584 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, 617 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL,
585 "user@gmail.com", NULL)); 618 "user@gmail.com", NULL));
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 prefs::kSigninAllowed, base::Value::CreateBooleanValue(true)); 845 prefs::kSigninAllowed, base::Value::CreateBooleanValue(true));
813 846
814 // Simulate a policy disabling sync by writing kSyncManaged directly. 847 // Simulate a policy disabling sync by writing kSyncManaged directly.
815 // We should still offer to sign in the browser. 848 // We should still offer to sign in the browser.
816 profile_->GetTestingPrefService()->SetManagedPref( 849 profile_->GetTestingPrefService()->SetManagedPref(
817 prefs::kSyncManaged, base::Value::CreateBooleanValue(true)); 850 prefs::kSyncManaged, base::Value::CreateBooleanValue(true));
818 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, 851 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
819 OneClickSigninHelper::CanOfferOnIOThreadImpl( 852 OneClickSigninHelper::CanOfferOnIOThreadImpl(
820 valid_gaia_url_, "", &request_, io_data.get())); 853 valid_gaia_url_, "", &request_, io_data.get()));
821 } 854 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/sync/one_click_signin_helper.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698