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

Unified Diff: chrome/browser/sync/glue/failed_data_types_handler.cc

Issue 15701022: [Sync] Add support for sync Persistence Errors (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move bookmark change into separate patch Created 7 years, 6 months 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
Index: chrome/browser/sync/glue/failed_data_types_handler.cc
diff --git a/chrome/browser/sync/glue/failed_data_types_handler.cc b/chrome/browser/sync/glue/failed_data_types_handler.cc
index 594911fcf4e6b967fdd952241f8ac9496ef57467..01a32149f05a69f50881474ddeeb9103acdbe232 100644
--- a/chrome/browser/sync/glue/failed_data_types_handler.cc
+++ b/chrome/browser/sync/glue/failed_data_types_handler.cc
@@ -30,40 +30,53 @@ FailedDataTypesHandler::FailedDataTypesHandler() {
FailedDataTypesHandler::~FailedDataTypesHandler() {
}
-bool FailedDataTypesHandler::UpdateFailedDataTypes(
- const TypeErrorMap& errors,
- FailureType failure_type) {
- if (failure_type == RUNTIME) {
- runtime_errors_.insert(errors.begin(), errors.end());
- } else if (failure_type == STARTUP) {
- startup_errors_.insert(errors.begin(), errors.end());
- } else if (failure_type == CRYPTO) {
- crypto_errors_.insert(errors.begin(), errors.end());
- } else {
- NOTREACHED();
+bool FailedDataTypesHandler::UpdateFailedDataTypes(const TypeErrorMap& errors) {
+ if (errors.empty())
+ return false;
+
+ for (TypeErrorMap::const_iterator iter = errors.begin(); iter != errors.end();
+ ++iter) {
+ syncer::SyncError::ErrorType failure_type = iter->second.error_type();
+ switch (failure_type) {
+ case syncer::SyncError::UNRECOVERABLE_ERROR:
+ case syncer::SyncError::DATATYPE_ERROR:
+ fatal_errors_.insert(*iter);
+ break;
+ case syncer::SyncError::CRYPTO_ERROR:
+ crypto_errors_.insert(*iter);
+ break;
+ case syncer::SyncError::PERSISTENCE_ERROR:
+ persistence_errors_.insert(*iter);
+ break;
+ default:
+ NOTREACHED();
+ }
}
-
- return !errors.empty();
+ return true;
}
void FailedDataTypesHandler::Reset() {
- startup_errors_.clear();
- runtime_errors_.clear();
+ fatal_errors_.clear();
crypto_errors_.clear();
+ persistence_errors_.clear();
}
void FailedDataTypesHandler::ResetCryptoErrors() {
crypto_errors_.clear();
}
+void FailedDataTypesHandler::ResetPersistenceErrors() {
+ persistence_errors_.clear();
+}
+
FailedDataTypesHandler::TypeErrorMap FailedDataTypesHandler::GetAllErrors()
const {
TypeErrorMap result;
if (AnyFailedDataType()) {
- result = startup_errors_;
- result.insert(runtime_errors_.begin(), runtime_errors_.end());
+ result = fatal_errors_;
result.insert(crypto_errors_.begin(), crypto_errors_.end());
+ result.insert(persistence_errors_.begin(), persistence_errors_.end());
}
return result;
}
@@ -75,9 +88,7 @@ syncer::ModelTypeSet FailedDataTypesHandler::GetFailedTypes() const {
}
syncer::ModelTypeSet FailedDataTypesHandler::GetFatalErrorTypes() const {
- syncer::ModelTypeSet result = GetTypesFromErrorMap(startup_errors_);
- result.PutAll(GetTypesFromErrorMap(runtime_errors_));
- return result;
+ return GetTypesFromErrorMap(fatal_errors_);;
}
syncer::ModelTypeSet FailedDataTypesHandler::GetCryptoErrorTypes() const {
@@ -85,9 +96,15 @@ syncer::ModelTypeSet FailedDataTypesHandler::GetCryptoErrorTypes() const {
return result;
}
+syncer::ModelTypeSet FailedDataTypesHandler::GetPersistenceErrorTypes() const {
+ syncer::ModelTypeSet result = GetTypesFromErrorMap(persistence_errors_);
+ return result;
+}
+
bool FailedDataTypesHandler::AnyFailedDataType() const {
- return (!startup_errors_.empty() || !runtime_errors_.empty() ||
- !crypto_errors_.empty());
+ // Note: persistence errors are not failed types. They just trigger automatic
+ // unapply + getupdates, at which point they are associated like normal.
+ return !fatal_errors_.empty() || !crypto_errors_.empty();
}
} // namespace browser_sync
« no previous file with comments | « chrome/browser/sync/glue/failed_data_types_handler.h ('k') | chrome/browser/sync/glue/fake_data_type_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698