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 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 ASSERT_HRESULT_SUCCEEDED(RegOverridePredefKey(HKEY_CURRENT_USER, 0)); | 326 ASSERT_HRESULT_SUCCEEDED(RegOverridePredefKey(HKEY_CURRENT_USER, 0)); |
327 } | 327 } |
328 | 328 |
329 void ScopedGroupPolicyRegistrySandbox::DeleteKeys() { | 329 void ScopedGroupPolicyRegistrySandbox::DeleteKeys() { |
330 RegKey key(HKEY_CURRENT_USER, key_name_.c_str(), KEY_ALL_ACCESS); | 330 RegKey key(HKEY_CURRENT_USER, key_name_.c_str(), KEY_ALL_ACCESS); |
331 ASSERT_TRUE(key.Valid()); | 331 ASSERT_TRUE(key.Valid()); |
332 key.DeleteKey(L""); | 332 key.DeleteKey(L""); |
333 } | 333 } |
334 | 334 |
335 RegistryTestHarness::RegistryTestHarness(HKEY hive, PolicyScope scope) | 335 RegistryTestHarness::RegistryTestHarness(HKEY hive, PolicyScope scope) |
336 : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, scope), hive_(hive) {} | 336 : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, scope, |
| 337 POLICY_SOURCE_PLATFORM), |
| 338 hive_(hive) {} |
337 | 339 |
338 RegistryTestHarness::~RegistryTestHarness() {} | 340 RegistryTestHarness::~RegistryTestHarness() {} |
339 | 341 |
340 void RegistryTestHarness::SetUp() {} | 342 void RegistryTestHarness::SetUp() {} |
341 | 343 |
342 ConfigurationPolicyProvider* RegistryTestHarness::CreateProvider( | 344 ConfigurationPolicyProvider* RegistryTestHarness::CreateProvider( |
343 SchemaRegistry* registry, | 345 SchemaRegistry* registry, |
344 scoped_refptr<base::SequencedTaskRunner> task_runner) { | 346 scoped_refptr<base::SequencedTaskRunner> task_runner) { |
345 base::win::SetDomainStateForTesting(true); | 347 base::win::SetDomainStateForTesting(true); |
346 scoped_ptr<AsyncPolicyLoader> loader( | 348 scoped_ptr<AsyncPolicyLoader> loader( |
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
752 UTF8ToUTF16(test_keys::kKeyString).c_str(), | 754 UTF8ToUTF16(test_keys::kKeyString).c_str(), |
753 UTF8ToUTF16("registry").c_str()); | 755 UTF8ToUTF16("registry").c_str()); |
754 } | 756 } |
755 | 757 |
756 bool MatchesRegistrySentinel() { | 758 bool MatchesRegistrySentinel() { |
757 base::DictionaryValue expected_policy; | 759 base::DictionaryValue expected_policy; |
758 expected_policy.SetString(test_keys::kKeyString, "registry"); | 760 expected_policy.SetString(test_keys::kKeyString, "registry"); |
759 PolicyBundle expected; | 761 PolicyBundle expected; |
760 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 762 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
761 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 763 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); |
| 764 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 765 .ApplySourceToEntries(POLICY_SOURCE_PLATFORM); |
762 return Matches(expected); | 766 return Matches(expected); |
763 } | 767 } |
764 | 768 |
765 bool MatchesTestBundle() { | 769 bool MatchesTestBundle() { |
766 base::DictionaryValue expected_policy; | 770 base::DictionaryValue expected_policy; |
767 expected_policy.SetBoolean(test_keys::kKeyBoolean, true); | 771 expected_policy.SetBoolean(test_keys::kKeyBoolean, true); |
768 expected_policy.SetString(test_keys::kKeyString, "GPO"); | 772 expected_policy.SetString(test_keys::kKeyString, "GPO"); |
769 expected_policy.SetInteger(test_keys::kKeyInteger, 42); | 773 expected_policy.SetInteger(test_keys::kKeyInteger, 42); |
770 scoped_ptr<base::ListValue> list(new base::ListValue()); | 774 scoped_ptr<base::ListValue> list(new base::ListValue()); |
771 list->AppendString("GPO 1"); | 775 list->AppendString("GPO 1"); |
772 list->AppendString("GPO 2"); | 776 list->AppendString("GPO 2"); |
773 expected_policy.Set(test_keys::kKeyStringList, list.release()); | 777 expected_policy.Set(test_keys::kKeyStringList, list.release()); |
774 PolicyBundle expected; | 778 PolicyBundle expected; |
775 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 779 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
776 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, | 780 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, |
777 POLICY_SCOPE_MACHINE); | 781 POLICY_SCOPE_MACHINE); |
| 782 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 783 .ApplySourceToEntries(POLICY_SOURCE_PLATFORM); |
778 return Matches(expected); | 784 return Matches(expected); |
779 } | 785 } |
780 | 786 |
781 ScopedGroupPolicyRegistrySandbox registry_sandbox_; | 787 ScopedGroupPolicyRegistrySandbox registry_sandbox_; |
782 PGROUP_POLICY_OBJECT gpo_list_; | 788 PGROUP_POLICY_OBJECT gpo_list_; |
783 DWORD gpo_list_status_; | 789 DWORD gpo_list_status_; |
784 base::FilePath test_data_dir_; | 790 base::FilePath test_data_dir_; |
785 AppliedGPOListProvider* gpo_list_provider_; | 791 AppliedGPOListProvider* gpo_list_provider_; |
786 }; | 792 }; |
787 | 793 |
788 const base::char16 PolicyLoaderWinTest::kTestPolicyKey[] = | 794 const base::char16 PolicyLoaderWinTest::kTestPolicyKey[] = |
789 L"SOFTWARE\\Policies\\Chromium"; | 795 L"SOFTWARE\\Policies\\Chromium"; |
790 | 796 |
791 TEST_F(PolicyLoaderWinTest, HKLMOverHKCU) { | 797 TEST_F(PolicyLoaderWinTest, HKLMOverHKCU) { |
792 RegKey hklm_key(HKEY_LOCAL_MACHINE, kTestPolicyKey, KEY_ALL_ACCESS); | 798 RegKey hklm_key(HKEY_LOCAL_MACHINE, kTestPolicyKey, KEY_ALL_ACCESS); |
793 ASSERT_TRUE(hklm_key.Valid()); | 799 ASSERT_TRUE(hklm_key.Valid()); |
794 hklm_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), | 800 hklm_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), |
795 UTF8ToUTF16("hklm").c_str()); | 801 UTF8ToUTF16("hklm").c_str()); |
796 RegKey hkcu_key(HKEY_CURRENT_USER, kTestPolicyKey, KEY_ALL_ACCESS); | 802 RegKey hkcu_key(HKEY_CURRENT_USER, kTestPolicyKey, KEY_ALL_ACCESS); |
797 ASSERT_TRUE(hkcu_key.Valid()); | 803 ASSERT_TRUE(hkcu_key.Valid()); |
798 hkcu_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), | 804 hkcu_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), |
799 UTF8ToUTF16("hkcu").c_str()); | 805 UTF8ToUTF16("hkcu").c_str()); |
800 | 806 |
801 PolicyBundle expected; | 807 PolicyBundle expected; |
802 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 808 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
803 .Set(test_keys::kKeyString, | 809 .SetWithSource(test_keys::kKeyString, |
804 POLICY_LEVEL_MANDATORY, | 810 POLICY_LEVEL_MANDATORY, |
805 POLICY_SCOPE_MACHINE, | 811 POLICY_SCOPE_MACHINE, |
806 new base::StringValue("hklm"), | 812 new base::StringValue("hklm"), |
807 NULL); | 813 NULL, |
| 814 POLICY_SOURCE_PLATFORM); |
808 EXPECT_TRUE(Matches(expected)); | 815 EXPECT_TRUE(Matches(expected)); |
809 } | 816 } |
810 | 817 |
811 TEST_F(PolicyLoaderWinTest, Merge3rdPartyPolicies) { | 818 TEST_F(PolicyLoaderWinTest, Merge3rdPartyPolicies) { |
812 // Policy for the same extension will be provided at the 4 level/scope | 819 // Policy for the same extension will be provided at the 4 level/scope |
813 // combinations, to verify that they overlap as expected. | 820 // combinations, to verify that they overlap as expected. |
814 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "merge"); | 821 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "merge"); |
815 ASSERT_TRUE(RegisterSchema( | 822 ASSERT_TRUE(RegisterSchema( |
816 ns, | 823 ns, |
817 "{" | 824 "{" |
(...skipping 29 matching lines...) Expand all Loading... |
847 kPathSuffix, kRecommended)); | 854 kPathSuffix, kRecommended)); |
848 policy.SetString("a", kUserRecommended); | 855 policy.SetString("a", kUserRecommended); |
849 policy.SetString("b", kUserRecommended); | 856 policy.SetString("b", kUserRecommended); |
850 policy.SetString("c", kUserRecommended); | 857 policy.SetString("c", kUserRecommended); |
851 policy.SetString("d", kUserRecommended); | 858 policy.SetString("d", kUserRecommended); |
852 EXPECT_TRUE(InstallValue(policy, HKEY_CURRENT_USER, | 859 EXPECT_TRUE(InstallValue(policy, HKEY_CURRENT_USER, |
853 kPathSuffix, kRecommended)); | 860 kPathSuffix, kRecommended)); |
854 | 861 |
855 PolicyBundle expected; | 862 PolicyBundle expected; |
856 PolicyMap& expected_policy = expected.Get(ns); | 863 PolicyMap& expected_policy = expected.Get(ns); |
857 expected_policy.Set("a", | 864 expected_policy.SetWithSource("a", |
858 POLICY_LEVEL_MANDATORY, | 865 POLICY_LEVEL_MANDATORY, |
859 POLICY_SCOPE_MACHINE, | 866 POLICY_SCOPE_MACHINE, |
860 new base::StringValue(kMachineMandatory), | 867 new base::StringValue(kMachineMandatory), |
861 NULL); | 868 NULL, |
862 expected_policy.Set("b", | 869 POLICY_SOURCE_PLATFORM); |
863 POLICY_LEVEL_MANDATORY, | 870 expected_policy.SetWithSource("b", |
864 POLICY_SCOPE_USER, | 871 POLICY_LEVEL_MANDATORY, |
865 new base::StringValue(kUserMandatory), | 872 POLICY_SCOPE_USER, |
866 NULL); | 873 new base::StringValue(kUserMandatory), |
867 expected_policy.Set("c", | 874 NULL, |
868 POLICY_LEVEL_RECOMMENDED, | 875 POLICY_SOURCE_PLATFORM); |
869 POLICY_SCOPE_MACHINE, | 876 expected_policy.SetWithSource("c", |
870 new base::StringValue(kMachineRecommended), | 877 POLICY_LEVEL_RECOMMENDED, |
871 NULL); | 878 POLICY_SCOPE_MACHINE, |
872 expected_policy.Set("d", | 879 new base::StringValue(kMachineRecommended), |
873 POLICY_LEVEL_RECOMMENDED, | 880 NULL, |
874 POLICY_SCOPE_USER, | 881 POLICY_SOURCE_PLATFORM); |
875 new base::StringValue(kUserRecommended), | 882 expected_policy.SetWithSource("d", |
876 NULL); | 883 POLICY_LEVEL_RECOMMENDED, |
| 884 POLICY_SCOPE_USER, |
| 885 new base::StringValue(kUserRecommended), |
| 886 NULL, |
| 887 POLICY_SOURCE_PLATFORM); |
877 EXPECT_TRUE(Matches(expected)); | 888 EXPECT_TRUE(Matches(expected)); |
878 } | 889 } |
879 | 890 |
880 TEST_F(PolicyLoaderWinTest, LoadStringEncodedValues) { | 891 TEST_F(PolicyLoaderWinTest, LoadStringEncodedValues) { |
881 // Create a dictionary with all the types that can be stored encoded in a | 892 // Create a dictionary with all the types that can be stored encoded in a |
882 // string. | 893 // string. |
883 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "string"); | 894 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "string"); |
884 ASSERT_TRUE(RegisterSchema( | 895 ASSERT_TRUE(RegisterSchema( |
885 ns, | 896 ns, |
886 "{" | 897 "{" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
924 encoded_policy.SetString("list", encoded_list); | 935 encoded_policy.SetString("list", encoded_list); |
925 encoded_policy.SetString("dict", encoded_dict); | 936 encoded_policy.SetString("dict", encoded_dict); |
926 | 937 |
927 const base::string16 kPathSuffix = | 938 const base::string16 kPathSuffix = |
928 kTestPolicyKey + base::ASCIIToUTF16("\\3rdparty\\extensions\\string"); | 939 kTestPolicyKey + base::ASCIIToUTF16("\\3rdparty\\extensions\\string"); |
929 EXPECT_TRUE( | 940 EXPECT_TRUE( |
930 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); | 941 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); |
931 | 942 |
932 PolicyBundle expected; | 943 PolicyBundle expected; |
933 expected.Get(ns).LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 944 expected.Get(ns).LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); |
| 945 expected.Get(ns).ApplySourceToEntries(POLICY_SOURCE_PLATFORM); |
934 EXPECT_TRUE(Matches(expected)); | 946 EXPECT_TRUE(Matches(expected)); |
935 } | 947 } |
936 | 948 |
937 TEST_F(PolicyLoaderWinTest, LoadIntegerEncodedValues) { | 949 TEST_F(PolicyLoaderWinTest, LoadIntegerEncodedValues) { |
938 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "int"); | 950 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "int"); |
939 ASSERT_TRUE(RegisterSchema( | 951 ASSERT_TRUE(RegisterSchema( |
940 ns, | 952 ns, |
941 "{" | 953 "{" |
942 " \"type\": \"object\"," | 954 " \"type\": \"object\"," |
943 " \"properties\": {" | 955 " \"properties\": {" |
(...skipping 12 matching lines...) Expand all Loading... |
956 kTestPolicyKey + base::ASCIIToUTF16("\\3rdparty\\extensions\\int"); | 968 kTestPolicyKey + base::ASCIIToUTF16("\\3rdparty\\extensions\\int"); |
957 EXPECT_TRUE( | 969 EXPECT_TRUE( |
958 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); | 970 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); |
959 | 971 |
960 base::DictionaryValue policy; | 972 base::DictionaryValue policy; |
961 policy.SetBoolean("bool", true); | 973 policy.SetBoolean("bool", true); |
962 policy.SetInteger("int", 123); | 974 policy.SetInteger("int", 123); |
963 policy.SetDouble("double", 456.0); | 975 policy.SetDouble("double", 456.0); |
964 PolicyBundle expected; | 976 PolicyBundle expected; |
965 expected.Get(ns).LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 977 expected.Get(ns).LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); |
| 978 expected.Get(ns).ApplySourceToEntries(POLICY_SOURCE_PLATFORM); |
966 EXPECT_TRUE(Matches(expected)); | 979 EXPECT_TRUE(Matches(expected)); |
967 } | 980 } |
968 | 981 |
969 TEST_F(PolicyLoaderWinTest, DefaultPropertySchemaType) { | 982 TEST_F(PolicyLoaderWinTest, DefaultPropertySchemaType) { |
970 // Build a schema for an "object" with a default schema for its properties. | 983 // Build a schema for an "object" with a default schema for its properties. |
971 // Note that the top-level object can't have "additionalProperties", so | 984 // Note that the top-level object can't have "additionalProperties", so |
972 // a "policy" property is used instead. | 985 // a "policy" property is used instead. |
973 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "test"); | 986 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "test"); |
974 ASSERT_TRUE(RegisterSchema( | 987 ASSERT_TRUE(RegisterSchema( |
975 ns, | 988 ns, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 base::DictionaryValue expected_policy; | 1020 base::DictionaryValue expected_policy; |
1008 expected_policy.SetInteger("special-int1", 123); | 1021 expected_policy.SetInteger("special-int1", 123); |
1009 expected_policy.SetInteger("special-int2", -456); | 1022 expected_policy.SetInteger("special-int2", -456); |
1010 expected_policy.SetDouble("double1", 789.0); | 1023 expected_policy.SetDouble("double1", 789.0); |
1011 expected_policy.SetDouble("double2", 123.456e7); | 1024 expected_policy.SetDouble("double2", 123.456e7); |
1012 base::DictionaryValue expected_policies; | 1025 base::DictionaryValue expected_policies; |
1013 expected_policies.Set("policy", expected_policy.DeepCopy()); | 1026 expected_policies.Set("policy", expected_policy.DeepCopy()); |
1014 PolicyBundle expected; | 1027 PolicyBundle expected; |
1015 expected.Get(ns).LoadFrom( | 1028 expected.Get(ns).LoadFrom( |
1016 &expected_policies, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 1029 &expected_policies, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); |
| 1030 expected.Get(ns).ApplySourceToEntries(POLICY_SOURCE_PLATFORM); |
1017 EXPECT_TRUE(Matches(expected)); | 1031 EXPECT_TRUE(Matches(expected)); |
1018 } | 1032 } |
1019 | 1033 |
1020 TEST_F(PolicyLoaderWinTest, AppliedPolicyNotPresent) { | 1034 TEST_F(PolicyLoaderWinTest, AppliedPolicyNotPresent) { |
1021 InstallRegistrySentinel(); | 1035 InstallRegistrySentinel(); |
1022 gpo_list_ = NULL; | 1036 gpo_list_ = NULL; |
1023 gpo_list_status_ = ERROR_SUCCESS; | 1037 gpo_list_status_ = ERROR_SUCCESS; |
1024 | 1038 |
1025 PolicyBundle empty; | 1039 PolicyBundle empty; |
1026 EXPECT_TRUE(Matches(empty)); | 1040 EXPECT_TRUE(Matches(empty)); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1173 POLICY_DOMAIN_EXTENSIONS, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); | 1187 POLICY_DOMAIN_EXTENSIONS, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); |
1174 ASSERT_TRUE(RegisterSchema(ns_a, kTestSchema)); | 1188 ASSERT_TRUE(RegisterSchema(ns_a, kTestSchema)); |
1175 ASSERT_TRUE(RegisterSchema(ns_b, kTestSchema)); | 1189 ASSERT_TRUE(RegisterSchema(ns_b, kTestSchema)); |
1176 | 1190 |
1177 PolicyBundle expected; | 1191 PolicyBundle expected; |
1178 base::DictionaryValue expected_a; | 1192 base::DictionaryValue expected_a; |
1179 expected_a.SetInteger("policy 1", 3); | 1193 expected_a.SetInteger("policy 1", 3); |
1180 expected_a.SetInteger("policy 2", 3); | 1194 expected_a.SetInteger("policy 2", 3); |
1181 expected.Get(ns_a).LoadFrom( | 1195 expected.Get(ns_a).LoadFrom( |
1182 &expected_a, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); | 1196 &expected_a, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); |
| 1197 expected.Get(ns_a).ApplySourceToEntries(POLICY_SOURCE_PLATFORM); |
1183 base::DictionaryValue expected_b; | 1198 base::DictionaryValue expected_b; |
1184 expected_b.SetInteger("policy 1", 2); | 1199 expected_b.SetInteger("policy 1", 2); |
1185 expected.Get(ns_b).LoadFrom( | 1200 expected.Get(ns_b).LoadFrom( |
1186 &expected_b, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); | 1201 &expected_b, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); |
| 1202 expected.Get(ns_b).ApplySourceToEntries(POLICY_SOURCE_PLATFORM); |
1187 EXPECT_TRUE(Matches(expected)); | 1203 EXPECT_TRUE(Matches(expected)); |
1188 } | 1204 } |
1189 | 1205 |
1190 TEST_F(PolicyLoaderWinTest, LBSSupport) { | 1206 TEST_F(PolicyLoaderWinTest, LBSSupport) { |
1191 const PolicyNamespace ns( | 1207 const PolicyNamespace ns( |
1192 POLICY_DOMAIN_EXTENSIONS, "heildphpnddilhkemkielfhnkaagiabh"); | 1208 POLICY_DOMAIN_EXTENSIONS, "heildphpnddilhkemkielfhnkaagiabh"); |
1193 schema_registry_.RegisterComponent(ns, Schema()); | 1209 schema_registry_.RegisterComponent(ns, Schema()); |
1194 | 1210 |
1195 const char kIncompleteSchema[] = | 1211 const char kIncompleteSchema[] = |
1196 "{" | 1212 "{" |
(...skipping 18 matching lines...) Expand all Loading... |
1215 EXPECT_TRUE(InstallValue(root, HKEY_LOCAL_MACHINE, | 1231 EXPECT_TRUE(InstallValue(root, HKEY_LOCAL_MACHINE, |
1216 kPathSuffix, base::ASCIIToUTF16(ns.component_id))); | 1232 kPathSuffix, base::ASCIIToUTF16(ns.component_id))); |
1217 | 1233 |
1218 PolicyBundle expected; | 1234 PolicyBundle expected; |
1219 PolicyMap& expected_policy = expected.Get(ns); | 1235 PolicyMap& expected_policy = expected.Get(ns); |
1220 expected_policy.Set("alternative_browser_path", | 1236 expected_policy.Set("alternative_browser_path", |
1221 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 1237 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
1222 new base::StringValue("c:\\legacy\\browser.exe"), NULL); | 1238 new base::StringValue("c:\\legacy\\browser.exe"), NULL); |
1223 expected_policy.Set("url_list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 1239 expected_policy.Set("url_list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
1224 list.DeepCopy(), NULL); | 1240 list.DeepCopy(), NULL); |
| 1241 expected.Get(ns).ApplySourceToEntries(POLICY_SOURCE_PLATFORM); |
1225 EXPECT_TRUE(Matches(expected)); | 1242 EXPECT_TRUE(Matches(expected)); |
1226 } | 1243 } |
1227 | 1244 |
1228 } // namespace policy | 1245 } // namespace policy |
OLD | NEW |