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

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

Issue 217883004: [Signin] Factor out a helper class to load a continue URL once Sync is configured. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update a #include location Created 6 years, 8 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
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/prefs/scoped_user_pref_update.h" 6 #include "base/prefs/scoped_user_pref_update.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
11 #include "chrome/browser/content_settings/cookie_settings.h" 11 #include "chrome/browser/content_settings/cookie_settings.h"
12 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 12 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/profiles/profile_info_cache.h" 14 #include "chrome/browser/profiles/profile_info_cache.h"
15 #include "chrome/browser/profiles/profile_io_data.h" 15 #include "chrome/browser/profiles/profile_io_data.h"
16 #include "chrome/browser/profiles/profile_manager.h" 16 #include "chrome/browser/profiles/profile_manager.h"
17 #include "chrome/browser/signin/chrome_signin_client.h" 17 #include "chrome/browser/signin/chrome_signin_client.h"
18 #include "chrome/browser/signin/chrome_signin_client_factory.h" 18 #include "chrome/browser/signin/chrome_signin_client_factory.h"
19 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" 19 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
20 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h" 20 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
21 #include "chrome/browser/signin/fake_signin_manager.h" 21 #include "chrome/browser/signin/fake_signin_manager.h"
22 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 22 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
23 #include "chrome/browser/signin/signin_manager_factory.h" 23 #include "chrome/browser/signin/signin_manager_factory.h"
24 #include "chrome/browser/signin/signin_names_io_thread.h" 24 #include "chrome/browser/signin/signin_names_io_thread.h"
25 #include "chrome/browser/signin/signin_promo.h" 25 #include "chrome/browser/signin/signin_promo.h"
26 #include "chrome/browser/sync/profile_sync_service_factory.h" 26 #include "chrome/browser/sync/profile_sync_service_factory.h"
27 #include "chrome/browser/sync/profile_sync_service_mock.h"
28 #include "chrome/browser/sync/test_profile_sync_service.h" 27 #include "chrome/browser/sync/test_profile_sync_service.h"
29 #include "chrome/browser/ui/sync/one_click_signin_helper.h" 28 #include "chrome/browser/ui/sync/one_click_signin_helper.h"
30 #include "chrome/browser/ui/webui/signin/login_ui_service.h" 29 #include "chrome/browser/ui/webui/signin/login_ui_service.h"
31 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" 30 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
32 #include "chrome/common/pref_names.h" 31 #include "chrome/common/pref_names.h"
33 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 32 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
34 #include "chrome/test/base/testing_browser_process.h" 33 #include "chrome/test/base/testing_browser_process.h"
35 #include "chrome/test/base/testing_pref_service_syncable.h" 34 #include "chrome/test/base/testing_pref_service_syncable.h"
36 #include "chrome/test/base/testing_profile.h" 35 #include "chrome/test/base/testing_profile.h"
37 #include "chrome/test/base/testing_profile_manager.h" 36 #include "chrome/test/base/testing_profile_manager.h"
38 #include "components/autofill/core/common/password_form.h" 37 #include "components/autofill/core/common/password_form.h"
39 #include "components/signin/core/browser/profile_oauth2_token_service.h" 38 #include "components/signin/core/browser/profile_oauth2_token_service.h"
40 #include "components/signin/core/browser/signin_manager.h" 39 #include "components/signin/core/browser/signin_manager.h"
41 #include "components/sync_driver/pref_names.h" 40 #include "components/sync_driver/pref_names.h"
42 #include "content/public/browser/browser_context.h" 41 #include "content/public/browser/browser_context.h"
43 #include "content/public/browser/navigation_details.h" 42 #include "content/public/browser/navigation_details.h"
44 #include "content/public/browser/navigation_entry.h" 43 #include "content/public/browser/navigation_entry.h"
45 #include "content/public/browser/web_contents.h" 44 #include "content/public/browser/web_contents.h"
46 #include "content/public/browser/web_contents_delegate.h" 45 #include "content/public/browser/web_contents_delegate.h"
47 #include "content/public/common/frame_navigate_params.h" 46 #include "content/public/common/frame_navigate_params.h"
48 #include "content/public/common/url_constants.h" 47 #include "content/public/common/url_constants.h"
49 #include "content/public/test/mock_render_process_host.h" 48 #include "content/public/test/mock_render_process_host.h"
50 #include "grit/chromium_strings.h" 49 #include "grit/chromium_strings.h"
51 #include "grit/generated_resources.h" 50 #include "grit/generated_resources.h"
51 #include "testing/gmock/include/gmock/gmock.h"
52 #include "testing/gtest/include/gtest/gtest.h" 52 #include "testing/gtest/include/gtest/gtest.h"
53 #include "ui/base/l10n/l10n_util.h" 53 #include "ui/base/l10n/l10n_util.h"
54 54
55 using ::testing::_; 55 using ::testing::_;
56 using ::testing::AtLeast; 56 using ::testing::AtLeast;
57 using ::testing::Return; 57 using ::testing::Return;
58 58
59 namespace { 59 namespace {
60 60
61 // Used to confirm OneClickSigninHelper does not trigger redirect when there is 61 // Used to confirm OneClickSigninHelper does not trigger redirect when there is
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 } 164 }
165 }; 165 };
166 166
167 class TestURLRequest : public base::SupportsUserData { 167 class TestURLRequest : public base::SupportsUserData {
168 public: 168 public:
169 TestURLRequest() {} 169 TestURLRequest() {}
170 virtual ~TestURLRequest() {} 170 virtual ~TestURLRequest() {}
171 }; 171 };
172 172
173 class OneClickTestProfileSyncService : public TestProfileSyncService { 173 class OneClickTestProfileSyncService : public TestProfileSyncService {
174 public: 174 public:
175 virtual ~OneClickTestProfileSyncService() {} 175 virtual ~OneClickTestProfileSyncService() {}
176 176
177 // Helper routine to be used in conjunction with 177 // Helper routine to be used in conjunction with
178 // BrowserContextKeyedServiceFactory::SetTestingFactory(). 178 // BrowserContextKeyedServiceFactory::SetTestingFactory().
179 static KeyedService* Build(content::BrowserContext* profile) { 179 static KeyedService* Build(content::BrowserContext* profile) {
180 return new OneClickTestProfileSyncService(static_cast<Profile*>(profile)); 180 return new OneClickTestProfileSyncService(static_cast<Profile*>(profile));
181 } 181 }
182 182
183 // Need to control this for certain tests. 183 // Need to control this for certain tests.
184 virtual bool FirstSetupInProgress() const OVERRIDE { 184 virtual bool FirstSetupInProgress() const OVERRIDE {
185 return first_setup_in_progress_; 185 return first_setup_in_progress_;
186 } 186 }
187 187
188 // Controls return value of FirstSetupInProgress. Because some bits 188 virtual bool sync_initialized() const OVERRIDE { return sync_initialized_; }
189 // of UI depend on that value, it's useful to control it separately
190 // from the internal work and components that are triggered (such as
191 // ReconfigureDataTypeManager) to facilitate unit tests.
192 void set_first_setup_in_progress(bool in_progress) {
193 first_setup_in_progress_ = in_progress;
194 }
195 189
196 private: 190 // Controls return value of FirstSetupInProgress. Because some bits
197 explicit OneClickTestProfileSyncService(Profile* profile) 191 // of UI depend on that value, it's useful to control it separately
198 : TestProfileSyncService( 192 // from the internal work and components that are triggered (such as
199 NULL, 193 // ReconfigureDataTypeManager) to facilitate unit tests.
200 profile, 194 void set_first_setup_in_progress(bool in_progress) {
201 SigninManagerFactory::GetForProfile(profile), 195 first_setup_in_progress_ = in_progress;
202 ProfileOAuth2TokenServiceFactory::GetForProfile(profile), 196 }
203 browser_sync::MANUAL_START),
204 first_setup_in_progress_(false) {}
205 197
206 bool first_setup_in_progress_; 198 void set_sync_initialized(bool initialized) {
199 sync_initialized_ = initialized;
200 }
201
202 private:
203 explicit OneClickTestProfileSyncService(Profile* profile)
204 : TestProfileSyncService(
205 NULL,
206 profile,
207 SigninManagerFactory::GetForProfile(profile),
208 ProfileOAuth2TokenServiceFactory::GetForProfile(profile),
209 browser_sync::MANUAL_START),
210 first_setup_in_progress_(false),
211 sync_initialized_(false) {}
212
213 bool first_setup_in_progress_;
214 bool sync_initialized_;
207 }; 215 };
208 216
209 } // namespace 217 } // namespace
210 218
211 class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness { 219 class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness {
212 public: 220 public:
213 OneClickSigninHelperTest(); 221 OneClickSigninHelperTest();
214 222
215 virtual void SetUp() OVERRIDE; 223 virtual void SetUp() OVERRIDE;
216 virtual void TearDown() OVERRIDE; 224 virtual void TearDown() OVERRIDE;
217 225
218 // Sets up the sign-in manager for tests. If |username| is 226 // Sets up the sign-in manager for tests. If |username| is
219 // is not empty, the profile of the mock WebContents will be connected to 227 // is not empty, the profile of the mock WebContents will be connected to
220 // the given account. 228 // the given account.
221 void SetUpSigninManager(const std::string& username); 229 void SetUpSigninManager(const std::string& username);
222 230
223 // Set the ID of the signin process that the test will assume to be the 231 // Set the ID of the signin process that the test will assume to be the
224 // only process allowed to sign the user in to Chrome. 232 // only process allowed to sign the user in to Chrome.
225 void SetTrustedSigninProcessID(int id); 233 void SetTrustedSigninProcessID(int id);
226 234
227 void AddEmailToOneClickRejectedList(const std::string& email); 235 void AddEmailToOneClickRejectedList(const std::string& email);
228 void EnableOneClick(bool enable); 236 void EnableOneClick(bool enable);
229 void AllowSigninCookies(bool enable); 237 void AllowSigninCookies(bool enable);
230 void SetAllowedUsernamePattern(const std::string& pattern); 238 void SetAllowedUsernamePattern(const std::string& pattern);
231 ProfileSyncServiceMock* CreateProfileSyncServiceMock();
232 void SubmitGAIAPassword(OneClickSigninHelper* helper); 239 void SubmitGAIAPassword(OneClickSigninHelper* helper);
233 240
234 SigninManagerMock* signin_manager_; 241 SigninManagerMock* signin_manager_;
235 FakeProfileOAuth2TokenService* fake_oauth2_token_service_; 242 FakeProfileOAuth2TokenService* fake_oauth2_token_service_;
236 243
237 protected: 244 protected:
238 GoogleServiceAuthError no_error_; 245 GoogleServiceAuthError no_error_;
239 246
240 private: 247 private:
241 // ChromeRenderViewHostTestHarness overrides: 248 // ChromeRenderViewHostTestHarness overrides:
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 cookie_settings->SetDefaultCookieSetting(enable ? CONTENT_SETTING_ALLOW 311 cookie_settings->SetDefaultCookieSetting(enable ? CONTENT_SETTING_ALLOW
305 : CONTENT_SETTING_BLOCK); 312 : CONTENT_SETTING_BLOCK);
306 } 313 }
307 314
308 void OneClickSigninHelperTest::SetAllowedUsernamePattern( 315 void OneClickSigninHelperTest::SetAllowedUsernamePattern(
309 const std::string& pattern) { 316 const std::string& pattern) {
310 PrefService* local_state = g_browser_process->local_state(); 317 PrefService* local_state = g_browser_process->local_state();
311 local_state->SetString(prefs::kGoogleServicesUsernamePattern, pattern); 318 local_state->SetString(prefs::kGoogleServicesUsernamePattern, pattern);
312 } 319 }
313 320
314 ProfileSyncServiceMock*
315 OneClickSigninHelperTest::CreateProfileSyncServiceMock() {
316 ProfileSyncServiceMock* sync_service = static_cast<ProfileSyncServiceMock*>(
317 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
318 profile(),
319 ProfileSyncServiceMock::BuildMockProfileSyncService));
320 EXPECT_CALL(*sync_service, FirstSetupInProgress()).WillRepeatedly(
321 Return(false));
322 EXPECT_CALL(*sync_service, sync_initialized()).WillRepeatedly(Return(true));
323 EXPECT_CALL(*sync_service, GetAuthError()).
324 WillRepeatedly(::testing::ReturnRef(no_error_));
325 EXPECT_CALL(*sync_service, sync_initialized()).WillRepeatedly(Return(false));
326 ON_CALL(*sync_service, GetRegisteredDataTypes())
327 .WillByDefault(Return(syncer::ModelTypeSet()));
328 sync_service->Initialize();
329 return sync_service;
330 }
331
332 void OneClickSigninHelperTest::SubmitGAIAPassword( 321 void OneClickSigninHelperTest::SubmitGAIAPassword(
333 OneClickSigninHelper* helper) { 322 OneClickSigninHelper* helper) {
334 autofill::PasswordForm password_form; 323 autofill::PasswordForm password_form;
335 password_form.origin = GURL("https://accounts.google.com"); 324 password_form.origin = GURL("https://accounts.google.com");
336 password_form.signon_realm = "https://accounts.google.com"; 325 password_form.signon_realm = "https://accounts.google.com";
337 password_form.password_value = base::UTF8ToUTF16("password"); 326 password_form.password_value = base::UTF8ToUTF16("password");
338 helper->PasswordSubmitted(password_form); 327 helper->PasswordSubmitted(password_form);
339 } 328 }
340 329
341 content::BrowserContext* OneClickSigninHelperTest::CreateBrowserContext() { 330 content::BrowserContext* OneClickSigninHelperTest::CreateBrowserContext() {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 TEST_F(OneClickSigninHelperTest, CanOfferFirstSetup) { 455 TEST_F(OneClickSigninHelperTest, CanOfferFirstSetup) {
467 SetUpSigninManager(std::string()); 456 SetUpSigninManager(std::string());
468 457
469 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). 458 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)).
470 WillRepeatedly(Return(true)); 459 WillRepeatedly(Return(true));
471 460
472 // Invoke OneClickTestProfileSyncService factory function and grab result. 461 // Invoke OneClickTestProfileSyncService factory function and grab result.
473 OneClickTestProfileSyncService* sync = 462 OneClickTestProfileSyncService* sync =
474 static_cast<OneClickTestProfileSyncService*>( 463 static_cast<OneClickTestProfileSyncService*>(
475 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( 464 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
476 static_cast<Profile*>(browser_context()), 465 profile(), OneClickTestProfileSyncService::Build));
477 OneClickTestProfileSyncService::Build)); 466 sync->set_sync_initialized(false);
478 sync->Initialize(); 467 sync->Initialize();
468 sync->set_sync_initialized(true);
479 sync->set_first_setup_in_progress(true); 469 sync->set_first_setup_in_progress(true);
480 470
481 EXPECT_TRUE(OneClickSigninHelper::CanOffer( 471 EXPECT_TRUE(OneClickSigninHelper::CanOffer(
482 web_contents(), 472 web_contents(),
483 OneClickSigninHelper::CAN_OFFER_FOR_ALL, 473 OneClickSigninHelper::CAN_OFFER_FOR_ALL,
484 "foo@gmail.com", NULL)); 474 "foo@gmail.com", NULL));
485 EXPECT_TRUE(OneClickSigninHelper::CanOffer( 475 EXPECT_TRUE(OneClickSigninHelper::CanOffer(
486 web_contents(), 476 web_contents(),
487 OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, 477 OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY,
488 "foo@gmail.com", NULL)); 478 "foo@gmail.com", NULL));
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 } 668 }
679 669
680 // If Chrome signin is triggered from a webstore install, and user chooses to 670 // If Chrome signin is triggered from a webstore install, and user chooses to
681 // config sync, then Chrome should redirect immediately to sync settings page, 671 // config sync, then Chrome should redirect immediately to sync settings page,
682 // and upon successful setup, redirect back to webstore. 672 // and upon successful setup, redirect back to webstore.
683 TEST_F(OneClickSigninHelperTest, SigninFromWebstoreWithConfigSyncfirst) { 673 TEST_F(OneClickSigninHelperTest, SigninFromWebstoreWithConfigSyncfirst) {
684 SetUpSigninManager(std::string()); 674 SetUpSigninManager(std::string());
685 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)) 675 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_))
686 .WillRepeatedly(Return(true)); 676 .WillRepeatedly(Return(true));
687 677
688 ProfileSyncServiceMock* sync_service = CreateProfileSyncServiceMock(); 678 OneClickTestProfileSyncService* sync_service =
689 EXPECT_CALL(*sync_service, AddObserver(_)).Times(AtLeast(1)); 679 static_cast<OneClickTestProfileSyncService*>(
690 EXPECT_CALL(*sync_service, RemoveObserver(_)).Times(AtLeast(1)); 680 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
691 EXPECT_CALL(*sync_service, sync_initialized()).WillRepeatedly(Return(true)); 681 profile(), OneClickTestProfileSyncService::Build));
682 sync_service->set_sync_initialized(true);
692 683
693 content::WebContents* contents = web_contents(); 684 content::WebContents* contents = web_contents();
694 685
695 OneClickSigninHelper::CreateForWebContentsWithPasswordManager(contents, NULL); 686 OneClickSigninHelper::CreateForWebContentsWithPasswordManager(contents, NULL);
696 OneClickSigninHelper* helper = 687 OneClickSigninHelper* helper =
697 OneClickSigninHelper::FromWebContents(contents); 688 OneClickSigninHelper::FromWebContents(contents);
698 helper->SetDoNotClearPendingEmailForTesting(); 689 helper->SetDoNotClearPendingEmailForTesting();
699 helper->set_do_not_start_sync_for_testing(); 690 helper->set_do_not_start_sync_for_testing();
700 691
701 GURL continueUrl("https://chrome.google.com/webstore?source=5"); 692 GURL continueUrl("https://chrome.google.com/webstore?source=5");
702 OneClickSigninHelper::ShowInfoBarUIThread( 693 OneClickSigninHelper::ShowInfoBarUIThread(
703 "session_index", "user@gmail.com", 694 "session_index", "user@gmail.com",
704 OneClickSigninHelper::AUTO_ACCEPT_EXPLICIT, 695 OneClickSigninHelper::AUTO_ACCEPT_EXPLICIT,
705 signin::SOURCE_WEBSTORE_INSTALL, 696 signin::SOURCE_WEBSTORE_INSTALL,
706 continueUrl, process()->GetID(), rvh()->GetRoutingID()); 697 continueUrl, process()->GetID(), rvh()->GetRoutingID());
707 698
708 SubmitGAIAPassword(helper); 699 SubmitGAIAPassword(helper);
709 700
710 NavigateAndCommit(GURL("https://chrome.google.com/webstore?source=3")); 701 NavigateAndCommit(GURL("https://chrome.google.com/webstore?source=3"));
711 helper->DidStopLoading(rvh()); 702 helper->DidStopLoading(rvh());
712 helper->OnStateChanged(); 703 sync_service->NotifyObservers();
713 EXPECT_EQ(GURL(continueUrl), contents->GetURL()); 704 EXPECT_EQ(GURL(continueUrl), contents->GetVisibleURL());
714 } 705 }
715 706
716 // Checks that the state of OneClickSigninHelper is cleaned when there is a 707 // Checks that the state of OneClickSigninHelper is cleaned when there is a
717 // navigation away from the sign in flow that is not triggered by the 708 // navigation away from the sign in flow that is not triggered by the
718 // web contents. 709 // web contents.
719 TEST_F(OneClickSigninHelperTest, CleanTransientStateOnNavigate) { 710 TEST_F(OneClickSigninHelperTest, CleanTransientStateOnNavigate) {
720 content::WebContents* contents = web_contents(); 711 content::WebContents* contents = web_contents();
721 712
722 OneClickSigninHelper::CreateForWebContentsWithPasswordManager(contents, NULL); 713 OneClickSigninHelper::CreateForWebContentsWithPasswordManager(contents, NULL);
723 OneClickSigninHelper* helper = 714 OneClickSigninHelper* helper =
724 OneClickSigninHelper::FromWebContents(contents); 715 OneClickSigninHelper::FromWebContents(contents);
725 helper->SetDoNotClearPendingEmailForTesting(); 716 helper->SetDoNotClearPendingEmailForTesting();
726 helper->auto_accept_ = OneClickSigninHelper::AUTO_ACCEPT_EXPLICIT; 717 helper->auto_accept_ = OneClickSigninHelper::AUTO_ACCEPT_EXPLICIT;
727 718
728 content::LoadCommittedDetails details; 719 content::LoadCommittedDetails details;
729 content::FrameNavigateParams params; 720 content::FrameNavigateParams params;
730 params.url = GURL("http://crbug.com"); 721 params.url = GURL("http://crbug.com");
731 params.transition = content::PAGE_TRANSITION_TYPED; 722 params.transition = content::PAGE_TRANSITION_TYPED;
732 helper->DidNavigateMainFrame(details, params); 723 helper->DidNavigateMainFrame(details, params);
733 724
734 EXPECT_EQ(OneClickSigninHelper::AUTO_ACCEPT_NONE, helper->auto_accept_); 725 EXPECT_EQ(OneClickSigninHelper::AUTO_ACCEPT_NONE, helper->auto_accept_);
735 } 726 }
736 727
737 // Checks that OneClickSigninHelper doesn't stay an observer of the profile
738 // sync service after it's deleted.
739 TEST_F(OneClickSigninHelperTest, RemoveObserverFromProfileSyncService) {
740 content::WebContents* contents = web_contents();
741
742 ProfileSyncServiceMock* sync_service = CreateProfileSyncServiceMock();
743
744 OneClickSigninHelper::CreateForWebContentsWithPasswordManager(contents, NULL);
745 OneClickSigninHelper* helper =
746 OneClickSigninHelper::FromWebContents(contents);
747 helper->SetDoNotClearPendingEmailForTesting();
748
749 // Need to expect two calls, because sync service also tears down observers.
750 // TODO(signin): gmock probably isn't the best solution here.
751 EXPECT_CALL(*sync_service, RemoveObserver(_));
752 EXPECT_CALL(*sync_service, RemoveObserver(helper));
753 SetContents(NULL);
754 }
755
756 TEST_F(OneClickSigninHelperTest, NoRedirectToNTPWithPendingEntry) { 728 TEST_F(OneClickSigninHelperTest, NoRedirectToNTPWithPendingEntry) {
757 content::NavigationController& controller = web_contents()->GetController(); 729 content::NavigationController& controller = web_contents()->GetController();
758 EXPECT_FALSE(controller.GetPendingEntry()); 730 EXPECT_FALSE(controller.GetPendingEntry());
759 731
760 const GURL fooWebUIURL("chrome://foo"); 732 const GURL fooWebUIURL("chrome://foo");
761 controller.LoadURL(fooWebUIURL, content::Referrer(), 733 controller.LoadURL(fooWebUIURL, content::Referrer(),
762 content::PAGE_TRANSITION_TYPED, std::string()); 734 content::PAGE_TRANSITION_TYPED, std::string());
763 EXPECT_EQ(fooWebUIURL, controller.GetPendingEntry()->GetURL()); 735 EXPECT_EQ(fooWebUIURL, controller.GetPendingEntry()->GetURL());
764 736
765 MockWebContentsDelegate delegate; 737 MockWebContentsDelegate delegate;
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 args.email = "foo@gmail.com"; 1012 args.email = "foo@gmail.com";
1041 args.profile = profile(); 1013 args.profile = profile();
1042 MockStarterWrapper* wrapper = new MockStarterWrapper( 1014 MockStarterWrapper* wrapper = new MockStarterWrapper(
1043 args, OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS); 1015 args, OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
1044 SetCookie("LSID=1234; domain=google.com; secure; httponly"); 1016 SetCookie("LSID=1234; domain=google.com; secure; httponly");
1045 1017
1046 EXPECT_CALL(*wrapper, DisplayErrorBubble(_)); 1018 EXPECT_CALL(*wrapper, DisplayErrorBubble(_));
1047 wrapper->Start(); 1019 wrapper->Start();
1048 base::RunLoop().RunUntilIdle(); 1020 base::RunLoop().RunUntilIdle();
1049 } 1021 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/sync/one_click_signin_helper.cc ('k') | chrome/browser/ui/sync/one_click_signin_sync_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698