Index: chrome/browser/sync/profile_sync_service.cc |
diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc |
index cd24db0e80278c188cf754857b136e9bfc390a6c..a6783fa3660e46f9923113811d25b285ec16eb60 100644 |
--- a/chrome/browser/sync/profile_sync_service.cc |
+++ b/chrome/browser/sync/profile_sync_service.cc |
@@ -955,17 +955,11 @@ void ProfileSyncService::OnUnrecoverableErrorImpl( |
// TODO(zea): Move this logic into the DataTypeController/DataTypeManager. |
void ProfileSyncService::DisableDatatype( |
syncer::ModelType type, |
- const tracked_objects::Location& from_here, |
- std::string message) { |
+ const syncer::SyncError& error) { |
// First deactivate the type so that no further server changes are |
// passed onto the change processor. |
DeactivateDataType(type); |
- syncer::SyncError error(from_here, |
- syncer::SyncError::DATATYPE_ERROR, |
- message, |
- type); |
- |
std::map<syncer::ModelType, syncer::SyncError> errors; |
errors[type] = error; |
@@ -1371,9 +1365,12 @@ void ProfileSyncService::OnEncryptedTypesChanged( |
// delete directives are unnecessary. |
if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && |
encrypted_types_.Has(syncer::SESSIONS)) { |
- DisableDatatype(syncer::HISTORY_DELETE_DIRECTIVES, |
- FROM_HERE, |
- "Delete directives not supported with encryption."); |
+ syncer::SyncError error( |
+ FROM_HERE, |
+ syncer::SyncError::DATATYPE_POLICY_ERROR, |
+ "Delete directives not supported with encryption.", |
+ syncer::HISTORY_DELETE_DIRECTIVES); |
+ DisableDatatype(syncer::HISTORY_DELETE_DIRECTIVES, error); |
} |
} |
@@ -1779,9 +1776,12 @@ void ProfileSyncService::OnUserChoseDatatypes( |
failed_data_types_handler_.Reset(); |
if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && |
encrypted_types_.Has(syncer::SESSIONS)) { |
- DisableDatatype(syncer::HISTORY_DELETE_DIRECTIVES, |
- FROM_HERE, |
- "Delete directives not supported with encryption."); |
+ syncer::SyncError error( |
+ FROM_HERE, |
+ syncer::SyncError::DATATYPE_POLICY_ERROR, |
+ "Delete directives not supported with encryption.", |
+ syncer::HISTORY_DELETE_DIRECTIVES); |
+ DisableDatatype(syncer::HISTORY_DELETE_DIRECTIVES, error); |
} |
ChangePreferredDataTypes(chosen_types); |
AcknowledgeSyncedTypes(); |
@@ -2026,10 +2026,22 @@ base::Value* ProfileSyncService::GetTypeStatusMap() const { |
if (error_map.find(type) != error_map.end()) { |
const syncer::SyncError &error = error_map.find(type)->second; |
DCHECK(error.IsSet()); |
- std::string error_text = "Error: " + error.location().ToString() + |
- ", " + error.message(); |
- type_status->SetString("status", "error"); |
- type_status->SetString("value", error_text); |
+ switch (error.GetSeverity()) { |
+ case syncer::SyncError::SYNC_ERROR_SEVERITY_ERROR: { |
+ std::string error_text = "Error: " + error.location().ToString() + |
+ ", " + error.GetMessagePrefix() + error.message(); |
+ type_status->SetString("status", "error"); |
+ type_status->SetString("value", error_text); |
+ } |
+ break; |
+ case syncer::SyncError::SYNC_ERROR_SEVERITY_INFO: |
+ type_status->SetString("status", "disabled"); |
+ type_status->SetString("value", error.message()); |
+ break; |
+ default: |
+ NOTREACHED() << "Unexpected error severity."; |
+ break; |
+ } |
} else if (syncer::IsProxyType(type) && passive_types.Has(type)) { |
// Show a proxy type in "ok" state unless it is disabled by user. |
DCHECK(!throttled_types.Has(type)); |