Home | History | Annotate | Download | only in drive_backend
      1 // Copyright 2014 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 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h"
      6 
      7 #include "base/basictypes.h"
      8 #include "base/memory/ref_counted.h"
      9 #include "base/memory/scoped_ptr.h"
     10 #include "base/sequenced_task_runner.h"
     11 #include "base/single_thread_task_runner.h"
     12 #include "chrome/browser/drive/drive_service_interface.h"
     13 #include "chrome/browser/drive/drive_uploader.h"
     14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
     15 #include "chrome/browser/sync_file_system/remote_change_processor.h"
     16 #include "chrome/browser/sync_file_system/task_logger.h"
     17 
     18 namespace sync_file_system {
     19 namespace drive_backend {
     20 
     21 SyncEngineContext::SyncEngineContext(
     22     scoped_ptr<drive::DriveServiceInterface> drive_service,
     23     scoped_ptr<drive::DriveUploaderInterface> drive_uploader,
     24     TaskLogger* task_logger,
     25     base::SingleThreadTaskRunner* ui_task_runner,
     26     base::SequencedTaskRunner* worker_task_runner,
     27     base::SequencedTaskRunner* file_task_runner)
     28     : drive_service_(drive_service.Pass()),
     29       drive_uploader_(drive_uploader.Pass()),
     30       task_logger_(task_logger
     31                    ? task_logger->AsWeakPtr()
     32                    : base::WeakPtr<TaskLogger>()),
     33       remote_change_processor_(NULL),
     34       ui_task_runner_(ui_task_runner),
     35       worker_task_runner_(worker_task_runner),
     36       file_task_runner_(file_task_runner) {
     37   sequence_checker_.DetachFromSequence();
     38 }
     39 
     40 SyncEngineContext::~SyncEngineContext() {
     41   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     42 }
     43 
     44 drive::DriveServiceInterface* SyncEngineContext::GetDriveService() {
     45   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     46   return drive_service_.get();
     47 }
     48 
     49 drive::DriveUploaderInterface* SyncEngineContext::GetDriveUploader() {
     50   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     51   return drive_uploader_.get();
     52 }
     53 
     54 base::WeakPtr<TaskLogger> SyncEngineContext::GetTaskLogger() {
     55   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     56   return task_logger_;
     57 }
     58 
     59 MetadataDatabase* SyncEngineContext::GetMetadataDatabase() {
     60   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     61   return metadata_database_.get();
     62 }
     63 
     64 scoped_ptr<MetadataDatabase> SyncEngineContext::PassMetadataDatabase() {
     65   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     66   return metadata_database_.Pass();
     67 }
     68 
     69 RemoteChangeProcessor* SyncEngineContext::GetRemoteChangeProcessor() {
     70   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     71   return remote_change_processor_;
     72 }
     73 
     74 base::SingleThreadTaskRunner* SyncEngineContext::GetUITaskRunner() {
     75   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     76   return ui_task_runner_.get();
     77 }
     78 
     79 base::SequencedTaskRunner* SyncEngineContext::GetWorkerTaskRunner() {
     80   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     81   return worker_task_runner_.get();
     82 }
     83 
     84 base::SequencedTaskRunner* SyncEngineContext::GetFileTaskRunner() {
     85   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     86   return file_task_runner_.get();
     87 }
     88 
     89 void SyncEngineContext::SetMetadataDatabase(
     90     scoped_ptr<MetadataDatabase> metadata_database) {
     91   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     92   if (metadata_database)
     93     metadata_database_ = metadata_database.Pass();
     94 }
     95 
     96 void SyncEngineContext::SetRemoteChangeProcessor(
     97     RemoteChangeProcessor* remote_change_processor) {
     98   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     99   DCHECK(remote_change_processor);
    100   remote_change_processor_ = remote_change_processor;
    101 }
    102 
    103 void SyncEngineContext::DetachFromSequence() {
    104   sequence_checker_.DetachFromSequence();
    105 }
    106 
    107 }  // namespace drive_backend
    108 }  // namespace sync_file_system
    109