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

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

Issue 11418200: Setup from settings should allow configuration first (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments Created 8 years 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 | « no previous file | chrome/browser/ui/sync/one_click_signin_helper_unittest.cc » ('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 "chrome/browser/ui/sync/one_click_signin_helper.h" 5 #include "chrome/browser/ui/sync/one_click_signin_helper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 default: 101 default:
102 NOTREACHED() << "Invalid auto_accept: " << auto_accept; 102 NOTREACHED() << "Invalid auto_accept: " << auto_accept;
103 break; 103 break;
104 } 104 }
105 105
106 UMA_HISTOGRAM_ENUMERATION("AutoLogin.Reverse", action, 106 UMA_HISTOGRAM_ENUMERATION("AutoLogin.Reverse", action,
107 one_click_signin::HISTOGRAM_MAX); 107 one_click_signin::HISTOGRAM_MAX);
108 } 108 }
109 109
110 bool UseWebBasedSigninFlow() { 110 bool UseWebBasedSigninFlow() {
111 static const bool use_web_based_singin_flow = 111 return CommandLine::ForCurrentProcess()->HasSwitch(
112 CommandLine::ForCurrentProcess()->HasSwitch( 112 switches::kUseWebBasedSigninFlow);
113 switches::kUseWebBasedSigninFlow);
114 return use_web_based_singin_flow;
115 } 113 }
116 114
117 // Determines the source of the sign in. Its either one of the known sign in 115 // Determines the source of the sign in. Its either one of the known sign in
118 // access point (first run, NTP, menu, settings) or its an implicit sign in 116 // access point (first run, NTP, menu, settings) or its an implicit sign in
119 // via another Google property. In the former case, "service" is also 117 // via another Google property. In the former case, "service" is also
120 // checked to make sure its "chromiumsync". 118 // checked to make sure its "chromiumsync".
121 SyncPromoUI::Source GetSigninSource(const GURL& url) { 119 SyncPromoUI::Source GetSigninSource(const GURL& url) {
122 std::string value; 120 std::string value;
123 chrome_common_net::GetValueForKeyInQuery(url, "service", &value); 121 chrome_common_net::GetValueForKeyInQuery(url, "service", &value);
124 bool is_explicit_signin = value == "chromiumsync"; 122 bool is_explicit_signin = value == "chromiumsync";
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 const ListValue* rejected_emails = profile->GetPrefs()->GetList( 430 const ListValue* rejected_emails = profile->GetPrefs()->GetList(
433 prefs::kReverseAutologinRejectedEmailList); 431 prefs::kReverseAutologinRejectedEmailList);
434 if (!rejected_emails->empty()) { 432 if (!rejected_emails->empty()) {
435 base::ListValue::const_iterator iter = rejected_emails->Find( 433 base::ListValue::const_iterator iter = rejected_emails->Find(
436 base::StringValue(email)); 434 base::StringValue(email));
437 if (iter != rejected_emails->end()) 435 if (iter != rejected_emails->end())
438 return false; 436 return false;
439 } 437 }
440 } 438 }
441 439
442 // If we're about to show a one-click infobar but the user has started 440 if (!UseWebBasedSigninFlow()) {
443 // a concurrent signin flow (perhaps via the promo), we may not have yet 441 // If we're about to show a one-click infobar but the user has started
444 // established an authenticated username but we still shouldn't move 442 // a concurrent signin flow (perhaps via the promo), we may not have yet
445 // forward with two simultaneous signin processes. This is a bit 443 // established an authenticated username but we still shouldn't move
446 // contentious as the one-click flow is a much smoother flow from the user 444 // forward with two simultaneous signin processes. This is a bit
447 // perspective, but it's much more difficult to hijack the other flow from 445 // contentious as the one-click flow is a much smoother flow from the user
448 // here as it is to bail. 446 // perspective, but it's much more difficult to hijack the other flow from
449 ProfileSyncService* service = 447 // here as it is to bail.
450 ProfileSyncServiceFactory::GetForProfile(profile); 448 ProfileSyncService* service =
451 if (!service) 449 ProfileSyncServiceFactory::GetForProfile(profile);
452 return false; 450 if (!service)
451 return false;
453 452
454 if (service->FirstSetupInProgress()) 453 if (service->FirstSetupInProgress())
455 return false; 454 return false;
455 }
456 } 456 }
457 457
458 return true; 458 return true;
459 } 459 }
460 460
461 // static 461 // static
462 OneClickSigninHelper::Offer OneClickSigninHelper::CanOfferOnIOThread( 462 OneClickSigninHelper::Offer OneClickSigninHelper::CanOfferOnIOThread(
463 net::URLRequest* request, 463 net::URLRequest* request,
464 ProfileIOData* io_data) { 464 ProfileIOData* io_data) {
465 return CanOfferOnIOThreadImpl(request->url(), request->referrer(), 465 return CanOfferOnIOThreadImpl(request->url(), request->referrer(),
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 infobar_tab_helper->AddInfoBar( 717 infobar_tab_helper->AddInfoBar(
718 new OneClickInfoBarDelegateImpl(infobar_tab_helper, session_index_, 718 new OneClickInfoBarDelegateImpl(infobar_tab_helper, session_index_,
719 email_, password_)); 719 email_, password_));
720 break; 720 break;
721 case AUTO_ACCEPT_CONFIGURE: 721 case AUTO_ACCEPT_CONFIGURE:
722 StartSync(browser, auto_accept_, session_index_, email_, password_, 722 StartSync(browser, auto_accept_, session_index_, email_, password_,
723 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST); 723 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST);
724 break; 724 break;
725 case AUTO_ACCEPT_EXPLICIT: 725 case AUTO_ACCEPT_EXPLICIT:
726 StartSync(browser, auto_accept_, session_index_, email_, password_, 726 StartSync(browser, auto_accept_, session_index_, email_, password_,
727 OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS); 727 source_ == SyncPromoUI::SOURCE_SETTINGS ?
728 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST :
729 OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
728 break; 730 break;
729 case REJECTED_FOR_PROFILE: 731 case REJECTED_FOR_PROFILE:
730 UMA_HISTOGRAM_ENUMERATION("AutoLogin.Reverse", 732 UMA_HISTOGRAM_ENUMERATION("AutoLogin.Reverse",
731 one_click_signin::HISTOGRAM_REJECTED, 733 one_click_signin::HISTOGRAM_REJECTED,
732 one_click_signin::HISTOGRAM_MAX); 734 one_click_signin::HISTOGRAM_MAX);
733 break; 735 break;
734 default: 736 default:
735 NOTREACHED() << "Invalid auto_accept=" << auto_accept_; 737 NOTREACHED() << "Invalid auto_accept=" << auto_accept_;
736 break; 738 break;
737 } 739 }
738 740
739 AutoAccept local_auto_accept = auto_accept_; 741 // If this explicit sign in is not from settings page, show the NTP after
740 SyncPromoUI::Source local_source = source_; 742 // sign in completes. In the case of the settings page, it will get closed
743 // by SyncSetupHandler.
744 if (auto_accept_ == AUTO_ACCEPT_EXPLICIT &&
745 source_ != SyncPromoUI::SOURCE_SETTINGS) {
746 Profile* profile =
747 Profile::FromBrowserContext(contents->GetBrowserContext());
748 signin_tracker_.reset(new SigninTracker(profile, this));
749 }
741 750
742 email_.clear(); 751 email_.clear();
743 password_.clear(); 752 password_.clear();
744 auto_accept_ = NO_AUTO_ACCEPT; 753 auto_accept_ = NO_AUTO_ACCEPT;
745 source_ = SyncPromoUI::SOURCE_UNKNOWN; 754 source_ = SyncPromoUI::SOURCE_UNKNOWN;
746
747 // If this is an explicit sign in by the user, then redirect them to the
748 // NTP.
749 if (local_auto_accept == AUTO_ACCEPT_EXPLICIT) {
750 // If this is an explicit sign in from settings page, then close the
751 // tab. Otherwise show the NTP after sign in completes.
752 if (local_source == SyncPromoUI::SOURCE_SETTINGS) {
753 contents->Close();
754 } else {
755 Profile* profile =
756 Profile::FromBrowserContext(contents->GetBrowserContext());
757 signin_tracker_.reset(new SigninTracker(profile, this));
758 }
759 }
760
761 // |this| may have been deleted due to the contents->Close() call above.
762 // No members should be accessed at this point.
763 } 755 }
764 756
765 void OneClickSigninHelper::GaiaCredentialsValid() { 757 void OneClickSigninHelper::GaiaCredentialsValid() {
766 // Redirect to NTP with sign in bubble visible. 758 // Redirect to NTP with sign in bubble visible.
767 content::WebContents* contents = web_contents(); 759 content::WebContents* contents = web_contents();
768 Profile* profile = 760 Profile* profile =
769 Profile::FromBrowserContext(contents->GetBrowserContext()); 761 Profile::FromBrowserContext(contents->GetBrowserContext());
770 PrefService* pref_service = profile->GetPrefs(); 762 PrefService* pref_service = profile->GetPrefs();
771 pref_service->SetBoolean(prefs::kSyncPromoShowNTPBubble, true); 763 pref_service->SetBoolean(prefs::kSyncPromoShowNTPBubble, true);
772 764
773 contents->GetController().LoadURL(GURL(chrome::kChromeUINewTabURL), 765 contents->GetController().LoadURL(GURL(chrome::kChromeUINewTabURL),
774 content::Referrer(), 766 content::Referrer(),
775 content::PAGE_TRANSITION_AUTO_TOPLEVEL, 767 content::PAGE_TRANSITION_AUTO_TOPLEVEL,
776 std::string()); 768 std::string());
777 } 769 }
778 770
779 void OneClickSigninHelper::SigninFailed(const GoogleServiceAuthError& error) { 771 void OneClickSigninHelper::SigninFailed(const GoogleServiceAuthError& error) {
780 signin_tracker_.reset(); 772 signin_tracker_.reset();
781 } 773 }
782 774
783 void OneClickSigninHelper::SigninSuccess() { 775 void OneClickSigninHelper::SigninSuccess() {
784 signin_tracker_.reset(); 776 signin_tracker_.reset();
785 } 777 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/sync/one_click_signin_helper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698