Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3929)

Unified Diff: chrome/installer/util/delete_reg_key_work_item.cc

Issue 1882923003: Add best-effort/allow rollback flags on WorkItem. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@simple_list_tests
Patch Set: fix build error Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/installer/util/delete_reg_key_work_item.cc
diff --git a/chrome/installer/util/delete_reg_key_work_item.cc b/chrome/installer/util/delete_reg_key_work_item.cc
index 9f482311037ffe99013136d97d75e2a730913278..c0e13d99b3ab3d6a352f49ee6884f0cf64bb7128 100644
--- a/chrome/installer/util/delete_reg_key_work_item.cc
+++ b/chrome/installer/util/delete_reg_key_work_item.cc
@@ -29,34 +29,32 @@ DeleteRegKeyWorkItem::DeleteRegKeyWorkItem(HKEY predefined_root,
wow64_access == KEY_WOW64_64KEY);
}
-bool DeleteRegKeyWorkItem::Do() {
+bool DeleteRegKeyWorkItem::DoImpl() {
+ DCHECK(!backup_initialized_);
+
if (path_.empty())
return false;
- RegistryKeyBackup backup;
-
- // Only try to make a backup if we're not configured to ignore failures.
- if (!ignore_failure_) {
- if (!backup.Initialize(predefined_root_, path_.c_str(), wow64_access_)) {
+ // Only try to make a backup if rollback is enabled.
+ if (rollback_enabled()) {
+ if (!backup_.Initialize(predefined_root_, path_.c_str(), wow64_access_)) {
LOG(ERROR) << "Failed to backup destination for registry key copy.";
return false;
}
+ backup_initialized_ = true;
}
// Delete the key.
if (!InstallUtil::DeleteRegistryKey(
predefined_root_, path_.c_str(), wow64_access_)) {
- return ignore_failure_;
+ return false;
}
- // We've succeeded, so remember any backup we may have made.
- backup_.swap(backup);
-
return true;
}
-void DeleteRegKeyWorkItem::Rollback() {
- if (ignore_failure_)
+void DeleteRegKeyWorkItem::RollbackImpl() {
+ if (!backup_initialized_)
return;
// Delete anything in the key before restoring the backup in case someone else

Powered by Google App Engine
This is Rietveld 408576698