Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / sync_engine_context.h
index be96406..8b63633 100644 (file)
@@ -8,9 +8,12 @@
 #include "base/basictypes.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
 
 namespace base {
 class SequencedTaskRunner;
+class SingleThreadTaskRunner;
 }
 
 namespace drive {
@@ -21,6 +24,7 @@ class DriveUploaderInterface;
 namespace sync_file_system {
 
 class RemoteChangeProcessor;
+class TaskLogger;
 
 namespace drive_backend {
 
@@ -28,28 +32,43 @@ class MetadataDatabase;
 
 class SyncEngineContext {
  public:
-  SyncEngineContext(scoped_ptr<drive::DriveServiceInterface> drive_service,
-                    scoped_ptr<drive::DriveUploaderInterface> drive_uploader,
-                    base::SequencedTaskRunner* task_runner);
+  SyncEngineContext(
+      scoped_ptr<drive::DriveServiceInterface> drive_service,
+      scoped_ptr<drive::DriveUploaderInterface> drive_uploader,
+      TaskLogger* task_logger,
+      base::SingleThreadTaskRunner* ui_task_runner,
+      base::SequencedTaskRunner* worker_task_runner);
   ~SyncEngineContext();
 
+  void SetMetadataDatabase(scoped_ptr<MetadataDatabase> metadata_database);
+  void SetRemoteChangeProcessor(
+      RemoteChangeProcessor* remote_change_processor);
+
   drive::DriveServiceInterface* GetDriveService();
   drive::DriveUploaderInterface* GetDriveUploader();
+  base::WeakPtr<TaskLogger> GetTaskLogger();
   MetadataDatabase* GetMetadataDatabase();
   RemoteChangeProcessor* GetRemoteChangeProcessor();
-  base::SequencedTaskRunner* GetBlockingTaskRunner();
-
-  void SetMetadataDatabase(scoped_ptr<MetadataDatabase> metadata_database);
-  void SetRemoteChangeProcessor(RemoteChangeProcessor* remote_change_processor);
+  base::SingleThreadTaskRunner* GetUITaskRunner();
+  base::SequencedTaskRunner* GetWorkerTaskRunner();
 
   scoped_ptr<MetadataDatabase> PassMetadataDatabase();
 
+  void DetachFromSequence();
+
  private:
+  friend class DriveBackendSyncTest;
+
   scoped_ptr<drive::DriveServiceInterface> drive_service_;
   scoped_ptr<drive::DriveUploaderInterface> drive_uploader_;
+  base::WeakPtr<TaskLogger> task_logger_;
+  RemoteChangeProcessor* remote_change_processor_;  // Not owned.
+
   scoped_ptr<MetadataDatabase> metadata_database_;
-  RemoteChangeProcessor* remote_change_processor_;  // Do not own
-  scoped_refptr<base::SequencedTaskRunner> task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
+
+  base::SequenceChecker sequence_checker_;
 
   DISALLOW_COPY_AND_ASSIGN(SyncEngineContext);
 };