blob: 5d9ffe3e82ac4e87a56de8a194593ba489992926 [file] [log] [blame]
[email protected]3c8bd112012-11-07 10:14:591// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chromeos/network/managed_state.h"
6
7#include "base/logging.h"
8#include "base/values.h"
9#include "chromeos/network/device_state.h"
10#include "chromeos/network/network_state.h"
11#include "third_party/cros_system_api/dbus/service_constants.h"
12
13namespace chromeos {
14
15ManagedState::ManagedState(ManagedType type, const std::string& path)
16 : managed_type_(type),
17 path_(path),
18 is_observed_(false) {
19}
20
21ManagedState::~ManagedState() {
22}
23
24ManagedState* ManagedState::Create(ManagedType type, const std::string& path) {
25 switch(type) {
26 case MANAGED_TYPE_NETWORK:
27 return new NetworkState(path);
28 case MANAGED_TYPE_DEVICE:
29 return new DeviceState(path);
30 }
31 return NULL;
32}
33
34NetworkState* ManagedState::AsNetworkState() {
35 if (managed_type() == MANAGED_TYPE_NETWORK)
36 return static_cast<NetworkState*>(this);
37 return NULL;
38}
39
40DeviceState* ManagedState::AsDeviceState() {
41 if (managed_type() == MANAGED_TYPE_DEVICE)
42 return static_cast<DeviceState*>(this);
43 return NULL;
44}
45
[email protected]a7f1d1b2013-04-23 00:50:1546void ManagedState::InitialPropertiesReceived() {
47}
48
[email protected]3c8bd112012-11-07 10:14:5949bool ManagedState::ManagedStatePropertyChanged(const std::string& key,
50 const base::Value& value) {
51 if (key == flimflam::kNameProperty) {
52 return GetStringValue(key, value, &name_);
53 } else if (key == flimflam::kTypeProperty) {
54 return GetStringValue(key, value, &type_);
55 }
56 return false;
57}
58
59bool ManagedState::GetBooleanValue(const std::string& key,
60 const base::Value& value,
61 bool* out_value) {
62 bool res = value.GetAsBoolean(out_value);
63 if (!res)
64 LOG(WARNING) << "Failed to parse boolean value for:" << key;
65 return res;
66}
67
68bool ManagedState::GetIntegerValue(const std::string& key,
69 const base::Value& value,
70 int* out_value) {
71 bool res = value.GetAsInteger(out_value);
72 if (!res)
73 LOG(WARNING) << "Failed to parse integer value for:" << key;
74 return res;
75}
76
77bool ManagedState::GetStringValue(const std::string& key,
78 const base::Value& value,
79 std::string* out_value) {
80 bool res = value.GetAsString(out_value);
81 if (!res)
82 LOG(WARNING) << "Failed to parse string value for:" << key;
83 return res;
84}
85
86} // namespace chromeos