Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / fake_sync_worker.h
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
20 class GURL;
21
22 namespace base {
23 class FilePath;
24 class ListValue;
25 }
26
27 namespace drive {
28 class DriveServiceInterface;
29 class DriveUploaderInterface;
30 }
31
32 namespace storage {
33 class FileSystemURL;
34 }
35
36 namespace sync_file_system {
37
38 class FileChange;
39 class SyncFileMetadata;
40
41 namespace drive_backend {
42
43 class MetadataDatabase;
44 class RemoteChangeProcessorOnWorker;
45 class SyncEngineContext;
46 class SyncTaskManager;
47
48 class 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_