Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: chromeos/dbus/shill_device_client_stub.cc

Issue 31513002: dbus: Remove MockShillDeviceClient and MockShillIPConfigClient (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix the build Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chromeos/dbus/shill_device_client_stub.h ('k') | chromeos/dbus/shill_ipconfig_client.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 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.
4
5 #include "chromeos/dbus/shill_device_client_stub.h"
6
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "base/stl_util.h"
10 #include "base/values.h"
11 #include "chromeos/dbus/dbus_thread_manager.h"
12 #include "chromeos/dbus/shill_manager_client.h"
13 #include "chromeos/dbus/shill_property_changed_observer.h"
14 #include "dbus/bus.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"
20
21 namespace chromeos {
22
23 namespace {
24
25 void ErrorFunction(const std::string& device_path,
26 const std::string& error_name,
27 const std::string& error_message) {
28 LOG(ERROR) << "Shill Error for: " << device_path
29 << ": " << error_name << " : " << error_message;
30 }
31
32 } // namespace
33
34 ShillDeviceClientStub::ShillDeviceClientStub() : weak_ptr_factory_(this) {
35 }
36
37 ShillDeviceClientStub::~ShillDeviceClientStub() {
38 STLDeleteContainerPairSecondPointers(
39 observer_list_.begin(), observer_list_.end());
40 }
41
42 // ShillDeviceClient overrides.
43
44 void ShillDeviceClientStub::Init(dbus::Bus* bus) {}
45
46 void ShillDeviceClientStub::AddPropertyChangedObserver(
47 const dbus::ObjectPath& device_path,
48 ShillPropertyChangedObserver* observer){
49 GetObserverList(device_path).AddObserver(observer);
50 }
51
52 void ShillDeviceClientStub::RemovePropertyChangedObserver(
53 const dbus::ObjectPath& device_path,
54 ShillPropertyChangedObserver* observer){
55 GetObserverList(device_path).RemoveObserver(observer);
56 }
57
58 void ShillDeviceClientStub::GetProperties(
59 const dbus::ObjectPath& device_path,
60 const DictionaryValueCallback& callback){
61 base::MessageLoop::current()->PostTask(
62 FROM_HERE,
63 base::Bind(&ShillDeviceClientStub::PassStubDeviceProperties,
64 weak_ptr_factory_.GetWeakPtr(),
65 device_path, callback));
66 }
67
68 void ShillDeviceClientStub::ProposeScan(const dbus::ObjectPath& device_path,
69 const VoidDBusMethodCallback& callback){
70 PostVoidCallback(callback, DBUS_METHOD_CALL_SUCCESS);
71 }
72
73 void ShillDeviceClientStub::SetProperty(const dbus::ObjectPath& device_path,
74 const std::string& name,
75 const base::Value& value,
76 const base::Closure& callback,
77 const ErrorCallback& error_callback){
78 base::DictionaryValue* device_properties = NULL;
79 if (!stub_devices_.GetDictionaryWithoutPathExpansion(device_path.value(),
80 &device_properties)) {
81 std::string error_name("org.chromium.flimflam.Error.Failure");
82 std::string error_message("Failed");
83 base::MessageLoop::current()->PostTask(FROM_HERE,
84 base::Bind(error_callback,
85 error_name,
86 error_message));
87 return;
88 }
89 device_properties->SetWithoutPathExpansion(name, value.DeepCopy());
90 base::MessageLoop::current()->PostTask(
91 FROM_HERE,
92 base::Bind(&ShillDeviceClientStub::NotifyObserversPropertyChanged,
93 weak_ptr_factory_.GetWeakPtr(), device_path, name));
94 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
95 }
96
97 void ShillDeviceClientStub::ClearProperty(
98 const dbus::ObjectPath& device_path,
99 const std::string& name,
100 const VoidDBusMethodCallback& callback){
101 base::DictionaryValue* device_properties = NULL;
102 if (!stub_devices_.GetDictionaryWithoutPathExpansion(device_path.value(),
103 &device_properties)) {
104 PostVoidCallback(callback, DBUS_METHOD_CALL_FAILURE);
105 return;
106 }
107 device_properties->RemoveWithoutPathExpansion(name, NULL);
108 PostVoidCallback(callback, DBUS_METHOD_CALL_SUCCESS);
109 }
110
111 void ShillDeviceClientStub::AddIPConfig(
112 const dbus::ObjectPath& device_path,
113 const std::string& method,
114 const ObjectPathDBusMethodCallback& callback){
115 base::MessageLoop::current()->PostTask(FROM_HERE,
116 base::Bind(callback,
117 DBUS_METHOD_CALL_SUCCESS,
118 dbus::ObjectPath()));
119 }
120
121 void ShillDeviceClientStub::RequirePin(const dbus::ObjectPath& device_path,
122 const std::string& pin,
123 bool require,
124 const base::Closure& callback,
125 const ErrorCallback& error_callback){
126 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
127 }
128
129 void ShillDeviceClientStub::EnterPin(const dbus::ObjectPath& device_path,
130 const std::string& pin,
131 const base::Closure& callback,
132 const ErrorCallback& error_callback){
133 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
134 }
135
136 void ShillDeviceClientStub::UnblockPin(const dbus::ObjectPath& device_path,
137 const std::string& puk,
138 const std::string& pin,
139 const base::Closure& callback,
140 const ErrorCallback& error_callback){
141 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
142 }
143
144 void ShillDeviceClientStub::ChangePin(const dbus::ObjectPath& device_path,
145 const std::string& old_pin,
146 const std::string& new_pin,
147 const base::Closure& callback,
148 const ErrorCallback& error_callback){
149 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
150 }
151
152 void ShillDeviceClientStub::Register(const dbus::ObjectPath& device_path,
153 const std::string& network_id,
154 const base::Closure& callback,
155 const ErrorCallback& error_callback){
156 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
157 }
158
159 void ShillDeviceClientStub::SetCarrier(const dbus::ObjectPath& device_path,
160 const std::string& carrier,
161 const base::Closure& callback,
162 const ErrorCallback& error_callback){
163 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
164 }
165
166 void ShillDeviceClientStub::Reset(const dbus::ObjectPath& device_path,
167 const base::Closure& callback,
168 const ErrorCallback& error_callback){
169 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
170 }
171
172 ShillDeviceClient::TestInterface* ShillDeviceClientStub::GetTestInterface(){
173 return this;
174 }
175
176 // ShillDeviceClient::TestInterface overrides.
177
178 void ShillDeviceClientStub::AddDevice(const std::string& device_path,
179 const std::string& type,
180 const std::string& object_path){
181 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface()->
182 AddDevice(device_path);
183
184 base::DictionaryValue* properties = GetDeviceProperties(device_path);
185 properties->SetWithoutPathExpansion(
186 shill::kTypeProperty,
187 base::Value::CreateStringValue(type));
188 properties->SetWithoutPathExpansion(
189 shill::kDBusObjectProperty,
190 base::Value::CreateStringValue(object_path));
191 properties->SetWithoutPathExpansion(
192 shill::kDBusConnectionProperty,
193 base::Value::CreateStringValue("/stub"));
194 }
195
196 void ShillDeviceClientStub::RemoveDevice(const std::string& device_path){
197 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface()->
198 RemoveDevice(device_path);
199
200 stub_devices_.RemoveWithoutPathExpansion(device_path, NULL);
201 }
202
203 void ShillDeviceClientStub::ClearDevices(){
204 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface()->
205 ClearDevices();
206
207 stub_devices_.Clear();
208 }
209
210 void ShillDeviceClientStub::SetDeviceProperty(const std::string& device_path,
211 const std::string& name,
212 const base::Value& value){
213 VLOG(1) << "SetDeviceProperty: " << device_path
214 << ": " << name << " = " << value;
215 SetProperty(dbus::ObjectPath(device_path), name, value,
216 base::Bind(&base::DoNothing),
217 base::Bind(&ErrorFunction, device_path));
218 }
219
220 std::string ShillDeviceClientStub::GetDevicePathForType(
221 const std::string& type) {
222 for (base::DictionaryValue::Iterator iter(stub_devices_);
223 !iter.IsAtEnd(); iter.Advance()) {
224 const base::DictionaryValue* properties = NULL;
225 if (!iter.value().GetAsDictionary(&properties))
226 continue;
227 std::string prop_type;
228 if (!properties->GetStringWithoutPathExpansion(
229 shill::kTypeProperty, &prop_type) ||
230 prop_type != type)
231 continue;
232 return iter.key();
233 }
234 return std::string();
235 }
236
237 void ShillDeviceClientStub::PassStubDeviceProperties(
238 const dbus::ObjectPath& device_path,
239 const DictionaryValueCallback& callback) const {
240 const base::DictionaryValue* device_properties = NULL;
241 if (!stub_devices_.GetDictionaryWithoutPathExpansion(
242 device_path.value(), &device_properties)) {
243 base::DictionaryValue empty_dictionary;
244 callback.Run(DBUS_METHOD_CALL_FAILURE, empty_dictionary);
245 return;
246 }
247 callback.Run(DBUS_METHOD_CALL_SUCCESS, *device_properties);
248 }
249
250 // Posts a task to run a void callback with status code |status|.
251 void ShillDeviceClientStub::PostVoidCallback(
252 const VoidDBusMethodCallback& callback,
253 DBusMethodCallStatus status) {
254 base::MessageLoop::current()->PostTask(FROM_HERE,
255 base::Bind(callback, status));
256 }
257
258 void ShillDeviceClientStub::NotifyObserversPropertyChanged(
259 const dbus::ObjectPath& device_path,
260 const std::string& property) {
261 base::DictionaryValue* dict = NULL;
262 std::string path = device_path.value();
263 if (!stub_devices_.GetDictionaryWithoutPathExpansion(path, &dict)) {
264 LOG(ERROR) << "Notify for unknown service: " << path;
265 return;
266 }
267 base::Value* value = NULL;
268 if (!dict->GetWithoutPathExpansion(property, &value)) {
269 LOG(ERROR) << "Notify for unknown property: "
270 << path << " : " << property;
271 return;
272 }
273 FOR_EACH_OBSERVER(ShillPropertyChangedObserver,
274 GetObserverList(device_path),
275 OnPropertyChanged(property, *value));
276 }
277
278 base::DictionaryValue* ShillDeviceClientStub::GetDeviceProperties(
279 const std::string& device_path) {
280 base::DictionaryValue* properties = NULL;
281 if (!stub_devices_.GetDictionaryWithoutPathExpansion(
282 device_path, &properties)) {
283 properties = new base::DictionaryValue;
284 stub_devices_.SetWithoutPathExpansion(device_path, properties);
285 }
286 return properties;
287 }
288
289 ShillDeviceClientStub::PropertyObserverList&
290 ShillDeviceClientStub::GetObserverList(const dbus::ObjectPath& device_path) {
291 std::map<dbus::ObjectPath, PropertyObserverList*>::iterator iter =
292 observer_list_.find(device_path);
293 if (iter != observer_list_.end())
294 return *(iter->second);
295 PropertyObserverList* observer_list = new PropertyObserverList();
296 observer_list_[device_path] = observer_list;
297 return *observer_list;
298 }
299
300 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/shill_device_client_stub.h ('k') | chromeos/dbus/shill_ipconfig_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698