sync_engine.cc revision 58537e28ecd584eab876aee8be7156509866d23a
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#include "chrome/browser/sync_file_system/drive_backend/sync_engine.h"
6
7#include "base/bind.h"
8#include "base/values.h"
9#include "chrome/browser/drive/drive_api_service.h"
10#include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h"
11#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
12#include "chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h"
13#include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.h"
14#include "chrome/browser/sync_file_system/sync_task.h"
15
16namespace sync_file_system {
17namespace drive_backend {
18
19namespace {
20// TODO(tzik): Move this to separate file and consolidate with
21// DriveMetadataStore::kDatabaseName.
22base::FilePath::CharType kDatabaseName[] = FILE_PATH_LITERAL("DriveMetadata");
23}  // namespace
24
25SyncEngine::SyncEngine(
26    const base::FilePath& base_dir,
27    base::SequencedTaskRunner* task_runner,
28    scoped_ptr<drive::DriveAPIService> drive_api,
29    drive::DriveNotificationManager* notification_manager,
30    ExtensionService* extension_service)
31    : base_dir_(base_dir),
32      task_runner_(task_runner),
33      drive_api_(drive_api.Pass()),
34      notification_manager_(notification_manager),
35      extension_service_(extension_service),
36      weak_ptr_factory_(this),
37      task_manager_(weak_ptr_factory_.GetWeakPtr()) {
38}
39
40SyncEngine::~SyncEngine() {
41  NOTIMPLEMENTED();
42}
43
44void SyncEngine::Initialize() {
45  task_manager_.Initialize(SYNC_STATUS_OK);
46
47  SyncEngineInitializer* initializer =
48      new SyncEngineInitializer(task_runner_.get(),
49                                drive_api_.get(),
50                                base_dir_.Append(kDatabaseName));
51  task_manager_.ScheduleSyncTask(
52      scoped_ptr<SyncTask>(initializer),
53      base::Bind(&SyncEngine::DidInitialize, weak_ptr_factory_.GetWeakPtr(),
54                 initializer));
55}
56
57void SyncEngine::AddServiceObserver(SyncServiceObserver* observer) {
58  service_observers_.AddObserver(observer);
59}
60
61void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) {
62  file_status_observers_.AddObserver(observer);
63}
64
65void SyncEngine::RegisterOrigin(
66    const GURL& origin,
67    const SyncStatusCallback& callback) {
68  task_manager_.ScheduleTask(
69      base::Bind(&SyncEngine::DoRegisterApp,
70                 weak_ptr_factory_.GetWeakPtr(),
71                 origin.host()),
72      callback);
73}
74
75void SyncEngine::EnableOrigin(
76    const GURL& origin,
77    const SyncStatusCallback& callback) {
78  task_manager_.ScheduleTask(
79      base::Bind(&SyncEngine::DoEnableApp,
80                 weak_ptr_factory_.GetWeakPtr(),
81                 origin.host()),
82      callback);
83}
84
85void SyncEngine::DisableOrigin(
86    const GURL& origin,
87    const SyncStatusCallback& callback) {
88  task_manager_.ScheduleTask(
89      base::Bind(&SyncEngine::DoDisableApp,
90                 weak_ptr_factory_.GetWeakPtr(),
91                 origin.host()),
92      callback);
93}
94
95void SyncEngine::UninstallOrigin(
96    const GURL& origin,
97    const SyncStatusCallback& callback) {
98  task_manager_.ScheduleTask(
99      base::Bind(&SyncEngine::DoUninstallApp,
100                 weak_ptr_factory_.GetWeakPtr(),
101                 origin.host()),
102      callback);
103}
104
105void SyncEngine::ProcessRemoteChange(
106    const SyncFileCallback& callback) {
107  RemoteToLocalSyncer* syncer = new RemoteToLocalSyncer;
108  task_manager_.ScheduleSyncTask(
109      scoped_ptr<SyncTask>(syncer),
110      base::Bind(&SyncEngine::DidProcessRemoteChange,
111                 weak_ptr_factory_.GetWeakPtr(),
112                 syncer, callback));
113}
114
115void SyncEngine::SetRemoteChangeProcessor(
116    RemoteChangeProcessor* processor) {
117  remote_change_processor_ = processor;
118}
119
120LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() {
121  return this;
122}
123
124bool SyncEngine::IsConflicting(const fileapi::FileSystemURL& url) {
125  NOTIMPLEMENTED();
126  return false;
127}
128
129RemoteServiceState SyncEngine::GetCurrentState() const {
130  NOTIMPLEMENTED();
131  return REMOTE_SERVICE_OK;
132}
133
134void SyncEngine::GetOriginStatusMap(OriginStatusMap* status_map) {
135  DCHECK(status_map);
136  status_map->clear();
137  NOTIMPLEMENTED();
138}
139
140scoped_ptr<base::ListValue> SyncEngine::DumpFiles(const GURL& origin) {
141  NOTIMPLEMENTED();
142  return make_scoped_ptr(new base::ListValue());
143}
144
145void SyncEngine::SetSyncEnabled(bool enabled) {
146  NOTIMPLEMENTED();
147}
148
149SyncStatusCode SyncEngine::SetConflictResolutionPolicy(
150    ConflictResolutionPolicy policy) {
151  NOTIMPLEMENTED();
152  return SYNC_STATUS_OK;
153}
154
155ConflictResolutionPolicy
156SyncEngine::GetConflictResolutionPolicy() const {
157  NOTIMPLEMENTED();
158  return CONFLICT_RESOLUTION_POLICY_LAST_WRITE_WIN;
159}
160
161void SyncEngine::GetRemoteVersions(
162    const fileapi::FileSystemURL& url,
163    const RemoteVersionsCallback& callback) {
164  NOTIMPLEMENTED();
165}
166
167void SyncEngine::DownloadRemoteVersion(
168    const fileapi::FileSystemURL& url,
169    const std::string& version_id,
170    const DownloadVersionCallback& callback) {
171  NOTIMPLEMENTED();
172}
173
174void SyncEngine::ApplyLocalChange(
175    const FileChange& local_file_change,
176    const base::FilePath& local_file_path,
177    const SyncFileMetadata& local_file_metadata,
178    const fileapi::FileSystemURL& url,
179    const SyncStatusCallback& callback) {
180  LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer;
181  task_manager_.ScheduleSyncTask(
182      scoped_ptr<SyncTask>(syncer),
183      base::Bind(&SyncEngine::DidApplyLocalChange,
184                 weak_ptr_factory_.GetWeakPtr(),
185                 syncer, callback));
186}
187
188void SyncEngine::MaybeScheduleNextTask() {
189  NOTIMPLEMENTED();
190}
191
192void SyncEngine::NotifyLastOperationStatus(SyncStatusCode sync_status) {
193  NOTIMPLEMENTED();
194}
195
196void SyncEngine::OnNotificationReceived() {
197  NOTIMPLEMENTED();
198}
199
200void SyncEngine::OnPushNotificationEnabled(bool enabled) {
201  NOTIMPLEMENTED();
202}
203
204void SyncEngine::DoRegisterApp(const std::string& app_id,
205                               const SyncStatusCallback& callback) {
206  NOTIMPLEMENTED();
207}
208
209void SyncEngine::DoDisableApp(const std::string& app_id,
210                              const SyncStatusCallback& callback) {
211  NOTIMPLEMENTED();
212}
213
214void SyncEngine::DoEnableApp(const std::string& app_id,
215                             const SyncStatusCallback& callback) {
216  NOTIMPLEMENTED();
217}
218
219void SyncEngine::DoUninstallApp(const std::string& app_id,
220                                const SyncStatusCallback& callback) {
221  NOTIMPLEMENTED();
222}
223
224
225void SyncEngine::DidInitialize(SyncEngineInitializer* initializer,
226                               SyncStatusCode status) {
227  NOTIMPLEMENTED();
228}
229
230void SyncEngine::DidProcessRemoteChange(RemoteToLocalSyncer* syncer,
231                                        const SyncFileCallback& callback,
232                                        SyncStatusCode status) {
233  NOTIMPLEMENTED();
234}
235
236void SyncEngine::DidApplyLocalChange(LocalToRemoteSyncer* syncer,
237                                     const SyncStatusCallback& callback,
238                                     SyncStatusCode status) {
239  NOTIMPLEMENTED();
240}
241
242}  // namespace drive_backend
243}  // namespace sync_file_system
244