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_FAKE_SYNC_WORKER_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FAKE_SYNC_WORKER_H_
7
8#include <map>
9#include <string>
10
11#include "base/callback.h"
12#include "base/memory/scoped_ptr.h"
13#include "base/observer_list.h"
14#include "base/sequence_checker.h"
15#include "chrome/browser/sync_file_system/drive_backend/sync_worker_interface.h"
16#include "chrome/browser/sync_file_system/remote_file_sync_service.h"
17#include "chrome/browser/sync_file_system/sync_callbacks.h"
18#include "net/base/network_change_notifier.h"
19
20class GURL;
21
22namespace base {
23class FilePath;
24class ListValue;
25}
26
27namespace drive {
28class DriveServiceInterface;
29class DriveUploaderInterface;
30}
31
32namespace storage {
33class FileSystemURL;
34}
35
36namespace sync_file_system {
37
38class FileChange;
39class SyncFileMetadata;
40
41namespace drive_backend {
42
43class MetadataDatabase;
44class RemoteChangeProcessorOnWorker;
45class SyncEngineContext;
46class SyncTaskManager;
47
48class FakeSyncWorker : public SyncWorkerInterface {
49 public:
50  FakeSyncWorker();
51  virtual ~FakeSyncWorker();
52
53  // SyncWorkerInterface overrides.
54  virtual void Initialize(
55      scoped_ptr<SyncEngineContext> sync_engine_context) OVERRIDE;
56  virtual void RegisterOrigin(const GURL& origin,
57                              const SyncStatusCallback& callback) OVERRIDE;
58  virtual void EnableOrigin(const GURL& origin,
59                            const SyncStatusCallback& callback) OVERRIDE;
60  virtual void DisableOrigin(const GURL& origin,
61                             const SyncStatusCallback& callback) OVERRIDE;
62  virtual void UninstallOrigin(
63      const GURL& origin,
64      RemoteFileSyncService::UninstallFlag flag,
65      const SyncStatusCallback& callback) OVERRIDE;
66  virtual void ProcessRemoteChange(const SyncFileCallback& callback) OVERRIDE;
67  virtual void SetRemoteChangeProcessor(
68      RemoteChangeProcessorOnWorker* remote_change_processor_on_worker)
69      OVERRIDE;
70  virtual RemoteServiceState GetCurrentState() const OVERRIDE;
71  virtual void GetOriginStatusMap(
72      const RemoteFileSyncService::StatusMapCallback& callback) OVERRIDE;
73  virtual scoped_ptr<base::ListValue> DumpFiles(const GURL& origin) OVERRIDE;
74  virtual scoped_ptr<base::ListValue> DumpDatabase() OVERRIDE;
75  virtual void SetSyncEnabled(bool enabled) OVERRIDE;
76  virtual void PromoteDemotedChanges(const base::Closure& callback) OVERRIDE;
77  virtual void ApplyLocalChange(const FileChange& local_change,
78                                const base::FilePath& local_path,
79                                const SyncFileMetadata& local_metadata,
80                                const storage::FileSystemURL& url,
81                                const SyncStatusCallback& callback) OVERRIDE;
82  virtual void ActivateService(RemoteServiceState service_state,
83                               const std::string& description) OVERRIDE;
84  virtual void DeactivateService(const std::string& description) OVERRIDE;
85  virtual void DetachFromSequence() OVERRIDE;
86  virtual void AddObserver(Observer* observer) OVERRIDE;
87
88 private:
89  friend class SyncEngineTest;
90
91  enum AppStatus {
92    REGISTERED,
93    ENABLED,
94    DISABLED,
95    UNINSTALLED,
96  };
97  typedef std::map<GURL, AppStatus> StatusMap;
98
99  void UpdateServiceState(RemoteServiceState state,
100                          const std::string& description);
101
102  bool sync_enabled_;
103  StatusMap status_map_;
104
105  scoped_ptr<SyncEngineContext> sync_engine_context_;
106
107  ObserverList<Observer> observers_;
108  base::SequenceChecker sequence_checker_;
109
110  DISALLOW_COPY_AND_ASSIGN(FakeSyncWorker);
111};
112
113}  // namespace drive_backend
114}  // namespace sync_file_system
115
116#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_FAKE_SYNC_WORKER_H_
117