| 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 7a7d34e8836636538239b46853a990aba5aa3e81..1ff013ead17b72f76401033f4f311f1c21fe5bac 100644
|
| --- a/chrome/browser/ui/webui/sync_setup_handler.cc
|
| +++ b/chrome/browser/ui/webui/sync_setup_handler.cc
|
| @@ -285,6 +285,8 @@ void SyncSetupHandler::GetStaticLocalizedValues(
|
|
|
| static OptionsStringResource resources[] = {
|
| { "syncSetupConfigureTitle", IDS_SYNC_SETUP_CONFIGURE_TITLE },
|
| + { "syncSetupTimeoutTitle", IDS_SYNC_SETUP_TIME_OUT_TITLE },
|
| + { "syncSetupTimeoutContent", IDS_SYNC_SETUP_TIME_OUT_CONTENT },
|
| { "cannotBeBlank", IDS_SYNC_CANNOT_BE_BLANK },
|
| { "emailLabel", IDS_SYNC_LOGIN_EMAIL_NEW_LINE },
|
| { "passwordLabel", IDS_SYNC_LOGIN_PASSWORD_NEW_LINE },
|
| @@ -591,6 +593,26 @@ void SyncSetupHandler::DisplaySpinner() {
|
| configuring_sync_ = true;
|
| StringValue page("spinner");
|
| DictionaryValue args;
|
| +
|
| + const int kTimeoutSec = 30;
|
| + DCHECK(!backend_start_timer_.get());
|
| + backend_start_timer_.reset(new base::OneShotTimer<SyncSetupHandler>());
|
| + backend_start_timer_->Start(FROM_HERE,
|
| + base::TimeDelta::FromSeconds(kTimeoutSec),
|
| + this, &SyncSetupHandler::DisplayTimeout);
|
| +
|
| + web_ui()->CallJavascriptFunction(
|
| + "SyncSetupOverlay.showSyncSetupPage", page, args);
|
| +}
|
| +
|
| +// TODO(kochi): Handle error conditions other than timeout.
|
| +// http://crbug.com/128692
|
| +void SyncSetupHandler::DisplayTimeout() {
|
| + // Stop setting up sync service
|
| + CloseSyncSetup();
|
| +
|
| + StringValue page("timeout");
|
| + DictionaryValue args;
|
| web_ui()->CallJavascriptFunction(
|
| "SyncSetupOverlay.showSyncSetupPage", page, args);
|
| }
|
| @@ -709,6 +731,9 @@ void SyncSetupHandler::GaiaCredentialsValid() {
|
| }
|
|
|
| void SyncSetupHandler::SigninFailed(const GoogleServiceAuthError& error) {
|
| + // Stop a timer to handle timeout in waiting for checking network connection.
|
| + backend_start_timer_.reset();
|
| +
|
| last_signin_error_ = error;
|
| // Got a failed signin - this is either just a typical auth error, or a
|
| // sync error (treat sync errors as "fatal errors" - i.e. non-auth errors).
|
| @@ -733,6 +758,9 @@ ProfileSyncService* SyncSetupHandler::GetSyncService() const {
|
|
|
| void SyncSetupHandler::SigninSuccess() {
|
| DCHECK(GetSyncService()->sync_initialized());
|
| + // Stop a timer to handle timeout in waiting for checking network connection.
|
| + backend_start_timer_.reset();
|
| +
|
| // If we have signed in while sync is already setup, it must be due to some
|
| // kind of re-authentication flow. In that case, just close the signin dialog
|
| // rather than forcing the user to go through sync configuration.
|
| @@ -1004,6 +1032,9 @@ LoginUIService* SyncSetupHandler::GetLoginUIService() const {
|
| }
|
|
|
| void SyncSetupHandler::CloseOverlay() {
|
| + // Stop a timer to handle timeout in waiting for sync setup.
|
| + backend_start_timer_.reset();
|
| +
|
| CloseSyncSetup();
|
| web_ui()->CallJavascriptFunction("OptionsPage.closeOverlay");
|
| }
|
|
|