Index: chrome/browser/sync/engine/syncer_util.cc |
=================================================================== |
--- chrome/browser/sync/engine/syncer_util.cc (revision 75295) |
+++ chrome/browser/sync/engine/syncer_util.cc (working copy) |
@@ -4,7 +4,6 @@ |
#include "chrome/browser/sync/engine/syncer_util.h" |
-#include <algorithm> |
#include <set> |
#include <string> |
#include <vector> |
@@ -18,7 +17,6 @@ |
#include "chrome/browser/sync/protocol/sync.pb.h" |
#include "chrome/browser/sync/syncable/directory_manager.h" |
#include "chrome/browser/sync/syncable/model_type.h" |
-#include "chrome/browser/sync/syncable/nigori_util.h" |
#include "chrome/browser/sync/syncable/syncable.h" |
#include "chrome/browser/sync/syncable/syncable_changes_version.h" |
@@ -221,8 +219,8 @@ |
if (local_entry.good() && !local_entry.Get(IS_DEL)) { |
int64 old_version = local_entry.Get(BASE_VERSION); |
int64 new_version = update.version(); |
- DCHECK_LE(old_version, 0); |
- DCHECK_GT(new_version, 0); |
+ DCHECK(old_version <= 0); |
+ DCHECK(new_version > 0); |
// Otherwise setting the base version could cause a consistency failure. |
// An entry should never be version 0 and SYNCED. |
DCHECK(local_entry.Get(IS_UNSYNCED)); |
@@ -288,9 +286,8 @@ |
} |
} |
- // We intercept updates to the Nigori node, update the Cryptographer and |
- // encrypt any unsynced changes here because there is no Nigori |
- // ChangeProcessor. |
+ // We intercept updates to the Nigori node and update the Cryptographer here |
+ // because there is no Nigori ChangeProcessor. |
const sync_pb::EntitySpecifics& specifics = entry->Get(SERVER_SPECIFICS); |
if (specifics.HasExtension(sync_pb::nigori)) { |
const sync_pb::NigoriSpecifics& nigori = |
@@ -302,49 +299,17 @@ |
cryptographer->SetPendingKeys(nigori.encrypted()); |
} |
} |
- |
- // Make sure any unsynced changes are properly encrypted as necessary. |
- syncable::ModelTypeSet encrypted_types = |
- syncable::GetEncryptedDataTypesFromNigori(nigori); |
- if (!VerifyUnsyncedChangesAreEncrypted(trans, encrypted_types) && |
- (!cryptographer->is_ready() || |
- !syncable::ProcessUnsyncedChangesForEncryption(trans, encrypted_types, |
- cryptographer))) { |
- // We were unable to encrypt the changes, possibly due to a missing |
- // passphrase. We return conflict, even though the conflict is with the |
- // unsynced change and not the nigori node. We ensure foward progress |
- // because the cryptographer already has the pending keys set, so once |
- // the new passphrase is entered we should be able to encrypt properly. |
- // And, because this update will not be applied yet, next time around |
- // we will properly encrypt all appropriate unsynced data. |
- VLOG(1) << "Marking nigori node update as conflicting due to being unable" |
- << " to encrypt all necessary unsynced changes."; |
- return CONFLICT; |
- } |
- |
- // Note that we don't bother to encrypt any synced data that now requires |
- // encryption. The machine that turned on encryption should encrypt |
- // everything itself. It's possible it could get interrupted during this |
- // process, but we currently reencrypt everything at startup as well, |
- // so as soon as a client is restarted with this datatype encrypted, all the |
- // data should be updated as necessary. |
} |
// Only apply updates that we can decrypt. Updates that can't be decrypted yet |
// will stay in conflict until the user provides a passphrase that lets the |
// Cryptographer decrypt them. |
- if (!entry->Get(SERVER_IS_DIR)) { |
- if (specifics.has_encrypted() && |
- !cryptographer->CanDecrypt(specifics.encrypted())) { |
+ if (!entry->Get(SERVER_IS_DIR) && specifics.HasExtension(sync_pb::password)) { |
+ const sync_pb::PasswordSpecifics& password = |
+ specifics.GetExtension(sync_pb::password); |
+ if (!cryptographer->CanDecrypt(password.encrypted())) { |
// We can't decrypt this node yet. |
return CONFLICT; |
- } else if (specifics.HasExtension(sync_pb::password)) { |
- // Passwords use their own legacy encryption scheme. |
- const sync_pb::PasswordSpecifics& password = |
- specifics.GetExtension(sync_pb::password); |
- if (!cryptographer->CanDecrypt(password.encrypted())) { |
- return CONFLICT; |
- } |
} |
} |