Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(262)

Unified Diff: chrome/browser/sync/profile_sync_service.cc

Issue 8356026: [Sync] Cache encrypted types info in ProfileSyncService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix test failures Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 500ec0910b7cd9fdebfcd47073c033a2c8064401..60b4fa6182e797e12c0095749c09986539abf0f7 100644
--- a/chrome/browser/sync/profile_sync_service.cc
+++ b/chrome/browser/sync/profile_sync_service.cc
@@ -111,6 +111,8 @@ ProfileSyncService::ProfileSyncService(ProfileSyncFactory* factory,
scoped_runnable_method_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
expect_sync_configuration_aborted_(false),
clear_server_data_state_(CLEAR_NOT_STARTED),
+ encrypted_types_(browser_sync::Cryptographer::SensitiveTypes()),
+ encrypt_everything_(false),
encryption_pending_(false),
auto_start_enabled_(false),
failed_datatypes_handler_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
@@ -423,6 +425,8 @@ void ProfileSyncService::Shutdown(bool sync_disabled) {
backend_initialized_ = false;
cached_passphrases_ = CachedPassphrases();
encryption_pending_ = false;
+ encrypt_everything_ = false;
+ encrypted_types_ = browser_sync::Cryptographer::SensitiveTypes();
passphrase_required_reason_ = sync_api::REASON_PASSPHRASE_NOT_REQUIRED;
last_attempted_user_email_.clear();
last_auth_error_ = GoogleServiceAuthError::None();
@@ -555,6 +559,13 @@ void ProfileSyncService::OnBackendInitialized(
backend_initialized_ = true;
+ // Get initial encrypted types and encrypt everything setting.
+ // TODO(akalin): Ideally these would be parameters to
+ // OnBackendInitialized().
+ encrypted_types_ = backend_->GetEncryptedDataTypes();
+ DCHECK_GT(encrypted_types_.count(syncable::PASSWORDS), 0u);
+ encrypt_everything_ = backend_->EncryptEverythingEnabled();
+
sync_js_controller_.AttachJsBackend(js_backend);
// The very first time the backend initializes is effectively the first time
@@ -835,7 +846,15 @@ void ProfileSyncService::ResolvePassphraseRequired() {
}
void ProfileSyncService::OnEncryptionComplete(
- const syncable::ModelTypeSet& encrypted_types) {
+ const syncable::ModelTypeSet& encrypted_types,
+ bool encrypt_everything) {
+ encrypted_types_ = encrypted_types;
+ encrypt_everything_ = encrypt_everything;
+ VLOG(2) << "Encryption complete for "
+ << syncable::ModelTypeSetToString(encrypted_types)
+ << " (encrypt everything is set to "
+ << (encrypt_everything_ ? "true" : "false") << ")";
+ DCHECK_GT(encrypted_types_.count(syncable::PASSWORDS), 0u);
if (encryption_pending_) {
syncable::ModelTypeSet registered_types;
GetRegisteredDataTypes(&registered_types);
@@ -1321,6 +1340,7 @@ void ProfileSyncService::SetPassphrase(const std::string& passphrase,
void ProfileSyncService::SetEncryptEverything(bool encrypt_everything) {
encryption_pending_ = encrypt_everything;
+ encrypt_everything_ = false;
Nicolas Zea 2011/10/20 18:40:41 presumably encrypt_everything_ should already be f
akalin 2011/10/21 02:24:17 Done.
}
bool ProfileSyncService::encryption_pending() const {
@@ -1335,22 +1355,11 @@ bool ProfileSyncService::EncryptEverythingEnabled() const {
return backend_->EncryptEverythingEnabled();
}
-// This will open a transaction to get the encrypted types. Do not call this
-// if you already have a transaction open.
void ProfileSyncService::GetEncryptedDataTypes(
syncable::ModelTypeSet* encrypted_types) const {
CHECK(encrypted_types);
- if (backend_.get()) {
- *encrypted_types = backend_->GetEncryptedDataTypes();
- DCHECK(encrypted_types->count(syncable::PASSWORDS));
- } else {
- // Either we are in an unrecoverable error or the sync is not yet done
- // initializing. In either case just return the sensitive types. During
- // sync initialization the UI might need to know what our encrypted
- // types are.
- *encrypted_types = browser_sync::Cryptographer::SensitiveTypes();
- DCHECK(encrypted_types->count(syncable::PASSWORDS));
- }
+ *encrypted_types = encrypted_types_;
Nicolas Zea 2011/10/20 18:40:41 Is it valid to call this before the backend is ini
akalin 2011/10/21 02:24:17 Yeah, the UI functions call it. Sigh.
+ DCHECK_GT(encrypted_types->count(syncable::PASSWORDS), 0u);
}
void ProfileSyncService::OnSyncManagedPrefChange(bool is_sync_managed) {

Powered by Google App Engine
This is Rietveld 408576698