Index: chrome/browser/ui/webui/sync_setup_handler.cc |
diff --git a/chrome/browser/ui/webui/sync_setup_handler.cc b/chrome/browser/ui/webui/sync_setup_handler.cc |
index f4b7849bee1080a769c7d3f330bf76ba9f7cdc19..0845aa7146172af1fb2036dbf380ae1c9c8873cc 100644 |
--- a/chrome/browser/ui/webui/sync_setup_handler.cc |
+++ b/chrome/browser/ui/webui/sync_setup_handler.cc |
@@ -1207,15 +1207,21 @@ void SyncSetupHandler::DidStopLoading( |
// since the user is doing something with it. Disconnect and forget about it |
// before closing down the sync setup. |
// The one exception is the expected continue URL. If the user lands there, |
- // this means sign in was successful. |
+ // this means sign in was successful. Ignore the source parameter in the |
+ // continue URL since this user may have changed the state of the |
+ // "Let me choose what to sync" checkbox. |
const GURL& url = active_gaia_signin_tab_->GetURL(); |
const GURL continue_url = |
SyncPromoUI::GetNextPageURLForSyncPromoURL( |
SyncPromoUI::GetSyncPromoURL(GURL(), |
SyncPromoUI::SOURCE_SETTINGS, |
false)); |
+ GURL::Replacements replacements; |
+ replacements.ClearQuery(); |
- if (url != continue_url && !gaia::IsGaiaSignonRealm(url.GetOrigin())) { |
+ if (!gaia::IsGaiaSignonRealm(url.GetOrigin()) && |
+ url.ReplaceComponents(replacements) != |
+ continue_url.ReplaceComponents(replacements)) { |
content::WebContentsObserver::Observe(NULL); |
active_gaia_signin_tab_ = NULL; |
CloseSyncSetup(); |