| 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 |