• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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