| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_SYNC_SYNC_SETUP_WIZARD_H_ |
| #define CHROME_BROWSER_SYNC_SYNC_SETUP_WIZARD_H_ |
| #pragma once |
| |
| #include "base/basictypes.h" |
| |
| class SyncSetupFlow; |
| class SyncSetupFlowContainer; |
| class SyncSetupFlowHandler; |
| |
| class ProfileSyncService; |
| |
| class SyncSetupWizard { |
| public: |
| enum State { |
| // Show the Google Account login UI. |
| GAIA_LOGIN = 0, |
| // A login attempt succeeded. This will wait for an explicit transition |
| // (via Step) to the next state. |
| GAIA_SUCCESS, |
| // Show the screen that confirms everything will be synced. |
| SYNC_EVERYTHING, |
| // Show the screen that lets you configure sync. |
| // There are two tabs: |
| // Data Types -- |
| // Choose either "Keep everything synced" or |
| // "Choose which data types to sync", and checkboxes for each data type. |
| // Encryption -- |
| // Choose what to encrypt and whether to use a passphrase. |
| CONFIGURE, |
| // Show the screen that prompts for your passphrase |
| ENTER_PASSPHRASE, |
| // Show the passphrase "first time" screen for migrating users, where all |
| // is explained and they choose between google password/custom passphrase. |
| PASSPHRASE_MIGRATION, |
| // The panic switch. Something went terribly wrong during setup and we |
| // can't recover. |
| FATAL_ERROR, |
| // The client can't set up sync at the moment due to a concurrent operation |
| // to clear cloud data being in progress on the server. |
| SETUP_ABORTED_BY_PENDING_CLEAR, |
| // Loading screen with spinny throbber. |
| SETTING_UP, |
| // A final state for when setup completes and it is possible it is the |
| // user's first time (globally speaking) as the cloud doesn't have any |
| // bookmarks. We show additional info in this case to explain setting up |
| // more computers. |
| DONE_FIRST_TIME, |
| // A catch-all done case for any setup process. |
| DONE |
| }; |
| |
| explicit SyncSetupWizard(ProfileSyncService* service); |
| ~SyncSetupWizard(); |
| |
| // Advances the wizard to the specified state if possible, or opens a |
| // new dialog starting at |advance_state|. If the wizard has never ran |
| // through to completion, it will always attempt to do so. Otherwise, e.g |
| // for a transient auth failure, it will just run as far as is necessary |
| // based on |advance_state| (so for auth failure, up to GAIA_SUCCESS). |
| void Step(State advance_state); |
| |
| // Whether or not a dialog is currently showing. Useful to determine |
| // if various buttons in the UI should be enabled or disabled. |
| bool IsVisible() const; |
| |
| // Focus the dialog if it is already open. Does nothing if the dialog is |
| // not visible. |
| void Focus(); |
| |
| SyncSetupFlow* AttachSyncSetupHandler(SyncSetupFlowHandler* handler); |
| |
| private: |
| // 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|. |
| static State GetEndStateForDiscreteRun(State start_state); |
| |
| // Helper to return whether |state| warrants starting a new flow. |
| static bool IsTerminalState(State state); |
| |
| ProfileSyncService* service_; |
| |
| SyncSetupFlowContainer* flow_container_; |
| |
| SyncSetupFlowHandler* flow_handler_; |
| |
| DISALLOW_COPY_AND_ASSIGN(SyncSetupWizard); |
| }; |
| |
| #endif // CHROME_BROWSER_SYNC_SYNC_SETUP_WIZARD_H_ |