Index: chrome/browser/ui/sync/one_click_signin_helper.cc |
diff --git a/chrome/browser/ui/sync/one_click_signin_helper.cc b/chrome/browser/ui/sync/one_click_signin_helper.cc |
index da0da579fbe1883ffeba2ea8e8ffe2a2370b8a22..8502d5271afd93e798e08d401bd93aec5ff1da58 100644 |
--- a/chrome/browser/ui/sync/one_click_signin_helper.cc |
+++ b/chrome/browser/ui/sync/one_click_signin_helper.cc |
@@ -103,6 +103,7 @@ struct StartSyncArgs { |
std::string password; |
bool force_same_tab_navigation; |
OneClickSigninSyncStarter::ConfirmationRequired confirmation_required; |
+ SyncPromoUI::Source source; |
}; |
StartSyncArgs::StartSyncArgs( |
@@ -121,7 +122,8 @@ StartSyncArgs::StartSyncArgs( |
session_index(session_index), |
email(email), |
password(password), |
- force_same_tab_navigation(force_same_tab_navigation) { |
+ force_same_tab_navigation(force_same_tab_navigation), |
+ source(source) { |
if (untrusted_confirmation_required) { |
confirmation_required = OneClickSigninSyncStarter::CONFIRM_UNTRUSTED_SIGNIN; |
} else if (source == SyncPromoUI::SOURCE_SETTINGS || |
@@ -195,6 +197,30 @@ void LogOneClickHistogramValue(int action) { |
one_click_signin::HISTOGRAM_MAX); |
} |
+void RedirectToNtpOrAppsPage(content::WebContents* contents, |
+ SyncPromoUI::Source source) { |
+ VLOG(1) << "RedirectToNtpOrAppsPage"; |
+ // Redirect to NTP/Apps page and display a confirmation bubble |
+ GURL url(source == SyncPromoUI::SOURCE_APPS_PAGE_LINK ? |
+ chrome::kChromeUIAppsURL : chrome::kChromeUINewTabURL); |
+ content::OpenURLParams params(url, |
+ content::Referrer(), |
+ CURRENT_TAB, |
+ content::PAGE_TRANSITION_AUTO_TOPLEVEL, |
+ false); |
+ contents->OpenURL(params); |
+} |
+ |
+// If the |source| is not settings page/webstore, redirects to |
+// the NTP/Apps page. |
+void RedirectToNtpOrAppsPageIfNecessary(content::WebContents* contents, |
+ SyncPromoUI::Source source) { |
+ if (source != SyncPromoUI::SOURCE_SETTINGS && |
+ source != SyncPromoUI::SOURCE_WEBSTORE_INSTALL) { |
+ RedirectToNtpOrAppsPage(contents, source); |
+ } |
+} |
+ |
// Start syncing with the given user information. |
void StartSync(const StartSyncArgs& args, |
OneClickSigninSyncStarter::StartSyncMode start_mode) { |
@@ -254,6 +280,7 @@ void StartExplicitSync(const StartSyncArgs& args, |
std::string(chrome::kSearchUsersSubPage)); |
} else { |
StartSync(args, start_mode); |
+ RedirectToNtpOrAppsPageIfNecessary(contents, args.source); |
} |
} |
@@ -876,20 +903,6 @@ void OneClickSigninHelper::ShowSigninErrorBubble(Browser* browser, |
BrowserWindow::StartSyncCallback()); |
} |
-void OneClickSigninHelper::RedirectToNtpOrAppsPage() { |
- VLOG(1) << "OneClickSigninHelper::RedirectToNtpOrAppsPage"; |
- // Redirect to NTP/Apps page and display a confirmation bubble |
- content::WebContents* contents = web_contents(); |
- GURL url(source_ == SyncPromoUI::SOURCE_APPS_PAGE_LINK ? |
- chrome::kChromeUIAppsURL : chrome::kChromeUINewTabURL); |
- content::OpenURLParams params(url, |
- content::Referrer(), |
- CURRENT_TAB, |
- content::PAGE_TRANSITION_AUTO_TOPLEVEL, |
- false); |
- contents->OpenURL(params); |
-} |
- |
void OneClickSigninHelper::RedirectToSignin() { |
VLOG(1) << "OneClickSigninHelper::RedirectToSignin"; |
@@ -1009,7 +1022,7 @@ void OneClickSigninHelper::DidStopLoading( |
Browser* browser = chrome::FindBrowserWithWebContents(contents); |
// Redirect to the landing page and display an error popup. |
- RedirectToNtpOrAppsPage(); |
+ RedirectToNtpOrAppsPage(web_contents(), source_); |
ShowSigninErrorBubble(browser, error_message_); |
CleanTransientState(); |
return; |
@@ -1048,7 +1061,7 @@ void OneClickSigninHelper::DidStopLoading( |
std::string unused_value; |
if (net::GetValueForKeyInQuery(url, "ntp", &unused_value)) { |
SyncPromoUI::SetUserSkippedSyncPromo(profile); |
- RedirectToNtpOrAppsPage(); |
+ RedirectToNtpOrAppsPage(web_contents(), source_); |
} |
if (!continue_url_match && !IsValidGaiaSigninRedirectOrResponseURL(url) && |
@@ -1187,6 +1200,12 @@ void OneClickSigninHelper::DidStopLoading( |
email_, password_, force_same_tab_navigation, |
untrusted_confirmation_required_, source_), |
start_mode); |
+ |
+ // If this explicit sign in is not from settings page/webstore, show |
+ // the NTP/Apps page after sign in completes. In the case of the |
+ // settings page, it will get closed by SyncSetupHandler. In the case |
+ // of webstore, it will redirect back to webstore. |
+ RedirectToNtpOrAppsPageIfNecessary(web_contents(), source_); |
} |
if (source_ == SyncPromoUI::SOURCE_SETTINGS && |
@@ -1198,15 +1217,6 @@ void OneClickSigninHelper::DidStopLoading( |
if (sync_service) |
sync_service->AddObserver(this); |
} |
- |
- // If this explicit sign in is not from settings page/webstore, show the |
- // NTP/Apps page after sign in completes. In the case of the settings |
- // page, it will get closed by SyncSetupHandler. In the case of webstore, |
- // it will redirect back to webstore. |
- if (source_ != SyncPromoUI::SOURCE_SETTINGS && |
- source_ != SyncPromoUI::SOURCE_WEBSTORE_INSTALL) { |
- RedirectToNtpOrAppsPage(); |
- } |
break; |
} |
case AUTO_ACCEPT_REJECTED_FOR_PROFILE: |