1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_ 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_ 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <string> 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/sync_file_system/remote_file_sync_service.h" 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/sync_file_system/sync_action.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/sync_file_system/sync_callbacks.h" 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/sync_file_system/sync_direction.h" 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "net/base/network_change_notifier.h" 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class GURL; 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace base { 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class FilePath; 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class ListValue; 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace drive { 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class DriveServiceInterface; 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class DriveUploaderInterface; 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage { 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class FileSystemURL; 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace sync_file_system { 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class FileChange; 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class SyncFileMetadata; 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace drive_backend { 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class MetadataDatabase; 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class RemoteChangeProcessorOnWorker; 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class SyncEngineContext; 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class SyncTaskManager; 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class SyncWorkerInterface { 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public: 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) class Observer { 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public: 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void OnPendingFileListUpdated(int item_count) = 0; 5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void OnFileStatusChanged(const storage::FileSystemURL& url, 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SyncFileStatus file_status, 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SyncAction sync_action, 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SyncDirection direction) = 0; 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void UpdateServiceState(RemoteServiceState state, 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const std::string& description) = 0; 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) protected: 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual ~Observer() {} 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) }; 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SyncWorkerInterface() {} 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual ~SyncWorkerInterface() {} 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Initializes SyncWorkerInterface after constructions of some member classes. 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void Initialize( 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<SyncEngineContext> sync_engine_context) = 0; 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // See RemoteFileSyncService for the details. 69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void RegisterOrigin(const GURL& origin, 70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const SyncStatusCallback& callback) = 0; 71f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void EnableOrigin(const GURL& origin, 72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const SyncStatusCallback& callback) = 0; 73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void DisableOrigin(const GURL& origin, 74f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const SyncStatusCallback& callback) = 0; 75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void UninstallOrigin( 76f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const GURL& origin, 77f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RemoteFileSyncService::UninstallFlag flag, 78f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const SyncStatusCallback& callback) = 0; 79f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void ProcessRemoteChange(const SyncFileCallback& callback) = 0; 80f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void SetRemoteChangeProcessor( 81f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) = 0; 82f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual RemoteServiceState GetCurrentState() const = 0; 83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void GetOriginStatusMap( 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const RemoteFileSyncService::StatusMapCallback& callback) = 0; 85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual scoped_ptr<base::ListValue> DumpFiles(const GURL& origin) = 0; 86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual scoped_ptr<base::ListValue> DumpDatabase() = 0; 87f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void SetSyncEnabled(bool enabled) = 0; 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void PromoteDemotedChanges(const base::Closure& callback) = 0; 89f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 90f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // See LocalChangeProcessor for the details. 9103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void ApplyLocalChange(const FileChange& local_change, 9203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const base::FilePath& local_path, 9303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const SyncFileMetadata& local_metadata, 9403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url, 9503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const SyncStatusCallback& callback) = 0; 96f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void ActivateService(RemoteServiceState service_state, 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& description) = 0; 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void DeactivateService(const std::string& description) = 0; 100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 101f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void DetachFromSequence() = 0; 102f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void AddObserver(Observer* observer) = 0; 104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) private: 106f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) friend class SyncEngineTest; 107f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 108f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SyncWorkerInterface); 109f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}; 110f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 111f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace drive_backend 112f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace sync_file_system 113f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 114f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_ 115