diff options
Diffstat (limited to 'chrome/browser/sync/sync_setup_wizard.cc')
-rw-r--r-- | chrome/browser/sync/sync_setup_wizard.cc | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/chrome/browser/sync/sync_setup_wizard.cc b/chrome/browser/sync/sync_setup_wizard.cc index 23a44ba..b8dc3dd 100644 --- a/chrome/browser/sync/sync_setup_wizard.cc +++ b/chrome/browser/sync/sync_setup_wizard.cc @@ -10,6 +10,38 @@ #include "base/logging.h" #include "chrome/browser/sync/sync_setup_flow.h" +namespace { + +// If we just need to pop open an individual dialog, say to collect +// gaia credentials in the event of a steady-state auth failure, this is +// a "discrete" run (as in not a continuous wizard flow). This returns +// the end state to pass to Run for a given |start_state|. +SyncSetupWizard::State GetEndStateForDiscreteRun( + SyncSetupWizard::State start_state) { + SyncSetupWizard::State result = SyncSetupWizard::FATAL_ERROR; + if (start_state == SyncSetupWizard::GAIA_LOGIN) { + result = SyncSetupWizard::GAIA_SUCCESS; + } else if (start_state == SyncSetupWizard::ENTER_PASSPHRASE || + start_state == SyncSetupWizard::NONFATAL_ERROR || + start_state == SyncSetupWizard::SYNC_EVERYTHING || + start_state == SyncSetupWizard::CONFIGURE) { + result = SyncSetupWizard::DONE; + } + DCHECK_NE(SyncSetupWizard::FATAL_ERROR, result) << + "Invalid start state for discrete run: " << start_state; + return result; +} + +// Helper to return whether |state| warrants starting a new flow. +bool IsTerminalState(SyncSetupWizard::State state) { + return state == SyncSetupWizard::GAIA_SUCCESS || + state == SyncSetupWizard::DONE || + state == SyncSetupWizard::FATAL_ERROR || + state == SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR; +} + +} // namespace + SyncSetupWizard::SyncSetupWizard(ProfileSyncService* service) : service_(service), flow_container_(new SyncSetupFlowContainer()) { @@ -35,20 +67,12 @@ void SyncSetupWizard::Step(State advance_state) { // No flow in progress, but we've finished the wizard flow once before. // This is just a discrete run. if (IsTerminalState(advance_state)) - return; // Nothing to do. + return; flow_container_->set_flow(SyncSetupFlow::Run(service_, flow_container_, advance_state, GetEndStateForDiscreteRun(advance_state))); } } -// static -bool SyncSetupWizard::IsTerminalState(State advance_state) { - return advance_state == GAIA_SUCCESS || - advance_state == DONE || - advance_state == FATAL_ERROR || - advance_state == SETUP_ABORTED_BY_PENDING_CLEAR; -} - bool SyncSetupWizard::IsVisible() const { return flow_container_->get_flow() != NULL; } @@ -62,28 +86,8 @@ void SyncSetupWizard::Focus() { SyncSetupFlow* SyncSetupWizard::AttachSyncSetupHandler( SyncSetupFlowHandler* handler) { SyncSetupFlow* flow = flow_container_->get_flow(); - if (!flow) - return NULL; - - if (!flow->AttachSyncSetupHandler(handler)) + if (!flow || !flow->AttachSyncSetupHandler(handler)) return NULL; return flow; } - -// static -SyncSetupWizard::State SyncSetupWizard::GetEndStateForDiscreteRun( - State start_state) { - State result = FATAL_ERROR; - if (start_state == GAIA_LOGIN) { - result = GAIA_SUCCESS; - } else if (start_state == ENTER_PASSPHRASE || - start_state == NONFATAL_ERROR || - start_state == SYNC_EVERYTHING || - start_state == CONFIGURE) { - result = DONE; - } - DCHECK_NE(FATAL_ERROR, result) << - "Invalid start state for discrete run: " << start_state; - return result; -} |