sync_worker_interface.h revision 116680a4aac90f2aa7413d9095a592090648e557
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#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "chrome/browser/sync_file_system/remote_file_sync_service.h"
12#include "chrome/browser/sync_file_system/sync_action.h"
13#include "chrome/browser/sync_file_system/sync_callbacks.h"
14#include "chrome/browser/sync_file_system/sync_direction.h"
15#include "net/base/network_change_notifier.h"
16
17class GURL;
18
19namespace base {
20class FilePath;
21class ListValue;
22}
23
24namespace drive {
25class DriveServiceInterface;
26class DriveUploaderInterface;
27}
28
29namespace fileapi {
30class FileSystemURL;
31}
32
33namespace sync_file_system {
34
35class FileChange;
36class SyncFileMetadata;
37
38namespace drive_backend {
39
40class MetadataDatabase;
41class RemoteChangeProcessorOnWorker;
42class SyncEngineContext;
43class SyncTaskManager;
44
45class SyncWorkerInterface {
46 public:
47  class Observer {
48   public:
49    virtual void OnPendingFileListUpdated(int item_count) = 0;
50    virtual void OnFileStatusChanged(const fileapi::FileSystemURL& url,
51                                     SyncFileStatus file_status,
52                                     SyncAction sync_action,
53                                     SyncDirection direction) = 0;
54    virtual void UpdateServiceState(RemoteServiceState state,
55                                    const std::string& description) = 0;
56
57   protected:
58    virtual ~Observer() {}
59  };
60
61  SyncWorkerInterface() {}
62  virtual ~SyncWorkerInterface() {}
63
64  // Initializes SyncWorkerInterface after constructions of some member classes.
65  virtual void Initialize(
66      scoped_ptr<SyncEngineContext> sync_engine_context) = 0;
67
68  // See RemoteFileSyncService for the details.
69  virtual void RegisterOrigin(const GURL& origin,
70                              const SyncStatusCallback& callback) = 0;
71  virtual void EnableOrigin(const GURL& origin,
72                            const SyncStatusCallback& callback) = 0;
73  virtual void DisableOrigin(const GURL& origin,
74                             const SyncStatusCallback& callback) = 0;
75  virtual void UninstallOrigin(
76      const GURL& origin,
77      RemoteFileSyncService::UninstallFlag flag,
78      const SyncStatusCallback& callback) = 0;
79  virtual void ProcessRemoteChange(const SyncFileCallback& callback) = 0;
80  virtual void SetRemoteChangeProcessor(
81      RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) = 0;
82  virtual RemoteServiceState GetCurrentState() const = 0;
83  virtual void GetOriginStatusMap(
84      const RemoteFileSyncService::StatusMapCallback& callback) = 0;
85  virtual scoped_ptr<base::ListValue> DumpFiles(const GURL& origin) = 0;
86  virtual scoped_ptr<base::ListValue> DumpDatabase() = 0;
87  virtual void SetSyncEnabled(bool enabled) = 0;
88  virtual void PromoteDemotedChanges() = 0;
89
90  // See LocalChangeProcessor for the details.
91  virtual void ApplyLocalChange(
92      const FileChange& local_change,
93      const base::FilePath& local_path,
94      const SyncFileMetadata& local_metadata,
95      const fileapi::FileSystemURL& url,
96      const SyncStatusCallback& callback) = 0;
97
98  // See drive::DriveNotificationObserver for the details.
99  virtual void OnNotificationReceived() = 0;
100
101  // See drive::DriveServiceObserver for the details.
102  virtual void OnReadyToSendRequests() = 0;
103  virtual void OnRefreshTokenInvalid() = 0;
104
105  // See net::NetworkChangeNotifier::NetworkChangeObserver for the details.
106  virtual void OnNetworkChanged(
107      net::NetworkChangeNotifier::ConnectionType type) = 0;
108
109  virtual void DetachFromSequence() = 0;
110
111  virtual void AddObserver(Observer* observer) = 0;
112
113 private:
114  friend class SyncEngineTest;
115
116  // TODO(peria): Remove this interface after making FakeSyncWorker class.
117  virtual void SetHasRefreshToken(bool has_refresh_token) = 0;
118
119  DISALLOW_COPY_AND_ASSIGN(SyncWorkerInterface);
120};
121
122}  // namespace drive_backend
123}  // namespace sync_file_system
124
125#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_
126