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

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

Issue 1940153002: Use std::unique_ptr to express ownership of base::Value in PolicyMap::Entry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: another-fix Created 4 years, 7 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
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>
11 11
12 #include <algorithm> 12 #include <algorithm>
13 #include <cstring> 13 #include <cstring>
14 #include <functional> 14 #include <functional>
15 #include <iterator> 15 #include <iterator>
16 #include <utility> 16 #include <utility>
17 #include <vector> 17 #include <vector>
18 18
19 #include "base/base_paths.h" 19 #include "base/base_paths.h"
20 #include "base/callback.h" 20 #include "base/callback.h"
21 #include "base/files/file_path.h" 21 #include "base/files/file_path.h"
22 #include "base/files/file_util.h" 22 #include "base/files/file_util.h"
23 #include "base/files/scoped_temp_dir.h" 23 #include "base/files/scoped_temp_dir.h"
24 #include "base/json/json_writer.h" 24 #include "base/json/json_writer.h"
25 #include "base/macros.h" 25 #include "base/macros.h"
26 #include "base/memory/ptr_util.h"
26 #include "base/path_service.h" 27 #include "base/path_service.h"
27 #include "base/process/process_handle.h" 28 #include "base/process/process_handle.h"
28 #include "base/strings/string16.h" 29 #include "base/strings/string16.h"
29 #include "base/strings/string_number_conversions.h" 30 #include "base/strings/string_number_conversions.h"
30 #include "base/strings/string_util.h" 31 #include "base/strings/string_util.h"
31 #include "base/strings/stringprintf.h" 32 #include "base/strings/stringprintf.h"
32 #include "base/strings/utf_string_conversions.h" 33 #include "base/strings/utf_string_conversions.h"
33 #include "base/sys_byteorder.h" 34 #include "base/sys_byteorder.h"
34 #include "base/win/registry.h" 35 #include "base/win/registry.h"
35 #include "base/win/win_util.h" 36 #include "base/win/win_util.h"
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 ASSERT_TRUE(hklm_key.Valid()); 804 ASSERT_TRUE(hklm_key.Valid());
804 hklm_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), 805 hklm_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(),
805 UTF8ToUTF16("hklm").c_str()); 806 UTF8ToUTF16("hklm").c_str());
806 RegKey hkcu_key(HKEY_CURRENT_USER, kTestPolicyKey, KEY_ALL_ACCESS); 807 RegKey hkcu_key(HKEY_CURRENT_USER, kTestPolicyKey, KEY_ALL_ACCESS);
807 ASSERT_TRUE(hkcu_key.Valid()); 808 ASSERT_TRUE(hkcu_key.Valid());
808 hkcu_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), 809 hkcu_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(),
809 UTF8ToUTF16("hkcu").c_str()); 810 UTF8ToUTF16("hkcu").c_str());
810 811
811 PolicyBundle expected; 812 PolicyBundle expected;
812 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 813 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
813 .Set(test_keys::kKeyString, 814 .Set(test_keys::kKeyString, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
814 POLICY_LEVEL_MANDATORY,
815 POLICY_SCOPE_MACHINE,
816 POLICY_SOURCE_PLATFORM, 815 POLICY_SOURCE_PLATFORM,
817 new base::StringValue("hklm"), 816 base::WrapUnique(new base::StringValue("hklm")), nullptr);
818 NULL);
819 EXPECT_TRUE(Matches(expected)); 817 EXPECT_TRUE(Matches(expected));
820 } 818 }
821 819
822 TEST_F(PolicyLoaderWinTest, Merge3rdPartyPolicies) { 820 TEST_F(PolicyLoaderWinTest, Merge3rdPartyPolicies) {
823 // Policy for the same extension will be provided at the 4 level/scope 821 // Policy for the same extension will be provided at the 4 level/scope
824 // combinations, to verify that they overlap as expected. 822 // combinations, to verify that they overlap as expected.
825 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "merge"); 823 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "merge");
826 ASSERT_TRUE(RegisterSchema( 824 ASSERT_TRUE(RegisterSchema(
827 ns, 825 ns,
828 "{" 826 "{"
(...skipping 29 matching lines...) Expand all
858 kPathSuffix, kRecommended)); 856 kPathSuffix, kRecommended));
859 policy.SetString("a", kUserRecommended); 857 policy.SetString("a", kUserRecommended);
860 policy.SetString("b", kUserRecommended); 858 policy.SetString("b", kUserRecommended);
861 policy.SetString("c", kUserRecommended); 859 policy.SetString("c", kUserRecommended);
862 policy.SetString("d", kUserRecommended); 860 policy.SetString("d", kUserRecommended);
863 EXPECT_TRUE(InstallValue(policy, HKEY_CURRENT_USER, 861 EXPECT_TRUE(InstallValue(policy, HKEY_CURRENT_USER,
864 kPathSuffix, kRecommended)); 862 kPathSuffix, kRecommended));
865 863
866 PolicyBundle expected; 864 PolicyBundle expected;
867 PolicyMap& expected_policy = expected.Get(ns); 865 PolicyMap& expected_policy = expected.Get(ns);
868 expected_policy.Set("a", 866 expected_policy.Set(
869 POLICY_LEVEL_MANDATORY, 867 "a", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM,
870 POLICY_SCOPE_MACHINE, 868 base::WrapUnique(new base::StringValue(kMachineMandatory)), nullptr);
871 POLICY_SOURCE_PLATFORM, 869 expected_policy.Set(
872 new base::StringValue(kMachineMandatory), 870 "b", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_PLATFORM,
873 NULL); 871 base::WrapUnique(new base::StringValue(kUserMandatory)), nullptr);
874 expected_policy.Set("b", 872 expected_policy.Set(
875 POLICY_LEVEL_MANDATORY, 873 "c", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_MACHINE,
876 POLICY_SCOPE_USER, 874 POLICY_SOURCE_PLATFORM,
877 POLICY_SOURCE_PLATFORM, 875 base::WrapUnique(new base::StringValue(kMachineRecommended)), nullptr);
878 new base::StringValue(kUserMandatory), 876 expected_policy.Set(
879 NULL); 877 "d", POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER, POLICY_SOURCE_PLATFORM,
880 expected_policy.Set("c", 878 base::WrapUnique(new base::StringValue(kUserRecommended)), nullptr);
881 POLICY_LEVEL_RECOMMENDED,
882 POLICY_SCOPE_MACHINE,
883 POLICY_SOURCE_PLATFORM,
884 new base::StringValue(kMachineRecommended),
885 NULL);
886 expected_policy.Set("d",
887 POLICY_LEVEL_RECOMMENDED,
888 POLICY_SCOPE_USER,
889 POLICY_SOURCE_PLATFORM,
890 new base::StringValue(kUserRecommended),
891 NULL);
892 EXPECT_TRUE(Matches(expected)); 879 EXPECT_TRUE(Matches(expected));
893 } 880 }
894 881
895 TEST_F(PolicyLoaderWinTest, LoadStringEncodedValues) { 882 TEST_F(PolicyLoaderWinTest, LoadStringEncodedValues) {
896 // Create a dictionary with all the types that can be stored encoded in a 883 // Create a dictionary with all the types that can be stored encoded in a
897 // string. 884 // string.
898 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "string"); 885 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "string");
899 ASSERT_TRUE(RegisterSchema( 886 ASSERT_TRUE(RegisterSchema(
900 ns, 887 ns,
901 "{" 888 "{"
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
1227 policy.Set("url_list", list.DeepCopy()); 1214 policy.Set("url_list", list.DeepCopy());
1228 policy.SetString("alternative_browser_path", "c:\\legacy\\browser.exe"); 1215 policy.SetString("alternative_browser_path", "c:\\legacy\\browser.exe");
1229 base::DictionaryValue root; 1216 base::DictionaryValue root;
1230 root.Set(base::UTF16ToUTF8(kMandatory), policy.DeepCopy()); 1217 root.Set(base::UTF16ToUTF8(kMandatory), policy.DeepCopy());
1231 root.SetString(kSchema, kIncompleteSchema); 1218 root.SetString(kSchema, kIncompleteSchema);
1232 EXPECT_TRUE(InstallValue(root, HKEY_LOCAL_MACHINE, 1219 EXPECT_TRUE(InstallValue(root, HKEY_LOCAL_MACHINE,
1233 kPathSuffix, base::ASCIIToUTF16(ns.component_id))); 1220 kPathSuffix, base::ASCIIToUTF16(ns.component_id)));
1234 1221
1235 PolicyBundle expected; 1222 PolicyBundle expected;
1236 PolicyMap& expected_policy = expected.Get(ns); 1223 PolicyMap& expected_policy = expected.Get(ns);
1237 expected_policy.Set("alternative_browser_path", 1224 expected_policy.Set(
1238 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, 1225 "alternative_browser_path", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
1239 POLICY_SOURCE_PLATFORM, 1226 POLICY_SOURCE_PLATFORM,
1240 new base::StringValue("c:\\legacy\\browser.exe"), NULL); 1227 base::WrapUnique(new base::StringValue("c:\\legacy\\browser.exe")),
1228 nullptr);
1241 expected_policy.Set("url_list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, 1229 expected_policy.Set("url_list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
1242 POLICY_SOURCE_PLATFORM, list.DeepCopy(), nullptr); 1230 POLICY_SOURCE_PLATFORM, list.CreateDeepCopy(), nullptr);
1243 EXPECT_TRUE(Matches(expected)); 1231 EXPECT_TRUE(Matches(expected));
1244 } 1232 }
1245 1233
1246 } // namespace policy 1234 } // namespace policy
OLDNEW
« no previous file with comments | « components/policy/core/common/policy_loader_win.cc ('k') | components/policy/core/common/policy_map.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698