Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / sync_engine_context.cc
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     const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner,
26     const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner)
27     : drive_service_(drive_service.Pass()),
28       drive_uploader_(drive_uploader.Pass()),
29       task_logger_(task_logger ? task_logger->AsWeakPtr()
30                                : base::WeakPtr<TaskLogger>()),
31       remote_change_processor_(NULL),
32       ui_task_runner_(ui_task_runner),
33       worker_task_runner_(worker_task_runner) {
34   sequence_checker_.DetachFromSequence();
35 }
36
37 SyncEngineContext::~SyncEngineContext() {
38   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
39 }
40
41 drive::DriveServiceInterface* SyncEngineContext::GetDriveService() {
42   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
43   return drive_service_.get();
44 }
45
46 drive::DriveUploaderInterface* SyncEngineContext::GetDriveUploader() {
47   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
48   return drive_uploader_.get();
49 }
50
51 base::WeakPtr<TaskLogger> SyncEngineContext::GetTaskLogger() {
52   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
53   return task_logger_;
54 }
55
56 MetadataDatabase* SyncEngineContext::GetMetadataDatabase() {
57   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
58   return metadata_database_.get();
59 }
60
61 scoped_ptr<MetadataDatabase> SyncEngineContext::PassMetadataDatabase() {
62   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
63   return metadata_database_.Pass();
64 }
65
66 RemoteChangeProcessor* SyncEngineContext::GetRemoteChangeProcessor() {
67   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
68   return remote_change_processor_;
69 }
70
71 base::SingleThreadTaskRunner* SyncEngineContext::GetUITaskRunner() {
72   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
73   return ui_task_runner_.get();
74 }
75
76 base::SequencedTaskRunner* SyncEngineContext::GetWorkerTaskRunner() {
77   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
78   return worker_task_runner_.get();
79 }
80
81 void SyncEngineContext::SetMetadataDatabase(
82     scoped_ptr<MetadataDatabase> metadata_database) {
83   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
84   if (metadata_database)
85     metadata_database_ = metadata_database.Pass();
86 }
87
88 void SyncEngineContext::SetRemoteChangeProcessor(
89     RemoteChangeProcessor* remote_change_processor) {
90   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
91   DCHECK(remote_change_processor);
92   remote_change_processor_ = remote_change_processor;
93 }
94
95 void SyncEngineContext::DetachFromSequence() {
96   sequence_checker_.DetachFromSequence();
97 }
98
99 }  // namespace drive_backend
100 }  // namespace sync_file_system