OLD | NEW |
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 <userenv.h> | 8 #include <userenv.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 RegKey temp_hklm_hive_key_; | 163 RegKey temp_hklm_hive_key_; |
164 | 164 |
165 DISALLOW_COPY_AND_ASSIGN(ScopedGroupPolicyRegistrySandbox); | 165 DISALLOW_COPY_AND_ASSIGN(ScopedGroupPolicyRegistrySandbox); |
166 }; | 166 }; |
167 | 167 |
168 // A test harness that feeds policy via the Chrome GPO registry subtree. | 168 // A test harness that feeds policy via the Chrome GPO registry subtree. |
169 class RegistryTestHarness : public PolicyProviderTestHarness, | 169 class RegistryTestHarness : public PolicyProviderTestHarness, |
170 public AppliedGPOListProvider { | 170 public AppliedGPOListProvider { |
171 public: | 171 public: |
172 RegistryTestHarness(HKEY hive, PolicyScope scope); | 172 RegistryTestHarness(HKEY hive, PolicyScope scope); |
173 virtual ~RegistryTestHarness(); | 173 ~RegistryTestHarness() override; |
174 | 174 |
175 // PolicyProviderTestHarness: | 175 // PolicyProviderTestHarness: |
176 virtual void SetUp() override; | 176 void SetUp() override; |
177 | 177 |
178 virtual ConfigurationPolicyProvider* CreateProvider( | 178 ConfigurationPolicyProvider* CreateProvider( |
179 SchemaRegistry* registry, | 179 SchemaRegistry* registry, |
180 scoped_refptr<base::SequencedTaskRunner> task_runner) override; | 180 scoped_refptr<base::SequencedTaskRunner> task_runner) override; |
181 | 181 |
182 virtual void InstallEmptyPolicy() override; | 182 void InstallEmptyPolicy() override; |
183 virtual void InstallStringPolicy(const std::string& policy_name, | 183 void InstallStringPolicy(const std::string& policy_name, |
184 const std::string& policy_value) override; | 184 const std::string& policy_value) override; |
185 virtual void InstallIntegerPolicy(const std::string& policy_name, | 185 void InstallIntegerPolicy(const std::string& policy_name, |
186 int policy_value) override; | 186 int policy_value) override; |
187 virtual void InstallBooleanPolicy(const std::string& policy_name, | 187 void InstallBooleanPolicy(const std::string& policy_name, |
188 bool policy_value) override; | 188 bool policy_value) override; |
189 virtual void InstallStringListPolicy( | 189 void InstallStringListPolicy(const std::string& policy_name, |
190 const std::string& policy_name, | 190 const base::ListValue* policy_value) override; |
191 const base::ListValue* policy_value) override; | 191 void InstallDictionaryPolicy( |
192 virtual void InstallDictionaryPolicy( | |
193 const std::string& policy_name, | 192 const std::string& policy_name, |
194 const base::DictionaryValue* policy_value) override; | 193 const base::DictionaryValue* policy_value) override; |
195 virtual void Install3rdPartyPolicy( | 194 void Install3rdPartyPolicy(const base::DictionaryValue* policies) override; |
196 const base::DictionaryValue* policies) override; | |
197 | 195 |
198 // AppliedGPOListProvider: | 196 // AppliedGPOListProvider: |
199 virtual DWORD GetAppliedGPOList(DWORD flags, | 197 DWORD GetAppliedGPOList(DWORD flags, |
200 LPCTSTR machine_name, | 198 LPCTSTR machine_name, |
201 PSID sid_user, | 199 PSID sid_user, |
202 GUID* extension_guid, | 200 GUID* extension_guid, |
203 PGROUP_POLICY_OBJECT* gpo_list) override; | 201 PGROUP_POLICY_OBJECT* gpo_list) override; |
204 virtual BOOL FreeGPOList(PGROUP_POLICY_OBJECT gpo_list) override; | 202 BOOL FreeGPOList(PGROUP_POLICY_OBJECT gpo_list) override; |
205 | 203 |
206 // Creates a harness instance that will install policy in HKCU or HKLM, | 204 // Creates a harness instance that will install policy in HKCU or HKLM, |
207 // respectively. | 205 // respectively. |
208 static PolicyProviderTestHarness* CreateHKCU(); | 206 static PolicyProviderTestHarness* CreateHKCU(); |
209 static PolicyProviderTestHarness* CreateHKLM(); | 207 static PolicyProviderTestHarness* CreateHKLM(); |
210 | 208 |
211 private: | 209 private: |
212 HKEY hive_; | 210 HKEY hive_; |
213 | 211 |
214 ScopedGroupPolicyRegistrySandbox registry_sandbox_; | 212 ScopedGroupPolicyRegistrySandbox registry_sandbox_; |
215 | 213 |
216 DISALLOW_COPY_AND_ASSIGN(RegistryTestHarness); | 214 DISALLOW_COPY_AND_ASSIGN(RegistryTestHarness); |
217 }; | 215 }; |
218 | 216 |
219 // A test harness that generates PReg files for the provider to read. | 217 // A test harness that generates PReg files for the provider to read. |
220 class PRegTestHarness : public PolicyProviderTestHarness, | 218 class PRegTestHarness : public PolicyProviderTestHarness, |
221 public AppliedGPOListProvider { | 219 public AppliedGPOListProvider { |
222 public: | 220 public: |
223 PRegTestHarness(); | 221 PRegTestHarness(); |
224 virtual ~PRegTestHarness(); | 222 ~PRegTestHarness() override; |
225 | 223 |
226 // PolicyProviderTestHarness: | 224 // PolicyProviderTestHarness: |
227 virtual void SetUp() override; | 225 void SetUp() override; |
228 | 226 |
229 virtual ConfigurationPolicyProvider* CreateProvider( | 227 ConfigurationPolicyProvider* CreateProvider( |
230 SchemaRegistry* registry, | 228 SchemaRegistry* registry, |
231 scoped_refptr<base::SequencedTaskRunner> task_runner) override; | 229 scoped_refptr<base::SequencedTaskRunner> task_runner) override; |
232 | 230 |
233 virtual void InstallEmptyPolicy() override; | 231 void InstallEmptyPolicy() override; |
234 virtual void InstallStringPolicy(const std::string& policy_name, | 232 void InstallStringPolicy(const std::string& policy_name, |
235 const std::string& policy_value) override; | 233 const std::string& policy_value) override; |
236 virtual void InstallIntegerPolicy(const std::string& policy_name, | 234 void InstallIntegerPolicy(const std::string& policy_name, |
237 int policy_value) override; | 235 int policy_value) override; |
238 virtual void InstallBooleanPolicy(const std::string& policy_name, | 236 void InstallBooleanPolicy(const std::string& policy_name, |
239 bool policy_value) override; | 237 bool policy_value) override; |
240 virtual void InstallStringListPolicy( | 238 void InstallStringListPolicy(const std::string& policy_name, |
241 const std::string& policy_name, | 239 const base::ListValue* policy_value) override; |
242 const base::ListValue* policy_value) override; | 240 void InstallDictionaryPolicy( |
243 virtual void InstallDictionaryPolicy( | |
244 const std::string& policy_name, | 241 const std::string& policy_name, |
245 const base::DictionaryValue* policy_value) override; | 242 const base::DictionaryValue* policy_value) override; |
246 virtual void Install3rdPartyPolicy( | 243 void Install3rdPartyPolicy(const base::DictionaryValue* policies) override; |
247 const base::DictionaryValue* policies) override; | |
248 | 244 |
249 // AppliedGPOListProvider: | 245 // AppliedGPOListProvider: |
250 virtual DWORD GetAppliedGPOList(DWORD flags, | 246 DWORD GetAppliedGPOList(DWORD flags, |
251 LPCTSTR machine_name, | 247 LPCTSTR machine_name, |
252 PSID sid_user, | 248 PSID sid_user, |
253 GUID* extension_guid, | 249 GUID* extension_guid, |
254 PGROUP_POLICY_OBJECT* gpo_list) override; | 250 PGROUP_POLICY_OBJECT* gpo_list) override; |
255 virtual BOOL FreeGPOList(PGROUP_POLICY_OBJECT gpo_list) override; | 251 BOOL FreeGPOList(PGROUP_POLICY_OBJECT gpo_list) override; |
256 | 252 |
257 // Creates a harness instance. | 253 // Creates a harness instance. |
258 static PolicyProviderTestHarness* Create(); | 254 static PolicyProviderTestHarness* Create(); |
259 | 255 |
260 private: | 256 private: |
261 // Helper to append a base::string16 to an uint8 buffer. | 257 // Helper to append a base::string16 to an uint8 buffer. |
262 static void AppendChars(std::vector<uint8>* buffer, | 258 static void AppendChars(std::vector<uint8>* buffer, |
263 const base::string16& chars); | 259 const base::string16& chars); |
264 | 260 |
265 // Appends a record with the given fields to the PReg file. | 261 // Appends a record with the given fields to the PReg file. |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 class PolicyLoaderWinTest : public PolicyTestBase, | 689 class PolicyLoaderWinTest : public PolicyTestBase, |
694 public AppliedGPOListProvider { | 690 public AppliedGPOListProvider { |
695 protected: | 691 protected: |
696 // The policy key this tests places data under. This must match the data | 692 // The policy key this tests places data under. This must match the data |
697 // files in chrome/test/data/policy/gpo. | 693 // files in chrome/test/data/policy/gpo. |
698 static const base::char16 kTestPolicyKey[]; | 694 static const base::char16 kTestPolicyKey[]; |
699 | 695 |
700 PolicyLoaderWinTest() | 696 PolicyLoaderWinTest() |
701 : gpo_list_(NULL), | 697 : gpo_list_(NULL), |
702 gpo_list_status_(ERROR_ACCESS_DENIED) {} | 698 gpo_list_status_(ERROR_ACCESS_DENIED) {} |
703 virtual ~PolicyLoaderWinTest() {} | 699 ~PolicyLoaderWinTest() override {} |
704 | 700 |
705 virtual void SetUp() override { | 701 void SetUp() override { |
706 base::win::SetDomainStateForTesting(false); | 702 base::win::SetDomainStateForTesting(false); |
707 PolicyTestBase::SetUp(); | 703 PolicyTestBase::SetUp(); |
708 | 704 |
709 ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir_)); | 705 ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir_)); |
710 test_data_dir_ = test_data_dir_.AppendASCII("chrome") | 706 test_data_dir_ = test_data_dir_.AppendASCII("chrome") |
711 .AppendASCII("test") | 707 .AppendASCII("test") |
712 .AppendASCII("data") | 708 .AppendASCII("data") |
713 .AppendASCII("policy") | 709 .AppendASCII("policy") |
714 .AppendASCII("gpo"); | 710 .AppendASCII("gpo"); |
715 | 711 |
716 gpo_list_provider_ = this; | 712 gpo_list_provider_ = this; |
717 } | 713 } |
718 | 714 |
719 // AppliedGPOListProvider: | 715 // AppliedGPOListProvider: |
720 virtual DWORD GetAppliedGPOList(DWORD flags, | 716 DWORD GetAppliedGPOList(DWORD flags, |
721 LPCTSTR machine_name, | 717 LPCTSTR machine_name, |
722 PSID sid_user, | 718 PSID sid_user, |
723 GUID* extension_guid, | 719 GUID* extension_guid, |
724 PGROUP_POLICY_OBJECT* gpo_list) override { | 720 PGROUP_POLICY_OBJECT* gpo_list) override { |
725 *gpo_list = gpo_list_; | 721 *gpo_list = gpo_list_; |
726 return gpo_list_status_; | 722 return gpo_list_status_; |
727 } | 723 } |
728 virtual BOOL FreeGPOList(PGROUP_POLICY_OBJECT gpo_list) override { | 724 BOOL FreeGPOList(PGROUP_POLICY_OBJECT gpo_list) override { |
729 return TRUE; | 725 return TRUE; |
730 } | 726 } |
731 | 727 |
732 void InitGPO(GROUP_POLICY_OBJECT* gpo, | 728 void InitGPO(GROUP_POLICY_OBJECT* gpo, |
733 DWORD options, | 729 DWORD options, |
734 const base::FilePath& path, | 730 const base::FilePath& path, |
735 GROUP_POLICY_OBJECT* next, | 731 GROUP_POLICY_OBJECT* next, |
736 GROUP_POLICY_OBJECT* prev) { | 732 GROUP_POLICY_OBJECT* prev) { |
737 memset(gpo, 0, sizeof(GROUP_POLICY_OBJECT)); | 733 memset(gpo, 0, sizeof(GROUP_POLICY_OBJECT)); |
738 gpo->dwOptions = options; | 734 gpo->dwOptions = options; |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 PolicyMap& expected_policy = expected.Get(ns); | 1219 PolicyMap& expected_policy = expected.Get(ns); |
1224 expected_policy.Set("alternative_browser_path", | 1220 expected_policy.Set("alternative_browser_path", |
1225 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 1221 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
1226 new base::StringValue("c:\\legacy\\browser.exe"), NULL); | 1222 new base::StringValue("c:\\legacy\\browser.exe"), NULL); |
1227 expected_policy.Set("url_list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 1223 expected_policy.Set("url_list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
1228 list.DeepCopy(), NULL); | 1224 list.DeepCopy(), NULL); |
1229 EXPECT_TRUE(Matches(expected)); | 1225 EXPECT_TRUE(Matches(expected)); |
1230 } | 1226 } |
1231 | 1227 |
1232 } // namespace policy | 1228 } // namespace policy |
OLD | NEW |