OLD | NEW |
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 #ifndef CHROME_INSTALLER_UTIL_DELETE_REG_VALUE_WORK_ITEM_H_ | 5 #ifndef CHROME_INSTALLER_UTIL_DELETE_REG_VALUE_WORK_ITEM_H_ |
6 #define CHROME_INSTALLER_UTIL_DELETE_REG_VALUE_WORK_ITEM_H_ | 6 #define CHROME_INSTALLER_UTIL_DELETE_REG_VALUE_WORK_ITEM_H_ |
7 | 7 |
8 #include <windows.h> | 8 #include <windows.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
11 | 11 |
12 #include "chrome/installer/util/work_item.h" | 12 #include "chrome/installer/util/work_item.h" |
13 | 13 |
14 // A WorkItem subclass that deletes a registry value with REG_SZ, REG_DWORD, or | 14 // A WorkItem subclass that deletes a registry value with REG_SZ, REG_DWORD, or |
15 // REG_QWORD type at the specified path. The value is only deleted if the target | 15 // REG_QWORD type at the specified path. The value is only deleted if the target |
16 // key exists. | 16 // key exists. |
17 class DeleteRegValueWorkItem : public WorkItem { | 17 class DeleteRegValueWorkItem : public WorkItem { |
18 public: | 18 public: |
19 ~DeleteRegValueWorkItem() override; | 19 ~DeleteRegValueWorkItem() override; |
20 | 20 |
21 bool Do() override; | |
22 | |
23 void Rollback() override; | |
24 | |
25 private: | 21 private: |
26 friend class WorkItem; | 22 friend class WorkItem; |
27 | 23 |
28 enum DeletionStatus { | 24 enum DeletionStatus { |
29 // The status before Do is called. | 25 // The status before Do is called. |
30 DELETE_VALUE, | 26 DELETE_VALUE, |
31 // One possible outcome after Do(). Value is deleted. | 27 // One possible outcome after Do(). Value is deleted. |
32 VALUE_DELETED, | 28 VALUE_DELETED, |
33 // One possible outcome after Do(). Value is not found. | 29 // One possible outcome after Do(). Value is not found. |
34 VALUE_NOT_FOUND, | 30 VALUE_NOT_FOUND, |
35 // The status after Do() and Rollback() is called. | 31 // The status after Do() and Rollback() is called. |
36 VALUE_ROLLED_BACK, | 32 VALUE_ROLLED_BACK, |
37 // Another possible outcome after Do() (when there is an error). | 33 // Another possible outcome after Do() (when there is an error). |
38 VALUE_UNCHANGED | 34 VALUE_UNCHANGED |
39 }; | 35 }; |
40 | 36 |
41 DeleteRegValueWorkItem(HKEY predefined_root, | 37 DeleteRegValueWorkItem(HKEY predefined_root, |
42 const std::wstring& key_path, | 38 const std::wstring& key_path, |
43 REGSAM wow64_acccess, | 39 REGSAM wow64_acccess, |
44 const std::wstring& value_name); | 40 const std::wstring& value_name); |
45 | 41 |
| 42 // WorkItem: |
| 43 bool DoImpl() override; |
| 44 void RollbackImpl() override; |
| 45 |
46 // Root key of the target key under which the value is set. The root key can | 46 // Root key of the target key under which the value is set. The root key can |
47 // only be one of the predefined keys on Windows. | 47 // only be one of the predefined keys on Windows. |
48 HKEY predefined_root_; | 48 HKEY predefined_root_; |
49 | 49 |
50 // Path of the target key under which the value is set. | 50 // Path of the target key under which the value is set. |
51 std::wstring key_path_; | 51 std::wstring key_path_; |
52 | 52 |
53 // Name of the value to be set. | 53 // Name of the value to be set. |
54 std::wstring value_name_; | 54 std::wstring value_name_; |
55 | 55 |
56 // Whether to force 32-bit or 64-bit view of the target key. | 56 // Whether to force 32-bit or 64-bit view of the target key. |
57 REGSAM wow64_access_; | 57 REGSAM wow64_access_; |
58 | 58 |
59 DeletionStatus status_; | 59 DeletionStatus status_; |
60 | 60 |
61 // Previous value. | 61 // Previous value. |
62 DWORD previous_type_; | 62 DWORD previous_type_; |
63 std::string previous_value_; | 63 std::string previous_value_; |
64 }; | 64 }; |
65 | 65 |
66 #endif // CHROME_INSTALLER_UTIL_DELETE_REG_VALUE_WORK_ITEM_H_ | 66 #endif // CHROME_INSTALLER_UTIL_DELETE_REG_VALUE_WORK_ITEM_H_ |
OLD | NEW |