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(); |