Home | History | Annotate | Download | only in drive_backend
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_
      6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/memory/ref_counted.h"
     10 #include "base/memory/scoped_ptr.h"
     11 #include "base/memory/weak_ptr.h"
     12 #include "base/sequence_checker.h"
     13 
     14 namespace base {
     15 class SequencedTaskRunner;
     16 class SingleThreadTaskRunner;
     17 }
     18 
     19 namespace drive {
     20 class DriveServiceInterface;
     21 class DriveUploaderInterface;
     22 }
     23 
     24 namespace sync_file_system {
     25 
     26 class RemoteChangeProcessor;
     27 class TaskLogger;
     28 
     29 namespace drive_backend {
     30 
     31 class MetadataDatabase;
     32 
     33 class SyncEngineContext {
     34  public:
     35   SyncEngineContext(
     36       scoped_ptr<drive::DriveServiceInterface> drive_service,
     37       scoped_ptr<drive::DriveUploaderInterface> drive_uploader,
     38       TaskLogger* task_logger,
     39       base::SingleThreadTaskRunner* ui_task_runner,
     40       base::SequencedTaskRunner* worker_task_runner,
     41       base::SequencedTaskRunner* file_task_runner);
     42   ~SyncEngineContext();
     43 
     44   void SetMetadataDatabase(scoped_ptr<MetadataDatabase> metadata_database);
     45   void SetRemoteChangeProcessor(
     46       RemoteChangeProcessor* remote_change_processor);
     47 
     48   drive::DriveServiceInterface* GetDriveService();
     49   drive::DriveUploaderInterface* GetDriveUploader();
     50   base::WeakPtr<TaskLogger> GetTaskLogger();
     51   MetadataDatabase* GetMetadataDatabase();
     52   RemoteChangeProcessor* GetRemoteChangeProcessor();
     53   base::SingleThreadTaskRunner* GetUITaskRunner();
     54   base::SequencedTaskRunner* GetWorkerTaskRunner();
     55   base::SequencedTaskRunner* GetFileTaskRunner();
     56 
     57   scoped_ptr<MetadataDatabase> PassMetadataDatabase();
     58 
     59   void DetachFromSequence();
     60 
     61  private:
     62   friend class DriveBackendSyncTest;
     63 
     64   scoped_ptr<drive::DriveServiceInterface> drive_service_;
     65   scoped_ptr<drive::DriveUploaderInterface> drive_uploader_;
     66   base::WeakPtr<TaskLogger> task_logger_;
     67   RemoteChangeProcessor* remote_change_processor_;  // Not owned.
     68 
     69   scoped_ptr<MetadataDatabase> metadata_database_;
     70   scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
     71   scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
     72   scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
     73 
     74   base::SequenceChecker sequence_checker_;
     75 
     76   DISALLOW_COPY_AND_ASSIGN(SyncEngineContext);
     77 };
     78 
     79 }  // namespace drive_backend
     80 }  // namespace sync_file_system
     81 
     82 #endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_
     83