| Index: chrome/browser/sync/profile_sync_service.cc
|
| ===================================================================
|
| --- chrome/browser/sync/profile_sync_service.cc (revision 48898)
|
| +++ chrome/browser/sync/profile_sync_service.cc (working copy)
|
| @@ -400,10 +400,15 @@
|
|
|
| // An invariant has been violated. Transition to an error state where we try
|
| // to do as little work as possible, to avoid further corruption or crashes.
|
| -void ProfileSyncService::OnUnrecoverableError() {
|
| +void ProfileSyncService::OnUnrecoverableError(
|
| + const tracked_objects::Location& from_here,
|
| + const std::string& message) {
|
| unrecoverable_error_detected_ = true;
|
| - // TODO(sync) remove this unrecoverable_error_detected_ variable_ as it only
|
| - // affects ShouldPushChanges().
|
| + unrecoverable_error_message_ = message;
|
| + unrecoverable_error_location_.reset(
|
| + new tracked_objects::Location(from_here.function_name(),
|
| + from_here.file_name(),
|
| + from_here.line_number()));
|
|
|
| // Shut all data types down.
|
| if (data_type_manager_.get())
|
| @@ -414,6 +419,9 @@
|
|
|
| FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
|
| LOG(ERROR) << "Unrecoverable error detected -- ProfileSyncService unusable.";
|
| + std::string location;
|
| + from_here.Write(true, true, &location);
|
| + LOG(ERROR) << location;
|
|
|
| if (WizardIsVisible()) {
|
| // We've hit an error in the middle of a startup process- shutdown all the
|
| @@ -678,7 +686,7 @@
|
| DataTypeManager::ConfigureResult result =
|
| *(Details<DataTypeManager::ConfigureResult>(details).ptr());
|
| if (result != DataTypeManager::OK) {
|
| - OnUnrecoverableError();
|
| + OnUnrecoverableError(FROM_HERE, "Sync Configuration failed.");
|
| return;
|
| }
|
|
|
|
|