| 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 |