| 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..b0ba01961093eee625e0932652d6febe999c87a9 100644
|
| --- a/chrome/installer/util/delete_reg_key_work_item.cc
|
| +++ b/chrome/installer/util/delete_reg_key_work_item.cc
|
| @@ -29,14 +29,16 @@ DeleteRegKeyWorkItem::DeleteRegKeyWorkItem(HKEY predefined_root,
|
| wow64_access == KEY_WOW64_64KEY);
|
| }
|
|
|
| -bool DeleteRegKeyWorkItem::Do() {
|
| +bool DeleteRegKeyWorkItem::DoImpl() {
|
| + DCHECK(!key_deleted_);
|
| +
|
| if (path_.empty())
|
| return false;
|
|
|
| RegistryKeyBackup backup;
|
|
|
| - // Only try to make a backup if we're not configured to ignore failures.
|
| - if (!ignore_failure_) {
|
| + // Only try to make a backup if rollback is allowed.
|
| + if (allow_rollback()) {
|
| if (!backup.Initialize(predefined_root_, path_.c_str(), wow64_access_)) {
|
| LOG(ERROR) << "Failed to backup destination for registry key copy.";
|
| return false;
|
| @@ -46,17 +48,18 @@ bool DeleteRegKeyWorkItem::Do() {
|
| // 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);
|
|
|
| + key_deleted_ = true;
|
| return true;
|
| }
|
|
|
| -void DeleteRegKeyWorkItem::Rollback() {
|
| - if (ignore_failure_)
|
| +void DeleteRegKeyWorkItem::RollbackImpl() {
|
| + if (!key_deleted_)
|
| return;
|
|
|
| // Delete anything in the key before restoring the backup in case someone else
|
|
|