Index: sync/syncable/nigori_util.cc |
diff --git a/sync/syncable/nigori_util.cc b/sync/syncable/nigori_util.cc |
index 72d9281c7ace6ed1e29480bea49fc3ac2cd1b3ea..4b595164790f728047f0e85e174ee30aee134745 100644 |
--- a/sync/syncable/nigori_util.cc |
+++ b/sync/syncable/nigori_util.cc |
@@ -11,6 +11,7 @@ |
#include "base/json/json_writer.h" |
#include "sync/syncable/directory.h" |
#include "sync/syncable/entry.h" |
+#include "sync/syncable/nigori_handler.h" |
#include "sync/syncable/mutable_entry.h" |
#include "sync/syncable/syncable_util.h" |
#include "sync/syncable/write_transaction.h" |
@@ -20,9 +21,12 @@ namespace syncer { |
namespace syncable { |
bool ProcessUnsyncedChangesForEncryption( |
- WriteTransaction* const trans, |
- Cryptographer* cryptographer) { |
+ WriteTransaction* const trans) { |
+ NigoriHandler* nigori_handler = trans->directory()->GetNigoriHandler(); |
+ ModelTypeSet encrypted_types = nigori_handler->GetEncryptedTypes(trans); |
+ Cryptographer* cryptographer = trans->directory()->GetCryptographer(trans); |
DCHECK(cryptographer->is_ready()); |
+ |
// Get list of all datatypes with unsynced changes. It's possible that our |
// local changes need to be encrypted if encryption for that datatype was |
// just turned on (and vice versa). |
@@ -36,14 +40,10 @@ bool ProcessUnsyncedChangesForEncryption( |
const sync_pb::EntitySpecifics& specifics = entry.Get(SPECIFICS); |
// Ignore types that don't need encryption or entries that are already |
// encrypted. |
- if (!SpecificsNeedsEncryption(cryptographer->GetEncryptedTypes(), |
- specifics)) { |
+ if (!SpecificsNeedsEncryption(encrypted_types, specifics)) |
continue; |
- } |
- if (!UpdateEntryWithEncryption(cryptographer, specifics, &entry)) { |
- NOTREACHED(); |
+ if (!UpdateEntryWithEncryption(trans, specifics, &entry)) |
return false; |
- } |
} |
return true; |
} |
@@ -93,9 +93,9 @@ bool SpecificsNeedsEncryption(ModelTypeSet encrypted_types, |
// Mainly for testing. |
bool VerifyDataTypeEncryptionForTest( |
BaseTransaction* const trans, |
- Cryptographer* cryptographer, |
ModelType type, |
bool is_encrypted) { |
+ Cryptographer* cryptographer = trans->directory()->GetCryptographer(trans); |
if (type == PASSWORDS || type == NIGORI) { |
NOTREACHED(); |
return true; |
@@ -157,13 +157,15 @@ bool VerifyDataTypeEncryptionForTest( |
} |
bool UpdateEntryWithEncryption( |
- Cryptographer* cryptographer, |
+ BaseTransaction* const trans, |
const sync_pb::EntitySpecifics& new_specifics, |
syncable::MutableEntry* entry) { |
+ NigoriHandler* nigori_handler = trans->directory()->GetNigoriHandler(); |
+ Cryptographer* cryptographer = trans->directory()->GetCryptographer(trans); |
ModelType type = GetModelTypeFromSpecifics(new_specifics); |
DCHECK_GE(type, FIRST_REAL_MODEL_TYPE); |
const sync_pb::EntitySpecifics& old_specifics = entry->Get(SPECIFICS); |
- const ModelTypeSet encrypted_types = cryptographer->GetEncryptedTypes(); |
+ const ModelTypeSet encrypted_types = nigori_handler->GetEncryptedTypes(trans); |
// It's possible the nigori lost the set of encrypted types. If the current |
// specifics are already encrypted, we want to ensure we continue encrypting. |
bool was_encrypted = old_specifics.has_encrypted(); |