| Index: components/sync_driver/generic_change_processor.cc
|
| diff --git a/components/sync_driver/generic_change_processor.cc b/components/sync_driver/generic_change_processor.cc
|
| index 2df982022d69edcf38f818ec0f6d81ac73548e6b..c8deba9c08795d15a3af28df2fa16f63b6300b3f 100644
|
| --- a/components/sync_driver/generic_change_processor.cc
|
| +++ b/components/sync_driver/generic_change_processor.cc
|
| @@ -537,6 +537,13 @@ syncer::SyncError GenericChangeProcessor::HandleActionAdd(
|
| LOG(ERROR) << "Create: Bad predecessor.";
|
| return error;
|
| }
|
| + case syncer::WriteNode::INIT_FAILED_DECRYPT_EXISTING_ENTRY: {
|
| + syncer::SyncError error;
|
| + error.Reset(FROM_HERE, error_prefix + "failed to decrypt", type_);
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| + LOG(ERROR) << "Create: Failed to decrypt.";
|
| + return error;
|
| + }
|
| default: {
|
| syncer::SyncError error;
|
| error.Reset(FROM_HERE, error_prefix + "unknown error", type_);
|
| @@ -594,55 +601,19 @@ syncer::SyncError GenericChangeProcessor::HandleActionUpdate(
|
| error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Update: deleted entry.";
|
| return error;
|
| + } else if (result == syncer::BaseNode::INIT_FAILED_DECRYPT_IF_NECESSARY) {
|
| + syncer::SyncError error;
|
| + error.Reset(FROM_HERE, error_prefix + "failed to decrypt", type_);
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| + LOG(ERROR) << "Update: Failed to decrypt.";
|
| + return error;
|
| } else {
|
| - syncer::Cryptographer* crypto = trans.GetCryptographer();
|
| - syncer::ModelTypeSet encrypted_types(trans.GetEncryptedTypes());
|
| - const sync_pb::EntitySpecifics& specifics =
|
| - sync_node->GetEntitySpecifics();
|
| - CHECK(specifics.has_encrypted());
|
| - const bool can_decrypt = crypto->CanDecrypt(specifics.encrypted());
|
| - const bool agreement = encrypted_types.Has(type_);
|
| - if (!agreement && !can_decrypt) {
|
| - syncer::SyncError error;
|
| - error.Reset(FROM_HERE,
|
| - "Failed to load encrypted entry, missing key and "
|
| - "nigori mismatch for " +
|
| - type_str + ".",
|
| - type_);
|
| - error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| - LOG(ERROR) << "Update: encr case 1.";
|
| - return error;
|
| - } else if (agreement && can_decrypt) {
|
| - syncer::SyncError error;
|
| - error.Reset(FROM_HERE,
|
| - "Failed to load encrypted entry, we have the key "
|
| - "and the nigori matches (?!) for " +
|
| - type_str + ".",
|
| - type_);
|
| - error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| - LOG(ERROR) << "Update: encr case 2.";
|
| - return error;
|
| - } else if (agreement) {
|
| - syncer::SyncError error;
|
| - error.Reset(FROM_HERE,
|
| - "Failed to load encrypted entry, missing key and "
|
| - "the nigori matches for " +
|
| - type_str + ".",
|
| - type_);
|
| - error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| - LOG(ERROR) << "Update: encr case 3.";
|
| - return error;
|
| - } else {
|
| - syncer::SyncError error;
|
| - error.Reset(FROM_HERE,
|
| - "Failed to load encrypted entry, we have the key"
|
| - "(?!) and nigori mismatch for " +
|
| - type_str + ".",
|
| - type_);
|
| - error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| - LOG(ERROR) << "Update: encr case 4.";
|
| - return error;
|
| - }
|
| + NOTREACHED();
|
| + syncer::SyncError error;
|
| + error.Reset(FROM_HERE, error_prefix + "unknown error", type_);
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| + LOG(ERROR) << "Update: Unknown error.";
|
| + return error;
|
| }
|
| }
|
|
|
|
|