Chromium Code Reviews| Index: chrome/browser/sync/util/cryptographer.cc |
| diff --git a/chrome/browser/sync/util/cryptographer.cc b/chrome/browser/sync/util/cryptographer.cc |
| index 24f7851f0da8ce63f750d64b25bb1fd670795da5..27e4cc474f6799336b8e406809e196ffaa7f9f12 100644 |
| --- a/chrome/browser/sync/util/cryptographer.cc |
| +++ b/chrome/browser/sync/util/cryptographer.cc |
| @@ -16,6 +16,8 @@ const char kNigoriTag[] = "google_chrome_nigori"; |
| // assign the same name to a particular triplet. |
| const char kNigoriKeyName[] = "nigori-key"; |
| +Cryptographer::Observer::~Observer() {} |
| + |
| Cryptographer::Cryptographer() |
| : default_nigori_(NULL), |
| encrypt_everything_(false) { |
| @@ -25,6 +27,14 @@ Cryptographer::Cryptographer() |
| Cryptographer::~Cryptographer() {} |
| +void Cryptographer::AddObserver(Observer* observer) { |
| + observers_.AddObserver(observer); |
| +} |
| + |
| +void Cryptographer::RemoveObserver(Observer* observer) { |
| + observers_.RemoveObserver(observer); |
| +} |
| + |
| void Cryptographer::Bootstrap(const std::string& restored_bootstrap_token) { |
| if (is_initialized()) { |
| NOTREACHED(); |
| @@ -312,7 +322,10 @@ void Cryptographer::UpdateEncryptedTypesFromNigori( |
| if (!nigori.has_encrypt_everything() && |
| encrypted_types_.size() > sensitive_types.size()) { |
| set_encrypt_everything(); |
| + return; |
| } |
| + |
| + EmitEncryptedTypesChangeNotification(); |
|
Nicolas Zea
2011/10/21 14:29:07
Perhaps only emit if the types actually changed? (
akalin
2011/10/22 03:28:38
Done.
|
| } |
| void Cryptographer::UpdateNigoriFromEncryptedTypes( |
| @@ -343,6 +356,7 @@ void Cryptographer::UpdateNigoriFromEncryptedTypes( |
| void Cryptographer::set_encrypt_everything() { |
| encrypt_everything_ = true; |
| encrypted_types_ = syncable::GetAllRealModelTypes(); |
| + EmitEncryptedTypesChangeNotification(); |
| } |
| bool Cryptographer::encrypt_everything() const { |
| @@ -351,12 +365,24 @@ bool Cryptographer::encrypt_everything() const { |
| void Cryptographer::SetEncryptedTypes(syncable::ModelTypeSet new_types) { |
| encrypted_types_.insert(new_types.begin(), new_types.end()); |
| + EmitEncryptedTypesChangeNotification(); |
| } |
| syncable::ModelTypeSet Cryptographer::GetEncryptedTypes() const { |
| return encrypted_types_; |
| } |
| +void Cryptographer::MarkEncryptionComplete() { |
| + EmitEncryptedTypesChangeNotification(); |
| + FOR_EACH_OBSERVER(Observer, observers_, OnEncryptionComplete()); |
| +} |
| + |
| +void Cryptographer::EmitEncryptedTypesChangeNotification() { |
| + FOR_EACH_OBSERVER( |
| + Observer, observers_, |
| + OnEncryptedTypesChanged(encrypted_types_, encrypt_everything_)); |
| +} |
| + |
| void Cryptographer::InstallKeys(const std::string& default_key_name, |
| const sync_pb::NigoriKeyBag& bag) { |
| int key_size = bag.key_size(); |