sync_engine_context.h revision 010d83a9304c5a91596085d917d248abff47903a
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; 26 27namespace drive_backend { 28 29class MetadataDatabase; 30 31class SyncEngineContext { 32 public: 33 SyncEngineContext( 34 scoped_ptr<drive::DriveServiceInterface> drive_service, 35 scoped_ptr<drive::DriveUploaderInterface> drive_uploader, 36 base::SingleThreadTaskRunner* ui_task_runner, 37 base::SequencedTaskRunner* worker_task_runner, 38 base::SequencedTaskRunner* file_task_runner); 39 ~SyncEngineContext(); 40 41 void SetMetadataDatabase(scoped_ptr<MetadataDatabase> metadata_database); 42 void SetRemoteChangeProcessor( 43 RemoteChangeProcessor* remote_change_processor); 44 45 drive::DriveServiceInterface* GetDriveService(); 46 drive::DriveUploaderInterface* GetDriveUploader(); 47 MetadataDatabase* GetMetadataDatabase(); 48 RemoteChangeProcessor* GetRemoteChangeProcessor(); 49 base::SingleThreadTaskRunner* GetUITaskRunner(); 50 base::SequencedTaskRunner* GetWorkerTaskRunner(); 51 base::SequencedTaskRunner* GetFileTaskRunner(); 52 53 scoped_ptr<MetadataDatabase> PassMetadataDatabase(); 54 55 private: 56 scoped_ptr<drive::DriveServiceInterface> drive_service_; 57 scoped_ptr<drive::DriveUploaderInterface> drive_uploader_; 58 RemoteChangeProcessor* remote_change_processor_; // Do not own 59 60 scoped_ptr<MetadataDatabase> metadata_database_; 61 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; 62 scoped_refptr<base::SequencedTaskRunner> worker_task_runner_; 63 scoped_refptr<base::SequencedTaskRunner> file_task_runner_; 64 65 DISALLOW_COPY_AND_ASSIGN(SyncEngineContext); 66}; 67 68} // namespace drive_backend 69} // namespace sync_file_system 70 71#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_ 72