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 #include "chrome/installer/util/work_item_list.h" | 5 #include "chrome/installer/util/work_item_list.h" |
6 | 6 |
7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "chrome/installer/util/callback_work_item.h" | 9 #include "chrome/installer/util/callback_work_item.h" |
10 #include "chrome/installer/util/copy_reg_key_work_item.h" | |
11 #include "chrome/installer/util/copy_tree_work_item.h" | 10 #include "chrome/installer/util/copy_tree_work_item.h" |
12 #include "chrome/installer/util/create_dir_work_item.h" | 11 #include "chrome/installer/util/create_dir_work_item.h" |
13 #include "chrome/installer/util/create_reg_key_work_item.h" | 12 #include "chrome/installer/util/create_reg_key_work_item.h" |
14 #include "chrome/installer/util/delete_reg_key_work_item.h" | 13 #include "chrome/installer/util/delete_reg_key_work_item.h" |
15 #include "chrome/installer/util/delete_reg_value_work_item.h" | 14 #include "chrome/installer/util/delete_reg_value_work_item.h" |
16 #include "chrome/installer/util/delete_tree_work_item.h" | 15 #include "chrome/installer/util/delete_tree_work_item.h" |
17 #include "chrome/installer/util/logging_installer.h" | 16 #include "chrome/installer/util/logging_installer.h" |
18 #include "chrome/installer/util/move_tree_work_item.h" | 17 #include "chrome/installer/util/move_tree_work_item.h" |
19 #include "chrome/installer/util/self_reg_work_item.h" | 18 #include "chrome/installer/util/self_reg_work_item.h" |
20 #include "chrome/installer/util/set_reg_value_work_item.h" | 19 #include "chrome/installer/util/set_reg_value_work_item.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 list_.push_back(work_item); | 73 list_.push_back(work_item); |
75 } | 74 } |
76 | 75 |
77 WorkItem* WorkItemList::AddCallbackWorkItem( | 76 WorkItem* WorkItemList::AddCallbackWorkItem( |
78 base::Callback<bool(const CallbackWorkItem&)> callback) { | 77 base::Callback<bool(const CallbackWorkItem&)> callback) { |
79 WorkItem* item = WorkItem::CreateCallbackWorkItem(callback); | 78 WorkItem* item = WorkItem::CreateCallbackWorkItem(callback); |
80 AddWorkItem(item); | 79 AddWorkItem(item); |
81 return item; | 80 return item; |
82 } | 81 } |
83 | 82 |
84 WorkItem* WorkItemList::AddCopyRegKeyWorkItem( | |
85 HKEY predefined_root, | |
86 const std::wstring& source_key_path, | |
87 const std::wstring& dest_key_path, | |
88 CopyOverWriteOption overwrite_option) { | |
89 WorkItem* item = WorkItem::CreateCopyRegKeyWorkItem( | |
90 predefined_root, source_key_path, dest_key_path, overwrite_option); | |
91 AddWorkItem(item); | |
92 return item; | |
93 } | |
94 | |
95 WorkItem* WorkItemList::AddCopyTreeWorkItem( | 83 WorkItem* WorkItemList::AddCopyTreeWorkItem( |
96 const std::wstring& source_path, | 84 const std::wstring& source_path, |
97 const std::wstring& dest_path, | 85 const std::wstring& dest_path, |
98 const std::wstring& temp_dir, | 86 const std::wstring& temp_dir, |
99 CopyOverWriteOption overwrite_option, | 87 CopyOverWriteOption overwrite_option, |
100 const std::wstring& alternative_path) { | 88 const std::wstring& alternative_path) { |
101 WorkItem* item = WorkItem::CreateCopyTreeWorkItem( | 89 WorkItem* item = WorkItem::CreateCopyTreeWorkItem( |
102 base::FilePath(source_path), | 90 base::FilePath(source_path), |
103 base::FilePath(dest_path), | 91 base::FilePath(dest_path), |
104 base::FilePath(temp_dir), | 92 base::FilePath(temp_dir), |
105 overwrite_option, | 93 overwrite_option, |
106 base::FilePath(alternative_path)); | 94 base::FilePath(alternative_path)); |
107 AddWorkItem(item); | 95 AddWorkItem(item); |
108 return item; | 96 return item; |
109 } | 97 } |
110 | 98 |
111 WorkItem* WorkItemList::AddCreateDirWorkItem(const base::FilePath& path) { | 99 WorkItem* WorkItemList::AddCreateDirWorkItem(const base::FilePath& path) { |
112 WorkItem* item = WorkItem::CreateCreateDirWorkItem(path); | 100 WorkItem* item = WorkItem::CreateCreateDirWorkItem(path); |
113 AddWorkItem(item); | 101 AddWorkItem(item); |
114 return item; | 102 return item; |
115 } | 103 } |
116 | 104 |
117 WorkItem* WorkItemList::AddCreateRegKeyWorkItem(HKEY predefined_root, | 105 WorkItem* WorkItemList::AddCreateRegKeyWorkItem(HKEY predefined_root, |
118 const std::wstring& path) { | 106 const std::wstring& path, |
119 WorkItem* item = WorkItem::CreateCreateRegKeyWorkItem(predefined_root, path); | 107 REGSAM wow64_access) { |
| 108 WorkItem* item = |
| 109 WorkItem::CreateCreateRegKeyWorkItem(predefined_root, path, wow64_access); |
120 AddWorkItem(item); | 110 AddWorkItem(item); |
121 return item; | 111 return item; |
122 } | 112 } |
123 | 113 |
124 WorkItem* WorkItemList::AddDeleteRegKeyWorkItem(HKEY predefined_root, | 114 WorkItem* WorkItemList::AddDeleteRegKeyWorkItem(HKEY predefined_root, |
125 const std::wstring& path) { | 115 const std::wstring& path, |
126 WorkItem* item = WorkItem::CreateDeleteRegKeyWorkItem(predefined_root, path); | 116 REGSAM wow64_access) { |
| 117 WorkItem* item = |
| 118 WorkItem::CreateDeleteRegKeyWorkItem(predefined_root, path, wow64_access); |
127 AddWorkItem(item); | 119 AddWorkItem(item); |
128 return item; | 120 return item; |
129 } | 121 } |
130 | 122 |
131 WorkItem* WorkItemList::AddDeleteRegValueWorkItem( | 123 WorkItem* WorkItemList::AddDeleteRegValueWorkItem( |
132 HKEY predefined_root, | 124 HKEY predefined_root, |
133 const std::wstring& key_path, | 125 const std::wstring& key_path, |
| 126 REGSAM wow64_access, |
134 const std::wstring& value_name) { | 127 const std::wstring& value_name) { |
135 WorkItem* item = WorkItem::CreateDeleteRegValueWorkItem(predefined_root, | 128 WorkItem* item = WorkItem::CreateDeleteRegValueWorkItem( |
136 key_path, value_name); | 129 predefined_root, key_path, wow64_access, value_name); |
137 AddWorkItem(item); | 130 AddWorkItem(item); |
138 return item; | 131 return item; |
139 } | 132 } |
140 | 133 |
141 WorkItem* WorkItemList::AddDeleteTreeWorkItem( | 134 WorkItem* WorkItemList::AddDeleteTreeWorkItem( |
142 const base::FilePath& root_path, | 135 const base::FilePath& root_path, |
143 const base::FilePath& temp_path, | 136 const base::FilePath& temp_path, |
144 const std::vector<base::FilePath>& key_paths) { | 137 const std::vector<base::FilePath>& key_paths) { |
145 WorkItem* item = WorkItem::CreateDeleteTreeWorkItem(root_path, temp_path, | 138 WorkItem* item = WorkItem::CreateDeleteTreeWorkItem(root_path, temp_path, |
146 key_paths); | 139 key_paths); |
(...skipping 12 matching lines...) Expand all Loading... |
159 const std::wstring& temp_dir, | 152 const std::wstring& temp_dir, |
160 MoveTreeOption duplicate_option) { | 153 MoveTreeOption duplicate_option) { |
161 WorkItem* item = WorkItem::CreateMoveTreeWorkItem(base::FilePath(source_path), | 154 WorkItem* item = WorkItem::CreateMoveTreeWorkItem(base::FilePath(source_path), |
162 base::FilePath(dest_path), | 155 base::FilePath(dest_path), |
163 base::FilePath(temp_dir), | 156 base::FilePath(temp_dir), |
164 duplicate_option); | 157 duplicate_option); |
165 AddWorkItem(item); | 158 AddWorkItem(item); |
166 return item; | 159 return item; |
167 } | 160 } |
168 | 161 |
169 WorkItem* WorkItemList::AddSetRegValueWorkItem( | 162 WorkItem* WorkItemList::AddSetRegValueWorkItem(HKEY predefined_root, |
170 HKEY predefined_root, | 163 const std::wstring& key_path, |
171 const std::wstring& key_path, | 164 REGSAM wow64_access, |
172 const std::wstring& value_name, | 165 const std::wstring& value_name, |
173 const std::wstring& value_data, | 166 const std::wstring& value_data, |
174 bool overwrite) { | 167 bool overwrite) { |
175 WorkItem* item = WorkItem::CreateSetRegValueWorkItem(predefined_root, | 168 WorkItem* item = WorkItem::CreateSetRegValueWorkItem(predefined_root, |
176 key_path, | 169 key_path, |
| 170 wow64_access, |
177 value_name, | 171 value_name, |
178 value_data, | 172 value_data, |
179 overwrite); | 173 overwrite); |
180 AddWorkItem(item); | 174 AddWorkItem(item); |
181 return item; | 175 return item; |
182 } | 176 } |
183 | 177 |
184 WorkItem* WorkItemList::AddSetRegValueWorkItem(HKEY predefined_root, | 178 WorkItem* WorkItemList::AddSetRegValueWorkItem(HKEY predefined_root, |
185 const std::wstring& key_path, | 179 const std::wstring& key_path, |
| 180 REGSAM wow64_access, |
186 const std::wstring& value_name, | 181 const std::wstring& value_name, |
187 DWORD value_data, | 182 DWORD value_data, |
188 bool overwrite) { | 183 bool overwrite) { |
189 WorkItem* item = WorkItem::CreateSetRegValueWorkItem(predefined_root, | 184 WorkItem* item = WorkItem::CreateSetRegValueWorkItem(predefined_root, |
190 key_path, | 185 key_path, |
| 186 wow64_access, |
191 value_name, | 187 value_name, |
192 value_data, | 188 value_data, |
193 overwrite); | 189 overwrite); |
194 AddWorkItem(item); | 190 AddWorkItem(item); |
195 return item; | 191 return item; |
196 } | 192 } |
197 | 193 |
198 WorkItem* WorkItemList::AddSetRegValueWorkItem(HKEY predefined_root, | 194 WorkItem* WorkItemList::AddSetRegValueWorkItem(HKEY predefined_root, |
199 const std::wstring& key_path, | 195 const std::wstring& key_path, |
| 196 REGSAM wow64_access, |
200 const std::wstring& value_name, | 197 const std::wstring& value_name, |
201 int64 value_data, | 198 int64 value_data, |
202 bool overwrite) { | 199 bool overwrite) { |
203 WorkItem* item = reinterpret_cast<WorkItem*>( | 200 WorkItem* item = reinterpret_cast<WorkItem*>( |
204 WorkItem::CreateSetRegValueWorkItem(predefined_root, key_path, value_name, | 201 WorkItem::CreateSetRegValueWorkItem(predefined_root, |
205 value_data, overwrite)); | 202 key_path, |
| 203 wow64_access, |
| 204 value_name, |
| 205 value_data, |
| 206 overwrite)); |
206 AddWorkItem(item); | 207 AddWorkItem(item); |
207 return item; | 208 return item; |
208 } | 209 } |
209 | 210 |
210 WorkItem* WorkItemList::AddSelfRegWorkItem(const std::wstring& dll_path, | 211 WorkItem* WorkItemList::AddSelfRegWorkItem(const std::wstring& dll_path, |
211 bool do_register, | 212 bool do_register, |
212 bool user_level_registration) { | 213 bool user_level_registration) { |
213 WorkItem* item = WorkItem::CreateSelfRegWorkItem(dll_path, do_register, | 214 WorkItem* item = WorkItem::CreateSelfRegWorkItem(dll_path, do_register, |
214 user_level_registration); | 215 user_level_registration); |
215 AddWorkItem(item); | 216 AddWorkItem(item); |
(...skipping 24 matching lines...) Expand all Loading... |
240 if (result) | 241 if (result) |
241 VLOG(1) << "NoRollbackWorkItemList: list execution succeeded"; | 242 VLOG(1) << "NoRollbackWorkItemList: list execution succeeded"; |
242 | 243 |
243 status_ = LIST_EXECUTED; | 244 status_ = LIST_EXECUTED; |
244 return result; | 245 return result; |
245 } | 246 } |
246 | 247 |
247 void NoRollbackWorkItemList::Rollback() { | 248 void NoRollbackWorkItemList::Rollback() { |
248 // Ignore rollback. | 249 // Ignore rollback. |
249 } | 250 } |
OLD | NEW |