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

Unified Diff: chrome/installer/util/delete_reg_value_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_value_work_item.cc
diff --git a/chrome/installer/util/delete_reg_value_work_item.cc b/chrome/installer/util/delete_reg_value_work_item.cc
index b5b0b189ada3ee5a5812810914983d3bbb5a043e..f111f93f9b134f8f9c51e2ab7151caf6c47496e2 100644
--- a/chrome/installer/util/delete_reg_value_work_item.cc
+++ b/chrome/installer/util/delete_reg_value_work_item.cc
@@ -29,12 +29,8 @@ DeleteRegValueWorkItem::DeleteRegValueWorkItem(HKEY predefined_root,
DeleteRegValueWorkItem::~DeleteRegValueWorkItem() {
}
-bool DeleteRegValueWorkItem::Do() {
- if (status_ != DELETE_VALUE) {
- // we already did something.
- LOG(ERROR) << "multiple calls to Do()";
- return false;
- }
+bool DeleteRegValueWorkItem::DoImpl() {
+ DCHECK_EQ(DELETE_VALUE, status_);
status_ = VALUE_UNCHANGED;
@@ -48,8 +44,8 @@ bool DeleteRegValueWorkItem::Do() {
result = key.ReadValue(value_name_.c_str(), NULL, &size, &type);
if (result == ERROR_FILE_NOT_FOUND) {
- LOG(INFO) << "(delete value) Key: " << key_path_ << " or Value: "
- << value_name_ << " does not exist.";
+ VLOG(1) << "(delete value) Key: " << key_path_
+ << " or Value: " << value_name_ << " does not exist.";
status_ = VALUE_NOT_FOUND;
return true;
}
@@ -78,9 +74,10 @@ bool DeleteRegValueWorkItem::Do() {
return true;
}
-void DeleteRegValueWorkItem::Rollback() {
- if (status_ == DELETE_VALUE || status_ == VALUE_ROLLED_BACK)
- return;
+void DeleteRegValueWorkItem::RollbackImpl() {
+ DCHECK_NE(DELETE_VALUE, status_);
+ DCHECK_NE(VALUE_ROLLED_BACK, status_);
+
if (status_ == VALUE_UNCHANGED || status_ == VALUE_NOT_FOUND) {
status_ = VALUE_ROLLED_BACK;
VLOG(1) << "rollback: setting unchanged, nothing to do";
@@ -88,6 +85,8 @@ void DeleteRegValueWorkItem::Rollback() {
}
// At this point only possible state is VALUE_DELETED.
+ DCHECK_EQ(VALUE_DELETED, status_);
+
RegKey key;
LONG result = key.Open(predefined_root_,
key_path_.c_str(),

Powered by Google App Engine
This is Rietveld 408576698