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

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

Issue 7890069: Added CopyRegKeyWorkItem in support of IE low rights policy fixes. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: sync'd to ToT again Created 9 years, 3 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/registry_test_data.h ('k') | chrome/installer/util/work_item.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/installer/util/registry_test_data.h"
6
7 #include "base/logging.h"
8 #include "base/win/registry.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 using base::win::RegKey;
12
13 RegistryTestData::RegistryTestData()
14 : root_key_(NULL) {
15 }
16
17 RegistryTestData::~RegistryTestData() {
18 Reset();
19 }
20
21 // static
22 bool RegistryTestData::DeleteKey(HKEY root_key, const wchar_t* path) {
23 LONG result = ERROR_SUCCESS;
24 if (root_key != NULL && path != NULL && *path != L'\0') {
25 result = RegKey(root_key, L"", KEY_QUERY_VALUE).DeleteKey(path);
26 if (result == ERROR_FILE_NOT_FOUND) {
27 result = ERROR_SUCCESS;
28 } else {
29 DLOG_IF(DFATAL, result != ERROR_SUCCESS)
30 << "Failed to delete registry key " << path << ", result: " << result;
31 }
32 }
33 return result == ERROR_SUCCESS;
34 }
35
36 void RegistryTestData::Reset() {
37 // Clean up behind a previous use (ignore failures).
38 DeleteKey(root_key_, base_path_.c_str());
39
40 // Forget state.
41 root_key_ = NULL;
42 base_path_.clear();
43 empty_key_path_.clear();
44 non_empty_key_path_.clear();
45 }
46
47 bool RegistryTestData::Initialize(HKEY root_key, const wchar_t* base_path) {
48 LONG result = ERROR_SUCCESS;
49
50 Reset();
51
52 // Take over the new registry location.
53 if (DeleteKey(root_key, base_path)) {
54 // Take on the new values.
55 root_key_ = root_key;
56 base_path_.assign(base_path);
57
58 // Create our data.
59 empty_key_path_.assign(base_path_).append(L"\\EmptyKey");
60 non_empty_key_path_.assign(base_path_).append(L"\\NonEmptyKey");
61
62 RegKey key;
63
64 result = key.Create(root_key_, empty_key_path_.c_str(), KEY_QUERY_VALUE);
65 if (result == ERROR_SUCCESS)
66 result = key.Create(root_key_, non_empty_key_path_.c_str(), KEY_WRITE);
67 if (result == ERROR_SUCCESS)
68 result = key.WriteValue(NULL, non_empty_key_path_.c_str());
69 if (result == ERROR_SUCCESS)
70 result = key.CreateKey(L"SubKey", KEY_WRITE);
71 if (result == ERROR_SUCCESS)
72 result = key.WriteValue(L"SomeValue", 1UL);
73 DLOG_IF(DFATAL, result != ERROR_SUCCESS)
74 << "Failed to create test registry data based at " << base_path_
75 << ", result: " << result;
76 } else {
77 result = ERROR_INVALID_PARAMETER;
78 }
79
80 return result == ERROR_SUCCESS;
81 }
82
83 void RegistryTestData::ExpectMatchesNonEmptyKey(HKEY root_key,
84 const wchar_t* path) {
85 RegKey key;
86
87 EXPECT_EQ(ERROR_SUCCESS, key.Open(root_key, path, KEY_READ));
88 std::wstring str_value;
89 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(NULL, &str_value));
90 EXPECT_EQ(non_empty_key_path_, str_value);
91 EXPECT_EQ(ERROR_SUCCESS, key.OpenKey(L"Subkey", KEY_READ));
92 DWORD dw_value = 0;
93 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(L"SomeValue", &dw_value));
94 EXPECT_EQ(1UL, dw_value);
95 }
96
97 // static
98 void RegistryTestData::ExpectEmptyKey(HKEY root_key, const wchar_t* path) {
99 DWORD num_subkeys = 0;
100 DWORD num_values = 0;
101 RegKey key;
102 EXPECT_EQ(ERROR_SUCCESS, key.Open(root_key, path, KEY_READ));
103 EXPECT_EQ(ERROR_SUCCESS,
104 RegQueryInfoKey(key.Handle(), NULL, NULL, NULL, &num_subkeys,
105 NULL, NULL, &num_values, NULL, NULL, NULL, NULL));
106 EXPECT_EQ(0UL, num_subkeys);
107 EXPECT_EQ(0UL, num_values);
108 }
OLDNEW
« no previous file with comments | « chrome/installer/util/registry_test_data.h ('k') | chrome/installer/util/work_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698