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

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

Issue 11367048: This is the first pass at making GetIPConfigs asynchronous. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 1 month 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 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 error_callback.Run(kInvalidResponseErrorName, kInvalidResponseErrorMessage); 270 error_callback.Run(kInvalidResponseErrorName, kInvalidResponseErrorMessage);
271 return; 271 return;
272 } 272 }
273 callback.Run(result); 273 callback.Run(result);
274 } 274 }
275 275
276 void ShillClientHelper::OnDictionaryValueMethod( 276 void ShillClientHelper::OnDictionaryValueMethod(
277 const DictionaryValueCallback& callback, 277 const DictionaryValueCallback& callback,
278 dbus::Response* response) { 278 dbus::Response* response) {
279 if (!response) { 279 if (!response) {
280 base::DictionaryValue result; 280 scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue);
281 callback.Run(DBUS_METHOD_CALL_FAILURE, result); 281 callback.Run(DBUS_METHOD_CALL_FAILURE, result.Pass());
282 return; 282 return;
283 } 283 }
284 dbus::MessageReader reader(response); 284 dbus::MessageReader reader(response);
285 scoped_ptr<base::Value> value(dbus::PopDataAsValue(&reader)); 285 base::Value* value = dbus::PopDataAsValue(&reader);
286 base::DictionaryValue* result = NULL; 286 base::DictionaryValue* result = NULL;
287 if (!value.get() || !value->GetAsDictionary(&result)) { 287 if (!value || !value->GetAsDictionary(&result)) {
288 base::DictionaryValue result; 288 delete value;
289 callback.Run(DBUS_METHOD_CALL_FAILURE, result); 289 scoped_ptr<base::DictionaryValue> empty_ptr(new base::DictionaryValue);
290 callback.Run(DBUS_METHOD_CALL_FAILURE, empty_ptr.Pass());
290 return; 291 return;
291 } 292 }
292 callback.Run(DBUS_METHOD_CALL_SUCCESS, *result); 293
294 scoped_ptr<base::DictionaryValue> result_ptr(result);
295 callback.Run(DBUS_METHOD_CALL_SUCCESS, result_ptr.Pass());
293 } 296 }
294 297
295 void ShillClientHelper::OnVoidMethodWithErrorCallback( 298 void ShillClientHelper::OnVoidMethodWithErrorCallback(
296 const base::Closure& callback, 299 const base::Closure& callback,
297 dbus::Response* response) { 300 dbus::Response* response) {
298 callback.Run(); 301 callback.Run();
299 } 302 }
300 303
301 void ShillClientHelper::OnDictionaryValueMethodWithErrorCallback( 304 void ShillClientHelper::OnDictionaryValueMethodWithErrorCallback(
302 const DictionaryValueCallbackWithoutStatus& callback, 305 const DictionaryValueCallbackWithoutStatus& callback,
303 const ErrorCallback& error_callback, 306 const ErrorCallback& error_callback,
304 dbus::Response* response) { 307 dbus::Response* response) {
305 dbus::MessageReader reader(response); 308 dbus::MessageReader reader(response);
306 scoped_ptr<base::Value> value(dbus::PopDataAsValue(&reader)); 309 base::Value* value(dbus::PopDataAsValue(&reader));
307 base::DictionaryValue* result = NULL; 310 base::DictionaryValue* result = NULL;
308 if (!value.get() || !value->GetAsDictionary(&result)) { 311 if (!value || !value->GetAsDictionary(&result)) {
312 delete value;
309 error_callback.Run(kInvalidResponseErrorName, kInvalidResponseErrorMessage); 313 error_callback.Run(kInvalidResponseErrorName, kInvalidResponseErrorMessage);
310 return; 314 return;
311 } 315 }
312 callback.Run(*result); 316 scoped_ptr<base::DictionaryValue> result_ptr(result);
317 callback.Run(result_ptr.Pass());
313 } 318 }
314 319
315 void ShillClientHelper::OnError(const ErrorCallback& error_callback, 320 void ShillClientHelper::OnError(const ErrorCallback& error_callback,
316 dbus::ErrorResponse* response) { 321 dbus::ErrorResponse* response) {
317 std::string error_name; 322 std::string error_name;
318 std::string error_message; 323 std::string error_message;
319 if (response) { 324 if (response) {
320 // Error message may contain the error message as string. 325 // Error message may contain the error message as string.
321 dbus::MessageReader reader(response); 326 dbus::MessageReader reader(response);
322 error_name = response->GetErrorName(); 327 error_name = response->GetErrorName();
323 reader.PopString(&error_message); 328 reader.PopString(&error_message);
324 } 329 }
325 error_callback.Run(error_name, error_message); 330 error_callback.Run(error_name, error_message);
326 } 331 }
327 332
328 } // namespace chromeos 333 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698