Index: chrome/browser/ui/webui/sync_setup_handler.cc |
diff --git a/chrome/browser/ui/webui/sync_setup_handler.cc b/chrome/browser/ui/webui/sync_setup_handler.cc |
index 2663f5f8a90e502a7f09b9e5e1f1a0a9f710b84b..5f1cb6492c2f7ee47529334c2ecfe6f50b6fa206 100644 |
--- a/chrome/browser/ui/webui/sync_setup_handler.cc |
+++ b/chrome/browser/ui/webui/sync_setup_handler.cc |
@@ -490,6 +490,15 @@ void SyncSetupHandler::DisplayGaiaLoginWithErrorMessage( |
"SyncSetupOverlay.showSyncSetupPage", page, args); |
} |
+// TODO(kochi): Handle error conditions (timeout, other failures). |
+void SyncSetupHandler::DisplaySpinner() { |
+ configuring_sync_ = true; |
+ StringValue page("spinner"); |
+ DictionaryValue args; |
+ web_ui()->CallJavascriptFunction( |
+ "SyncSetupOverlay.showSyncSetupPage", page, args); |
+} |
+ |
void SyncSetupHandler::RecordSignin() { |
// By default, do nothing - subclasses can override. |
} |
@@ -507,7 +516,9 @@ void SyncSetupHandler::DisplayGaiaSuccessAndSettingUp() { |
void SyncSetupHandler::ShowFatalError() { |
// For now, just send the user back to the login page. Ultimately may want |
// to give different feedback (especially for chromeos). |
+#if !defined(OS_CHROMEOS) |
DisplayGaiaLogin(true); |
+#endif |
} |
void SyncSetupHandler::OnDidClosePage(const ListValue* args) { |
@@ -586,7 +597,13 @@ void SyncSetupHandler::SigninFailed(const GoogleServiceAuthError& error) { |
last_signin_error_ = error; |
// Got a failed signin - this is either just a typical auth error, or a |
// sync error (treat sync errors as "fatal errors" - i.e. non-auth errors). |
+ // On ChromeOS, this condition should trigger the orange badge on wrench menu |
+ // and prompt to sign out. |
+#if !defined(OS_CHROMEOS) |
DisplayGaiaLogin(GetSyncService()->unrecoverable_error_detected()); |
+#else |
+ CloseOverlay(); |
+#endif |
} |
Profile* SyncSetupHandler::GetProfile() const { |
@@ -756,11 +773,12 @@ void SyncSetupHandler::CloseSyncSetup() { |
// Make sure user isn't left half-logged-in (signed in, but without sync |
// started up). If the user hasn't finished setting up sync, then sign out |
// and shut down sync. |
- |
if (sync_service && !sync_service->HasSyncSetupCompleted()) { |
DVLOG(1) << "Signin aborted by user action"; |
sync_service->DisableForUser(); |
+#if !defined(OS_CHROMEOS) |
GetSignin()->SignOut(); |
+#endif |
} |
} |
@@ -795,13 +813,34 @@ void SyncSetupHandler::OpenSyncSetup(bool force_login) { |
// via the "Advanced..." button or the wrench menu. |
DisplayConfigureSync(true, false); |
} else { |
+#if !defined(OS_CHROMEOS) |
// User is not logged in - need to display login UI. |
DisplayGaiaLogin(false); |
+#else |
+ PrepareConfigDialog(); |
+#endif |
} |
ShowSetupUI(); |
} |
+void SyncSetupHandler::PrepareConfigDialog() { |
+ // On Chrome OS user is always logged in. Instead of showing login dialog, |
+ // show spinner until the backend gets ready to configure sync. |
+ ProfileSyncService* service = GetSyncService(); |
+ if (!service->sync_initialized()) { |
+ // To listen to the token available notifications, start SigninTracker. |
+ signin_tracker_.reset( |
+ new SigninTracker(GetProfile(), this, |
+ SigninTracker::SERVICES_INITIALIZING)); |
+ service->set_setup_in_progress(true); |
+ service->UnsuppressAndStart(); |
Andrew T Wilson (Slow)
2012/04/04 16:52:11
So, if the user cancels out of the spinner, they'l
kochi
2012/04/04 17:29:46
Let's suppress in PSS::DisableForUser() as discuss
|
+ DisplaySpinner(); |
+ } else { |
+ DisplayConfigureSync(true, false); |
+ } |
+} |
+ |
// Private member functions. |
bool SyncSetupHandler::FocusExistingWizardIfPresent() { |