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

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

Issue 10949030: This converts the Shill clients to allow propagation of shill errors (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Review changes Created 8 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/shill_client_helper.h" 5 #include "chromeos/dbus/shill_client_helper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "dbus/message.h" 9 #include "dbus/message.h"
10 #include "dbus/object_proxy.h" 10 #include "dbus/object_proxy.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 55
56 void ShillClientHelper::CallObjectPathMethod( 56 void ShillClientHelper::CallObjectPathMethod(
57 dbus::MethodCall* method_call, 57 dbus::MethodCall* method_call,
58 const ObjectPathDBusMethodCallback& callback) { 58 const ObjectPathDBusMethodCallback& callback) {
59 proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 59 proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
60 base::Bind(&ShillClientHelper::OnObjectPathMethod, 60 base::Bind(&ShillClientHelper::OnObjectPathMethod,
61 weak_ptr_factory_.GetWeakPtr(), 61 weak_ptr_factory_.GetWeakPtr(),
62 callback)); 62 callback));
63 } 63 }
64 64
65 void ShillClientHelper::CallObjectPathMethodWithErrorCallback(
66 dbus::MethodCall* method_call,
67 const ObjectPathCallbackWithoutStatus& callback,
68 const ErrorCallback& error_callback) {
69 proxy_->CallMethodWithErrorCallback(
70 method_call,
71 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
72 base::Bind(&ShillClientHelper::OnObjectPathMethodWithoutStatus,
73 weak_ptr_factory_.GetWeakPtr(),
74 callback),
75 base::Bind(&ShillClientHelper::OnError,
76 weak_ptr_factory_.GetWeakPtr(),
77 error_callback));
78 }
79
65 void ShillClientHelper::CallDictionaryValueMethod( 80 void ShillClientHelper::CallDictionaryValueMethod(
66 dbus::MethodCall* method_call, 81 dbus::MethodCall* method_call,
67 const DictionaryValueCallback& callback) { 82 const DictionaryValueCallback& callback) {
68 proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 83 proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
69 base::Bind(&ShillClientHelper::OnDictionaryValueMethod, 84 base::Bind(&ShillClientHelper::OnDictionaryValueMethod,
70 weak_ptr_factory_.GetWeakPtr(), 85 weak_ptr_factory_.GetWeakPtr(),
71 callback)); 86 callback));
72 } 87 }
73 88
74 void ShillClientHelper::CallVoidMethodWithErrorCallback( 89 void ShillClientHelper::CallVoidMethodWithErrorCallback(
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 } 238 }
224 dbus::MessageReader reader(response); 239 dbus::MessageReader reader(response);
225 dbus::ObjectPath result; 240 dbus::ObjectPath result;
226 if (!reader.PopObjectPath(&result)) { 241 if (!reader.PopObjectPath(&result)) {
227 callback.Run(DBUS_METHOD_CALL_FAILURE, dbus::ObjectPath()); 242 callback.Run(DBUS_METHOD_CALL_FAILURE, dbus::ObjectPath());
228 return; 243 return;
229 } 244 }
230 callback.Run(DBUS_METHOD_CALL_SUCCESS, result); 245 callback.Run(DBUS_METHOD_CALL_SUCCESS, result);
231 } 246 }
232 247
248 void ShillClientHelper::OnObjectPathMethodWithoutStatus(
249 const ObjectPathCallbackWithoutStatus& callback,
250 dbus::Response* response) {
251 if (!response) {
252 callback.Run(dbus::ObjectPath());
hashimoto 2012/09/24 02:28:56 Please run ErrorCallback on error cases. (see OnDi
Greg Spencer (Chromium) 2012/09/24 21:50:54 Done.
253 return;
254 }
255 dbus::MessageReader reader(response);
256 dbus::ObjectPath result;
257 if (!reader.PopObjectPath(&result)) {
258 callback.Run(dbus::ObjectPath());
hashimoto 2012/09/24 02:28:56 ditto.
Greg Spencer (Chromium) 2012/09/24 21:50:54 Done.
259 return;
260 }
261 callback.Run(result);
262 }
263
233 void ShillClientHelper::OnDictionaryValueMethod( 264 void ShillClientHelper::OnDictionaryValueMethod(
234 const DictionaryValueCallback& callback, 265 const DictionaryValueCallback& callback,
235 dbus::Response* response) { 266 dbus::Response* response) {
236 if (!response) { 267 if (!response) {
237 base::DictionaryValue result; 268 base::DictionaryValue result;
238 callback.Run(DBUS_METHOD_CALL_FAILURE, result); 269 callback.Run(DBUS_METHOD_CALL_FAILURE, result);
239 return; 270 return;
240 } 271 }
241 dbus::MessageReader reader(response); 272 dbus::MessageReader reader(response);
242 scoped_ptr<base::Value> value(dbus::PopDataAsValue(&reader)); 273 scoped_ptr<base::Value> value(dbus::PopDataAsValue(&reader));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 if (response) { 309 if (response) {
279 // Error message may contain the error message as string. 310 // Error message may contain the error message as string.
280 dbus::MessageReader reader(response); 311 dbus::MessageReader reader(response);
281 error_name = response->GetErrorName(); 312 error_name = response->GetErrorName();
282 reader.PopString(&error_message); 313 reader.PopString(&error_message);
283 } 314 }
284 error_callback.Run(error_name, error_message); 315 error_callback.Run(error_name, error_message);
285 } 316 }
286 317
287 } // namespace chromeos 318 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698