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

Side by Side Diff: chrome/installer/util/work_item.h

Issue 1220473002: Introduce a SetRegValueWorkItem overload that accepts a callback instead (...) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: adopt grt's suggestion Created 5 years, 5 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 // Base class for managing an action of a sequence of actions to be carried 5 // Base class for managing an action of a sequence of actions to be carried
6 // out during install/update/uninstall. Supports rollback of actions if this 6 // out during install/update/uninstall. Supports rollback of actions if this
7 // process fails. 7 // process fails.
8 8
9 #ifndef CHROME_INSTALLER_UTIL_WORK_ITEM_H_ 9 #ifndef CHROME_INSTALLER_UTIL_WORK_ITEM_H_
10 #define CHROME_INSTALLER_UTIL_WORK_ITEM_H_ 10 #define CHROME_INSTALLER_UTIL_WORK_ITEM_H_
(...skipping 19 matching lines...) Expand all
30 class WorkItemList; 30 class WorkItemList;
31 31
32 namespace base { 32 namespace base {
33 class FilePath; 33 class FilePath;
34 } 34 }
35 35
36 // A base class that defines APIs to perform/rollback an action or a 36 // A base class that defines APIs to perform/rollback an action or a
37 // sequence of actions during install/update/uninstall. 37 // sequence of actions during install/update/uninstall.
38 class WorkItem { 38 class WorkItem {
39 public: 39 public:
40 // A callback that returns the desired value based on the |existing_value|.
41 // |existing_value| will be empty if the value didn't previously exist or
42 // existed under a non-string type.
43 using GetValueFromExistingCallback =
44 base::Callback<std::wstring(const std::wstring& existing_value)>;
45
40 // All registry operations can be instructed to operate on a specific view 46 // All registry operations can be instructed to operate on a specific view
41 // of the registry by specifying a REGSAM value to the wow64_access parameter. 47 // of the registry by specifying a REGSAM value to the wow64_access parameter.
42 // The wow64_access parameter can be one of: 48 // The wow64_access parameter can be one of:
43 // KEY_WOW64_32KEY - Operate on the 32-bit view. 49 // KEY_WOW64_32KEY - Operate on the 32-bit view.
44 // KEY_WOW64_64KEY - Operate on the 64-bit view. 50 // KEY_WOW64_64KEY - Operate on the 64-bit view.
45 // kWow64Default - Operate on the default view (e.g. 32-bit on 32-bit 51 // kWow64Default - Operate on the default view (e.g. 32-bit on 32-bit
46 // systems, and 64-bit on 64-bit systems). 52 // systems, and 64-bit on 64-bit systems).
47 // See http://msdn.microsoft.com/en-us/library/windows/desktop/aa384129.aspx 53 // See http://msdn.microsoft.com/en-us/library/windows/desktop/aa384129.aspx
48 static const REGSAM kWow64Default = 0; 54 static const REGSAM kWow64Default = 0;
49 // Possible states 55 // Possible states
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 // Create a SetRegValueWorkItem that sets a registry value with REG_QWORD type 157 // Create a SetRegValueWorkItem that sets a registry value with REG_QWORD type
152 // at the key with specified path. 158 // at the key with specified path.
153 static SetRegValueWorkItem* CreateSetRegValueWorkItem( 159 static SetRegValueWorkItem* CreateSetRegValueWorkItem(
154 HKEY predefined_root, 160 HKEY predefined_root,
155 const std::wstring& key_path, 161 const std::wstring& key_path,
156 REGSAM wow64_access, 162 REGSAM wow64_access,
157 const std::wstring& value_name, 163 const std::wstring& value_name,
158 int64 value_data, 164 int64 value_data,
159 bool overwrite); 165 bool overwrite);
160 166
167 // Create a SetRegValueWorkItem that sets a registry value based on the value
168 // provided by |get_value_callback| given the existing value under
169 // |key_path\value_name|.
170 static SetRegValueWorkItem* CreateSetRegValueWorkItem(
171 HKEY predefined_root,
172 const std::wstring& key_path,
173 REGSAM wow64_access,
174 const std::wstring& value_name,
175 const GetValueFromExistingCallback& get_value_callback);
176
161 // Add a SelfRegWorkItem that registers or unregisters a DLL at the 177 // Add a SelfRegWorkItem that registers or unregisters a DLL at the
162 // specified path. 178 // specified path.
163 static SelfRegWorkItem* CreateSelfRegWorkItem(const std::wstring& dll_path, 179 static SelfRegWorkItem* CreateSelfRegWorkItem(const std::wstring& dll_path,
164 bool do_register, 180 bool do_register,
165 bool user_level_registration); 181 bool user_level_registration);
166 182
167 // Create an empty WorkItemList. A WorkItemList can recursively contains 183 // Create an empty WorkItemList. A WorkItemList can recursively contains
168 // a list of WorkItems. 184 // a list of WorkItems.
169 static WorkItemList* CreateWorkItemList(); 185 static WorkItemList* CreateWorkItemList();
170 186
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 WorkItem(); 230 WorkItem();
215 231
216 // Specifies whether this work item my fail to complete and yet still 232 // Specifies whether this work item my fail to complete and yet still
217 // return true from Do(). 233 // return true from Do().
218 bool ignore_failure_; 234 bool ignore_failure_;
219 235
220 std::string log_message_; 236 std::string log_message_;
221 }; 237 };
222 238
223 #endif // CHROME_INSTALLER_UTIL_WORK_ITEM_H_ 239 #endif // CHROME_INSTALLER_UTIL_WORK_ITEM_H_
OLDNEW
« no previous file with comments | « chrome/installer/util/set_reg_value_work_item_unittest.cc ('k') | chrome/installer/util/work_item.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698