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