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

Side by Side Diff: chrome/installer/util/set_reg_value_work_item_unittest.cc

Issue 282363003: Add WOW64 support to the installer registry work items (Closed) Base URL: https://chromium.googlesource.com/chromium/src
Patch Set: nits. fix call to DeleteRegistryKey Created 6 years, 7 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
« no previous file with comments | « chrome/installer/util/set_reg_value_work_item.cc ('k') | chrome/installer/util/shell_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <windows.h> 5 #include <windows.h>
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/win/registry.h" 10 #include "base/win/registry.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 51
52 std::wstring parent_key(kTestRoot); 52 std::wstring parent_key(kTestRoot);
53 parent_key.append(&base::FilePath::kSeparators[0], 1); 53 parent_key.append(&base::FilePath::kSeparators[0], 1);
54 parent_key.append(L"WriteNewNonOverwrite"); 54 parent_key.append(L"WriteNewNonOverwrite");
55 ASSERT_EQ(ERROR_SUCCESS, 55 ASSERT_EQ(ERROR_SUCCESS,
56 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ)); 56 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ));
57 57
58 std::wstring name_str(kNameStr); 58 std::wstring name_str(kNameStr);
59 std::wstring data_str(kDataStr1); 59 std::wstring data_str(kDataStr1);
60 scoped_ptr<SetRegValueWorkItem> work_item1( 60 scoped_ptr<SetRegValueWorkItem> work_item1(
61 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 61 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
62 name_str, data_str, false)); 62 parent_key,
63 WorkItem::kWow64Default,
64 name_str,
65 data_str,
66 false));
63 67
64 std::wstring name_dword(kNameDword); 68 std::wstring name_dword(kNameDword);
65 scoped_ptr<SetRegValueWorkItem> work_item2( 69 scoped_ptr<SetRegValueWorkItem> work_item2(
66 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 70 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
67 name_dword, dword1, false)); 71 parent_key,
72 WorkItem::kWow64Default,
73 name_dword,
74 dword1,
75 false));
68 76
69 EXPECT_TRUE(work_item1->Do()); 77 EXPECT_TRUE(work_item1->Do());
70 EXPECT_TRUE(work_item2->Do()); 78 EXPECT_TRUE(work_item2->Do());
71 79
72 std::wstring read_out; 80 std::wstring read_out;
73 DWORD read_dword; 81 DWORD read_dword;
74 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out)); 82 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out));
75 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword)); 83 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword));
76 EXPECT_EQ(read_out, kDataStr1); 84 EXPECT_EQ(read_out, kDataStr1);
77 EXPECT_EQ(read_dword, dword1); 85 EXPECT_EQ(read_dword, dword1);
(...skipping 12 matching lines...) Expand all
90 98
91 std::wstring parent_key(kTestRoot); 99 std::wstring parent_key(kTestRoot);
92 parent_key.append(&base::FilePath::kSeparators[0], 1); 100 parent_key.append(&base::FilePath::kSeparators[0], 1);
93 parent_key.append(L"WriteNewOverwrite"); 101 parent_key.append(L"WriteNewOverwrite");
94 ASSERT_EQ(ERROR_SUCCESS, 102 ASSERT_EQ(ERROR_SUCCESS,
95 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ)); 103 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ));
96 104
97 std::wstring name_str(kNameStr); 105 std::wstring name_str(kNameStr);
98 std::wstring data_str(kDataStr1); 106 std::wstring data_str(kDataStr1);
99 scoped_ptr<SetRegValueWorkItem> work_item1( 107 scoped_ptr<SetRegValueWorkItem> work_item1(
100 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 108 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
101 name_str, data_str, true)); 109 parent_key,
110 WorkItem::kWow64Default,
111 name_str,
112 data_str,
113 true));
102 114
103 std::wstring name_dword(kNameDword); 115 std::wstring name_dword(kNameDword);
104 scoped_ptr<SetRegValueWorkItem> work_item2( 116 scoped_ptr<SetRegValueWorkItem> work_item2(
105 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 117 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
106 name_dword, dword1, true)); 118 parent_key,
119 WorkItem::kWow64Default,
120 name_dword,
121 dword1,
122 true));
107 123
108 EXPECT_TRUE(work_item1->Do()); 124 EXPECT_TRUE(work_item1->Do());
109 EXPECT_TRUE(work_item2->Do()); 125 EXPECT_TRUE(work_item2->Do());
110 126
111 std::wstring read_out; 127 std::wstring read_out;
112 DWORD read_dword; 128 DWORD read_dword;
113 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out)); 129 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out));
114 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword)); 130 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword));
115 EXPECT_EQ(read_out, kDataStr1); 131 EXPECT_EQ(read_out, kDataStr1);
116 EXPECT_EQ(read_dword, dword1); 132 EXPECT_EQ(read_dword, dword1);
(...skipping 18 matching lines...) Expand all
135 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), 151 key.Create(HKEY_CURRENT_USER, parent_key.c_str(),
136 KEY_READ | KEY_SET_VALUE)); 152 KEY_READ | KEY_SET_VALUE));
137 153
138 // First test REG_SZ value. 154 // First test REG_SZ value.
139 // Write data to the value we are going to set. 155 // Write data to the value we are going to set.
140 std::wstring name(kNameStr); 156 std::wstring name(kNameStr);
141 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), kDataStr1)); 157 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), kDataStr1));
142 158
143 std::wstring data(kDataStr2); 159 std::wstring data(kDataStr2);
144 scoped_ptr<SetRegValueWorkItem> work_item( 160 scoped_ptr<SetRegValueWorkItem> work_item(
145 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 161 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
146 name, data, false)); 162 parent_key,
163 WorkItem::kWow64Default,
164 name,
165 data,
166 false));
147 EXPECT_TRUE(work_item->Do()); 167 EXPECT_TRUE(work_item->Do());
148 168
149 std::wstring read_out; 169 std::wstring read_out;
150 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); 170 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
151 EXPECT_EQ(0, read_out.compare(kDataStr1)); 171 EXPECT_EQ(0, read_out.compare(kDataStr1));
152 172
153 work_item->Rollback(); 173 work_item->Rollback();
154 EXPECT_TRUE(key.HasValue(name.c_str())); 174 EXPECT_TRUE(key.HasValue(name.c_str()));
155 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); 175 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
156 EXPECT_EQ(read_out, kDataStr1); 176 EXPECT_EQ(read_out, kDataStr1);
157 177
158 // Now test REG_DWORD value. 178 // Now test REG_DWORD value.
159 // Write data to the value we are going to set. 179 // Write data to the value we are going to set.
160 name.assign(kNameDword); 180 name.assign(kNameDword);
161 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1)); 181 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1));
162 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, 182 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
163 parent_key, name, dword2, false)); 183 parent_key,
184 WorkItem::kWow64Default,
185 name,
186 dword2,
187 false));
164 EXPECT_TRUE(work_item->Do()); 188 EXPECT_TRUE(work_item->Do());
165 189
166 DWORD read_dword; 190 DWORD read_dword;
167 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); 191 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
168 EXPECT_EQ(read_dword, dword1); 192 EXPECT_EQ(read_dword, dword1);
169 193
170 work_item->Rollback(); 194 work_item->Rollback();
171 EXPECT_TRUE(key.HasValue(name.c_str())); 195 EXPECT_TRUE(key.HasValue(name.c_str()));
172 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); 196 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
173 EXPECT_EQ(read_dword, dword1); 197 EXPECT_EQ(read_dword, dword1);
(...skipping 15 matching lines...) Expand all
189 // Write data to the value we are going to set. 213 // Write data to the value we are going to set.
190 std::wstring name(kNameStr); 214 std::wstring name(kNameStr);
191 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), kDataStr1)); 215 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), kDataStr1));
192 216
193 std::wstring name_empty(L"name_empty"); 217 std::wstring name_empty(L"name_empty");
194 ASSERT_EQ(ERROR_SUCCESS, RegSetValueEx(key.Handle(), name_empty.c_str(), NULL, 218 ASSERT_EQ(ERROR_SUCCESS, RegSetValueEx(key.Handle(), name_empty.c_str(), NULL,
195 REG_SZ, NULL, 0)); 219 REG_SZ, NULL, 0));
196 220
197 std::wstring data(kDataStr2); 221 std::wstring data(kDataStr2);
198 scoped_ptr<SetRegValueWorkItem> work_item1( 222 scoped_ptr<SetRegValueWorkItem> work_item1(
199 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 223 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
200 name, data, true)); 224 parent_key,
225 WorkItem::kWow64Default,
226 name,
227 data,
228 true));
201 scoped_ptr<SetRegValueWorkItem> work_item2( 229 scoped_ptr<SetRegValueWorkItem> work_item2(
202 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 230 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
203 name_empty, data, true)); 231 parent_key,
232 WorkItem::kWow64Default,
233 name_empty,
234 data,
235 true));
204 236
205 EXPECT_TRUE(work_item1->Do()); 237 EXPECT_TRUE(work_item1->Do());
206 EXPECT_TRUE(work_item2->Do()); 238 EXPECT_TRUE(work_item2->Do());
207 239
208 std::wstring read_out; 240 std::wstring read_out;
209 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); 241 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
210 EXPECT_EQ(0, read_out.compare(kDataStr2)); 242 EXPECT_EQ(0, read_out.compare(kDataStr2));
211 243
212 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_empty.c_str(), &read_out)); 244 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_empty.c_str(), &read_out));
213 EXPECT_EQ(0, read_out.compare(kDataStr2)); 245 EXPECT_EQ(0, read_out.compare(kDataStr2));
(...skipping 10 matching lines...) Expand all
224 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_empty.c_str(), NULL, &size, 256 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_empty.c_str(), NULL, &size,
225 &type)); 257 &type));
226 EXPECT_EQ(REG_SZ, type); 258 EXPECT_EQ(REG_SZ, type);
227 EXPECT_EQ(0, size); 259 EXPECT_EQ(0, size);
228 260
229 // Now test REG_DWORD value. 261 // Now test REG_DWORD value.
230 // Write data to the value we are going to set. 262 // Write data to the value we are going to set.
231 name.assign(kNameDword); 263 name.assign(kNameDword);
232 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1)); 264 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1));
233 scoped_ptr<SetRegValueWorkItem> work_item3( 265 scoped_ptr<SetRegValueWorkItem> work_item3(
234 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, name, 266 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
235 dword2, true)); 267 parent_key,
268 WorkItem::kWow64Default,
269 name,
270 dword2,
271 true));
236 EXPECT_TRUE(work_item3->Do()); 272 EXPECT_TRUE(work_item3->Do());
237 273
238 DWORD read_dword; 274 DWORD read_dword;
239 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); 275 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
240 EXPECT_EQ(read_dword, dword2); 276 EXPECT_EQ(read_dword, dword2);
241 277
242 work_item3->Rollback(); 278 work_item3->Rollback();
243 EXPECT_TRUE(key.HasValue(name.c_str())); 279 EXPECT_TRUE(key.HasValue(name.c_str()));
244 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); 280 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
245 EXPECT_EQ(read_dword, dword1); 281 EXPECT_EQ(read_dword, dword1);
246 } 282 }
247 283
248 // Write a value to a non-existing key. This should fail. 284 // Write a value to a non-existing key. This should fail.
249 TEST_F(SetRegValueWorkItemTest, WriteNonExistingKey) { 285 TEST_F(SetRegValueWorkItemTest, WriteNonExistingKey) {
250 RegKey key; 286 RegKey key;
251 287
252 std::wstring parent_key(kTestRoot); 288 std::wstring parent_key(kTestRoot);
253 parent_key.append(&base::FilePath::kSeparators[0], 1); 289 parent_key.append(&base::FilePath::kSeparators[0], 1);
254 parent_key.append(L"WriteNonExistingKey"); 290 parent_key.append(L"WriteNonExistingKey");
255 291
256 std::wstring name(L"name"); 292 std::wstring name(L"name");
257 std::wstring data(kDataStr1); 293 std::wstring data(kDataStr1);
258 scoped_ptr<SetRegValueWorkItem> work_item( 294 scoped_ptr<SetRegValueWorkItem> work_item(
259 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 295 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
260 name, data, false)); 296 parent_key,
297 WorkItem::kWow64Default,
298 name,
299 data,
300 false));
261 EXPECT_FALSE(work_item->Do()); 301 EXPECT_FALSE(work_item->Do());
262 302
263 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, 303 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
264 parent_key, name, dword1, false)); 304 parent_key,
305 WorkItem::kWow64Default,
306 name,
307 dword1,
308 false));
265 EXPECT_FALSE(work_item->Do()); 309 EXPECT_FALSE(work_item->Do());
266 } 310 }
OLDNEW
« no previous file with comments | « chrome/installer/util/set_reg_value_work_item.cc ('k') | chrome/installer/util/shell_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698