1 // Copyright 2013 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.
5 #include "chromeos/dbus/fake_shill_ipconfig_client.h"
8 #include "base/message_loop/message_loop.h"
9 #include "base/stl_util.h"
10 #include "base/values.h"
11 #include "chromeos/dbus/shill_property_changed_observer.h"
13 #include "dbus/message.h"
14 #include "dbus/object_path.h"
15 #include "dbus/object_proxy.h"
16 #include "dbus/values_util.h"
17 #include "third_party/cros_system_api/dbus/service_constants.h"
21 FakeShillIPConfigClient::FakeShillIPConfigClient() : weak_ptr_factory_(this) {
24 FakeShillIPConfigClient::~FakeShillIPConfigClient() {
27 void FakeShillIPConfigClient::Init(dbus::Bus
* bus
) {
30 void FakeShillIPConfigClient::AddPropertyChangedObserver(
31 const dbus::ObjectPath
& ipconfig_path
,
32 ShillPropertyChangedObserver
* observer
) {
35 void FakeShillIPConfigClient::RemovePropertyChangedObserver(
36 const dbus::ObjectPath
& ipconfig_path
,
37 ShillPropertyChangedObserver
* observer
) {
40 void FakeShillIPConfigClient::Refresh(const dbus::ObjectPath
& ipconfig_path
,
41 const VoidDBusMethodCallback
& callback
) {
44 void FakeShillIPConfigClient::GetProperties(
45 const dbus::ObjectPath
& ipconfig_path
,
46 const DictionaryValueCallback
& callback
) {
47 const base::DictionaryValue
* dict
= NULL
;
48 if (!ipconfigs_
.GetDictionaryWithoutPathExpansion(ipconfig_path
.value(),
51 base::MessageLoop::current()->PostTask(
52 FROM_HERE
, base::Bind(&FakeShillIPConfigClient::PassProperties
,
53 weak_ptr_factory_
.GetWeakPtr(),
58 void FakeShillIPConfigClient::SetProperty(
59 const dbus::ObjectPath
& ipconfig_path
,
60 const std::string
& name
,
61 const base::Value
& value
,
62 const VoidDBusMethodCallback
& callback
) {
63 base::DictionaryValue
* dict
= NULL
;
64 if (ipconfigs_
.GetDictionaryWithoutPathExpansion(ipconfig_path
.value(),
66 // Update existing ip config stub object's properties.
67 dict
->SetWithoutPathExpansion(name
, value
.DeepCopy());
69 // Create a new stub ipconfig object, and update its properties.
70 base::DictionaryValue
* dvalue
= new base::DictionaryValue
;
71 dvalue
->SetWithoutPathExpansion(name
, value
.DeepCopy());
72 ipconfigs_
.SetWithoutPathExpansion(ipconfig_path
.value(),
75 base::MessageLoop::current()->PostTask(
76 FROM_HERE
, base::Bind(callback
, DBUS_METHOD_CALL_SUCCESS
));
79 void FakeShillIPConfigClient::ClearProperty(
80 const dbus::ObjectPath
& ipconfig_path
,
81 const std::string
& name
,
82 const VoidDBusMethodCallback
& callback
) {
83 base::MessageLoop::current()->PostTask(
84 FROM_HERE
, base::Bind(callback
, DBUS_METHOD_CALL_SUCCESS
));
87 void FakeShillIPConfigClient::Remove(const dbus::ObjectPath
& ipconfig_path
,
88 const VoidDBusMethodCallback
& callback
) {
89 base::MessageLoop::current()->PostTask(
90 FROM_HERE
, base::Bind(callback
, DBUS_METHOD_CALL_SUCCESS
));
93 ShillIPConfigClient::TestInterface
*
94 FakeShillIPConfigClient::GetTestInterface() {
98 // ShillIPConfigClient::TestInterface overrides
100 void FakeShillIPConfigClient::AddIPConfig(
101 const std::string
& ip_config_path
,
102 const base::DictionaryValue
& properties
) {
103 ipconfigs_
.SetWithoutPathExpansion(ip_config_path
, properties
.DeepCopy());
108 void FakeShillIPConfigClient::PassProperties(
109 const base::DictionaryValue
* values
,
110 const DictionaryValueCallback
& callback
) const {
111 callback
.Run(DBUS_METHOD_CALL_SUCCESS
, *values
);
114 } // namespace chromeos