sync_engine_context.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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 13namespace base { 14class SequencedTaskRunner; 15class SingleThreadTaskRunner; 16} 17 18namespace drive { 19class DriveServiceInterface; 20class DriveUploaderInterface; 21} 22 23namespace sync_file_system { 24 25class RemoteChangeProcessor; 26class TaskLogger; 27 28namespace drive_backend { 29 30class MetadataDatabase; 31 32class SyncEngineContext { 33 public: 34 SyncEngineContext( 35 scoped_ptr<drive::DriveServiceInterface> drive_service, 36 scoped_ptr<drive::DriveUploaderInterface> drive_uploader, 37 TaskLogger* task_logger, 38 base::SingleThreadTaskRunner* ui_task_runner, 39 base::SequencedTaskRunner* worker_task_runner, 40 base::SequencedTaskRunner* file_task_runner); 41 ~SyncEngineContext(); 42 43 void SetMetadataDatabase(scoped_ptr<MetadataDatabase> metadata_database); 44 void SetRemoteChangeProcessor( 45 RemoteChangeProcessor* remote_change_processor); 46 47 drive::DriveServiceInterface* GetDriveService(); 48 drive::DriveUploaderInterface* GetDriveUploader(); 49 base::WeakPtr<TaskLogger> GetTaskLogger(); 50 MetadataDatabase* GetMetadataDatabase(); 51 RemoteChangeProcessor* GetRemoteChangeProcessor(); 52 base::SingleThreadTaskRunner* GetUITaskRunner(); 53 base::SequencedTaskRunner* GetWorkerTaskRunner(); 54 base::SequencedTaskRunner* GetFileTaskRunner(); 55 56 scoped_ptr<MetadataDatabase> PassMetadataDatabase(); 57 58 private: 59 scoped_ptr<drive::DriveServiceInterface> drive_service_; 60 scoped_ptr<drive::DriveUploaderInterface> drive_uploader_; 61 base::WeakPtr<TaskLogger> task_logger_; 62 RemoteChangeProcessor* remote_change_processor_; // Not owned. 63 64 scoped_ptr<MetadataDatabase> metadata_database_; 65 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; 66 scoped_refptr<base::SequencedTaskRunner> worker_task_runner_; 67 scoped_refptr<base::SequencedTaskRunner> file_task_runner_; 68 69 DISALLOW_COPY_AND_ASSIGN(SyncEngineContext); 70}; 71 72} // namespace drive_backend 73} // namespace sync_file_system 74 75#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_ 76