| Index: sync/engine/model_type_sync_worker_impl.h
|
| diff --git a/sync/engine/model_type_sync_worker_impl.h b/sync/engine/model_type_sync_worker_impl.h
|
| index f2df9769e76b87cfffb0a60b0463ef00776dd326..10aa0807f666de7961f5326d5c92e1d52ccecdb1 100644
|
| --- a/sync/engine/model_type_sync_worker_impl.h
|
| +++ b/sync/engine/model_type_sync_worker_impl.h
|
| @@ -10,7 +10,6 @@
|
| #include "base/threading/non_thread_safe.h"
|
| #include "sync/base/sync_export.h"
|
| #include "sync/engine/commit_contributor.h"
|
| -#include "sync/engine/cryptographer_provider.h"
|
| #include "sync/engine/model_type_sync_worker.h"
|
| #include "sync/engine/nudge_handler.h"
|
| #include "sync/engine/update_handler.h"
|
| @@ -18,6 +17,7 @@
|
| #include "sync/internal_api/public/non_blocking_sync_common.h"
|
| #include "sync/internal_api/public/sync_encryption_handler.h"
|
| #include "sync/protocol/sync.pb.h"
|
| +#include "sync/util/cryptographer.h"
|
|
|
| namespace base {
|
| class SingleThreadTaskRunner;
|
| @@ -56,7 +56,7 @@ class SYNC_EXPORT ModelTypeSyncWorkerImpl : public UpdateHandler,
|
| ModelTypeSyncWorkerImpl(ModelType type,
|
| const DataTypeState& initial_state,
|
| const UpdateResponseDataList& saved_pending_updates,
|
| - CryptographerProvider* cryptographer_provider,
|
| + scoped_ptr<Cryptographer> cryptographer,
|
| NudgeHandler* nudge_handler,
|
| scoped_ptr<ModelTypeSyncProxy> type_sync_proxy);
|
| virtual ~ModelTypeSyncWorkerImpl();
|
| @@ -64,9 +64,7 @@ class SYNC_EXPORT ModelTypeSyncWorkerImpl : public UpdateHandler,
|
| ModelType GetModelType() const;
|
|
|
| bool IsEncryptionRequired() const;
|
| - void SetEncryptionKeyName(const std::string& name);
|
| -
|
| - void OnCryptographerStateChanged();
|
| + void UpdateCryptographer(scoped_ptr<Cryptographer> cryptographer);
|
|
|
| // UpdateHandler implementation.
|
| virtual void GetDownloadProgress(
|
| @@ -109,19 +107,19 @@ class SYNC_EXPORT ModelTypeSyncWorkerImpl : public UpdateHandler,
|
| // Returns true if this type is prepared to commit items. Currently, this
|
| // depends on having downloaded the initial data and having the encryption
|
| // settings in a good state.
|
| - bool CanCommitItems(Cryptographer* cryptographer) const;
|
| + bool CanCommitItems() const;
|
|
|
| // Initializes the parts of a commit entity that are the responsibility of
|
| // this class, and not the EntityTracker. Some fields, like the
|
| // client-assigned ID, can only be set by an entity with knowledge of the
|
| // entire data type's state.
|
| - void HelpInitializeCommitEntity(Cryptographer* cryptographer,
|
| - sync_pb::SyncEntity* commit_entity);
|
| + void HelpInitializeCommitEntity(sync_pb::SyncEntity* commit_entity);
|
|
|
| // Attempts to decrypt pending updates stored in the EntityMap. If
|
| // successful, will remove the update from the its EntityTracker and forward
|
| - // it to the proxy thread for application.
|
| - void TryDecryptPendingUpdates();
|
| + // it to the proxy thread for application. Will forward any new encryption
|
| + // keys to the proxy to trigger re-encryption if necessary.
|
| + void OnCryptographerUpdated();
|
|
|
| // Attempts to decrypt the given specifics and return them in the |out|
|
| // parameter. Assumes cryptographer->CanDecrypt(specifics) returned true.
|
| @@ -145,9 +143,10 @@ class SYNC_EXPORT ModelTypeSyncWorkerImpl : public UpdateHandler,
|
| // This is NULL when no proxy is connected..
|
| scoped_ptr<ModelTypeSyncProxy> type_sync_proxy_;
|
|
|
| - // A helper to provide access to the syncable::Directory's cryptographer.
|
| - // Not owned.
|
| - CryptographerProvider* cryptographer_provider_;
|
| + // A private copy of the most recent cryptographer known to sync.
|
| + // Initialized at construction time and updated with UpdateCryptographer().
|
| + // NULL if encryption is not enabled for this type.
|
| + scoped_ptr<Cryptographer> cryptographer_;
|
|
|
| // Interface used to access and send nudges to the sync scheduler. Not owned.
|
| NudgeHandler* nudge_handler_;
|
|
|