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 <windows.h> | 5 #include <windows.h> |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/win/registry.h" | 10 #include "base/win/registry.h" |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 DWORD read_dword; | 68 DWORD read_dword; |
69 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out)); | 69 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out)); |
70 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword)); | 70 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword)); |
71 EXPECT_EQ(read_out, data_str_1); | 71 EXPECT_EQ(read_out, data_str_1); |
72 EXPECT_EQ(read_dword, dword1); | 72 EXPECT_EQ(read_dword, dword1); |
73 | 73 |
74 work_item1->Rollback(); | 74 work_item1->Rollback(); |
75 work_item2->Rollback(); | 75 work_item2->Rollback(); |
76 | 76 |
77 // Rollback should delete the value. | 77 // Rollback should delete the value. |
78 EXPECT_FALSE(key.ValueExists(name_str.c_str())); | 78 EXPECT_FALSE(key.HasValue(name_str.c_str())); |
79 EXPECT_FALSE(key.ValueExists(name_dword.c_str())); | 79 EXPECT_FALSE(key.HasValue(name_dword.c_str())); |
80 } | 80 } |
81 | 81 |
82 // Write a new value with overwrite flag. The value should be set. | 82 // Write a new value with overwrite flag. The value should be set. |
83 TEST_F(SetRegValueWorkItemTest, WriteNewOverwrite) { | 83 TEST_F(SetRegValueWorkItemTest, WriteNewOverwrite) { |
84 RegKey key; | 84 RegKey key; |
85 | 85 |
86 std::wstring parent_key(test_root); | 86 std::wstring parent_key(test_root); |
87 file_util::AppendToPath(&parent_key, L"WriteNewOverwrite"); | 87 file_util::AppendToPath(&parent_key, L"WriteNewOverwrite"); |
88 ASSERT_EQ(ERROR_SUCCESS, | 88 ASSERT_EQ(ERROR_SUCCESS, |
89 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ)); | 89 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ)); |
(...skipping 16 matching lines...) Expand all Loading... |
106 DWORD read_dword; | 106 DWORD read_dword; |
107 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out)); | 107 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out)); |
108 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword)); | 108 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword)); |
109 EXPECT_EQ(read_out, data_str_1); | 109 EXPECT_EQ(read_out, data_str_1); |
110 EXPECT_EQ(read_dword, dword1); | 110 EXPECT_EQ(read_dword, dword1); |
111 | 111 |
112 work_item1->Rollback(); | 112 work_item1->Rollback(); |
113 work_item2->Rollback(); | 113 work_item2->Rollback(); |
114 | 114 |
115 // Rollback should delete the value. | 115 // Rollback should delete the value. |
116 EXPECT_FALSE(key.ValueExists(name_str.c_str())); | 116 EXPECT_FALSE(key.HasValue(name_str.c_str())); |
117 EXPECT_FALSE(key.ValueExists(name_dword.c_str())); | 117 EXPECT_FALSE(key.HasValue(name_dword.c_str())); |
118 } | 118 } |
119 | 119 |
120 // Write to an existing value without overwrite flag. There should be | 120 // Write to an existing value without overwrite flag. There should be |
121 // no change. | 121 // no change. |
122 TEST_F(SetRegValueWorkItemTest, WriteExistingNonOverwrite) { | 122 TEST_F(SetRegValueWorkItemTest, WriteExistingNonOverwrite) { |
123 RegKey key; | 123 RegKey key; |
124 | 124 |
125 std::wstring parent_key(test_root); | 125 std::wstring parent_key(test_root); |
126 file_util::AppendToPath(&parent_key, L"WriteExistingNonOverwrite"); | 126 file_util::AppendToPath(&parent_key, L"WriteExistingNonOverwrite"); |
127 ASSERT_EQ(ERROR_SUCCESS, | 127 ASSERT_EQ(ERROR_SUCCESS, |
128 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), | 128 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), |
129 KEY_READ | KEY_SET_VALUE)); | 129 KEY_READ | KEY_SET_VALUE)); |
130 | 130 |
131 // First test REG_SZ value. | 131 // First test REG_SZ value. |
132 // Write data to the value we are going to set. | 132 // Write data to the value we are going to set. |
133 std::wstring name(L"name_str"); | 133 std::wstring name(L"name_str"); |
134 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), data_str_1)); | 134 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), data_str_1)); |
135 | 135 |
136 std::wstring data(data_str_2); | 136 std::wstring data(data_str_2); |
137 scoped_ptr<SetRegValueWorkItem> work_item( | 137 scoped_ptr<SetRegValueWorkItem> work_item( |
138 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, | 138 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, |
139 name, data, false)); | 139 name, data, false)); |
140 EXPECT_TRUE(work_item->Do()); | 140 EXPECT_TRUE(work_item->Do()); |
141 | 141 |
142 std::wstring read_out; | 142 std::wstring read_out; |
143 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); | 143 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); |
144 EXPECT_EQ(0, read_out.compare(data_str_1)); | 144 EXPECT_EQ(0, read_out.compare(data_str_1)); |
145 | 145 |
146 work_item->Rollback(); | 146 work_item->Rollback(); |
147 EXPECT_TRUE(key.ValueExists(name.c_str())); | 147 EXPECT_TRUE(key.HasValue(name.c_str())); |
148 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); | 148 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); |
149 EXPECT_EQ(read_out, data_str_1); | 149 EXPECT_EQ(read_out, data_str_1); |
150 | 150 |
151 // Now test REG_DWORD value. | 151 // Now test REG_DWORD value. |
152 // Write data to the value we are going to set. | 152 // Write data to the value we are going to set. |
153 name.assign(L"name_dword"); | 153 name.assign(L"name_dword"); |
154 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1)); | 154 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1)); |
155 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, | 155 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, |
156 parent_key, name, dword2, false)); | 156 parent_key, name, dword2, false)); |
157 EXPECT_TRUE(work_item->Do()); | 157 EXPECT_TRUE(work_item->Do()); |
158 | 158 |
159 DWORD read_dword; | 159 DWORD read_dword; |
160 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); | 160 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); |
161 EXPECT_EQ(read_dword, dword1); | 161 EXPECT_EQ(read_dword, dword1); |
162 | 162 |
163 work_item->Rollback(); | 163 work_item->Rollback(); |
164 EXPECT_TRUE(key.ValueExists(name.c_str())); | 164 EXPECT_TRUE(key.HasValue(name.c_str())); |
165 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); | 165 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); |
166 EXPECT_EQ(read_dword, dword1); | 166 EXPECT_EQ(read_dword, dword1); |
167 } | 167 } |
168 | 168 |
169 // Write to an existing value with overwrite flag. The value should be | 169 // Write to an existing value with overwrite flag. The value should be |
170 // overwritten. | 170 // overwritten. |
171 TEST_F(SetRegValueWorkItemTest, WriteExistingOverwrite) { | 171 TEST_F(SetRegValueWorkItemTest, WriteExistingOverwrite) { |
172 RegKey key; | 172 RegKey key; |
173 | 173 |
174 std::wstring parent_key(test_root); | 174 std::wstring parent_key(test_root); |
(...skipping 25 matching lines...) Expand all Loading... |
200 std::wstring read_out; | 200 std::wstring read_out; |
201 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); | 201 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); |
202 EXPECT_EQ(0, read_out.compare(data_str_2)); | 202 EXPECT_EQ(0, read_out.compare(data_str_2)); |
203 | 203 |
204 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_empty.c_str(), &read_out)); | 204 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_empty.c_str(), &read_out)); |
205 EXPECT_EQ(0, read_out.compare(data_str_2)); | 205 EXPECT_EQ(0, read_out.compare(data_str_2)); |
206 | 206 |
207 work_item1->Rollback(); | 207 work_item1->Rollback(); |
208 work_item2->Rollback(); | 208 work_item2->Rollback(); |
209 | 209 |
210 EXPECT_TRUE(key.ValueExists(name.c_str())); | 210 EXPECT_TRUE(key.HasValue(name.c_str())); |
211 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); | 211 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out)); |
212 EXPECT_EQ(read_out, data_str_1); | 212 EXPECT_EQ(read_out, data_str_1); |
213 | 213 |
214 DWORD type = 0; | 214 DWORD type = 0; |
215 DWORD size = 0; | 215 DWORD size = 0; |
216 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_empty.c_str(), NULL, &size, | 216 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_empty.c_str(), NULL, &size, |
217 &type)); | 217 &type)); |
218 EXPECT_EQ(REG_SZ, type); | 218 EXPECT_EQ(REG_SZ, type); |
219 EXPECT_EQ(0, size); | 219 EXPECT_EQ(0, size); |
220 | 220 |
221 // Now test REG_DWORD value. | 221 // Now test REG_DWORD value. |
222 // Write data to the value we are going to set. | 222 // Write data to the value we are going to set. |
223 name.assign(L"name_dword"); | 223 name.assign(L"name_dword"); |
224 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1)); | 224 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1)); |
225 scoped_ptr<SetRegValueWorkItem> work_item3( | 225 scoped_ptr<SetRegValueWorkItem> work_item3( |
226 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, name, | 226 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, name, |
227 dword2, true)); | 227 dword2, true)); |
228 EXPECT_TRUE(work_item3->Do()); | 228 EXPECT_TRUE(work_item3->Do()); |
229 | 229 |
230 DWORD read_dword; | 230 DWORD read_dword; |
231 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); | 231 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); |
232 EXPECT_EQ(read_dword, dword2); | 232 EXPECT_EQ(read_dword, dword2); |
233 | 233 |
234 work_item3->Rollback(); | 234 work_item3->Rollback(); |
235 EXPECT_TRUE(key.ValueExists(name.c_str())); | 235 EXPECT_TRUE(key.HasValue(name.c_str())); |
236 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); | 236 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword)); |
237 EXPECT_EQ(read_dword, dword1); | 237 EXPECT_EQ(read_dword, dword1); |
238 } | 238 } |
239 | 239 |
240 // Write a value to a non-existing key. This should fail. | 240 // Write a value to a non-existing key. This should fail. |
241 TEST_F(SetRegValueWorkItemTest, WriteNonExistingKey) { | 241 TEST_F(SetRegValueWorkItemTest, WriteNonExistingKey) { |
242 RegKey key; | 242 RegKey key; |
243 | 243 |
244 std::wstring parent_key(test_root); | 244 std::wstring parent_key(test_root); |
245 file_util::AppendToPath(&parent_key, L"WriteNonExistingKey"); | 245 file_util::AppendToPath(&parent_key, L"WriteNonExistingKey"); |
246 | 246 |
247 std::wstring name(L"name"); | 247 std::wstring name(L"name"); |
248 std::wstring data(data_str_1); | 248 std::wstring data(data_str_1); |
249 scoped_ptr<SetRegValueWorkItem> work_item( | 249 scoped_ptr<SetRegValueWorkItem> work_item( |
250 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, | 250 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, |
251 name, data, false)); | 251 name, data, false)); |
252 EXPECT_FALSE(work_item->Do()); | 252 EXPECT_FALSE(work_item->Do()); |
253 | 253 |
254 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, | 254 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, |
255 parent_key, name, dword1, false)); | 255 parent_key, name, dword1, false)); |
256 EXPECT_FALSE(work_item->Do()); | 256 EXPECT_FALSE(work_item->Do()); |
257 } | 257 } |
OLD | NEW |