| Index: chrome/browser/sync/sync_setup_flow.cc
|
| diff --git a/chrome/browser/sync/sync_setup_flow.cc b/chrome/browser/sync/sync_setup_flow.cc
|
| index 034edf44daa88a4070783163c550082561e021ea..945359d8eb456bb4b465ce5376575da61c444624 100644
|
| --- a/chrome/browser/sync/sync_setup_flow.cc
|
| +++ b/chrome/browser/sync/sync_setup_flow.cc
|
| @@ -35,6 +35,34 @@ void DisablePasswordSync(ProfileSyncService* service) {
|
| service->OnUserChoseDatatypes(false, types);
|
| }
|
|
|
| +// Fills |args| for the enter passphrase screen.
|
| +void GetArgsForEnterPassphrase(bool tried_creating_explicit_passphrase,
|
| + bool tried_setting_explicit_passphrase,
|
| + DictionaryValue* args) {
|
| + args->SetBoolean("show_passphrase", true);
|
| + args->SetBoolean("passphrase_creation_rejected",
|
| + tried_creating_explicit_passphrase);
|
| + args->SetBoolean("passphrase_setting_rejected",
|
| + tried_setting_explicit_passphrase);
|
| +}
|
| +
|
| +// Returns the next step for the non-fatal error case.
|
| +SyncSetupWizard::State GetStepForNonFatalError(ProfileSyncService* service) {
|
| + if (service->IsPassphraseRequired() && service->IsUsingSecondaryPassphrase())
|
| + return SyncSetupWizard::ENTER_PASSPHRASE;
|
| +
|
| + const GoogleServiceAuthError& error = service->GetAuthError();
|
| + if (error.state() == GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS ||
|
| + error.state() == GoogleServiceAuthError::CAPTCHA_REQUIRED ||
|
| + error.state() == GoogleServiceAuthError::ACCOUNT_DELETED ||
|
| + error.state() == GoogleServiceAuthError::ACCOUNT_DISABLED ||
|
| + error.state() == GoogleServiceAuthError::SERVICE_UNAVAILABLE)
|
| + return SyncSetupWizard::GAIA_LOGIN;
|
| +
|
| + NOTREACHED();
|
| + return SyncSetupWizard::FATAL_ERROR;
|
| +}
|
| +
|
| } // namespace
|
|
|
| SyncConfiguration::SyncConfiguration()
|
| @@ -53,13 +81,16 @@ SyncSetupFlow* SyncSetupFlow::Run(ProfileSyncService* service,
|
| SyncSetupFlowContainer* container,
|
| SyncSetupWizard::State start,
|
| SyncSetupWizard::State end) {
|
| + if (start == SyncSetupWizard::NONFATAL_ERROR)
|
| + start = GetStepForNonFatalError(service);
|
| +
|
| DictionaryValue args;
|
| if (start == SyncSetupWizard::GAIA_LOGIN)
|
| SyncSetupFlow::GetArgsForGaiaLogin(service, &args);
|
| else if (start == SyncSetupWizard::CONFIGURE)
|
| SyncSetupFlow::GetArgsForConfigure(service, &args);
|
| else if (start == SyncSetupWizard::ENTER_PASSPHRASE)
|
| - SyncSetupFlow::GetArgsForEnterPassphrase(false, false, &args);
|
| + GetArgsForEnterPassphrase(false, false, &args);
|
|
|
| std::string json_args;
|
| base::JSONWriter::Write(&args, false, &json_args);
|
| @@ -146,18 +177,6 @@ void SyncSetupFlow::GetArgsForConfigure(ProfileSyncService* service,
|
| args->SetBoolean("usePassphrase", service->IsUsingSecondaryPassphrase());
|
| }
|
|
|
| -// static
|
| -void SyncSetupFlow::GetArgsForEnterPassphrase(
|
| - bool tried_creating_explicit_passphrase,
|
| - bool tried_setting_explicit_passphrase,
|
| - DictionaryValue* args) {
|
| - args->SetBoolean("show_passphrase", true);
|
| - args->SetBoolean("passphrase_creation_rejected",
|
| - tried_creating_explicit_passphrase);
|
| - args->SetBoolean("passphrase_setting_rejected",
|
| - tried_setting_explicit_passphrase);
|
| -}
|
| -
|
| void SyncSetupFlow::AttachSyncSetupHandler(SyncSetupFlowHandler* handler) {
|
| flow_handler_ = handler;
|
| ActivateState(current_state_);
|
| @@ -310,6 +329,7 @@ bool SyncSetupFlow::ShouldAdvance(SyncSetupWizard::State state) {
|
| return current_state_ == SyncSetupWizard::SYNC_EVERYTHING ||
|
| current_state_ == SyncSetupWizard::CONFIGURE ||
|
| current_state_ == SyncSetupWizard::ENTER_PASSPHRASE;
|
| + case SyncSetupWizard::NONFATAL_ERROR:
|
| case SyncSetupWizard::FATAL_ERROR:
|
| return true; // You can always hit the panic button.
|
| case SyncSetupWizard::DONE:
|
| @@ -322,6 +342,9 @@ bool SyncSetupFlow::ShouldAdvance(SyncSetupWizard::State state) {
|
| }
|
|
|
| void SyncSetupFlow::ActivateState(SyncSetupWizard::State state) {
|
| + if (state == SyncSetupWizard::NONFATAL_ERROR)
|
| + state = GetStepForNonFatalError(service_);
|
| +
|
| switch (state) {
|
| case SyncSetupWizard::GAIA_LOGIN: {
|
| DictionaryValue args;
|
| @@ -352,10 +375,9 @@ void SyncSetupFlow::ActivateState(SyncSetupWizard::State state) {
|
| case SyncSetupWizard::ENTER_PASSPHRASE: {
|
| DictionaryValue args;
|
| SyncSetupFlow::GetArgsForConfigure(service_, &args);
|
| - SyncSetupFlow::GetArgsForEnterPassphrase(
|
| - tried_creating_explicit_passphrase_,
|
| - tried_setting_explicit_passphrase_,
|
| - &args);
|
| + GetArgsForEnterPassphrase(tried_creating_explicit_passphrase_,
|
| + tried_setting_explicit_passphrase_,
|
| + &args);
|
| flow_handler_->ShowPassphraseEntry(args);
|
| break;
|
| }
|
|
|