Home | History | Annotate | Download | only in internal_api
      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 SYNC_INTERNAL_API_SYNC_BACKUP_MANAGER_H_
      6 #define SYNC_INTERNAL_API_SYNC_BACKUP_MANAGER_H_
      7 
      8 #include <set>
      9 
     10 #include "sync/internal_api/sync_rollback_manager_base.h"
     11 #include "url/gurl.h"
     12 
     13 namespace syncer {
     14 
     15 // SyncBackupManager runs before user signs in to sync to back up user's data
     16 // before sync starts. The data that's backed up can be used to restore user's
     17 // settings to pre-sync state.
     18 class SYNC_EXPORT_PRIVATE SyncBackupManager : public SyncRollbackManagerBase {
     19  public:
     20   SyncBackupManager();
     21   virtual ~SyncBackupManager();
     22 
     23   // SyncManager implementation.
     24   virtual void Init(InitArgs* args) OVERRIDE;
     25   virtual void SaveChanges() OVERRIDE;
     26   virtual SyncStatus GetDetailedStatus() const OVERRIDE;
     27   virtual void ShutdownOnSyncThread(ShutdownReason reason) OVERRIDE;
     28 
     29   // DirectoryChangeDelegate implementation.
     30   virtual ModelTypeSet HandleTransactionEndingChangeEvent(
     31       const syncable::ImmutableWriteTransactionInfo& write_transaction_info,
     32       syncable::BaseTransaction* trans) OVERRIDE;
     33 
     34   virtual void RegisterDirectoryTypeDebugInfoObserver(
     35       syncer::TypeDebugInfoObserver* observer) OVERRIDE;
     36   virtual void UnregisterDirectoryTypeDebugInfoObserver(
     37       syncer::TypeDebugInfoObserver* observer) OVERRIDE;
     38   virtual bool HasDirectoryTypeDebugInfoObserver(
     39       syncer::TypeDebugInfoObserver* observer) OVERRIDE;
     40   virtual void RequestEmitDebugInfo() OVERRIDE;
     41 
     42  private:
     43   // Replaces local IDs with server IDs and clear unsynced bit of modified
     44   // entries.
     45   void NormalizeEntries();
     46 
     47   // Manipulate preference nodes so that they'll be overwritten by local
     48   // preference values during model association, i.e. local wins instead of
     49   // server wins. This is for preventing backup from changing preferences in
     50   // case backup DB has hijacked preferences.
     51   void HideSyncPreference(ModelType pref_type);
     52 
     53   // Handles of unsynced entries caused by local model changes.
     54   std::set<int64> unsynced_;
     55 
     56   // True if NormalizeEntries() is being called.
     57   bool in_normalization_;
     58 
     59   SyncStatus status_;
     60 
     61   DISALLOW_COPY_AND_ASSIGN(SyncBackupManager);
     62 };
     63 
     64 }  // namespace syncer
     65 
     66 #endif  // SYNC_INTERNAL_API_SYNC_BACKUP_MANAGER_H_
     67