Index: chrome/browser/sync/profile_sync_service.cc |
diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc |
index 72f7999c8bacbf526b7f512b0cb0b5e6c9a7b969..70d323d05c98267fb03f9e5a4038af24e2cda484 100644 |
--- a/chrome/browser/sync/profile_sync_service.cc |
+++ b/chrome/browser/sync/profile_sync_service.cc |
@@ -218,6 +218,7 @@ ProfileSyncService::ProfileSyncService( |
unrecoverable_error_reason_(ERROR_REASON_UNSET), |
expect_sync_configuration_aborted_(false), |
encrypted_types_(syncer::SyncEncryptionHandler::SensitiveTypes()), |
+ encrypt_everything_allowed_(true), |
encrypt_everything_(false), |
encryption_pending_(false), |
configure_status_(DataTypeManager::UNKNOWN), |
@@ -1362,6 +1363,7 @@ void ProfileSyncService::OnEncryptedTypesChanged( |
bool encrypt_everything) { |
encrypted_types_ = encrypted_types; |
encrypt_everything_ = encrypt_everything; |
+ DCHECK(encrypt_everything_allowed_ || !encrypt_everything_); |
DVLOG(1) << "Encrypted types changed to " |
<< syncer::ModelTypeSetToString(encrypted_types_) |
<< " (encrypt everything is set to " |
@@ -2194,7 +2196,18 @@ bool ProfileSyncService::SetDecryptionPassphrase( |
} |
} |
+bool ProfileSyncService::EncryptEverythingAllowed() const { |
+ return encrypt_everything_allowed_; |
+} |
+ |
+void ProfileSyncService::SetEncryptEverythingAllowed(bool allowed) { |
+ DCHECK(allowed || !backend_initialized() || !EncryptEverythingEnabled()); |
+ encrypt_everything_allowed_ = allowed; |
+} |
+ |
void ProfileSyncService::EnableEncryptEverything() { |
+ DCHECK(EncryptEverythingAllowed()); |
+ |
// Tests override backend_initialized() to always return true, so we |
// must check that instead of |backend_initialized_|. |
// TODO(akalin): Fix the above. :/ |