sync_worker_interface.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
14dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org// Copyright 2014 The Chromium Authors. All rights reserved. 24dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org// Use of this source code is governed by a BSD-style license that can be 34dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org// found in the LICENSE file. 44dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 54dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_ 64dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_ 74dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 84dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#include <string> 94dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 104dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#include "base/memory/scoped_ptr.h" 114dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#include "chrome/browser/sync_file_system/remote_file_sync_service.h" 124dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#include "chrome/browser/sync_file_system/sync_action.h" 134dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#include "chrome/browser/sync_file_system/sync_callbacks.h" 144dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#include "chrome/browser/sync_file_system/sync_direction.h" 154dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org#include "net/base/network_change_notifier.h" 164dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 174dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass GURL; 184dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 194dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgnamespace base { 204dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass FilePath; 214dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass ListValue; 224dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org} 23a8b71a9a8ec2adbc5e4f8ecbd2b09ebd50d3eb2bjshin@chromium.org 244dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgnamespace drive { 254dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass DriveServiceInterface; 264dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass DriveUploaderInterface; 274dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org} 284dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 294dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgnamespace fileapi { 304dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass FileSystemURL; 314dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org} 324dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 334dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgnamespace sync_file_system { 344dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 354dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass FileChange; 364dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass SyncFileMetadata; 374dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 384dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgnamespace drive_backend { 394dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 404dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass MetadataDatabase; 414dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass RemoteChangeProcessorOnWorker; 424dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass SyncEngineContext; 434dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass SyncTaskManager; 444dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 454dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.orgclass SyncWorkerInterface { 464dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org public: 474dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org class Observer { 484dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org public: 494dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual void OnPendingFileListUpdated(int item_count) = 0; 504dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual void OnFileStatusChanged(const fileapi::FileSystemURL& url, 514dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org SyncFileStatus file_status, 524dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org SyncAction sync_action, 534dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org SyncDirection direction) = 0; 544dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual void UpdateServiceState(RemoteServiceState state, 554dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org const std::string& description) = 0; 564dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 574dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org protected: 584dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual ~Observer() {} 594dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org }; 604dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 614dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org SyncWorkerInterface() {} 624dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual ~SyncWorkerInterface() {} 634dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 644dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org // Initializes SyncWorkerInterface after constructions of some member classes. 654dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual void Initialize( 664dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org scoped_ptr<SyncEngineContext> sync_engine_context) = 0; 674dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 684dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org // See RemoteFileSyncService for the details. 694dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual void RegisterOrigin(const GURL& origin, 704dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org const SyncStatusCallback& callback) = 0; 714dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual void EnableOrigin(const GURL& origin, 724dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org const SyncStatusCallback& callback) = 0; 734dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual void DisableOrigin(const GURL& origin, 744dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org const SyncStatusCallback& callback) = 0; 754dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org virtual void UninstallOrigin( 764dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org const GURL& origin, 774dfa619cf375ebb67b7b9311487d19a4129f742fjshin@chromium.org 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( 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 virtual void ActivateService(RemoteServiceState service_state, 99 const std::string& description) = 0; 100 virtual void DeactivateService(const std::string& description) = 0; 101 102 virtual void DetachFromSequence() = 0; 103 104 virtual void AddObserver(Observer* observer) = 0; 105 106 private: 107 friend class SyncEngineTest; 108 109 DISALLOW_COPY_AND_ASSIGN(SyncWorkerInterface); 110}; 111 112} // namespace drive_backend 113} // namespace sync_file_system 114 115#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_WORKER_INTERFACE_H_ 116