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 17 class GURL; 18 19 namespace base { 20 class FilePath; 21 class ListValue; 22 } 23 24 namespace drive { 25 class DriveServiceInterface; 26 class DriveUploaderInterface; 27 } 28 29 namespace storage { 30 class FileSystemURL; 31 } 32 33 namespace sync_file_system { 34 35 class FileChange; 36 class SyncFileMetadata; 37 38 namespace drive_backend { 39 40 class MetadataDatabase; 41 class RemoteChangeProcessorOnWorker; 42 class SyncEngineContext; 43 class SyncTaskManager; 44 45 class SyncWorkerInterface { 46 public: 47 class Observer { 48 public: 49 virtual void OnPendingFileListUpdated(int item_count) = 0; 50 virtual void OnFileStatusChanged(const storage::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(const base::Closure& callback) = 0; 89 90 // See LocalChangeProcessor for the details. 91 virtual void ApplyLocalChange(const FileChange& local_change, 92 const base::FilePath& local_path, 93 const SyncFileMetadata& local_metadata, 94 const storage::FileSystemURL& url, 95 const SyncStatusCallback& callback) = 0; 96 97 virtual void ActivateService(RemoteServiceState service_state, 98 const std::string& description) = 0; 99 virtual void DeactivateService(const std::string& description) = 0; 100 101 virtual void DetachFromSequence() = 0; 102 103 virtual void AddObserver(Observer* observer) = 0; 104 105 private: 106 friend class SyncEngineTest; 107 108 DISALLOW_COPY_AND_ASSIGN(SyncWorkerInterface); 109 }; 110 111 } // namespace drive_backend 112 } // namespace sync_file_system 113 114 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_ 115