OLD | NEW |
1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_UI_WEBUI_SYNC_SETUP_HANDLER_H_ | 5 #ifndef CHROME_BROWSER_UI_WEBUI_SYNC_SETUP_HANDLER_H_ |
6 #define CHROME_BROWSER_UI_WEBUI_SYNC_SETUP_HANDLER_H_ | 6 #define CHROME_BROWSER_UI_WEBUI_SYNC_SETUP_HANDLER_H_ |
7 | 7 |
8 #include "base/gtest_prod_util.h" | 8 #include "base/gtest_prod_util.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/timer.h" | 10 #include "base/timer.h" |
11 #include "chrome/browser/signin/signin_tracker.h" | 11 #include "chrome/browser/signin/signin_tracker.h" |
12 #include "chrome/browser/ui/webui/options/options_ui.h" | 12 #include "chrome/browser/ui/webui/options/options_ui.h" |
13 #include "chrome/browser/ui/webui/signin/login_ui_service.h" | 13 #include "chrome/browser/ui/webui/signin/login_ui_service.h" |
14 #include "content/public/browser/web_contents_observer.h" | 14 #include "content/public/browser/web_contents_observer.h" |
15 | 15 |
16 class LoginUIService; | 16 class LoginUIService; |
17 class ProfileManager; | 17 class ProfileManager; |
18 class ProfileSyncService; | 18 class ProfileSyncService; |
19 class SigninManager; | 19 class SigninManagerBase; |
20 | 20 |
21 namespace content { | 21 namespace content { |
22 class WebContents; | 22 class WebContents; |
23 } | 23 } |
24 | 24 |
25 class SyncSetupHandler : public options::OptionsPageUIHandler, | 25 class SyncSetupHandler : public options::OptionsPageUIHandler, |
26 public SigninTracker::Observer, | 26 public SigninTracker::Observer, |
27 public LoginUIService::LoginUI, | 27 public LoginUIService::LoginUI, |
28 public content::WebContentsObserver { | 28 public content::WebContentsObserver { |
29 public: | 29 public: |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 | 63 |
64 // Shows advanced configuration dialog without going through sign in dialog. | 64 // Shows advanced configuration dialog without going through sign in dialog. |
65 // Kicks the sync backend if necessary with showing spinner dialog until it | 65 // Kicks the sync backend if necessary with showing spinner dialog until it |
66 // gets ready. | 66 // gets ready. |
67 void OpenConfigureSync(); | 67 void OpenConfigureSync(); |
68 | 68 |
69 // Terminates the sync setup flow. | 69 // Terminates the sync setup flow. |
70 void CloseSyncSetup(); | 70 void CloseSyncSetup(); |
71 | 71 |
72 protected: | 72 protected: |
73 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, GaiaErrorInitializingSync); | |
74 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, HandleCaptcha); | |
75 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, HandleGaiaAuthFailure); | |
76 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, SelectCustomEncryption); | 73 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, SelectCustomEncryption); |
77 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, SuccessfullySetPassphrase); | 74 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, SuccessfullySetPassphrase); |
78 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TestSyncEverything); | 75 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TestSyncEverything); |
79 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TestSyncAllManually); | 76 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TestSyncAllManually); |
80 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TestPassphraseStillRequired); | 77 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TestPassphraseStillRequired); |
81 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TestSyncIndividualTypes); | 78 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TestSyncIndividualTypes); |
82 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TurnOnEncryptAll); | 79 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, TurnOnEncryptAll); |
83 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, | 80 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, UnsuccessfullySetPassphrase); |
| 81 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerNonCrosTest, |
84 UnrecoverableErrorInitializingSync); | 82 UnrecoverableErrorInitializingSync); |
85 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, UnsuccessfullySetPassphrase); | 83 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerNonCrosTest, |
86 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerTest, SubmitAuthWithInvalidUsername); | 84 GaiaErrorInitializingSync); |
| 85 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerNonCrosTest, HandleCaptcha); |
| 86 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerNonCrosTest, HandleGaiaAuthFailure); |
| 87 FRIEND_TEST_ALL_PREFIXES(SyncSetupHandlerNonCrosTest, |
| 88 SubmitAuthWithInvalidUsername); |
87 | 89 |
88 bool is_configuring_sync() const { return configuring_sync_; } | 90 bool is_configuring_sync() const { return configuring_sync_; } |
89 bool have_signin_tracker() const { return signin_tracker_; } | 91 bool have_signin_tracker() const { return signin_tracker_; } |
90 | 92 |
91 // Subclasses must implement this to show the setup UI that's appropriate | 93 // Subclasses must implement this to show the setup UI that's appropriate |
92 // for the page this is contained in. | 94 // for the page this is contained in. |
93 virtual void ShowSetupUI() = 0; | 95 virtual void ShowSetupUI() = 0; |
94 | 96 |
95 // Overridden by subclasses (like SyncPromoHandler) to log stats about the | 97 // Overridden by subclasses (like SyncPromoHandler) to log stats about the |
96 // user's signin activity. | 98 // user's signin activity. |
(...skipping 13 matching lines...) Expand all Loading... |
110 // Helper routine that gets the ProfileSyncService associated with the parent | 112 // Helper routine that gets the ProfileSyncService associated with the parent |
111 // profile. | 113 // profile. |
112 ProfileSyncService* GetSyncService() const; | 114 ProfileSyncService* GetSyncService() const; |
113 | 115 |
114 // Returns the LoginUIService for the parent profile. | 116 // Returns the LoginUIService for the parent profile. |
115 LoginUIService* GetLoginUIService() const; | 117 LoginUIService* GetLoginUIService() const; |
116 | 118 |
117 private: | 119 private: |
118 // Callbacks from the page. | 120 // Callbacks from the page. |
119 void OnDidClosePage(const base::ListValue* args); | 121 void OnDidClosePage(const base::ListValue* args); |
120 void HandleSubmitAuth(const base::ListValue* args); | |
121 void HandleConfigure(const base::ListValue* args); | 122 void HandleConfigure(const base::ListValue* args); |
122 void HandlePassphraseEntry(const base::ListValue* args); | 123 void HandlePassphraseEntry(const base::ListValue* args); |
123 void HandlePassphraseCancel(const base::ListValue* args); | 124 void HandlePassphraseCancel(const base::ListValue* args); |
124 void HandleShowErrorUI(const base::ListValue* args); | 125 void HandleShowErrorUI(const base::ListValue* args); |
125 void HandleShowSetupUI(const base::ListValue* args); | 126 void HandleShowSetupUI(const base::ListValue* args); |
126 void HandleShowSetupUIWithoutLogin(const base::ListValue* args); | 127 void HandleShowSetupUIWithoutLogin(const base::ListValue* args); |
127 void HandleDoSignOutOnAuthError(const base::ListValue* args); | 128 void HandleDoSignOutOnAuthError(const base::ListValue* args); |
128 void HandleStopSyncing(const base::ListValue* args); | 129 void HandleStopSyncing(const base::ListValue* args); |
129 void HandleCloseTimeout(const base::ListValue* args); | 130 void HandleCloseTimeout(const base::ListValue* args); |
| 131 #if !defined(OS_CHROMEOS) |
| 132 void HandleSubmitAuth(const base::ListValue* args); |
| 133 |
| 134 // Initiates a login via the signin manager. |
| 135 void TryLogin(const std::string& username, |
| 136 const std::string& password, |
| 137 const std::string& captcha, |
| 138 const std::string& access_code); |
| 139 #endif |
130 | 140 |
131 // Helper routine that gets the Profile associated with this object (virtual | 141 // Helper routine that gets the Profile associated with this object (virtual |
132 // so tests can override). | 142 // so tests can override). |
133 virtual Profile* GetProfile() const; | 143 virtual Profile* GetProfile() const; |
134 | 144 |
135 // Shows the GAIA login success page then exits. | 145 // Shows the GAIA login success page then exits. |
136 void DisplayGaiaSuccessAndClose(); | 146 void DisplayGaiaSuccessAndClose(); |
137 | 147 |
138 // Displays the GAIA login success page then transitions to sync setup. | 148 // Displays the GAIA login success page then transitions to sync setup. |
139 void DisplayGaiaSuccessAndSettingUp(); | 149 void DisplayGaiaSuccessAndSettingUp(); |
(...skipping 22 matching lines...) Expand all Loading... |
162 // TODO(kochi): better to show some message that the user can understand what | 172 // TODO(kochi): better to show some message that the user can understand what |
163 // is running in the background. | 173 // is running in the background. |
164 void DisplaySpinner(); | 174 void DisplaySpinner(); |
165 | 175 |
166 // Displays an error dialog which shows timeout of starting the sync backend. | 176 // Displays an error dialog which shows timeout of starting the sync backend. |
167 void DisplayTimeout(); | 177 void DisplayTimeout(); |
168 | 178 |
169 // Returns true if this object is the active login object. | 179 // Returns true if this object is the active login object. |
170 bool IsActiveLogin() const; | 180 bool IsActiveLogin() const; |
171 | 181 |
172 // Initiates a login via the signin manager. | |
173 void TryLogin(const std::string& username, | |
174 const std::string& password, | |
175 const std::string& captcha, | |
176 const std::string& access_code); | |
177 | |
178 // If a wizard already exists, focus it and return true. | 182 // If a wizard already exists, focus it and return true. |
179 bool FocusExistingWizardIfPresent(); | 183 bool FocusExistingWizardIfPresent(); |
180 | 184 |
181 // Invokes the javascript call to close the setup overlay. | 185 // Invokes the javascript call to close the setup overlay. |
182 void CloseOverlay(); | 186 void CloseOverlay(); |
183 | 187 |
184 // When using web-flow, closes the Gaia page used to collection user | 188 // When using web-flow, closes the Gaia page used to collection user |
185 // credentials. | 189 // credentials. |
186 void CloseGaiaSigninPage(); | 190 void CloseGaiaSigninPage(); |
187 | 191 |
188 // Returns true if the given login data is valid, false otherwise. If the | 192 // Returns true if the given login data is valid, false otherwise. If the |
189 // login data is not valid then on return |error_message| will be set to a | 193 // login data is not valid then on return |error_message| will be set to a |
190 // localized error message. Note, |error_message| must not be NULL. | 194 // localized error message. Note, |error_message| must not be NULL. |
191 bool IsLoginAuthDataValid(const std::string& username, | 195 bool IsLoginAuthDataValid(const std::string& username, |
192 string16* error_message); | 196 string16* error_message); |
193 | 197 |
194 // Returns the SigninManager for the parent profile. | |
195 SigninManager* GetSignin() const; | |
196 | |
197 // The SigninTracker object used to determine when the user has fully signed | 198 // The SigninTracker object used to determine when the user has fully signed |
198 // in (this requires waiting for various services to initialize and tracking | 199 // in (this requires waiting for various services to initialize and tracking |
199 // errors from multiple sources). Should only be non-null while the login UI | 200 // errors from multiple sources). Should only be non-null while the login UI |
200 // is visible. | 201 // is visible. |
201 scoped_ptr<SigninTracker> signin_tracker_; | 202 scoped_ptr<SigninTracker> signin_tracker_; |
202 | 203 |
203 // Set to true whenever the sync configure UI is visible. This is used to tell | 204 // Set to true whenever the sync configure UI is visible. This is used to tell |
204 // what stage of the setup wizard the user was in and to update the UMA | 205 // what stage of the setup wizard the user was in and to update the UMA |
205 // histograms in the case that the user cancels out. | 206 // histograms in the case that the user cancels out. |
206 bool configuring_sync_; | 207 bool configuring_sync_; |
(...skipping 16 matching lines...) Expand all Loading... |
223 scoped_ptr<base::OneShotTimer<SyncSetupHandler> > backend_start_timer_; | 224 scoped_ptr<base::OneShotTimer<SyncSetupHandler> > backend_start_timer_; |
224 | 225 |
225 // When using web-flow, weak pointer to the tab that holds the Gaia sign in | 226 // When using web-flow, weak pointer to the tab that holds the Gaia sign in |
226 // page. | 227 // page. |
227 content::WebContents* active_gaia_signin_tab_; | 228 content::WebContents* active_gaia_signin_tab_; |
228 | 229 |
229 DISALLOW_COPY_AND_ASSIGN(SyncSetupHandler); | 230 DISALLOW_COPY_AND_ASSIGN(SyncSetupHandler); |
230 }; | 231 }; |
231 | 232 |
232 #endif // CHROME_BROWSER_UI_WEBUI_SYNC_SETUP_HANDLER_H_ | 233 #endif // CHROME_BROWSER_UI_WEBUI_SYNC_SETUP_HANDLER_H_ |
OLD | NEW |