| Index: trunk/src/chrome/browser/sync/profile_sync_service.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/sync/profile_sync_service.cc (revision 289111)
|
| +++ trunk/src/chrome/browser/sync/profile_sync_service.cc (working copy)
|
| @@ -951,6 +951,24 @@
|
| syncer::DISABLE_SYNC : syncer::STOP_SYNC));
|
| }
|
|
|
| +// TODO(zea): Move this logic into the DataTypeController/DataTypeManager.
|
| +void ProfileSyncService::DisableDatatype(const syncer::SyncError& error) {
|
| + // First deactivate the type so that no further server changes are
|
| + // passed onto the change processor.
|
| + DeactivateDataType(error.model_type());
|
| +
|
| + std::map<syncer::ModelType, syncer::SyncError> errors;
|
| + errors[error.model_type()] = error;
|
| +
|
| + // Update this before posting a task. So if a configure happens before
|
| + // the task that we are going to post, this type would still be disabled.
|
| + failed_data_types_handler_.UpdateFailedDataTypes(errors);
|
| +
|
| + base::MessageLoop::current()->PostTask(FROM_HERE,
|
| + base::Bind(&ProfileSyncService::ReconfigureDatatypeManager,
|
| + weak_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| void ProfileSyncService::ReenableDatatype(syncer::ModelType type) {
|
| // Only reconfigure if the type actually had a data type or unready error.
|
| if (!failed_data_types_handler_.ResetDataTypeErrorFor(type) &&
|
| @@ -1366,10 +1384,7 @@
|
| syncer::SyncError::DATATYPE_POLICY_ERROR,
|
| "Delete directives not supported with encryption.",
|
| syncer::HISTORY_DELETE_DIRECTIVES);
|
| - FailedDataTypesHandler::TypeErrorMap error_map;
|
| - error_map[error.model_type()] = error;
|
| - failed_data_types_handler_.UpdateFailedDataTypes(error_map);
|
| - ReconfigureDatatypeManager();
|
| + DisableDatatype(error);
|
| }
|
| }
|
|
|
| @@ -1777,9 +1792,7 @@
|
| syncer::SyncError::DATATYPE_POLICY_ERROR,
|
| "Delete directives not supported with encryption.",
|
| syncer::HISTORY_DELETE_DIRECTIVES);
|
| - FailedDataTypesHandler::TypeErrorMap error_map;
|
| - error_map[error.model_type()] = error;
|
| - failed_data_types_handler_.UpdateFailedDataTypes(error_map);
|
| + DisableDatatype(error);
|
| }
|
| ChangePreferredDataTypes(chosen_types);
|
| AcknowledgeSyncedTypes();
|
|
|