This source file includes following definitions.
- CreateForDevicePolicy
- weak_factory_
- Init
- ImportCertificates
- ApplyNetworkPolicy
- OnDataRoamingSettingChanged
#include "chrome/browser/chromeos/policy/device_network_configuration_updater.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chromeos/network/managed_network_configuration_handler.h"
#include "chromeos/network/network_device_handler.h"
#include "chromeos/settings/cros_settings_names.h"
#include "chromeos/settings/cros_settings_provider.h"
#include "policy/policy_constants.h"
namespace policy {
DeviceNetworkConfigurationUpdater::~DeviceNetworkConfigurationUpdater() {}
scoped_ptr<DeviceNetworkConfigurationUpdater>
DeviceNetworkConfigurationUpdater::CreateForDevicePolicy(
PolicyService* policy_service,
chromeos::ManagedNetworkConfigurationHandler* network_config_handler,
chromeos::NetworkDeviceHandler* network_device_handler,
chromeos::CrosSettings* cros_settings) {
scoped_ptr<DeviceNetworkConfigurationUpdater> updater(
new DeviceNetworkConfigurationUpdater(policy_service,
network_config_handler,
network_device_handler,
cros_settings));
updater->Init();
return updater.Pass();
}
DeviceNetworkConfigurationUpdater::DeviceNetworkConfigurationUpdater(
PolicyService* policy_service,
chromeos::ManagedNetworkConfigurationHandler* network_config_handler,
chromeos::NetworkDeviceHandler* network_device_handler,
chromeos::CrosSettings* cros_settings)
: NetworkConfigurationUpdater(onc::ONC_SOURCE_DEVICE_POLICY,
key::kDeviceOpenNetworkConfiguration,
policy_service,
network_config_handler),
network_device_handler_(network_device_handler),
cros_settings_(cros_settings),
weak_factory_(this) {
DCHECK(network_device_handler_);
data_roaming_setting_subscription_ = cros_settings->AddSettingsObserver(
chromeos::kSignedDataRoamingEnabled,
base::Bind(
&DeviceNetworkConfigurationUpdater::OnDataRoamingSettingChanged,
base::Unretained(this)));
}
void DeviceNetworkConfigurationUpdater::Init() {
NetworkConfigurationUpdater::Init();
OnDataRoamingSettingChanged();
}
void DeviceNetworkConfigurationUpdater::ImportCertificates(
const base::ListValue& certificates_onc) {
}
void DeviceNetworkConfigurationUpdater::ApplyNetworkPolicy(
base::ListValue* network_configs_onc,
base::DictionaryValue* global_network_config) {
network_config_handler_->SetPolicy(onc_source_,
std::string() ,
*network_configs_onc,
*global_network_config);
}
void DeviceNetworkConfigurationUpdater::OnDataRoamingSettingChanged() {
chromeos::CrosSettingsProvider::TrustedStatus trusted_status =
cros_settings_->PrepareTrustedValues(base::Bind(
&DeviceNetworkConfigurationUpdater::OnDataRoamingSettingChanged,
weak_factory_.GetWeakPtr()));
if (trusted_status == chromeos::CrosSettingsProvider::TEMPORARILY_UNTRUSTED) {
return;
}
bool data_roaming_setting = false;
if (trusted_status == chromeos::CrosSettingsProvider::TRUSTED) {
if (!cros_settings_->GetBoolean(chromeos::kSignedDataRoamingEnabled,
&data_roaming_setting)) {
LOG(ERROR) << "Couldn't get device setting "
<< chromeos::kSignedDataRoamingEnabled;
data_roaming_setting = false;
}
} else {
DCHECK_EQ(trusted_status,
chromeos::CrosSettingsProvider::PERMANENTLY_UNTRUSTED);
}
network_device_handler_->SetCellularAllowRoaming(data_roaming_setting);
}
}