Index: components/sync/engine_impl/sync_encryption_handler_impl.cc |
diff --git a/components/sync/core_impl/sync_encryption_handler_impl.cc b/components/sync/engine_impl/sync_encryption_handler_impl.cc |
similarity index 93% |
rename from components/sync/core_impl/sync_encryption_handler_impl.cc |
rename to components/sync/engine_impl/sync_encryption_handler_impl.cc |
index d431c491ca3789a7ef250729f61e4055a668e56b..f552d57d5d5b48a27fb3c3faa0ea1a48ad1c22d6 100644 |
--- a/components/sync/core_impl/sync_encryption_handler_impl.cc |
+++ b/components/sync/engine_impl/sync_encryption_handler_impl.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "components/sync/core_impl/sync_encryption_handler_impl.h" |
+#include "components/sync/engine_impl/sync_encryption_handler_impl.h" |
#include <stddef.h> |
#include <stdint.h> |
@@ -296,14 +296,15 @@ void SyncEncryptionHandlerImpl::Init() { |
// Always trigger an encrypted types and cryptographer state change event at |
// init time so observers get the initial values. |
- FOR_EACH_OBSERVER(Observer, observers_, |
- OnEncryptedTypesChanged( |
- UnlockVault(trans.GetWrappedTrans()).encrypted_types, |
- encrypt_everything_)); |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnCryptographerStateChanged( |
- &UnlockVaultMutable(trans.GetWrappedTrans())->cryptographer)); |
+ for (auto& observer : observers_) { |
+ observer.OnEncryptedTypesChanged( |
+ UnlockVault(trans.GetWrappedTrans()).encrypted_types, |
+ encrypt_everything_); |
+ } |
+ for (auto& observer : observers_) { |
+ observer.OnCryptographerStateChanged( |
+ &UnlockVaultMutable(trans.GetWrappedTrans())->cryptographer); |
+ } |
// If the cryptographer is not ready (either it has pending keys or we |
// failed to initialize it), we don't want to try and re-encrypt the data. |
@@ -394,10 +395,10 @@ void SyncEncryptionHandlerImpl::SetEncryptionPassphrase( |
DVLOG(1) << "Setting explicit passphrase for encryption."; |
*passphrase_type = PassphraseType::CUSTOM_PASSPHRASE; |
custom_passphrase_time_ = base::Time::Now(); |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseTypeChanged( |
- *passphrase_type, |
- GetExplicitPassphraseTime(*passphrase_type))); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseTypeChanged( |
+ *passphrase_type, GetExplicitPassphraseTime(*passphrase_type)); |
+ } |
} else { |
DVLOG(1) << "Setting implicit passphrase for encryption."; |
} |
@@ -644,9 +645,10 @@ void SyncEncryptionHandlerImpl::ApplyNigoriUpdate( |
weak_ptr_factory_.GetWeakPtr())); |
} |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnCryptographerStateChanged(&UnlockVaultMutable(trans)->cryptographer)); |
+ for (auto& observer : observers_) { |
+ observer.OnCryptographerStateChanged( |
+ &UnlockVaultMutable(trans)->cryptographer); |
+ } |
} |
void SyncEncryptionHandlerImpl::UpdateNigoriFromEncryptedTypes( |
@@ -693,9 +695,10 @@ bool SyncEncryptionHandlerImpl::SetKeystoreKeys( |
std::string keystore_bootstrap = PackKeystoreBootstrapToken( |
old_keystore_keys_, keystore_key_, cryptographer->encryptor()); |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnBootstrapTokenUpdated(keystore_bootstrap, KEYSTORE_BOOTSTRAP_TOKEN)); |
+ for (auto& observer : observers_) { |
+ observer.OnBootstrapTokenUpdated(keystore_bootstrap, |
+ KEYSTORE_BOOTSTRAP_TOKEN); |
+ } |
DVLOG(1) << "Keystore bootstrap token updated."; |
// If this is a first time sync, we get the encryption keys before we process |
@@ -854,8 +857,9 @@ void SyncEncryptionHandlerImpl::ReEncryptEverything(WriteTransaction* trans) { |
DVLOG(1) << "Re-encrypt everything complete."; |
// NOTE: We notify from within a transaction. |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnEncryptionComplete()); |
+ for (auto& observer : observers_) { |
+ observer.OnEncryptionComplete(); |
+ } |
} |
bool SyncEncryptionHandlerImpl::ApplyNigoriUpdateImpl( |
@@ -892,10 +896,10 @@ bool SyncEncryptionHandlerImpl::ApplyNigoriUpdateImpl( |
<< PassphraseTypeToString(*passphrase_type) << " to " |
<< PassphraseTypeToString(nigori_passphrase_type); |
*passphrase_type = nigori_passphrase_type; |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseTypeChanged(*passphrase_type, |
- GetExplicitPassphraseTime(*passphrase_type))); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseTypeChanged( |
+ *passphrase_type, GetExplicitPassphraseTime(*passphrase_type)); |
+ } |
} |
if (*passphrase_type == PassphraseType::KEYSTORE_PASSPHRASE && |
encrypt_everything_) { |
@@ -908,10 +912,10 @@ bool SyncEncryptionHandlerImpl::ApplyNigoriUpdateImpl( |
DVLOG(1) << "Changing passphrase state to FROZEN_IMPLICIT_PASSPHRASE " |
<< "due to full encryption."; |
*passphrase_type = PassphraseType::FROZEN_IMPLICIT_PASSPHRASE; |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseTypeChanged(*passphrase_type, |
- GetExplicitPassphraseTime(*passphrase_type))); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseTypeChanged( |
+ *passphrase_type, GetExplicitPassphraseTime(*passphrase_type)); |
+ } |
} |
} else { |
// It's possible that while we're waiting for migration a client that does |
@@ -919,10 +923,10 @@ bool SyncEncryptionHandlerImpl::ApplyNigoriUpdateImpl( |
if (nigori.keybag_is_frozen() && |
*passphrase_type != PassphraseType::CUSTOM_PASSPHRASE) { |
*passphrase_type = PassphraseType::CUSTOM_PASSPHRASE; |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseTypeChanged(*passphrase_type, |
- GetExplicitPassphraseTime(*passphrase_type))); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseTypeChanged( |
+ *passphrase_type, GetExplicitPassphraseTime(*passphrase_type)); |
+ } |
} |
} |
@@ -973,14 +977,16 @@ bool SyncEncryptionHandlerImpl::ApplyNigoriUpdateImpl( |
if (cryptographer->has_pending_keys()) { |
DVLOG(1) << "OnPassphraseRequired Sent"; |
sync_pb::EncryptedData pending_keys = cryptographer->GetPendingKeys(); |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseRequired(REASON_DECRYPTION, pending_keys)); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseRequired(REASON_DECRYPTION, pending_keys); |
+ } |
} else if (!cryptographer->is_ready()) { |
DVLOG(1) << "OnPassphraseRequired sent because cryptographer is not " |
<< "ready"; |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseRequired(REASON_ENCRYPTION, sync_pb::EncryptedData())); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseRequired(REASON_ENCRYPTION, |
+ sync_pb::EncryptedData()); |
+ } |
} |
// Check if the current local encryption state is stricter/newer than the |
@@ -1090,9 +1096,9 @@ bool SyncEncryptionHandlerImpl::UpdateEncryptedTypesFromNigori( |
if (!encrypt_everything_) { |
encrypt_everything_ = true; |
*encrypted_types = EncryptableUserTypes(); |
- FOR_EACH_OBSERVER( |
- Observer, observers_, |
- OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_)); |
+ for (auto& observer : observers_) { |
+ observer.OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_); |
+ } |
} |
DCHECK(*encrypted_types == EncryptableUserTypes()); |
return false; |
@@ -1143,10 +1149,10 @@ void SyncEncryptionHandlerImpl::SetCustomPassphrase( |
&UnlockVaultMutable(trans->GetWrappedTrans())->passphrase_type; |
*passphrase_type = PassphraseType::CUSTOM_PASSPHRASE; |
custom_passphrase_time_ = base::Time::Now(); |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseTypeChanged(*passphrase_type, |
- GetExplicitPassphraseTime(*passphrase_type))); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseTypeChanged( |
+ *passphrase_type, GetExplicitPassphraseTime(*passphrase_type)); |
+ } |
FinishSetPassphrase(true, bootstrap_token, trans, nigori_node); |
} |
@@ -1161,8 +1167,9 @@ void SyncEncryptionHandlerImpl::NotifyObserversOfLocalCustomPassphrase( |
sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE || |
nigori_state.nigori_specifics.passphrase_type() == |
sync_pb::NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE); |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnLocalSetPassphraseEncryption(nigori_state)); |
+ for (auto& observer : observers_) { |
+ observer.OnLocalSetPassphraseEncryption(nigori_state); |
+ } |
} |
void SyncEncryptionHandlerImpl::DecryptPendingKeysWithExplicitPassphrase( |
@@ -1210,19 +1217,20 @@ void SyncEncryptionHandlerImpl::FinishSetPassphrase( |
WriteTransaction* trans, |
WriteNode* nigori_node) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnCryptographerStateChanged( |
- &UnlockVaultMutable(trans->GetWrappedTrans())->cryptographer)); |
+ for (auto& observer : observers_) { |
+ observer.OnCryptographerStateChanged( |
+ &UnlockVaultMutable(trans->GetWrappedTrans())->cryptographer); |
+ } |
// It's possible we need to change the bootstrap token even if we failed to |
// set the passphrase (for example if we need to preserve the new GAIA |
// passphrase). |
if (!bootstrap_token.empty()) { |
DVLOG(1) << "Passphrase bootstrap token updated."; |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnBootstrapTokenUpdated(bootstrap_token, PASSPHRASE_BOOTSTRAP_TOKEN)); |
+ for (auto& observer : observers_) { |
+ observer.OnBootstrapTokenUpdated(bootstrap_token, |
+ PASSPHRASE_BOOTSTRAP_TOKEN); |
+ } |
} |
const Cryptographer& cryptographer = |
@@ -1232,13 +1240,15 @@ void SyncEncryptionHandlerImpl::FinishSetPassphrase( |
LOG(ERROR) << "Attempt to change passphrase failed while cryptographer " |
<< "was ready."; |
} else if (cryptographer.has_pending_keys()) { |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseRequired(REASON_DECRYPTION, |
- cryptographer.GetPendingKeys())); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseRequired(REASON_DECRYPTION, |
+ cryptographer.GetPendingKeys()); |
+ } |
} else { |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseRequired(REASON_ENCRYPTION, sync_pb::EncryptedData())); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseRequired(REASON_ENCRYPTION, |
+ sync_pb::EncryptedData()); |
+ } |
} |
return; |
} |
@@ -1274,8 +1284,9 @@ void SyncEncryptionHandlerImpl::FinishSetPassphrase( |
// Must do this after OnPassphraseTypeChanged, in order to ensure the PSS |
// checks the passphrase state after it has been set. |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseAccepted()); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseAccepted(); |
+ } |
// Does nothing if everything is already encrypted. |
// TODO(zea): If we just migrated and enabled encryption, this will be |
@@ -1294,9 +1305,9 @@ void SyncEncryptionHandlerImpl::MergeEncryptedTypes( |
ModelTypeSet* encrypted_types = &UnlockVaultMutable(trans)->encrypted_types; |
if (!encrypted_types->HasAll(new_encrypted_types)) { |
*encrypted_types = new_encrypted_types; |
- FOR_EACH_OBSERVER( |
- Observer, observers_, |
- OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_)); |
+ for (auto& observer : observers_) { |
+ observer.OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_); |
+ } |
} |
} |
@@ -1427,8 +1438,9 @@ bool SyncEncryptionHandlerImpl::AttemptToMigrateNigoriToKeystore( |
return false; |
} |
if (!cryptographer_was_ready && cryptographer->is_ready()) { |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseAccepted()); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseAccepted(); |
+ } |
} |
} else { |
// We're in backwards compatible mode -- either the account has an |
@@ -1482,14 +1494,15 @@ bool SyncEncryptionHandlerImpl::AttemptToMigrateNigoriToKeystore( |
TimeToProtoTime(custom_passphrase_time_)); |
} |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnCryptographerStateChanged(cryptographer)); |
+ for (auto& observer : observers_) { |
+ observer.OnCryptographerStateChanged(cryptographer); |
+ } |
if (*passphrase_type != new_passphrase_type) { |
*passphrase_type = new_passphrase_type; |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseTypeChanged(*passphrase_type, |
- GetExplicitPassphraseTime(*passphrase_type))); |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseTypeChanged( |
+ *passphrase_type, GetExplicitPassphraseTime(*passphrase_type)); |
+ } |
} |
if (new_encrypt_everything && !encrypt_everything_) { |
@@ -1582,9 +1595,9 @@ void SyncEncryptionHandlerImpl::EnableEncryptEverythingImpl( |
} |
encrypt_everything_ = true; |
*encrypted_types = EncryptableUserTypes(); |
- FOR_EACH_OBSERVER( |
- Observer, observers_, |
- OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_)); |
+ for (auto& observer : observers_) { |
+ observer.OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_); |
+ } |
} |
bool SyncEncryptionHandlerImpl::DecryptPendingKeysWithKeystoreKey( |
@@ -1644,13 +1657,18 @@ bool SyncEncryptionHandlerImpl::DecryptPendingKeysWithKeystoreKey( |
std::string bootstrap_token; |
cryptographer->GetBootstrapToken(&bootstrap_token); |
DVLOG(1) << "Keystore decryptor token decrypted pending keys."; |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnPassphraseAccepted()); |
- FOR_EACH_OBSERVER( |
- SyncEncryptionHandler::Observer, observers_, |
- OnBootstrapTokenUpdated(bootstrap_token, PASSPHRASE_BOOTSTRAP_TOKEN)); |
- FOR_EACH_OBSERVER(SyncEncryptionHandler::Observer, observers_, |
- OnCryptographerStateChanged(cryptographer)); |
+ // Note: These are separate loops to match previous functionality and not |
+ // out of explicit knowledge that they must be. |
+ for (auto& observer : observers_) { |
+ observer.OnPassphraseAccepted(); |
+ } |
+ for (auto& observer : observers_) { |
+ observer.OnBootstrapTokenUpdated(bootstrap_token, |
+ PASSPHRASE_BOOTSTRAP_TOKEN); |
+ } |
+ for (auto& observer : observers_) { |
+ observer.OnCryptographerStateChanged(cryptographer); |
+ } |
return true; |
} |
} |