Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Side by Side Diff: chrome/browser/sync/sync_setup_wizard.cc

Issue 9295044: Start moving signin code out of browser/sync. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleaned up unnecessary inclusions of signin_manager.h Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync/sync_setup_wizard.h" 5 #include "chrome/browser/sync/sync_setup_wizard.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <ostream> 8 #include <ostream>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "chrome/browser/prefs/pref_service.h" 12 #include "chrome/browser/prefs/pref_service.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/sync/sync_setup_flow.h" 14 #include "chrome/browser/sync/sync_setup_flow.h"
15 #include "chrome/browser/sync/util/oauth.h" 15 #include "chrome/browser/sync/util/oauth.h"
16 #include "chrome/common/chrome_switches.h" 16 #include "chrome/common/chrome_switches.h"
17 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
18 18
19 namespace { 19 namespace {
20 20
21 // If we just need to pop open an individual dialog, say to collect
22 // gaia credentials in the event of a steady-state auth failure, this is
23 // a "discrete" run (as in not a continuous wizard flow). This returns
24 // the end state to pass to Run for a given |start_state|.
25 SyncSetupWizard::State GetEndStateForDiscreteRun(
26 SyncSetupWizard::State start_state) {
27 SyncSetupWizard::State result = SyncSetupWizard::FATAL_ERROR;
28 if (start_state == SyncSetupWizard::GAIA_LOGIN ||
29 start_state == SyncSetupWizard::OAUTH_LOGIN) {
30 result = SyncSetupWizard::GAIA_SUCCESS;
31 } else if (start_state == SyncSetupWizard::ENTER_PASSPHRASE ||
32 start_state == SyncSetupWizard::NONFATAL_ERROR ||
33 start_state == SyncSetupWizard::SYNC_EVERYTHING ||
34 start_state == SyncSetupWizard::CONFIGURE) {
35 result = SyncSetupWizard::DONE;
36 }
37 DCHECK_NE(SyncSetupWizard::FATAL_ERROR, result) <<
38 "Invalid start state for discrete run: " << start_state;
39 return result;
40 }
41
42 // Helper to return whether |state| warrants starting a new flow. 21 // Helper to return whether |state| warrants starting a new flow.
43 bool IsTerminalState(SyncSetupWizard::State state) { 22 bool IsTerminalState(SyncSetupWizard::State state) {
44 return state == SyncSetupWizard::GAIA_SUCCESS || 23 return state == SyncSetupWizard::DONE ||
45 state == SyncSetupWizard::DONE || 24 state == SyncSetupWizard::FATAL_ERROR;
46 state == SyncSetupWizard::FATAL_ERROR ||
47 state == SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR;
48 } 25 }
49 26
50 } // namespace 27 } // namespace
51 28
52 SyncSetupWizard::SyncSetupWizard(ProfileSyncService* service) 29 SyncSetupWizard::SyncSetupWizard(ProfileSyncService* service)
53 : service_(service), 30 : service_(service),
54 flow_container_(new SyncSetupFlowContainer()) { 31 flow_container_(new SyncSetupFlowContainer()) {
55 } 32 }
56 33
57 SyncSetupWizard::~SyncSetupWizard() { 34 SyncSetupWizard::~SyncSetupWizard() {
58 delete flow_container_; 35 delete flow_container_;
59 } 36 }
60 37
61 void SyncSetupWizard::Step(State advance_state) { 38 void SyncSetupWizard::Step(State advance_state) {
62 SyncSetupFlow* flow = flow_container_->get_flow(); 39 SyncSetupFlow* flow = flow_container_->get_flow();
63 if (flow) { 40 if (flow) {
64 // A setup flow is in progress and dialog is currently showing. 41 // A setup flow is in progress and dialog is currently showing.
65 flow->Advance(advance_state); 42 flow->Advance(advance_state);
66 } else if (!service_->HasSyncSetupCompleted()) { 43 } else {
67 if (IsTerminalState(advance_state)) 44 if (IsTerminalState(advance_state))
68 return; 45 return;
69 // No flow is in progress, and we have never escorted the user all the 46 // Starting a new flow - make sure we're at a valid starting state.
70 // way through the wizard flow. 47 DCHECK(advance_state == ENTER_PASSPHRASE ||
71 // TODO(atwilson): Make sure this works on all autostart_enabled platforms. 48 advance_state == SYNC_EVERYTHING ||
72 State end_state = DONE; 49 advance_state == CONFIGURE);
73 if (service_->auto_start_enabled() &&
74 !service_->profile()->GetPrefs()->GetBoolean(
75 prefs::kSyncSuppressStart)) {
76 end_state = GAIA_SUCCESS;
77 }
78 flow_container_->set_flow( 50 flow_container_->set_flow(
79 SyncSetupFlow::Run(service_, flow_container_, advance_state, 51 SyncSetupFlow::Run(service_, flow_container_, advance_state, DONE));
80 end_state));
81 } else {
82 // No flow in progress, but we've finished the wizard flow once before.
83 // This is just a discrete run.
84 if (IsTerminalState(advance_state))
85 return;
86 flow_container_->set_flow(SyncSetupFlow::Run(service_, flow_container_,
87 advance_state, GetEndStateForDiscreteRun(advance_state)));
88 } 52 }
89 } 53 }
90 54
91 bool SyncSetupWizard::IsVisible() const { 55 bool SyncSetupWizard::IsVisible() const {
92 return flow_container_->get_flow() != NULL && 56 return flow_container_->get_flow() != NULL &&
93 flow_container_->get_flow()->IsAttached(); 57 flow_container_->get_flow()->IsAttached();
94 } 58 }
95 59
96 // static
97 SyncSetupWizard::State SyncSetupWizard::GetLoginState() {
98 return browser_sync::IsUsingOAuth() ?
99 SyncSetupWizard::OAUTH_LOGIN :
100 SyncSetupWizard::GAIA_LOGIN;
101 }
102
103 void SyncSetupWizard::Focus() { 60 void SyncSetupWizard::Focus() {
104 SyncSetupFlow* flow = flow_container_->get_flow(); 61 SyncSetupFlow* flow = flow_container_->get_flow();
105 if (flow) 62 if (flow)
106 flow->Focus(); 63 flow->Focus();
107 } 64 }
108 65
109 SyncSetupFlow* SyncSetupWizard::AttachSyncSetupHandler( 66 SyncSetupFlow* SyncSetupWizard::AttachSyncSetupHandler(
110 SyncSetupFlowHandler* handler) { 67 SyncSetupFlowHandler* handler) {
111 SyncSetupFlow* flow = flow_container_->get_flow(); 68 SyncSetupFlow* flow = flow_container_->get_flow();
112 if (!flow || !flow->AttachSyncSetupHandler(handler)) 69 if (!flow || !flow->AttachSyncSetupHandler(handler))
113 return NULL; 70 return NULL;
114 71
115 return flow; 72 return flow;
116 } 73 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/sync_setup_wizard.h ('k') | chrome/browser/sync/sync_setup_wizard_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698