| Index: chrome/browser/policy/configuration_policy_provider_win.cc
|
| ===================================================================
|
| --- chrome/browser/policy/configuration_policy_provider_win.cc (revision 62848)
|
| +++ chrome/browser/policy/configuration_policy_provider_win.cc (working copy)
|
| @@ -10,7 +10,6 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/object_watcher.h"
|
| -#include "base/registry.h"
|
| #include "base/scoped_ptr.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/string_piece.h"
|
| @@ -18,10 +17,39 @@
|
| #include "base/sys_string_conversions.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "base/values.h"
|
| +#include "base/win/registry.h"
|
| #include "chrome/common/policy_constants.h"
|
|
|
| +using base::win::RegKey;
|
| +
|
| namespace policy {
|
|
|
| +namespace {
|
| +
|
| +bool ReadRegistryStringValue(RegKey* key, const string16& name,
|
| + string16* result) {
|
| + DWORD value_size = 0;
|
| + DWORD key_type = 0;
|
| + scoped_array<uint8> buffer;
|
| +
|
| + if (!key->ReadValue(name.c_str(), 0, &value_size, &key_type))
|
| + return false;
|
| + if (key_type != REG_SZ)
|
| + return false;
|
| +
|
| + // According to the Microsoft documentation, the string
|
| + // buffer may not be explicitly 0-terminated. Allocate a
|
| + // slightly larger buffer and pre-fill to zeros to guarantee
|
| + // the 0-termination.
|
| + buffer.reset(new uint8[value_size + 2]);
|
| + memset(buffer.get(), 0, value_size + 2);
|
| + key->ReadValue(name.c_str(), buffer.get(), &value_size, NULL);
|
| + result->assign(reinterpret_cast<const wchar_t*>(buffer.get()));
|
| + return true;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| // Period at which to run the reload task in case the group policy change
|
| // watchers fail.
|
| const int kReloadIntervalMinutes = 15;
|
| @@ -155,28 +183,6 @@
|
| return ReadRegistryStringValue(&policy_key, name, result);
|
| }
|
|
|
| -bool ConfigurationPolicyProviderWin::ReadRegistryStringValue(
|
| - RegKey* key, const string16& name, string16* result) {
|
| - DWORD value_size = 0;
|
| - DWORD key_type = 0;
|
| - scoped_array<uint8> buffer;
|
| -
|
| - if (!key->ReadValue(name.c_str(), 0, &value_size, &key_type))
|
| - return false;
|
| - if (key_type != REG_SZ)
|
| - return false;
|
| -
|
| - // According to the Microsoft documentation, the string
|
| - // buffer may not be explicitly 0-terminated. Allocate a
|
| - // slightly larger buffer and pre-fill to zeros to guarantee
|
| - // the 0-termination.
|
| - buffer.reset(new uint8[value_size + 2]);
|
| - memset(buffer.get(), 0, value_size + 2);
|
| - key->ReadValue(name.c_str(), buffer.get(), &value_size, NULL);
|
| - result->assign(reinterpret_cast<const wchar_t*>(buffer.get()));
|
| - return true;
|
| -}
|
| -
|
| bool ConfigurationPolicyProviderWin::GetRegistryPolicyStringList(
|
| const string16& key, ListValue* result) {
|
| string16 path = string16(kRegistrySubKey);
|
|
|