Index: sync/internal_api/sync_manager_impl.cc |
diff --git a/sync/internal_api/sync_manager_impl.cc b/sync/internal_api/sync_manager_impl.cc |
index e069df41be6383fbfeb590daed9aca48f1207847..aeb0940a6bda59555823f9f149696ca2fe9a413a 100644 |
--- a/sync/internal_api/sync_manager_impl.cc |
+++ b/sync/internal_api/sync_manager_impl.cc |
@@ -376,6 +376,7 @@ bool SyncManagerImpl::Init( |
const SyncCredentials& credentials, |
scoped_ptr<SyncNotifier> sync_notifier, |
const std::string& restored_key_for_bootstrapping, |
+ const std::string& restored_keystore_key_for_bootstrapping, |
bool keystore_encryption_enabled, |
scoped_ptr<InternalComponentsFactory> internal_components_factory, |
Encryptor* encryptor, |
@@ -485,6 +486,8 @@ bool SyncManagerImpl::Init( |
// |initialized_| is set to true. |
ReadTransaction trans(FROM_HERE, GetUserShare()); |
trans.GetCryptographer()->Bootstrap(restored_key_for_bootstrapping); |
+ trans.GetCryptographer()->BootstrapKeystoreKey( |
+ restored_keystore_key_for_bootstrapping); |
trans.GetCryptographer()->AddObserver(this); |
FOR_EACH_OBSERVER(SyncManager::Observer, observers_, |
@@ -1062,6 +1065,11 @@ bool SyncManagerImpl::IsUsingExplicitPassphrase() { |
return node.GetNigoriSpecifics().using_explicit_passphrase(); |
} |
+bool SyncManagerImpl::GetKeystoreKeyBootstrapToken(std::string* token) { |
+ ReadTransaction trans(FROM_HERE, GetUserShare()); |
+ return trans.GetCryptographer()->GetKeystoreKeyBootstrapToken(token); |
+} |
+ |
void SyncManagerImpl::RefreshEncryption() { |
DCHECK(initialized_); |
@@ -1505,13 +1513,15 @@ void SyncManagerImpl::OnSyncEngineEvent(const SyncEngineEvent& event) { |
} |
if (!event.snapshot.has_more_to_sync()) { |
- // To account for a nigori node arriving with stale/bad data, we ensure |
- // that the nigori node is up to date at the end of each cycle. |
- WriteTransaction trans(FROM_HERE, GetUserShare()); |
- WriteNode nigori_node(&trans); |
- if (nigori_node.InitByTagLookup(kNigoriTag) == BaseNode::INIT_OK) { |
- Cryptographer* cryptographer = trans.GetCryptographer(); |
- UpdateNigoriEncryptionState(cryptographer, &nigori_node); |
+ { |
+ // To account for a nigori node arriving with stale/bad data, we ensure |
+ // that the nigori node is up to date at the end of each cycle. |
+ WriteTransaction trans(FROM_HERE, GetUserShare()); |
+ WriteNode nigori_node(&trans); |
+ if (nigori_node.InitByTagLookup(kNigoriTag) == BaseNode::INIT_OK) { |
+ Cryptographer* cryptographer = trans.GetCryptographer(); |
+ UpdateNigoriEncryptionState(cryptographer, &nigori_node); |
+ } |
} |
DVLOG(1) << "Sending OnSyncCycleCompleted"; |