OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/sync/backup_rollback_controller.h" | 5 #include "chrome/browser/sync/backup_rollback_controller.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "chrome/browser/sync/managed_user_signin_manager_wrapper.h" | 9 #include "chrome/browser/sync/managed_user_signin_manager_wrapper.h" |
10 #include "chrome/common/chrome_switches.h" | 10 #include "chrome/common/chrome_switches.h" |
11 #include "components/sync_driver/sync_prefs.h" | 11 #include "components/sync_driver/sync_prefs.h" |
12 | 12 |
13 namespace browser_sync { | 13 namespace browser_sync { |
14 | 14 |
15 #if defined(OS_WIN) || defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_C
HROMEOS)) | 15 #if defined(ENABLE_PRE_SYNC_BACKUP) |
16 // Number of rollback attempts to try before giving up. | 16 // Number of rollback attempts to try before giving up. |
17 static const int kRollbackLimits = 3; | 17 static const int kRollbackLimits = 3; |
18 #endif | 18 #endif |
19 | 19 |
20 BackupRollbackController::BackupRollbackController( | 20 BackupRollbackController::BackupRollbackController( |
21 sync_driver::SyncPrefs* sync_prefs, | 21 sync_driver::SyncPrefs* sync_prefs, |
22 const ManagedUserSigninManagerWrapper* signin, | 22 const ManagedUserSigninManagerWrapper* signin, |
23 base::Closure start_backup, | 23 base::Closure start_backup, |
24 base::Closure start_rollback) | 24 base::Closure start_rollback) |
25 : sync_prefs_(sync_prefs), | 25 : sync_prefs_(sync_prefs), |
26 signin_(signin), | 26 signin_(signin), |
27 start_backup_(start_backup), | 27 start_backup_(start_backup), |
28 start_rollback_(start_rollback), | 28 start_rollback_(start_rollback), |
29 weak_ptr_factory_(this) { | 29 weak_ptr_factory_(this) { |
30 } | 30 } |
31 | 31 |
32 BackupRollbackController::~BackupRollbackController() { | 32 BackupRollbackController::~BackupRollbackController() { |
33 } | 33 } |
34 | 34 |
35 void BackupRollbackController::Start(base::TimeDelta delay) { | 35 void BackupRollbackController::Start(base::TimeDelta delay) { |
36 #if defined(OS_WIN) || defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_C
HROMEOS)) | 36 #if defined(ENABLE_PRE_SYNC_BACKUP) |
37 if (CommandLine::ForCurrentProcess()->HasSwitch( | 37 if (CommandLine::ForCurrentProcess()->HasSwitch( |
38 switches::kSyncDisableBackup)) { | 38 switches::kSyncDisableBackup)) { |
39 return; | 39 return; |
40 } | 40 } |
41 | 41 |
42 if (!CommandLine::ForCurrentProcess()->HasSwitch( | 42 if (!CommandLine::ForCurrentProcess()->HasSwitch( |
43 switches::kSyncEnableRollback)) { | 43 switches::kSyncEnableRollback)) { |
44 sync_prefs_->SetRemainingRollbackTries(0); | 44 sync_prefs_->SetRemainingRollbackTries(0); |
45 } | 45 } |
46 | 46 |
47 if (delay == base::TimeDelta()) { | 47 if (delay == base::TimeDelta()) { |
48 TryStart(); | 48 TryStart(); |
49 } else { | 49 } else { |
50 base::MessageLoop::current()->PostDelayedTask( | 50 base::MessageLoop::current()->PostDelayedTask( |
51 FROM_HERE, | 51 FROM_HERE, |
52 base::Bind(&BackupRollbackController::TryStart, | 52 base::Bind(&BackupRollbackController::TryStart, |
53 weak_ptr_factory_.GetWeakPtr()), | 53 weak_ptr_factory_.GetWeakPtr()), |
54 delay); | 54 delay); |
55 } | 55 } |
56 #endif | 56 #endif |
57 } | 57 } |
58 | 58 |
59 void BackupRollbackController::OnRollbackReceived() { | 59 void BackupRollbackController::OnRollbackReceived() { |
60 #if defined(OS_WIN) || defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_C
HROMEOS)) | 60 #if defined(ENABLE_PRE_SYNC_BACKUP) |
61 sync_prefs_->SetRemainingRollbackTries(kRollbackLimits); | 61 sync_prefs_->SetRemainingRollbackTries(kRollbackLimits); |
62 #endif | 62 #endif |
63 } | 63 } |
64 | 64 |
65 void BackupRollbackController::OnRollbackDone() { | 65 void BackupRollbackController::OnRollbackDone() { |
66 #if defined(OS_WIN) || defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_C
HROMEOS)) | 66 #if defined(ENABLE_PRE_SYNC_BACKUP) |
67 sync_prefs_->SetRemainingRollbackTries(0); | 67 sync_prefs_->SetRemainingRollbackTries(0); |
68 #endif | 68 #endif |
69 } | 69 } |
70 | 70 |
71 void BackupRollbackController::TryStart() { | 71 void BackupRollbackController::TryStart() { |
72 if (!signin_->GetEffectiveUsername().empty()) { | 72 if (!signin_->GetEffectiveUsername().empty()) { |
73 DVLOG(1) << "Don't start backup/rollback when user is signed in."; | 73 DVLOG(1) << "Don't start backup/rollback when user is signed in."; |
74 return; | 74 return; |
75 } | 75 } |
76 | 76 |
77 int rollback_tries = sync_prefs_->GetRemainingRollbackTries(); | 77 int rollback_tries = sync_prefs_->GetRemainingRollbackTries(); |
78 if (rollback_tries > 0) { | 78 if (rollback_tries > 0) { |
79 DVLOG(1) << "Start rollback."; | 79 DVLOG(1) << "Start rollback."; |
80 sync_prefs_->SetRemainingRollbackTries(rollback_tries - 1); | 80 sync_prefs_->SetRemainingRollbackTries(rollback_tries - 1); |
81 start_rollback_.Run(); | 81 start_rollback_.Run(); |
82 } else { | 82 } else { |
83 DVLOG(1) << "Start backup."; | 83 DVLOG(1) << "Start backup."; |
84 start_backup_.Run(); | 84 start_backup_.Run(); |
85 } | 85 } |
86 } | 86 } |
87 | 87 |
88 } // namespace browser_sync | 88 } // namespace browser_sync |
OLD | NEW |