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 CHROME_BROWSER_SYNC_BACKUP_ROLLBACK_CONTROLLER_H_ 6 #define CHROME_BROWSER_SYNC_BACKUP_ROLLBACK_CONTROLLER_H_ 7 8 #include "base/callback.h" 9 #include "base/memory/weak_ptr.h" 10 11 class SupervisedUserSigninManagerWrapper; 12 13 namespace sync_driver { 14 class SyncPrefs; 15 } 16 17 namespace browser_sync { 18 19 // BackupRollbackController takes two closures for starting backup/rollback 20 // process. It calls the closures according to user's signin status or 21 // received rollback command. Backup is not run when user signed in, even when 22 // sync is not running. 23 class BackupRollbackController { 24 public: 25 BackupRollbackController(sync_driver::SyncPrefs* sync_prefs, 26 const SupervisedUserSigninManagerWrapper* signin, 27 base::Closure start_backup, 28 base::Closure start_rollback); 29 ~BackupRollbackController(); 30 31 // Post task to run |start_backup_| if conditions are met. Return true if 32 // task is posted, false otherwise. 33 bool StartBackup(); 34 35 // Post task to run |start_rollback_| if conditions are met. Return true if 36 // task is posted, false otherwise. 37 bool StartRollback(); 38 39 // Update rollback preference to indicate rollback is needed. 40 void OnRollbackReceived(); 41 42 // Update rollback preference to indicate rollback is finished. 43 void OnRollbackDone(); 44 45 // Return true if platform supports backup and backup is enabled. 46 static bool IsBackupEnabled(); 47 48 private: 49 sync_driver::SyncPrefs* sync_prefs_; 50 51 // Use SupervisedUserSigninManagerWrapper instead of SigninManagerBase so that 52 // supervised users are treated like regular signed-in users. 53 const SupervisedUserSigninManagerWrapper* signin_; 54 55 base::Closure start_backup_; 56 base::Closure start_rollback_; 57 58 DISALLOW_COPY_AND_ASSIGN(BackupRollbackController); 59 }; 60 61 } // namespace browser_sync 62 63 #endif // CHROME_BROWSER_SYNC_BACKUP_ROLLBACK_CONTROLLER_H_ 64