Index: sync/engine/sync_directory_update_handler.h |
diff --git a/sync/engine/sync_directory_update_handler.h b/sync/engine/sync_directory_update_handler.h |
index 38256a42668162647ca3b263c2a1efeb0786eb78..bdb176d17b130fffa0fdfd0857ba4383016d8379 100644 |
--- a/sync/engine/sync_directory_update_handler.h |
+++ b/sync/engine/sync_directory_update_handler.h |
@@ -8,9 +8,11 @@ |
#include <map> |
#include "base/basictypes.h" |
+#include "base/memory/ref_counted.h" |
#include "sync/base/sync_export.h" |
#include "sync/engine/process_updates_util.h" |
#include "sync/internal_api/public/base/model_type.h" |
+#include "sync/internal_api/public/engine/model_safe_worker.h" |
Nicolas Zea
2013/11/19 22:45:26
I think you can probably forward declare this
rlarocque
2013/11/21 18:28:47
Done.
|
namespace sync_pb { |
class DataTypeProgressMarker; |
@@ -35,7 +37,9 @@ class Directory; |
// It can also process a set of received SyncEntities and store their data. |
class SYNC_EXPORT_PRIVATE SyncDirectoryUpdateHandler { |
public: |
- SyncDirectoryUpdateHandler(syncable::Directory* dir, ModelType type); |
+ SyncDirectoryUpdateHandler(syncable::Directory* dir, |
+ ModelType type, |
+ scoped_refptr<ModelSafeWorker> worker); |
~SyncDirectoryUpdateHandler(); |
// Fills the given parameter with the stored progress marker for this type. |
@@ -53,8 +57,13 @@ class SYNC_EXPORT_PRIVATE SyncDirectoryUpdateHandler { |
const SyncEntityList& applicable_updates, |
sessions::StatusController* status); |
+ // If there are updates to apply, apply them on the proper thread. |
+ // Delegates to ApplyUpdatesImpl(). |
+ void ApplyUpdates(sessions::StatusController* status); |
+ |
private: |
- friend class SyncDirectoryUpdateHandlerTest; |
+ friend class SyncDirectoryUpdateHandlerApplyUpdateTest; |
+ friend class SyncDirectoryUpdateHandlerProcessUpdateTest; |
// Processes the given SyncEntities and stores their data in the directory. |
// Their types must match this update handler's type. |
@@ -68,8 +77,12 @@ class SYNC_EXPORT_PRIVATE SyncDirectoryUpdateHandler { |
void UpdateProgressMarker( |
const sync_pb::DataTypeProgressMarker& progress_marker); |
+ // Skips all checks and goes straight to applying the updates. |
+ SyncerError ApplyUpdatesImpl(sessions::StatusController* status); |
+ |
syncable::Directory* dir_; |
ModelType type_; |
+ scoped_refptr<ModelSafeWorker> worker_; |
DISALLOW_COPY_AND_ASSIGN(SyncDirectoryUpdateHandler); |
}; |