OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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_CREATE_REG_KEY_WORK_ITEM_H__ | 5 #ifndef CHROME_INSTALLER_UTIL_CREATE_REG_KEY_WORK_ITEM_H__ |
6 #define CHROME_INSTALLER_UTIL_CREATE_REG_KEY_WORK_ITEM_H__ | 6 #define CHROME_INSTALLER_UTIL_CREATE_REG_KEY_WORK_ITEM_H__ |
7 | 7 |
8 #include <windows.h> | 8 #include <windows.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "chrome/installer/util/work_item.h" | 13 #include "chrome/installer/util/work_item.h" |
14 | 14 |
15 // A WorkItem subclass that creates a registry key at the given path. | 15 // A WorkItem subclass that creates a registry key at the given path. |
16 // It also creates all necessary intermediate keys if they do not exist. | 16 // It also creates all necessary intermediate keys if they do not exist. |
17 class CreateRegKeyWorkItem : public WorkItem { | 17 class CreateRegKeyWorkItem : public WorkItem { |
18 public: | 18 public: |
19 ~CreateRegKeyWorkItem() override; | 19 ~CreateRegKeyWorkItem() 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 CreateRegKeyWorkItem(HKEY predefined_root, | 24 CreateRegKeyWorkItem(HKEY predefined_root, |
29 const std::wstring& path, | 25 const std::wstring& path, |
30 REGSAM wow64_access); | 26 REGSAM wow64_access); |
31 | 27 |
| 28 // WorkItem: |
| 29 bool DoImpl() override; |
| 30 void RollbackImpl() override; |
| 31 |
32 // Initialize key_list_ by adding all paths of keys from predefined_root_ | 32 // Initialize key_list_ by adding all paths of keys from predefined_root_ |
33 // to path_. Returns true if key_list_ is non empty. | 33 // to path_. Returns true if key_list_ is non empty. |
34 bool InitKeyList(); | 34 bool InitKeyList(); |
35 | 35 |
36 // Root key under which we create the new key. The root key can only be | 36 // Root key under which we create the new key. The root key can only be |
37 // one of the predefined keys on Windows. | 37 // one of the predefined keys on Windows. |
38 HKEY predefined_root_; | 38 HKEY predefined_root_; |
39 | 39 |
40 // Path of the key to be created. | 40 // Path of the key to be created. |
41 std::wstring path_; | 41 std::wstring path_; |
42 | 42 |
43 // Whether to force 32-bit or 64-bit view of the target key. | 43 // Whether to force 32-bit or 64-bit view of the target key. |
44 REGSAM wow64_access_; | 44 REGSAM wow64_access_; |
45 | 45 |
46 // List of paths to all keys that need to be created from predefined_root_ | 46 // List of paths to all keys that need to be created from predefined_root_ |
47 // to path_. | 47 // to path_. |
48 std::vector<std::wstring> key_list_; | 48 std::vector<std::wstring> key_list_; |
49 | 49 |
50 // Whether any key has been created. | 50 // Whether any key has been created. |
51 bool key_created_; | 51 bool key_created_; |
52 }; | 52 }; |
53 | 53 |
54 #endif // CHROME_INSTALLER_UTIL_CREATE_REG_KEY_WORK_ITEM_H__ | 54 #endif // CHROME_INSTALLER_UTIL_CREATE_REG_KEY_WORK_ITEM_H__ |
OLD | NEW |