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..0115dbf852ce461976a82c9632e39d6f14a40f30 100644 |
--- a/chrome/browser/sync/profile_sync_service.cc |
+++ b/chrome/browser/sync/profile_sync_service.cc |
@@ -957,14 +957,22 @@ void ProfileSyncService::DisableDatatype( |
syncer::ModelType type, |
const tracked_objects::Location& from_here, |
std::string message) { |
+ DisableDatatype(type, syncer::SyncError::DATATYPE_ERROR, from_here, message); |
+} |
+ |
+void ProfileSyncService::DisableDatatype( |
+ syncer::ModelType type, |
+ syncer::SyncError::ErrorType error_type, |
+ const tracked_objects::Location& from_here, |
+ std::string message) { |
+ DCHECK(error_type == syncer::SyncError::DATATYPE_ERROR || |
+ error_type == syncer::SyncError::DATATYPE_POLICY_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); |
+ syncer::SyncError error(from_here, error_type, message, type); |
std::map<syncer::ModelType, syncer::SyncError> errors; |
errors[type] = error; |
@@ -1372,6 +1380,7 @@ void ProfileSyncService::OnEncryptedTypesChanged( |
if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && |
encrypted_types_.Has(syncer::SESSIONS)) { |
DisableDatatype(syncer::HISTORY_DELETE_DIRECTIVES, |
+ syncer::SyncError::DATATYPE_POLICY_ERROR, |
FROM_HERE, |
"Delete directives not supported with encryption."); |
} |
@@ -1780,6 +1789,7 @@ void ProfileSyncService::OnUserChoseDatatypes( |
if (GetActiveDataTypes().Has(syncer::HISTORY_DELETE_DIRECTIVES) && |
encrypted_types_.Has(syncer::SESSIONS)) { |
DisableDatatype(syncer::HISTORY_DELETE_DIRECTIVES, |
+ syncer::SyncError::DATATYPE_POLICY_ERROR, |
FROM_HERE, |
"Delete directives not supported with encryption."); |
} |
@@ -2026,10 +2036,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.severity()) { |
+ case logging::LOG_ERROR: { |
+ std::string error_text = "Error: " + error.location().ToString() + |
+ ", " + error.type_message_prefix() + error.message(); |
+ type_status->SetString("status", "error"); |
+ type_status->SetString("value", error_text); |
+ } |
+ break; |
+ case logging::LOG_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)); |