sync_engine.h revision e5d81f57cb97b3b6b7fccc9c5610d21eb81db09d
18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt// Copyright 2013 The Chromium Authors. All rights reserved. 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt// Use of this source code is governed by a BSD-style license that can be 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt// found in the LICENSE file. 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_H_ 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_H_ 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include <set> 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include <string> 10df5a7e4c5c64890c2425bb47d665bbce4992b676Dmitry Shmidt 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "base/memory/scoped_ptr.h" 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "base/memory/weak_ptr.h" 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "base/observer_list.h" 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "chrome/browser/drive/drive_notification_observer.h" 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "chrome/browser/drive/drive_service_interface.h" 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" 1750b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt#include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" 1850b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt#include "chrome/browser/sync_file_system/local_change_processor.h" 1950b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt#include "chrome/browser/sync_file_system/remote_file_sync_service.h" 2050b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt#include "net/base/network_change_notifier.h" 2150b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 2250b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidtclass ExtensionServiceInterface; 2350b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidtclass SigninManagerBase; 2450b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 25c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidtnamespace base { 26c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidtclass SequencedTaskRunner; 27c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt} 28c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 2950b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidtnamespace drive { 3050b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidtclass DriveServiceInterface; 3150b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidtclass DriveNotificationManager; 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtnamespace leveldb { 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass Env; 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtnamespace sync_file_system { 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtnamespace drive_backend { 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass LocalToRemoteSyncer; 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass MetadataDatabase; 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass RemoteToLocalSyncer; 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass SyncEngineInitializer; 45fa3fc4a1ac08ad14272301c7f6f01b362997c3e4Dmitry Shmidt 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass SyncEngine : public RemoteFileSyncService, 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt public LocalChangeProcessor, 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt public drive::DriveNotificationObserver, 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt public drive::DriveServiceObserver, 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt public net::NetworkChangeNotifier::NetworkChangeObserver { 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt public: 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt typedef Observer SyncServiceObserver; 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt class TaskManagerClient : public SyncTaskManager::Client, 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt public base::SupportsWeakPtr<TaskManagerClient> { 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt public: 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TaskManagerClient(const base::WeakPtr<SyncEngine>& sync_engine, 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt base::SequencedTaskRunner* task_runner); 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ~TaskManagerClient(); 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // SyncTaskManager::Client overrides 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void MaybeScheduleNextTask() OVERRIDE; 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void NotifyLastOperationStatus( 6450b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt SyncStatusCode sync_status, bool used_network) OVERRIDE; 6550b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 6650b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt private: 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt base::WeakPtr<SyncEngine> sync_engine_; 6850b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt scoped_refptr<base::SequencedTaskRunner> task_runner_; 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt DISALLOW_COPY_AND_ASSIGN(TaskManagerClient); 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt }; 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt static scoped_ptr<SyncEngine> CreateForBrowserContext( 74c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt content::BrowserContext* context); 75c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt static void AppendDependsOnFactories( 76c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt std::set<BrowserContextKeyedServiceFactory*>* factories); 77c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 78c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt virtual ~SyncEngine(); 79c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 80c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt void Initialize(); 8150b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 8250b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt // RemoteFileSyncService overrides. 8350b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt virtual void AddServiceObserver(SyncServiceObserver* observer) OVERRIDE; 8450b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt virtual void AddFileStatusObserver(FileStatusObserver* observer) OVERRIDE; 8550b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt virtual void RegisterOrigin( 8650b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt const GURL& origin, 8750b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt const SyncStatusCallback& callback) OVERRIDE; 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void EnableOrigin( 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const GURL& origin, 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const SyncStatusCallback& callback) OVERRIDE; 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void DisableOrigin( 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const GURL& origin, 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const SyncStatusCallback& callback) OVERRIDE; 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void UninstallOrigin( 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const GURL& origin, 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt UninstallFlag flag, 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const SyncStatusCallback& callback) OVERRIDE; 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void ProcessRemoteChange(const SyncFileCallback& callback) OVERRIDE; 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void SetRemoteChangeProcessor( 1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RemoteChangeProcessor* processor) OVERRIDE; 1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual LocalChangeProcessor* GetLocalChangeProcessor() OVERRIDE; 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual bool IsConflicting(const fileapi::FileSystemURL& url) OVERRIDE; 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual RemoteServiceState GetCurrentState() const OVERRIDE; 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void GetOriginStatusMap(OriginStatusMap* status_map) OVERRIDE; 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual scoped_ptr<base::ListValue> DumpFiles(const GURL& origin) OVERRIDE; 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual scoped_ptr<base::ListValue> DumpDatabase() OVERRIDE; 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void SetSyncEnabled(bool enabled) OVERRIDE; 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual SyncStatusCode SetDefaultConflictResolutionPolicy( 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ConflictResolutionPolicy policy) OVERRIDE; 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual SyncStatusCode SetConflictResolutionPolicy( 1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const GURL& origin, 1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ConflictResolutionPolicy policy) OVERRIDE; 1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ConflictResolutionPolicy GetDefaultConflictResolutionPolicy() 1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const OVERRIDE; 1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ConflictResolutionPolicy GetConflictResolutionPolicy( 1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const GURL& origin) const OVERRIDE; 1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void GetRemoteVersions( 1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const fileapi::FileSystemURL& url, 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const RemoteVersionsCallback& callback) OVERRIDE; 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void DownloadRemoteVersion( 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const fileapi::FileSystemURL& url, 1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const std::string& version_id, 1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const DownloadVersionCallback& callback) OVERRIDE; 1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void PromoteDemotedChanges() OVERRIDE; 1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // LocalChangeProcessor overrides. 1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void ApplyLocalChange( 1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const FileChange& local_change, 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const base::FilePath& local_path, 1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const SyncFileMetadata& local_metadata, 1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const fileapi::FileSystemURL& url, 1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const SyncStatusCallback& callback) OVERRIDE; 1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // drive::DriveNotificationObserver overrides. 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void OnNotificationReceived() OVERRIDE; 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void OnPushNotificationEnabled(bool enabled) OVERRIDE; 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // drive::DriveServiceObserver overrides. 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void OnReadyToSendRequests() OVERRIDE; 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void OnRefreshTokenInvalid() OVERRIDE; 1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // net::NetworkChangeNotifier::NetworkChangeObserver overrides. 1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void OnNetworkChanged( 1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt net::NetworkChangeNotifier::ConnectionType type) OVERRIDE; 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt drive::DriveServiceInterface* GetDriveService(); 1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt drive::DriveUploaderInterface* GetDriveUploader(); 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt MetadataDatabase* GetMetadataDatabase(); 1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt private: 1518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt friend class DriveBackendSyncTest; 15250b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt friend class SyncEngineTest; 15350b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 15450b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt SyncEngine(const base::FilePath& base_dir, 15550b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt base::SequencedTaskRunner* task_runner, 15650b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt scoped_ptr<drive::DriveServiceInterface> drive_service, 15750b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt scoped_ptr<drive::DriveUploaderInterface> drive_uploader, 15850b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt drive::DriveNotificationManager* notification_manager, 15950b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt ExtensionServiceInterface* extension_service, 16050b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt SigninManagerBase* signin_manager, 16150b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt leveldb::Env* env_override); 16250b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void DoDisableApp(const std::string& app_id, 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const SyncStatusCallback& callback); 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void DoEnableApp(const std::string& app_id, 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const SyncStatusCallback& callback); 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void PostInitializeTask(); 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void DidInitialize(SyncEngineInitializer* initializer, 1708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt SyncStatusCode status); 1718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void DidProcessRemoteChange(RemoteToLocalSyncer* syncer, 1728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const SyncFileCallback& callback, 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt SyncStatusCode status); 17450b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt void DidApplyLocalChange(LocalToRemoteSyncer* syncer, 17550b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt const SyncStatusCallback& callback, 17650b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt SyncStatusCode status); 17750b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 17850b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt void MaybeStartFetchChanges(); 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void DidResolveConflict(SyncStatusCode status); 180c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt void DidFetchChanges(SyncStatusCode status); 181c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 182c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt void UpdateServiceStateFromSyncStatusCode(SyncStatusCode state, 183c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt bool used_network); 184c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt void UpdateServiceState(RemoteServiceState state, 185c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt const std::string& description); 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void UpdateRegisteredApps(); 1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void MaybeScheduleNextTask(); 1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void NotifyLastOperationStatus(SyncStatusCode sync_status, bool used_network); 190c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 191c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt base::FilePath base_dir_; 192c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt base::FilePath temporary_file_dir_; 19361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 19461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt leveldb::Env* env_override_; 195c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 196c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt // These external services are not owned by SyncEngine. 197c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt // The owner of the SyncEngine is responsible for their lifetime. 198c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt // I.e. the owner should declare the dependency explicitly by calling 199c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt // KeyedService::DependsOn(). 200c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt drive::DriveNotificationManager* notification_manager_; 201c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt ExtensionServiceInterface* extension_service_; 202c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt SigninManagerBase* signin_manager_; 203c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 204c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt ObserverList<SyncServiceObserver> service_observers_; 20561d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt ObserverList<FileStatusObserver> file_status_observers_; 20661d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 207c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt RemoteServiceState service_state_; 208c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 209c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt bool should_check_conflict_; 210c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt bool should_check_remote_change_; 211c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt bool listing_remote_changes_; 212c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt base::TimeTicks time_to_check_changes_; 213c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 21450b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt bool sync_enabled_; 21550b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt ConflictResolutionPolicy default_conflict_resolution_policy_; 21650b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt bool network_available_; 21750b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 21850b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt scoped_ptr<SyncTaskManager> task_manager_; 21950b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 22050b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt scoped_ptr<SyncEngineContext> context_; 22150b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt scoped_ptr<TaskManagerClient> task_manager_client_; 22250b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 22350b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt base::WeakPtrFactory<SyncEngine> weak_ptr_factory_; 22450b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt DISALLOW_COPY_AND_ASSIGN(SyncEngine); 22550b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt}; 22650b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 22750b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt} // namespace drive_backend 22850b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt} // namespace sync_file_system 22950b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt 23050b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_H_ 23150b691dc36a8075e8f594e8bea93cb524fa6b1d2Dmitry Shmidt