Index: chrome/browser/sync/internal_api/sync_manager.cc |
diff --git a/chrome/browser/sync/internal_api/sync_manager.cc b/chrome/browser/sync/internal_api/sync_manager.cc |
index c8435b65b996a08fe7dab7efb01fca927e24a726..005208fc81a01be8ebff0c1ed7787395f3363452 100644 |
--- a/chrome/browser/sync/internal_api/sync_manager.cc |
+++ b/chrome/browser/sync/internal_api/sync_manager.cc |
@@ -1216,8 +1216,10 @@ void SyncManager::SyncInternal::ReEncryptEverything(WriteTransaction* trans) { |
} |
} |
- FOR_EACH_OBSERVER(SyncManager::Observer, observers_, |
- OnEncryptionComplete(encrypted_types)); |
+ FOR_EACH_OBSERVER( |
+ SyncManager::Observer, observers_, |
+ OnEncryptionComplete( |
+ encrypted_types, cryptographer->encrypt_everything())); |
} |
SyncManager::~SyncManager() { |
@@ -1600,6 +1602,10 @@ void SyncManager::SyncInternal::OnSyncEngineEvent( |
if (event.what_happened == SyncEngineEvent::SYNC_CYCLE_ENDED) { |
ModelSafeRoutingInfo enabled_types; |
registrar_->GetModelSafeRoutingInfo(&enabled_types); |
+ bool send_encryption_complete_notification = false; |
+ syncable::ModelTypeSet encrypted_types( |
+ browser_sync::Cryptographer::SensitiveTypes()); |
+ bool encrypt_everything = false; |
{ |
// Check to see if we need to notify the frontend that we have newly |
// encrypted types or that we require a passphrase. |
@@ -1617,16 +1623,31 @@ void SyncManager::SyncInternal::OnSyncEngineEvent( |
<< "ready"; |
FOR_EACH_OBSERVER(SyncManager::Observer, observers_, |
OnPassphraseRequired(sync_api::REASON_ENCRYPTION)); |
+ } else { |
+ send_encryption_complete_notification = true; |
} |
+ encrypted_types = cryptographer->GetEncryptedTypes(); |
+ encrypt_everything = cryptographer->encrypt_everything(); |
allstatus_.SetCryptographerReady(cryptographer->is_ready()); |
allstatus_.SetCryptoHasPendingKeys(cryptographer->has_pending_keys()); |
- allstatus_.SetEncryptedTypes(cryptographer->GetEncryptedTypes()); |
+ allstatus_.SetEncryptedTypes(encrypted_types); |
+ |
+ // If everything is in order (we have the passphrase) then we |
+ // inform the listeners below right after we close the |
+ // transaction. |
+ } |
- // If everything is in order(we have the passphrase) then there is no |
- // need to inform the listeners. They will just wait for sync |
- // completion event and if no errors have been raised it means |
- // encryption was succesful. |
+ if (send_encryption_complete_notification) { |
+ VLOG(1) << "Sending OnEncryptionComplete"; |
Nicolas Zea
2011/10/20 18:40:41
Should probably be VLOG(2), since this is going to
akalin
2011/10/21 02:24:17
Removed. Probably not necessary.
|
+ // TODO(akalin): Ideally, the Cryptographer would be the one |
+ // sending out this notification, as it knows exactly when it |
+ // does encryption (whereas we always send this at the end of a |
+ // sync cycle, regardless of whether encryption was actually |
+ // done). |
+ FOR_EACH_OBSERVER( |
+ SyncManager::Observer, observers_, |
+ OnEncryptionComplete(encrypted_types, encrypt_everything)); |
} |
if (!initialized_) { |
@@ -1636,7 +1657,7 @@ void SyncManager::SyncInternal::OnSyncEngineEvent( |
} |
if (!event.snapshot->has_more_to_sync) { |
- VLOG(1) << "OnSyncCycleCompleted sent"; |
+ VLOG(1) << "Sending OnSyncCycleCompleted"; |
FOR_EACH_OBSERVER(SyncManager::Observer, observers_, |
OnSyncCycleCompleted(event.snapshot)); |
} |