Index: chrome/browser/sync/util/cryptographer.h |
diff --git a/chrome/browser/sync/util/cryptographer.h b/chrome/browser/sync/util/cryptographer.h |
index 992c443900b17b1236bf4813cadac76cd9511fa3..1ae62ef63dd1aead5427ff21c45358ca9e2577bb 100644 |
--- a/chrome/browser/sync/util/cryptographer.h |
+++ b/chrome/browser/sync/util/cryptographer.h |
@@ -103,9 +103,12 @@ class Cryptographer { |
// key. |
bool CanDecryptUsingDefaultKey(const sync_pb::EncryptedData& encrypted) const; |
- // Encrypts |message| into |encrypted|. Returns true unless encryption fails. |
- // Note that encryption will fail if |message| isn't valid (eg. a required |
- // field isn't set). |
+ // Encrypts |message| into |encrypted|. Does not overwrite |encrypted| if |
+ // |message| already matches the decrypted data within |encrypted| and |
+ // |encrypted| was encrypted with the current default key. This avoids |
+ // unnecessarily modifying |encrypted| if the change had no practical effect. |
+ // Returns true unless encryption fails or |message| isn't valid (e.g. a |
+ // required field isn't set). |
bool Encrypt(const ::google::protobuf::MessageLite& message, |
sync_pb::EncryptedData* encrypted) const; |
@@ -190,6 +193,10 @@ class Cryptographer { |
FRIEND_TEST_ALL_PREFIXES(CryptographerTest, PackUnpack); |
typedef std::map<std::string, linked_ptr<const Nigori> > NigoriMap; |
+ bool EncryptImpl(const std::string& serialized, |
+ const NigoriMap::value_type* nigori, |
+ sync_pb::EncryptedData* encrypted) const; |
+ |
// Merges the given set of encrypted types with the existing set and emits a |
// notification if necessary. |
void MergeEncryptedTypes(const syncable::ModelTypeSet& encrypted_types); |