This source file includes following definitions.
- Matches
- TypeToString
- update_requested_
- Create
- AsNetworkState
- AsDeviceState
- AsFavoriteState
- InitialPropertiesReceived
- ManagedStatePropertyChanged
- GetBooleanValue
- GetIntegerValue
- GetStringValue
- GetUInt32Value
#include "chromeos/network/managed_state.h"
#include "base/logging.h"
#include "base/values.h"
#include "chromeos/network/device_state.h"
#include "chromeos/network/favorite_state.h"
#include "chromeos/network/network_event_log.h"
#include "chromeos/network/network_state.h"
#include "chromeos/network/shill_property_util.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
namespace chromeos {
bool ManagedState::Matches(const NetworkTypePattern& pattern) const {
return pattern.MatchesType(type());
}
std::string ManagedState::TypeToString(ManagedType type) {
switch (type) {
case MANAGED_TYPE_NETWORK:
return "Network";
case MANAGED_TYPE_FAVORITE:
return "Favorite";
case MANAGED_TYPE_DEVICE:
return "Device";
}
return "Unknown";
}
ManagedState::ManagedState(ManagedType type, const std::string& path)
: managed_type_(type),
path_(path),
update_received_(false),
update_requested_(false) {
}
ManagedState::~ManagedState() {
}
ManagedState* ManagedState::Create(ManagedType type, const std::string& path) {
switch (type) {
case MANAGED_TYPE_NETWORK:
return new NetworkState(path);
case MANAGED_TYPE_FAVORITE:
return new FavoriteState(path);
case MANAGED_TYPE_DEVICE:
return new DeviceState(path);
}
return NULL;
}
NetworkState* ManagedState::AsNetworkState() {
if (managed_type() == MANAGED_TYPE_NETWORK)
return static_cast<NetworkState*>(this);
return NULL;
}
DeviceState* ManagedState::AsDeviceState() {
if (managed_type() == MANAGED_TYPE_DEVICE)
return static_cast<DeviceState*>(this);
return NULL;
}
FavoriteState* ManagedState::AsFavoriteState() {
if (managed_type() == MANAGED_TYPE_FAVORITE)
return static_cast<FavoriteState*>(this);
return NULL;
}
bool ManagedState::InitialPropertiesReceived(
const base::DictionaryValue& properties) {
return false;
}
bool ManagedState::ManagedStatePropertyChanged(const std::string& key,
const base::Value& value) {
if (key == shill::kNameProperty) {
return GetStringValue(key, value, &name_);
} else if (key == shill::kTypeProperty) {
return GetStringValue(key, value, &type_);
}
return false;
}
bool ManagedState::GetBooleanValue(const std::string& key,
const base::Value& value,
bool* out_value) {
bool new_value;
if (!value.GetAsBoolean(&new_value)) {
NET_LOG_ERROR("Error parsing state value", path() + "." + key);
return false;
}
if (*out_value == new_value)
return false;
*out_value = new_value;
return true;
}
bool ManagedState::GetIntegerValue(const std::string& key,
const base::Value& value,
int* out_value) {
int new_value;
if (!value.GetAsInteger(&new_value)) {
NET_LOG_ERROR("Error parsing state value", path() + "." + key);
return false;
}
if (*out_value == new_value)
return false;
*out_value = new_value;
return true;
}
bool ManagedState::GetStringValue(const std::string& key,
const base::Value& value,
std::string* out_value) {
std::string new_value;
if (!value.GetAsString(&new_value)) {
NET_LOG_ERROR("Error parsing state: " + key, path());
return false;
}
if (*out_value == new_value)
return false;
*out_value = new_value;
return true;
}
bool ManagedState::GetUInt32Value(const std::string& key,
const base::Value& value,
uint32* out_value) {
uint32 new_value;
double double_value;
if (!value.GetAsDouble(&double_value) || double_value < 0) {
NET_LOG_ERROR("Error parsing state value", path() + "." + key);
return false;
}
new_value = static_cast<uint32>(double_value);
if (*out_value == new_value)
return false;
*out_value = new_value;
return true;
}
}