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/bluetooth_agent_service_provider.h" | 5 #include "chromeos/dbus/bluetooth_agent_service_provider.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/chromeos/chromeos_version.h" | 10 #include "base/chromeos/chromeos_version.h" |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 | 132 |
133 // Called by dbus:: when the agent is unregistered from the Bluetooth | 133 // Called by dbus:: when the agent is unregistered from the Bluetooth |
134 // daemon, generally at the end of a pairing request. | 134 // daemon, generally at the end of a pairing request. |
135 void Release(dbus::MethodCall* method_call, | 135 void Release(dbus::MethodCall* method_call, |
136 dbus::ExportedObject::ResponseSender response_sender) { | 136 dbus::ExportedObject::ResponseSender response_sender) { |
137 DCHECK(OnOriginThread()); | 137 DCHECK(OnOriginThread()); |
138 DCHECK(delegate_); | 138 DCHECK(delegate_); |
139 | 139 |
140 delegate_->Release(); | 140 delegate_->Release(); |
141 | 141 |
142 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 142 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
143 response_sender.Run(response); | |
144 } | 143 } |
145 | 144 |
146 // Called by dbus:: when the Release method is exported. | 145 // Called by dbus:: when the Release method is exported. |
147 void ReleaseExported(const std::string& interface_name, | 146 void ReleaseExported(const std::string& interface_name, |
148 const std::string& method_name, | 147 const std::string& method_name, |
149 bool success) { | 148 bool success) { |
150 LOG_IF(WARNING, !success) << "Failed to export " | 149 LOG_IF(WARNING, !success) << "Failed to export " |
151 << interface_name << "." << method_name; | 150 << interface_name << "." << method_name; |
152 } | 151 } |
153 | 152 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 std::string pincode; | 227 std::string pincode; |
229 if (!reader.PopObjectPath(&device_path) || | 228 if (!reader.PopObjectPath(&device_path) || |
230 !reader.PopString(&pincode)) { | 229 !reader.PopString(&pincode)) { |
231 LOG(WARNING) << "DisplayPinCode called with incorrect paramters: " | 230 LOG(WARNING) << "DisplayPinCode called with incorrect paramters: " |
232 << method_call->ToString(); | 231 << method_call->ToString(); |
233 return; | 232 return; |
234 } | 233 } |
235 | 234 |
236 delegate_->DisplayPinCode(device_path, pincode); | 235 delegate_->DisplayPinCode(device_path, pincode); |
237 | 236 |
238 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 237 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
239 response_sender.Run(response); | |
240 } | 238 } |
241 | 239 |
242 // Called by dbus:: when the DisplayPinCode method is exported. | 240 // Called by dbus:: when the DisplayPinCode method is exported. |
243 void DisplayPinCodeExported(const std::string& interface_name, | 241 void DisplayPinCodeExported(const std::string& interface_name, |
244 const std::string& method_name, | 242 const std::string& method_name, |
245 bool success) { | 243 bool success) { |
246 LOG_IF(WARNING, !success) << "Failed to export " | 244 LOG_IF(WARNING, !success) << "Failed to export " |
247 << interface_name << "." << method_name; | 245 << interface_name << "." << method_name; |
248 } | 246 } |
249 | 247 |
(...skipping 10 matching lines...) Expand all Loading... |
260 uint32 passkey; | 258 uint32 passkey; |
261 if (!reader.PopObjectPath(&device_path) || | 259 if (!reader.PopObjectPath(&device_path) || |
262 !reader.PopUint32(&passkey)) { | 260 !reader.PopUint32(&passkey)) { |
263 LOG(WARNING) << "DisplayPasskey called with incorrect paramters: " | 261 LOG(WARNING) << "DisplayPasskey called with incorrect paramters: " |
264 << method_call->ToString(); | 262 << method_call->ToString(); |
265 return; | 263 return; |
266 } | 264 } |
267 | 265 |
268 delegate_->DisplayPasskey(device_path, passkey); | 266 delegate_->DisplayPasskey(device_path, passkey); |
269 | 267 |
270 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 268 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
271 response_sender.Run(response); | |
272 } | 269 } |
273 | 270 |
274 // Called by dbus:: when the DisplayPasskey method is exported. | 271 // Called by dbus:: when the DisplayPasskey method is exported. |
275 void DisplayPasskeyExported(const std::string& interface_name, | 272 void DisplayPasskeyExported(const std::string& interface_name, |
276 const std::string& method_name, | 273 const std::string& method_name, |
277 bool success) { | 274 bool success) { |
278 LOG_IF(WARNING, !success) << "Failed to export " | 275 LOG_IF(WARNING, !success) << "Failed to export " |
279 << interface_name << "." << method_name; | 276 << interface_name << "." << method_name; |
280 } | 277 } |
281 | 278 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 | 394 |
398 // Called by dbus:: when the request failed before a reply was returned | 395 // Called by dbus:: when the request failed before a reply was returned |
399 // from the device. | 396 // from the device. |
400 void Cancel(dbus::MethodCall* method_call, | 397 void Cancel(dbus::MethodCall* method_call, |
401 dbus::ExportedObject::ResponseSender response_sender) { | 398 dbus::ExportedObject::ResponseSender response_sender) { |
402 DCHECK(OnOriginThread()); | 399 DCHECK(OnOriginThread()); |
403 DCHECK(delegate_); | 400 DCHECK(delegate_); |
404 | 401 |
405 delegate_->Cancel(); | 402 delegate_->Cancel(); |
406 | 403 |
407 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 404 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
408 response_sender.Run(response); | |
409 } | 405 } |
410 | 406 |
411 // Called by dbus:: when the Cancel method is exported. | 407 // Called by dbus:: when the Cancel method is exported. |
412 void CancelExported(const std::string& interface_name, | 408 void CancelExported(const std::string& interface_name, |
413 const std::string& method_name, | 409 const std::string& method_name, |
414 bool success) { | 410 bool success) { |
415 LOG_IF(WARNING, !success) << "Failed to export " | 411 LOG_IF(WARNING, !success) << "Failed to export " |
416 << interface_name << "." << method_name; | 412 << interface_name << "." << method_name; |
417 } | 413 } |
418 | 414 |
419 // Called by the Delegate to response to a method requesting a PIN code. | 415 // Called by the Delegate to response to a method requesting a PIN code. |
420 void OnPinCode(dbus::MethodCall* method_call, | 416 void OnPinCode(dbus::MethodCall* method_call, |
421 dbus::ExportedObject::ResponseSender response_sender, | 417 dbus::ExportedObject::ResponseSender response_sender, |
422 Delegate::Status status, | 418 Delegate::Status status, |
423 const std::string& pincode) { | 419 const std::string& pincode) { |
424 DCHECK(OnOriginThread()); | 420 DCHECK(OnOriginThread()); |
425 | 421 |
426 switch (status) { | 422 switch (status) { |
427 case Delegate::SUCCESS: { | 423 case Delegate::SUCCESS: { |
428 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 424 scoped_ptr<dbus::Response> response( |
429 dbus::MessageWriter writer(response); | 425 dbus::Response::FromMethodCall(method_call)); |
| 426 dbus::MessageWriter writer(response.get()); |
430 writer.AppendString(pincode); | 427 writer.AppendString(pincode); |
431 response_sender.Run(response); | 428 response_sender.Run(response.Pass()); |
432 break; | 429 break; |
433 } | 430 } |
434 case Delegate::REJECTED: { | 431 case Delegate::REJECTED: { |
435 dbus::ErrorResponse* response = dbus::ErrorResponse::FromMethodCall( | 432 response_sender.Run( |
436 method_call, bluetooth_agent::kErrorRejected, "rejected"); | 433 dbus::ErrorResponse::FromMethodCall( |
437 response_sender.Run(response); | 434 method_call, bluetooth_agent::kErrorRejected, "rejected") |
| 435 .PassAs<dbus::Response>()); |
438 break; | 436 break; |
439 } | 437 } |
440 case Delegate::CANCELLED: { | 438 case Delegate::CANCELLED: { |
441 dbus::ErrorResponse* response = dbus::ErrorResponse::FromMethodCall( | 439 response_sender.Run( |
442 method_call, bluetooth_agent::kErrorCanceled, "canceled"); | 440 dbus::ErrorResponse::FromMethodCall( |
443 response_sender.Run(response); | 441 method_call, bluetooth_agent::kErrorCanceled, "canceled") |
| 442 .PassAs<dbus::Response>()); |
444 break; | 443 break; |
445 } | 444 } |
446 default: | 445 default: |
447 NOTREACHED() << "Unexpected status code from delegate: " << status; | 446 NOTREACHED() << "Unexpected status code from delegate: " << status; |
448 } | 447 } |
449 } | 448 } |
450 | 449 |
451 // Called by the Delegate to response to a method requesting a Passkey. | 450 // Called by the Delegate to response to a method requesting a Passkey. |
452 void OnPasskey(dbus::MethodCall* method_call, | 451 void OnPasskey(dbus::MethodCall* method_call, |
453 dbus::ExportedObject::ResponseSender response_sender, | 452 dbus::ExportedObject::ResponseSender response_sender, |
454 Delegate::Status status, | 453 Delegate::Status status, |
455 uint32 passkey) { | 454 uint32 passkey) { |
456 DCHECK(OnOriginThread()); | 455 DCHECK(OnOriginThread()); |
457 | 456 |
458 switch (status) { | 457 switch (status) { |
459 case Delegate::SUCCESS: { | 458 case Delegate::SUCCESS: { |
460 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 459 scoped_ptr<dbus::Response> response( |
461 dbus::MessageWriter writer(response); | 460 dbus::Response::FromMethodCall(method_call)); |
| 461 dbus::MessageWriter writer(response.get()); |
462 writer.AppendUint32(passkey); | 462 writer.AppendUint32(passkey); |
463 response_sender.Run(response); | 463 response_sender.Run(response.Pass()); |
464 break; | 464 break; |
465 } | 465 } |
466 case Delegate::REJECTED: { | 466 case Delegate::REJECTED: { |
467 dbus::ErrorResponse* response = dbus::ErrorResponse::FromMethodCall( | 467 response_sender.Run( |
468 method_call, bluetooth_agent::kErrorRejected, "rejected"); | 468 dbus::ErrorResponse::FromMethodCall( |
469 response_sender.Run(response); | 469 method_call, bluetooth_agent::kErrorRejected, "rejected") |
| 470 .PassAs<dbus::Response>()); |
470 break; | 471 break; |
471 } | 472 } |
472 case Delegate::CANCELLED: { | 473 case Delegate::CANCELLED: { |
473 dbus::ErrorResponse* response = dbus::ErrorResponse::FromMethodCall( | 474 response_sender.Run( |
474 method_call, bluetooth_agent::kErrorCanceled, "canceled"); | 475 dbus::ErrorResponse::FromMethodCall( |
475 response_sender.Run(response); | 476 method_call, bluetooth_agent::kErrorCanceled, "canceled") |
| 477 .PassAs<dbus::Response>()); |
476 break; | 478 break; |
477 } | 479 } |
478 default: | 480 default: |
479 NOTREACHED() << "Unexpected status code from delegate: " << status; | 481 NOTREACHED() << "Unexpected status code from delegate: " << status; |
480 } | 482 } |
481 } | 483 } |
482 | 484 |
483 // Called by the Delegate in response to a method requiring confirmation. | 485 // Called by the Delegate in response to a method requiring confirmation. |
484 void OnConfirmation(dbus::MethodCall* method_call, | 486 void OnConfirmation(dbus::MethodCall* method_call, |
485 dbus::ExportedObject::ResponseSender response_sender, | 487 dbus::ExportedObject::ResponseSender response_sender, |
486 Delegate::Status status) { | 488 Delegate::Status status) { |
487 DCHECK(OnOriginThread()); | 489 DCHECK(OnOriginThread()); |
488 | 490 |
489 switch (status) { | 491 switch (status) { |
490 case Delegate::SUCCESS: { | 492 case Delegate::SUCCESS: { |
491 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 493 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
492 response_sender.Run(response); | |
493 break; | 494 break; |
494 } | 495 } |
495 case Delegate::REJECTED: { | 496 case Delegate::REJECTED: { |
496 dbus::ErrorResponse* response = dbus::ErrorResponse::FromMethodCall( | 497 response_sender.Run( |
497 method_call, bluetooth_agent::kErrorRejected, "rejected"); | 498 dbus::ErrorResponse::FromMethodCall( |
498 response_sender.Run(response); | 499 method_call, bluetooth_agent::kErrorRejected, "rejected") |
| 500 .PassAs<dbus::Response>()); |
499 break; | 501 break; |
500 } | 502 } |
501 case Delegate::CANCELLED: { | 503 case Delegate::CANCELLED: { |
502 dbus::ErrorResponse* response = dbus::ErrorResponse::FromMethodCall( | 504 response_sender.Run( |
503 method_call, bluetooth_agent::kErrorCanceled, "canceled"); | 505 dbus::ErrorResponse::FromMethodCall( |
504 response_sender.Run(response); | 506 method_call, bluetooth_agent::kErrorCanceled, "canceled") |
| 507 .PassAs<dbus::Response>()); |
505 break; | 508 break; |
506 } | 509 } |
507 default: | 510 default: |
508 NOTREACHED() << "Unexpected status code from delegate: " << status; | 511 NOTREACHED() << "Unexpected status code from delegate: " << status; |
509 } | 512 } |
510 } | 513 } |
511 | 514 |
512 // Origin thread (i.e. the UI thread in production). | 515 // Origin thread (i.e. the UI thread in production). |
513 base::PlatformThreadId origin_thread_id_; | 516 base::PlatformThreadId origin_thread_id_; |
514 | 517 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
561 const dbus::ObjectPath& object_path, | 564 const dbus::ObjectPath& object_path, |
562 Delegate* delegate) { | 565 Delegate* delegate) { |
563 if (base::chromeos::IsRunningOnChromeOS()) { | 566 if (base::chromeos::IsRunningOnChromeOS()) { |
564 return new BluetoothAgentServiceProviderImpl(bus, object_path, delegate); | 567 return new BluetoothAgentServiceProviderImpl(bus, object_path, delegate); |
565 } else { | 568 } else { |
566 return new BluetoothAgentServiceProviderStubImpl(delegate); | 569 return new BluetoothAgentServiceProviderStubImpl(delegate); |
567 } | 570 } |
568 } | 571 } |
569 | 572 |
570 } // namespace chromeos | 573 } // namespace chromeos |
OLD | NEW |