// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SYNC_INTERNAL_API_SYNC_BACKUP_MANAGER_H_ #define SYNC_INTERNAL_API_SYNC_BACKUP_MANAGER_H_ #include #include "sync/internal_api/sync_rollback_manager_base.h" namespace syncer { // SyncBackupManager runs before user signs in to sync to back up user's data // before sync starts. The data that's backed up can be used to restore user's // settings to pre-sync state. class SYNC_EXPORT_PRIVATE SyncBackupManager : public SyncRollbackManagerBase { public: SyncBackupManager(); virtual ~SyncBackupManager(); // SyncManager implementation. virtual void Init( const base::FilePath& database_location, const WeakHandle& event_handler, const std::string& sync_server_and_path, int sync_server_port, bool use_ssl, scoped_ptr post_factory, const std::vector >& workers, ExtensionsActivity* extensions_activity, SyncManager::ChangeDelegate* change_delegate, const SyncCredentials& credentials, const std::string& invalidator_client_id, const std::string& restored_key_for_bootstrapping, const std::string& restored_keystore_key_for_bootstrapping, InternalComponentsFactory* internal_components_factory, Encryptor* encryptor, scoped_ptr unrecoverable_error_handler, ReportUnrecoverableErrorFunction report_unrecoverable_error_function, CancelationSignal* cancelation_signal) OVERRIDE; virtual void SaveChanges() OVERRIDE; virtual SyncStatus GetDetailedStatus() const OVERRIDE; // DirectoryChangeDelegate implementation. virtual ModelTypeSet HandleTransactionEndingChangeEvent( const syncable::ImmutableWriteTransactionInfo& write_transaction_info, syncable::BaseTransaction* trans) OVERRIDE; private: // Replaces local IDs with server IDs and clear unsynced bit of modified // entries. void NormalizeEntries(); // Handles of unsynced entries caused by local model changes. std::set unsynced_; // True if NormalizeEntries() is being called. bool in_normalization_; SyncStatus status_; DISALLOW_COPY_AND_ASSIGN(SyncBackupManager); }; } // namespace syncer #endif // SYNC_INTERNAL_API_SYNC_BACKUP_MANAGER_H_