| OLD | NEW |
| 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 Loading... |
| 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 |
| OLD | NEW |