sync_engine_context.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
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 14namespace base { 15class SequencedTaskRunner; 16class SingleThreadTaskRunner; 17} 18 19namespace drive { 20class DriveServiceInterface; 21class DriveUploaderInterface; 22} 23 24namespace sync_file_system { 25 26class RemoteChangeProcessor; 27class TaskLogger; 28 29namespace drive_backend { 30 31class MetadataDatabase; 32 33class 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