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

Side by Side Diff: components/policy/core/common/policy_loader_win_unittest.cc

Issue 2539363004: Make base::Value::TYPE a scoped enum. (Closed)
Patch Set: Rebase Created 4 years 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
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 "components/policy/core/common/policy_loader_win.h" 5 #include "components/policy/core/common/policy_loader_win.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <userenv.h> 10 #include <userenv.h>
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 // are stored as strings), and can only be retrieved if a corresponding schema 65 // are stored as strings), and can only be retrieved if a corresponding schema
66 // is written. 66 // is written.
67 bool InstallValue(const base::Value& value, 67 bool InstallValue(const base::Value& value,
68 HKEY hive, 68 HKEY hive,
69 const base::string16& path, 69 const base::string16& path,
70 const base::string16& name) { 70 const base::string16& name) {
71 // KEY_ALL_ACCESS causes the ctor to create the key if it does not exist yet. 71 // KEY_ALL_ACCESS causes the ctor to create the key if it does not exist yet.
72 RegKey key(hive, path.c_str(), KEY_ALL_ACCESS); 72 RegKey key(hive, path.c_str(), KEY_ALL_ACCESS);
73 EXPECT_TRUE(key.Valid()); 73 EXPECT_TRUE(key.Valid());
74 switch (value.GetType()) { 74 switch (value.GetType()) {
75 case base::Value::TYPE_NULL: 75 case base::Value::Type::NONE:
76 return key.WriteValue(name.c_str(), L"") == ERROR_SUCCESS; 76 return key.WriteValue(name.c_str(), L"") == ERROR_SUCCESS;
77 77
78 case base::Value::TYPE_BOOLEAN: { 78 case base::Value::Type::BOOLEAN: {
79 bool bool_value; 79 bool bool_value;
80 if (!value.GetAsBoolean(&bool_value)) 80 if (!value.GetAsBoolean(&bool_value))
81 return false; 81 return false;
82 return key.WriteValue(name.c_str(), bool_value ? 1 : 0) == ERROR_SUCCESS; 82 return key.WriteValue(name.c_str(), bool_value ? 1 : 0) == ERROR_SUCCESS;
83 } 83 }
84 84
85 case base::Value::TYPE_INTEGER: { 85 case base::Value::Type::INTEGER: {
86 int int_value; 86 int int_value;
87 if (!value.GetAsInteger(&int_value)) 87 if (!value.GetAsInteger(&int_value))
88 return false; 88 return false;
89 return key.WriteValue(name.c_str(), int_value) == ERROR_SUCCESS; 89 return key.WriteValue(name.c_str(), int_value) == ERROR_SUCCESS;
90 } 90 }
91 91
92 case base::Value::TYPE_DOUBLE: { 92 case base::Value::Type::DOUBLE: {
93 double double_value; 93 double double_value;
94 if (!value.GetAsDouble(&double_value)) 94 if (!value.GetAsDouble(&double_value))
95 return false; 95 return false;
96 base::string16 str_value = 96 base::string16 str_value =
97 UTF8ToUTF16(base::DoubleToString(double_value)); 97 UTF8ToUTF16(base::DoubleToString(double_value));
98 return key.WriteValue(name.c_str(), str_value.c_str()) == ERROR_SUCCESS; 98 return key.WriteValue(name.c_str(), str_value.c_str()) == ERROR_SUCCESS;
99 } 99 }
100 100
101 case base::Value::TYPE_STRING: { 101 case base::Value::Type::STRING: {
102 base::string16 str_value; 102 base::string16 str_value;
103 if (!value.GetAsString(&str_value)) 103 if (!value.GetAsString(&str_value))
104 return false; 104 return false;
105 return key.WriteValue(name.c_str(), str_value.c_str()) == ERROR_SUCCESS; 105 return key.WriteValue(name.c_str(), str_value.c_str()) == ERROR_SUCCESS;
106 } 106 }
107 107
108 case base::Value::TYPE_DICTIONARY: { 108 case base::Value::Type::DICTIONARY: {
109 const base::DictionaryValue* sub_dict = NULL; 109 const base::DictionaryValue* sub_dict = NULL;
110 if (!value.GetAsDictionary(&sub_dict)) 110 if (!value.GetAsDictionary(&sub_dict))
111 return false; 111 return false;
112 for (base::DictionaryValue::Iterator it(*sub_dict); 112 for (base::DictionaryValue::Iterator it(*sub_dict);
113 !it.IsAtEnd(); it.Advance()) { 113 !it.IsAtEnd(); it.Advance()) {
114 if (!InstallValue(it.value(), hive, path + kPathSep + name, 114 if (!InstallValue(it.value(), hive, path + kPathSep + name,
115 UTF8ToUTF16(it.key()))) { 115 UTF8ToUTF16(it.key()))) {
116 return false; 116 return false;
117 } 117 }
118 } 118 }
119 return true; 119 return true;
120 } 120 }
121 121
122 case base::Value::TYPE_LIST: { 122 case base::Value::Type::LIST: {
123 const base::ListValue* list = NULL; 123 const base::ListValue* list = NULL;
124 if (!value.GetAsList(&list)) 124 if (!value.GetAsList(&list))
125 return false; 125 return false;
126 for (size_t i = 0; i < list->GetSize(); ++i) { 126 for (size_t i = 0; i < list->GetSize(); ++i) {
127 const base::Value* item; 127 const base::Value* item;
128 if (!list->Get(i, &item)) 128 if (!list->Get(i, &item))
129 return false; 129 return false;
130 if (!InstallValue(*item, hive, path + kPathSep + name, 130 if (!InstallValue(*item, hive, path + kPathSep + name,
131 base::UintToString16(i + 1))) { 131 base::UintToString16(i + 1))) {
132 return false; 132 return false;
133 } 133 }
134 } 134 }
135 return true; 135 return true;
136 } 136 }
137 137
138 case base::Value::TYPE_BINARY: 138 case base::Value::Type::BINARY:
139 return false; 139 return false;
140 } 140 }
141 NOTREACHED(); 141 NOTREACHED();
142 return false; 142 return false;
143 } 143 }
144 144
145 // This class provides sandboxing and mocking for the parts of the Windows 145 // This class provides sandboxing and mocking for the parts of the Windows
146 // Registry implementing Group Policy. It prepares two temporary sandbox keys, 146 // Registry implementing Group Policy. It prepares two temporary sandbox keys,
147 // one for HKLM and one for HKCU. A test's calls to the registry are redirected 147 // one for HKLM and one for HKCU. A test's calls to the registry are redirected
148 // by Windows to these sandboxes, allowing the tests to manipulate and access 148 // by Windows to these sandboxes, allowing the tests to manipulate and access
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 data.push_back(base::ByteSwapToLE16(L'\0')); 617 data.push_back(base::ByteSwapToLE16(L'\0'));
618 618
619 AppendRecordToPRegFile(path, key, REG_SZ, data.size() * sizeof(base::char16), 619 AppendRecordToPRegFile(path, key, REG_SZ, data.size() * sizeof(base::char16),
620 reinterpret_cast<uint8_t*>(data.data())); 620 reinterpret_cast<uint8_t*>(data.data()));
621 } 621 }
622 622
623 void PRegTestHarness::AppendPolicyToPRegFile(const base::string16& path, 623 void PRegTestHarness::AppendPolicyToPRegFile(const base::string16& path,
624 const std::string& key, 624 const std::string& key,
625 const base::Value* value) { 625 const base::Value* value) {
626 switch (value->GetType()) { 626 switch (value->GetType()) {
627 case base::Value::TYPE_BOOLEAN: { 627 case base::Value::Type::BOOLEAN: {
628 bool boolean_value = false; 628 bool boolean_value = false;
629 ASSERT_TRUE(value->GetAsBoolean(&boolean_value)); 629 ASSERT_TRUE(value->GetAsBoolean(&boolean_value));
630 AppendDWORDToPRegFile(path, key, boolean_value); 630 AppendDWORDToPRegFile(path, key, boolean_value);
631 break; 631 break;
632 } 632 }
633 case base::Value::TYPE_INTEGER: { 633 case base::Value::Type::INTEGER: {
634 int int_value = 0; 634 int int_value = 0;
635 ASSERT_TRUE(value->GetAsInteger(&int_value)); 635 ASSERT_TRUE(value->GetAsInteger(&int_value));
636 AppendDWORDToPRegFile(path, key, int_value); 636 AppendDWORDToPRegFile(path, key, int_value);
637 break; 637 break;
638 } 638 }
639 case base::Value::TYPE_DOUBLE: { 639 case base::Value::Type::DOUBLE: {
640 double double_value = 0; 640 double double_value = 0;
641 ASSERT_TRUE(value->GetAsDouble(&double_value)); 641 ASSERT_TRUE(value->GetAsDouble(&double_value));
642 AppendStringToPRegFile(path, key, base::DoubleToString(double_value)); 642 AppendStringToPRegFile(path, key, base::DoubleToString(double_value));
643 break; 643 break;
644 } 644 }
645 case base::Value::TYPE_STRING: { 645 case base::Value::Type::STRING: {
646 std::string string_value; 646 std::string string_value;
647 ASSERT_TRUE(value->GetAsString(&string_value)); 647 ASSERT_TRUE(value->GetAsString(&string_value));
648 AppendStringToPRegFile(path, key, string_value); 648 AppendStringToPRegFile(path, key, string_value);
649 break; 649 break;
650 } 650 }
651 case base::Value::TYPE_DICTIONARY: { 651 case base::Value::Type::DICTIONARY: {
652 base::string16 subpath = path + kPathSep + UTF8ToUTF16(key); 652 base::string16 subpath = path + kPathSep + UTF8ToUTF16(key);
653 const base::DictionaryValue* dict = NULL; 653 const base::DictionaryValue* dict = NULL;
654 ASSERT_TRUE(value->GetAsDictionary(&dict)); 654 ASSERT_TRUE(value->GetAsDictionary(&dict));
655 for (base::DictionaryValue::Iterator entry(*dict); !entry.IsAtEnd(); 655 for (base::DictionaryValue::Iterator entry(*dict); !entry.IsAtEnd();
656 entry.Advance()) { 656 entry.Advance()) {
657 AppendPolicyToPRegFile(subpath, entry.key(), &entry.value()); 657 AppendPolicyToPRegFile(subpath, entry.key(), &entry.value());
658 } 658 }
659 break; 659 break;
660 } 660 }
661 case base::Value::TYPE_LIST: { 661 case base::Value::Type::LIST: {
662 base::string16 subpath = path + kPathSep + UTF8ToUTF16(key); 662 base::string16 subpath = path + kPathSep + UTF8ToUTF16(key);
663 const base::ListValue* list = NULL; 663 const base::ListValue* list = NULL;
664 ASSERT_TRUE(value->GetAsList(&list)); 664 ASSERT_TRUE(value->GetAsList(&list));
665 for (size_t i = 0; i < list->GetSize(); ++i) { 665 for (size_t i = 0; i < list->GetSize(); ++i) {
666 const base::Value* entry = NULL; 666 const base::Value* entry = NULL;
667 ASSERT_TRUE(list->Get(i, &entry)); 667 ASSERT_TRUE(list->Get(i, &entry));
668 AppendPolicyToPRegFile(subpath, base::IntToString(i + 1), entry); 668 AppendPolicyToPRegFile(subpath, base::IntToString(i + 1), entry);
669 } 669 }
670 break; 670 break;
671 } 671 }
672 case base::Value::TYPE_BINARY: 672 case base::Value::Type::BINARY:
673 case base::Value::TYPE_NULL: { 673 case base::Value::Type::NONE: {
674 ADD_FAILURE(); 674 ADD_FAILURE();
675 break; 675 break;
676 } 676 }
677 } 677 }
678 } 678 }
679 679
680 } // namespace 680 } // namespace
681 681
682 // Instantiate abstract test case for basic policy reading tests. 682 // Instantiate abstract test case for basic policy reading tests.
683 INSTANTIATE_TEST_CASE_P( 683 INSTANTIATE_TEST_CASE_P(
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 expected.Get(ns_a).LoadFrom(&expected_a, POLICY_LEVEL_MANDATORY, 1185 expected.Get(ns_a).LoadFrom(&expected_a, POLICY_LEVEL_MANDATORY,
1186 POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM); 1186 POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM);
1187 base::DictionaryValue expected_b; 1187 base::DictionaryValue expected_b;
1188 expected_b.SetInteger("policy 1", 2); 1188 expected_b.SetInteger("policy 1", 2);
1189 expected.Get(ns_b).LoadFrom(&expected_b, POLICY_LEVEL_MANDATORY, 1189 expected.Get(ns_b).LoadFrom(&expected_b, POLICY_LEVEL_MANDATORY,
1190 POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM); 1190 POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM);
1191 EXPECT_TRUE(Matches(expected)); 1191 EXPECT_TRUE(Matches(expected));
1192 } 1192 }
1193 1193
1194 } // namespace policy 1194 } // namespace policy
OLDNEW
« no previous file with comments | « components/policy/core/common/mac_util_unittest.cc ('k') | components/policy/core/common/policy_test_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698