Chromium Code Reviews| Index: chrome/browser/policy/network_configuration_updater.cc |
| diff --git a/chrome/browser/policy/network_configuration_updater.cc b/chrome/browser/policy/network_configuration_updater.cc |
| index 152927acee8b481610564f73ef95ee31bc08e6c5..a05b6b0e6edeec054f7aaf47944b4c248ebf1c2a 100644 |
| --- a/chrome/browser/policy/network_configuration_updater.cc |
| +++ b/chrome/browser/policy/network_configuration_updater.cc |
| @@ -4,6 +4,10 @@ |
| #include "chrome/browser/policy/network_configuration_updater.h" |
| +#include <string> |
| + |
| +#include "base/bind.h" |
| +#include "base/bind_helpers.h" |
| #include "chrome/browser/chromeos/cros/network_library.h" |
| #include "chrome/browser/policy/policy_map.h" |
| #include "policy/policy_constants.h" |
| @@ -14,49 +18,48 @@ const char NetworkConfigurationUpdater::kEmptyConfiguration[] = |
| "{\"NetworkConfigurations\":[],\"Certificates\":[]}"; |
| NetworkConfigurationUpdater::NetworkConfigurationUpdater( |
| - ConfigurationPolicyProvider* provider, |
| + PolicyService* policy_service, |
| chromeos::NetworkLibrary* network_library) |
| - : network_library_(network_library) { |
| + : policy_change_registrar_( |
| + policy_service, POLICY_DOMAIN_CHROME, std::string()), |
| + network_library_(network_library) { |
| DCHECK(network_library_); |
| - provider_registrar_.Init(provider, this); |
| - Update(); |
| -} |
| + PolicyChangeRegistrar::UpdateCallback device_update_callback = |
| + base::Bind(&NetworkConfigurationUpdater::ApplyNetworkConfiguration, |
| + base::Unretained(this), |
| + chromeos::NetworkUIData::ONC_SOURCE_DEVICE_POLICY, |
| + &device_network_config_); |
| + PolicyChangeRegistrar::UpdateCallback user_update_callback = |
| + base::Bind(&NetworkConfigurationUpdater::ApplyNetworkConfiguration, |
| + base::Unretained(this), |
| + chromeos::NetworkUIData::ONC_SOURCE_USER_POLICY, |
| + &user_network_config_); |
| + policy_change_registrar_.Observe(key::kDeviceOpenNetworkConfiguration, |
| + device_update_callback); |
|
Mattias Nissler (ping if slow)
2012/05/14 08:14:25
no need for locals for the callbacks?
Joao da Silva
2012/05/16 09:36:03
Done.
|
| + policy_change_registrar_.Observe(key::kOpenNetworkConfiguration, |
| + user_update_callback); |
| -NetworkConfigurationUpdater::~NetworkConfigurationUpdater() {} |
| - |
| -void NetworkConfigurationUpdater::OnUpdatePolicy( |
| - ConfigurationPolicyProvider* provider) { |
| - Update(); |
| + // Apply the current values immediately. |
| + const PolicyMap& policies = policy_service->GetPolicies(POLICY_DOMAIN_CHROME, |
| + std::string()); |
| + device_update_callback.Run( |
| + NULL, policies.GetValue(key::kDeviceOpenNetworkConfiguration)); |
| + user_update_callback.Run( |
| + NULL, policies.GetValue(key::kOpenNetworkConfiguration)); |
| } |
| -void NetworkConfigurationUpdater::Update() { |
| - ConfigurationPolicyProvider* provider = provider_registrar_.provider(); |
| - |
| - PolicyMap policy; |
| - if (!provider->Provide(&policy)) { |
| - LOG(WARNING) << "Failed to read policy from policy provider."; |
| - return; |
| - } |
| - |
| - ApplyNetworkConfiguration(policy, key::kDeviceOpenNetworkConfiguration, |
| - chromeos::NetworkUIData::ONC_SOURCE_DEVICE_POLICY, |
| - &device_network_config_); |
| - ApplyNetworkConfiguration(policy, key::kOpenNetworkConfiguration, |
| - chromeos::NetworkUIData::ONC_SOURCE_USER_POLICY, |
| - &user_network_config_); |
| -} |
| +NetworkConfigurationUpdater::~NetworkConfigurationUpdater() {} |
| void NetworkConfigurationUpdater::ApplyNetworkConfiguration( |
| - const PolicyMap& policy_map, |
| - const char* policy_name, |
| chromeos::NetworkUIData::ONCSource onc_source, |
| - std::string* cached_value) { |
| + std::string* cached_value, |
| + const base::Value* previous, |
| + const base::Value* current) { |
| std::string new_network_config; |
| - const base::Value* value = policy_map.GetValue(policy_name); |
| - if (value != NULL) { |
| + if (current != NULL) { |
| // If the policy is not a string, we issue a warning, but still clear the |
| // network configuration. |
| - if (!value->GetAsString(&new_network_config)) |
| + if (!current->GetAsString(&new_network_config)) |
| LOG(WARNING) << "Invalid network configuration."; |
| } |