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

Side by Side Diff: chrome/installer/util/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: self review 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/installer/util/work_item.h" 5 #include "chrome/installer/util/work_item.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 8
9 #include "base/logging.h"
9 #include "chrome/installer/util/callback_work_item.h" 10 #include "chrome/installer/util/callback_work_item.h"
10 #include "chrome/installer/util/conditional_work_item_list.h" 11 #include "chrome/installer/util/conditional_work_item_list.h"
11 #include "chrome/installer/util/copy_tree_work_item.h" 12 #include "chrome/installer/util/copy_tree_work_item.h"
12 #include "chrome/installer/util/create_dir_work_item.h" 13 #include "chrome/installer/util/create_dir_work_item.h"
13 #include "chrome/installer/util/create_reg_key_work_item.h" 14 #include "chrome/installer/util/create_reg_key_work_item.h"
14 #include "chrome/installer/util/delete_reg_key_work_item.h" 15 #include "chrome/installer/util/delete_reg_key_work_item.h"
15 #include "chrome/installer/util/delete_reg_value_work_item.h" 16 #include "chrome/installer/util/delete_reg_value_work_item.h"
16 #include "chrome/installer/util/delete_tree_work_item.h" 17 #include "chrome/installer/util/delete_tree_work_item.h"
17 #include "chrome/installer/util/move_tree_work_item.h" 18 #include "chrome/installer/util/move_tree_work_item.h"
18 #include "chrome/installer/util/self_reg_work_item.h" 19 #include "chrome/installer/util/self_reg_work_item.h"
19 #include "chrome/installer/util/set_reg_value_work_item.h" 20 #include "chrome/installer/util/set_reg_value_work_item.h"
20 #include "chrome/installer/util/work_item_list.h" 21 #include "chrome/installer/util/work_item_list.h"
21 22
22 WorkItem::WorkItem() : ignore_failure_(false) { 23 WorkItem::WorkItem() = default;
23 } 24 WorkItem::~WorkItem() = default;
24
25 WorkItem::~WorkItem() {
26 }
27 25
28 CallbackWorkItem* WorkItem::CreateCallbackWorkItem( 26 CallbackWorkItem* WorkItem::CreateCallbackWorkItem(
29 base::Callback<bool(const CallbackWorkItem&)> callback) { 27 base::Callback<bool(const CallbackWorkItem&)> callback) {
30 return new CallbackWorkItem(callback); 28 return new CallbackWorkItem(callback);
31 } 29 }
32 30
33 CopyTreeWorkItem* WorkItem::CreateCopyTreeWorkItem( 31 CopyTreeWorkItem* WorkItem::CreateCopyTreeWorkItem(
34 const base::FilePath& source_path, 32 const base::FilePath& source_path,
35 const base::FilePath& dest_path, 33 const base::FilePath& dest_path,
36 const base::FilePath& temp_dir, 34 const base::FilePath& temp_dir,
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 } 153 }
156 154
157 // static 155 // static
158 WorkItemList* WorkItem::CreateNoRollbackWorkItemList() { 156 WorkItemList* WorkItem::CreateNoRollbackWorkItemList() {
159 return new NoRollbackWorkItemList(); 157 return new NoRollbackWorkItemList();
160 } 158 }
161 159
162 WorkItemList* WorkItem::CreateConditionalWorkItemList(Condition* condition) { 160 WorkItemList* WorkItem::CreateConditionalWorkItemList(Condition* condition) {
163 return new ConditionalWorkItemList(condition); 161 return new ConditionalWorkItemList(condition);
164 } 162 }
163
164 bool WorkItem::Do() {
165 DCHECK_EQ(BEFORE_DO, state_);
166 const bool success = DoImpl();
167 state_ = AFTER_DO;
168 return best_effort() ? true : success;
169 }
170
171 void WorkItem::Rollback() {
172 DCHECK_EQ(AFTER_DO, state_);
173 if (rollback_enabled())
174 RollbackImpl();
175 state_ = AFTER_ROLLBACK;
176 }
177
178 void WorkItem::set_best_effort(bool best_effort) {
179 DCHECK_EQ(BEFORE_DO, state());
180 best_effort_ = best_effort;
181 }
182
183 void WorkItem::set_rollback_enabled(bool rollback_enabled) {
184 DCHECK_EQ(BEFORE_DO, state());
185 rollback_enabled_ = rollback_enabled;
186 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698