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

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: Created 4 years, 8 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 "chrome/installer/util/callback_work_item.h" 9 #include "chrome/installer/util/callback_work_item.h"
10 #include "chrome/installer/util/conditional_work_item_list.h" 10 #include "chrome/installer/util/conditional_work_item_list.h"
11 #include "chrome/installer/util/copy_tree_work_item.h" 11 #include "chrome/installer/util/copy_tree_work_item.h"
12 #include "chrome/installer/util/create_dir_work_item.h" 12 #include "chrome/installer/util/create_dir_work_item.h"
13 #include "chrome/installer/util/create_reg_key_work_item.h" 13 #include "chrome/installer/util/create_reg_key_work_item.h"
14 #include "chrome/installer/util/delete_reg_key_work_item.h" 14 #include "chrome/installer/util/delete_reg_key_work_item.h"
15 #include "chrome/installer/util/delete_reg_value_work_item.h" 15 #include "chrome/installer/util/delete_reg_value_work_item.h"
16 #include "chrome/installer/util/delete_tree_work_item.h" 16 #include "chrome/installer/util/delete_tree_work_item.h"
17 #include "chrome/installer/util/move_tree_work_item.h" 17 #include "chrome/installer/util/move_tree_work_item.h"
18 #include "chrome/installer/util/self_reg_work_item.h" 18 #include "chrome/installer/util/self_reg_work_item.h"
19 #include "chrome/installer/util/set_reg_value_work_item.h" 19 #include "chrome/installer/util/set_reg_value_work_item.h"
20 #include "chrome/installer/util/work_item_list.h" 20 #include "chrome/installer/util/work_item_list.h"
21 21
22 WorkItem::WorkItem() : ignore_failure_(false) { 22 WorkItem::WorkItem() = default;
23 } 23 WorkItem::~WorkItem() = default;
24
25 WorkItem::~WorkItem() {
26 }
27 24
28 CallbackWorkItem* WorkItem::CreateCallbackWorkItem( 25 CallbackWorkItem* WorkItem::CreateCallbackWorkItem(
29 base::Callback<bool(const CallbackWorkItem&)> callback) { 26 base::Callback<bool(const CallbackWorkItem&)> callback) {
30 return new CallbackWorkItem(callback); 27 return new CallbackWorkItem(callback);
31 } 28 }
32 29
33 CopyTreeWorkItem* WorkItem::CreateCopyTreeWorkItem( 30 CopyTreeWorkItem* WorkItem::CreateCopyTreeWorkItem(
34 const base::FilePath& source_path, 31 const base::FilePath& source_path,
35 const base::FilePath& dest_path, 32 const base::FilePath& dest_path,
36 const base::FilePath& temp_dir, 33 const base::FilePath& temp_dir,
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 } 152 }
156 153
157 // static 154 // static
158 WorkItemList* WorkItem::CreateNoRollbackWorkItemList() { 155 WorkItemList* WorkItem::CreateNoRollbackWorkItemList() {
159 return new NoRollbackWorkItemList(); 156 return new NoRollbackWorkItemList();
160 } 157 }
161 158
162 WorkItemList* WorkItem::CreateConditionalWorkItemList(Condition* condition) { 159 WorkItemList* WorkItem::CreateConditionalWorkItemList(Condition* condition) {
163 return new ConditionalWorkItemList(condition); 160 return new ConditionalWorkItemList(condition);
164 } 161 }
162
163 bool WorkItem::Do() {
164 DCHECK_EQ(BEFORE_DO, state_);
165 const bool success = DoImpl();
166 state_ = AFTER_DO;
167 return best_effort() ? true : success;
168 }
169
170 void WorkItem::Rollback() {
171 DCHECK_EQ(AFTER_DO, state_);
172 if (allow_rollback())
173 RollbackImpl();
174 state_ = AFTER_ROLLBACK;
175 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698