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

Unified Diff: chrome/browser/sync/sync_ui_util.cc

Issue 2457483002: [MD Settings][Sync Settings] Updates sync status messages (Closed)
Patch Set: Addressed maxbogue's and dbeam's comments Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/sync/sync_ui_util.h ('k') | chrome/browser/sync/sync_ui_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/sync_ui_util.cc
diff --git a/chrome/browser/sync/sync_ui_util.cc b/chrome/browser/sync/sync_ui_util.cc
index 925d2c875164595563b541bc2b0070dbfbe4900a..cec16c010c3cd9830e6872dd999c1182d58736fb 100644
--- a/chrome/browser/sync/sync_ui_util.cc
+++ b/chrome/browser/sync/sync_ui_util.cc
@@ -97,30 +97,88 @@ base::string16 GetSyncedStateStatusLabel(ProfileSyncService* service,
}
}
-void GetStatusForActionableError(
- const syncer::SyncProtocolError& error,
- base::string16* status_label) {
+void GetStatusForActionableError(const syncer::SyncProtocolError& error,
+ base::string16* status_label,
+ ActionType* action_type) {
DCHECK(status_label);
switch (error.action) {
- case syncer::STOP_AND_RESTART_SYNC:
- status_label->assign(
- l10n_util::GetStringUTF16(IDS_SYNC_STOP_AND_RESTART_SYNC));
- break;
case syncer::UPGRADE_CLIENT:
- status_label->assign(
- l10n_util::GetStringFUTF16(IDS_SYNC_UPGRADE_CLIENT,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
+ status_label->assign(l10n_util::GetStringUTF16(IDS_SYNC_UPGRADE_CLIENT));
+ *action_type = UPGRADE_CLIENT;
break;
case syncer::ENABLE_SYNC_ON_ACCOUNT:
- status_label->assign(
- l10n_util::GetStringUTF16(IDS_SYNC_ENABLE_SYNC_ON_ACCOUNT));
- break;
- case syncer::CLEAR_USER_DATA_AND_RESYNC:
- status_label->assign(
- l10n_util::GetStringUTF16(IDS_SYNC_CLEAR_USER_DATA));
+ status_label->assign(
+ l10n_util::GetStringUTF16(IDS_SYNC_STATUS_ENABLE_SYNC_ON_ACCOUNT));
break;
default:
- NOTREACHED();
+ status_label->clear();
+ break;
+ }
+}
+
+void GetStatusForUnrecoverableError(Profile* profile,
+ ProfileSyncService* service,
+ base::string16* status_label,
+ ActionType* action_type) {
+ // Unrecoverable error is sometimes accompanied by actionable error.
+ // If status message is set display that message, otherwise show generic
+ // unrecoverable error message.
+ ProfileSyncService::Status status;
+ service->QueryDetailedSyncStatus(&status);
+ GetStatusForActionableError(status.sync_protocol_error, status_label,
+ action_type);
+ if (status_label->empty()) {
+ *action_type = REAUTHENTICATE;
+
+#if !defined(OS_CHROMEOS)
+ status_label->assign(l10n_util::GetStringUTF16(
+ IDS_SYNC_STATUS_UNRECOVERABLE_ERROR));
+ // The message for managed accounts is the same as that of the cros.
+ if (SigninManagerFactory::GetForProfile(profile)->IsSignoutProhibited()) {
+ status_label->assign(l10n_util::GetStringUTF16(
+ IDS_SYNC_STATUS_UNRECOVERABLE_ERROR_NEEDS_SIGNOUT));
+ }
+#else
+ status_label->assign(l10n_util::GetStringUTF16(
+ IDS_SYNC_STATUS_UNRECOVERABLE_ERROR_NEEDS_SIGNOUT));
+#endif
+ }
+}
+
+// Depending on the authentication state, returns labels to be used to display
+// information about the sync status.
+void GetStatusForAuthError(Profile* profile,
+ const SigninManagerBase& signin_manager,
+ base::string16* status_label,
+ base::string16* link_label,
+ ActionType* action_type) {
+ DCHECK(status_label);
+ DCHECK(link_label);
+ const GoogleServiceAuthError::State state =
+ SigninErrorControllerFactory::GetForProfile(profile)->
+ auth_error().state();
+ switch (state) {
+ case GoogleServiceAuthError::SERVICE_UNAVAILABLE:
+ status_label->assign(
+ l10n_util::GetStringUTF16(IDS_SYNC_SERVICE_UNAVAILABLE));
+ break;
+ case GoogleServiceAuthError::CONNECTION_FAILED:
+ status_label->assign(
+ l10n_util::GetStringUTF16(IDS_SYNC_SERVER_IS_UNREACHABLE));
+ // Note that there is little the user can do if the server is not
+ // reachable. Since attempting to re-connect is done automatically by
+ // the Syncer, we do not show the (re)login link.
+ break;
+ case GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS:
+ case GoogleServiceAuthError::SERVICE_ERROR:
+ case GoogleServiceAuthError::ACCOUNT_DELETED:
+ case GoogleServiceAuthError::ACCOUNT_DISABLED:
+ default:
+ status_label->assign(l10n_util::GetStringUTF16(IDS_SYNC_RELOGIN_ERROR));
+ link_label->assign(
+ l10n_util::GetStringUTF16(IDS_SYNC_RELOGIN_LINK_LABEL));
+ *action_type = REAUTHENTICATE;
+ break;
}
}
@@ -132,7 +190,8 @@ MessageType GetStatusInfo(Profile* profile,
const SigninManagerBase& signin,
StatusLabelStyle style,
base::string16* status_label,
- base::string16* link_label) {
+ base::string16* link_label,
+ ActionType* action_type) {
DCHECK_EQ(status_label == nullptr, link_label == nullptr);
MessageType result_type(SYNCED);
@@ -147,19 +206,8 @@ MessageType GetStatusInfo(Profile* profile,
if (service && service->HasUnrecoverableError()) {
if (status_label) {
- // Unrecoverable error is sometimes accompanied by actionable error.
- // If actionable error is set then display corresponding message,
- // otherwise show generic unrecoverable error message.
- ProfileSyncService::Status status;
- service->QueryDetailedSyncStatus(&status);
- if (browser_sync::ShouldShowActionOnUI(status.sync_protocol_error)) {
- GetStatusForActionableError(status.sync_protocol_error, status_label);
- } else {
- status_label->assign(l10n_util::GetStringFUTF16(
- IDS_SYNC_STATUS_UNRECOVERABLE_ERROR,
- l10n_util::GetStringUTF16(
- IDS_SYNC_UNRECOVERABLE_ERROR_HELP_URL)));
- }
+ GetStatusForUnrecoverableError(profile, service, status_label,
+ action_type);
}
return SYNC_ERROR;
}
@@ -179,39 +227,35 @@ MessageType GetStatusInfo(Profile* profile,
AuthError auth_error =
SigninErrorControllerFactory::GetForProfile(profile)->auth_error();
if (auth_error.state() != AuthError::NONE) {
- if (status_label && link_label)
- signin_ui_util::GetStatusLabelsForAuthError(profile, signin,
- status_label, link_label);
+ if (status_label && link_label) {
+ GetStatusForAuthError(profile, signin, status_label, link_label,
+ action_type);
+ }
return SYNC_ERROR;
}
// We don't have an auth error. Check for an actionable error.
ProfileSyncService::Status status;
service->QueryDetailedSyncStatus(&status);
- if (browser_sync::ShouldShowActionOnUI(status.sync_protocol_error)) {
- if (status_label) {
- GetStatusForActionableError(status.sync_protocol_error,
- status_label);
- }
- return SYNC_ERROR;
+ if (status_label) {
+ GetStatusForActionableError(status.sync_protocol_error, status_label,
+ action_type);
+ if (!status_label->empty())
+ return SYNC_ERROR;
}
// Check for a passphrase error.
- if (service->IsPassphraseRequired()) {
- if (service->IsPassphraseRequiredForDecryption()) {
- // TODO(lipalani) : Ask tim if this is still needed.
- // NOT first machine.
- // Show a link ("needs attention"), but still indicate the
- // current synced status. Return SYNC_PROMO so that
- // the configure link will still be shown.
- if (status_label && link_label) {
- status_label->assign(GetSyncedStateStatusLabel(
- service, signin, style));
- link_label->assign(
- l10n_util::GetStringUTF16(IDS_SYNC_PASSWORD_SYNC_ATTENTION));
- }
- return SYNC_PROMO;
+ if (service->IsPassphraseRequired() &&
+ service->IsPassphraseRequiredForDecryption()) {
+ if (status_label && link_label) {
+ status_label->assign(
+ l10n_util::GetStringUTF16(IDS_SYNC_STATUS_NEEDS_PASSWORD));
+ link_label->assign(
+ l10n_util::GetStringUTF16(
+ IDS_SYNC_STATUS_NEEDS_PASSWORD_LINK_LABEL));
+ *action_type = ENTER_PASSPHRASE;
}
+ return SYNC_ERROR;
}
// Check to see if sync has been disabled via the dasboard and needs to be
@@ -252,31 +296,23 @@ MessageType GetStatusInfo(Profile* profile,
} else if (auth_error.state() != AuthError::NONE &&
auth_error.state() != AuthError::TWO_FACTOR) {
if (status_label && link_label) {
- status_label->clear();
- signin_ui_util::GetStatusLabelsForAuthError(profile, signin,
- status_label, link_label);
+ GetStatusForAuthError(profile, signin, status_label, link_label,
+ action_type);
}
result_type = SYNC_ERROR;
}
} else if (service->HasUnrecoverableError()) {
result_type = SYNC_ERROR;
- ProfileSyncService::Status status;
- service->QueryDetailedSyncStatus(&status);
- if (browser_sync::ShouldShowActionOnUI(status.sync_protocol_error)) {
- if (status_label) {
- GetStatusForActionableError(status.sync_protocol_error,
- status_label);
- }
- } else if (status_label) {
- status_label->assign(l10n_util::GetStringUTF16(IDS_SYNC_SETUP_ERROR));
+ if (status_label) {
+ GetStatusForUnrecoverableError(profile, service, status_label,
+ action_type);
}
} else if (signin.IsAuthenticated()) {
// The user is signed in, but sync has been stopped.
+ result_type = PRE_SYNCED;
if (status_label) {
- base::string16 label = l10n_util::GetStringUTF16(
- IDS_SIGNED_IN_WITH_SYNC_SUPPRESSED);
- status_label->assign(label);
- result_type = PRE_SYNCED;
+ status_label->assign(
+ l10n_util::GetStringUTF16(IDS_SIGNED_IN_WITH_SYNC_SUPPRESSED));
}
}
}
@@ -318,8 +354,9 @@ MessageType GetStatusInfoForNewTabPage(Profile* profile,
}
// Fallback to default.
+ ActionType action_type = NO_ACTION;
return GetStatusInfo(profile, service, signin, WITH_HTML, status_label,
- link_label);
+ link_label, &action_type);
}
} // namespace
@@ -329,11 +366,12 @@ MessageType GetStatusLabels(Profile* profile,
const SigninManagerBase& signin,
StatusLabelStyle style,
base::string16* status_label,
- base::string16* link_label) {
+ base::string16* link_label,
+ ActionType* action_type) {
DCHECK(status_label);
DCHECK(link_label);
return sync_ui_util::GetStatusInfo(profile, service, signin, style,
- status_label, link_label);
+ status_label, link_label, action_type);
}
MessageType GetStatusLabelsForNewTabPage(Profile* profile,
@@ -455,8 +493,9 @@ AvatarSyncErrorType GetMessagesForAvatarSyncError(Profile* profile,
MessageType GetStatus(Profile* profile,
ProfileSyncService* service,
const SigninManagerBase& signin) {
+ ActionType action_type = NO_ACTION;
return sync_ui_util::GetStatusInfo(profile, service, signin, WITH_HTML,
- nullptr, nullptr);
+ nullptr, nullptr, &action_type);
}
base::string16 ConstructTime(int64_t time_in_int) {
« no previous file with comments | « chrome/browser/sync/sync_ui_util.h ('k') | chrome/browser/sync/sync_ui_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698