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/location.h"
9 #include "base/single_thread_task_runner.h"
10 #include "base/stl_util.h"
11 #include "base/thread_task_runner_handle.h"
12 #include "base/values.h"
13 #include "chromeos/dbus/shill_property_changed_observer.h"
15 #include "dbus/message.h"
16 #include "dbus/object_path.h"
17 #include "dbus/object_proxy.h"
18 #include "dbus/values_util.h"
19 #include "third_party/cros_system_api/dbus/service_constants.h"
23 FakeShillIPConfigClient::FakeShillIPConfigClient() : weak_ptr_factory_(this) {
26 FakeShillIPConfigClient::~FakeShillIPConfigClient() {
29 void FakeShillIPConfigClient::Init(dbus::Bus
* bus
) {
32 void FakeShillIPConfigClient::AddPropertyChangedObserver(
33 const dbus::ObjectPath
& ipconfig_path
,
34 ShillPropertyChangedObserver
* observer
) {
37 void FakeShillIPConfigClient::RemovePropertyChangedObserver(
38 const dbus::ObjectPath
& ipconfig_path
,
39 ShillPropertyChangedObserver
* observer
) {
42 void FakeShillIPConfigClient::Refresh(const dbus::ObjectPath
& ipconfig_path
,
43 const VoidDBusMethodCallback
& callback
) {
46 void FakeShillIPConfigClient::GetProperties(
47 const dbus::ObjectPath
& ipconfig_path
,
48 const DictionaryValueCallback
& callback
) {
49 const base::DictionaryValue
* dict
= NULL
;
50 if (!ipconfigs_
.GetDictionaryWithoutPathExpansion(ipconfig_path
.value(),
53 base::ThreadTaskRunnerHandle::Get()->PostTask(
54 FROM_HERE
, base::Bind(&FakeShillIPConfigClient::PassProperties
,
55 weak_ptr_factory_
.GetWeakPtr(), dict
, callback
));
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::ThreadTaskRunnerHandle::Get()->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::ThreadTaskRunnerHandle::Get()->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::ThreadTaskRunnerHandle::Get()->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