OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/policy/config_dir_policy_provider.h" | 5 #include "chrome/browser/policy/config_dir_policy_provider.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
11 #include "chrome/common/json_value_serializer.h" | 11 #include "chrome/common/json_value_serializer.h" |
12 | 12 |
13 namespace policy { | 13 namespace policy { |
14 | 14 |
15 ConfigDirPolicyLoader::ConfigDirPolicyLoader(const FilePath& config_dir) | 15 ConfigDirPolicyProviderDelegate::ConfigDirPolicyProviderDelegate( |
16 : FileBasedPolicyProvider::Delegate(config_dir) { | 16 const FilePath& config_dir) |
| 17 : FileBasedPolicyProvider::ProviderDelegate(config_dir) { |
17 } | 18 } |
18 | 19 |
19 DictionaryValue* ConfigDirPolicyLoader::Load() { | 20 DictionaryValue* ConfigDirPolicyProviderDelegate::Load() { |
20 // Enumerate the files and sort them lexicographically. | 21 // Enumerate the files and sort them lexicographically. |
21 std::set<FilePath> files; | 22 std::set<FilePath> files; |
22 file_util::FileEnumerator file_enumerator(config_file_path(), false, | 23 file_util::FileEnumerator file_enumerator(config_file_path(), false, |
23 file_util::FileEnumerator::FILES); | 24 file_util::FileEnumerator::FILES); |
24 for (FilePath config_file_path = file_enumerator.Next(); | 25 for (FilePath config_file_path = file_enumerator.Next(); |
25 !config_file_path.empty(); config_file_path = file_enumerator.Next()) | 26 !config_file_path.empty(); config_file_path = file_enumerator.Next()) |
26 files.insert(config_file_path); | 27 files.insert(config_file_path); |
27 | 28 |
28 // Start with an empty dictionary and merge the files' contents. | 29 // Start with an empty dictionary and merge the files' contents. |
29 DictionaryValue* policy = new DictionaryValue; | 30 DictionaryValue* policy = new DictionaryValue; |
(...skipping 12 matching lines...) Expand all Loading... |
42 LOG(WARNING) << "Expected JSON dictionary in configuration file " | 43 LOG(WARNING) << "Expected JSON dictionary in configuration file " |
43 << config_file_iter->value(); | 44 << config_file_iter->value(); |
44 continue; | 45 continue; |
45 } | 46 } |
46 policy->MergeDictionary(static_cast<DictionaryValue*>(value.get())); | 47 policy->MergeDictionary(static_cast<DictionaryValue*>(value.get())); |
47 } | 48 } |
48 | 49 |
49 return policy; | 50 return policy; |
50 } | 51 } |
51 | 52 |
52 base::Time ConfigDirPolicyLoader::GetLastModification() { | 53 base::Time ConfigDirPolicyProviderDelegate::GetLastModification() { |
53 base::Time last_modification = base::Time(); | 54 base::Time last_modification = base::Time(); |
54 base::PlatformFileInfo file_info; | 55 base::PlatformFileInfo file_info; |
55 | 56 |
56 // If the path does not exist or points to a directory, it's safe to load. | 57 // If the path does not exist or points to a directory, it's safe to load. |
57 if (!file_util::GetFileInfo(config_file_path(), &file_info) || | 58 if (!file_util::GetFileInfo(config_file_path(), &file_info) || |
58 !file_info.is_directory) { | 59 !file_info.is_directory) { |
59 return last_modification; | 60 return last_modification; |
60 } | 61 } |
61 | 62 |
62 // Enumerate the files and find the most recent modification timestamp. | 63 // Enumerate the files and find the most recent modification timestamp. |
63 file_util::FileEnumerator file_enumerator(config_file_path(), | 64 file_util::FileEnumerator file_enumerator(config_file_path(), |
64 false, | 65 false, |
65 file_util::FileEnumerator::FILES); | 66 file_util::FileEnumerator::FILES); |
66 for (FilePath config_file = file_enumerator.Next(); | 67 for (FilePath config_file = file_enumerator.Next(); |
67 !config_file.empty(); | 68 !config_file.empty(); |
68 config_file = file_enumerator.Next()) { | 69 config_file = file_enumerator.Next()) { |
69 if (file_util::GetFileInfo(config_file, &file_info) && | 70 if (file_util::GetFileInfo(config_file, &file_info) && |
70 !file_info.is_directory) { | 71 !file_info.is_directory) { |
71 last_modification = std::min(last_modification, file_info.last_modified); | 72 last_modification = std::min(last_modification, file_info.last_modified); |
72 } | 73 } |
73 } | 74 } |
74 | 75 |
75 return last_modification; | 76 return last_modification; |
76 } | 77 } |
77 | 78 |
78 ConfigDirPolicyProvider::ConfigDirPolicyProvider( | 79 ConfigDirPolicyProvider::ConfigDirPolicyProvider( |
79 const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list, | 80 const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list, |
80 const FilePath& config_dir) | 81 const FilePath& config_dir) |
81 : FileBasedPolicyProvider(policy_list, | 82 : FileBasedPolicyProvider( |
82 new ConfigDirPolicyLoader(config_dir)) { | 83 policy_list, |
| 84 new ConfigDirPolicyProviderDelegate(config_dir)) { |
83 } | 85 } |
84 | 86 |
85 } // namespace policy | 87 } // namespace policy |
OLD | NEW |