OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/pairing/bluetooth_host_pairing_controller.h" | 5 #include "components/pairing/bluetooth_host_pairing_controller.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/hash.h" | 8 #include "base/hash.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 ProtoDecoder::SendHostStatus(host_status, &size)); | 143 ProtoDecoder::SendHostStatus(host_status, &size)); |
144 | 144 |
145 controller_socket_->Send( | 145 controller_socket_->Send( |
146 io_buffer, size, | 146 io_buffer, size, |
147 base::Bind(&BluetoothHostPairingController::OnSendComplete, | 147 base::Bind(&BluetoothHostPairingController::OnSendComplete, |
148 ptr_factory_.GetWeakPtr()), | 148 ptr_factory_.GetWeakPtr()), |
149 base::Bind(&BluetoothHostPairingController::OnSendError, | 149 base::Bind(&BluetoothHostPairingController::OnSendError, |
150 ptr_factory_.GetWeakPtr())); | 150 ptr_factory_.GetWeakPtr())); |
151 } | 151 } |
152 | 152 |
| 153 void BluetoothHostPairingController::SendErrorCodeAndMessage() { |
| 154 if (error_code_ == |
| 155 static_cast<int>(HostPairingController::ErrorCode::ERROR_NONE)) { |
| 156 return; |
| 157 } |
| 158 |
| 159 pairing_api::Error error_status; |
| 160 error_status.set_api_version(kPairingAPIVersion); |
| 161 error_status.mutable_parameters()->set_code(error_code_); |
| 162 error_status.mutable_parameters()->set_description(error_message_); |
| 163 |
| 164 int size = 0; |
| 165 scoped_refptr<net::IOBuffer> io_buffer( |
| 166 ProtoDecoder::SendError(error_status, &size)); |
| 167 |
| 168 controller_socket_->Send( |
| 169 io_buffer, size, |
| 170 base::Bind(&BluetoothHostPairingController::OnSendComplete, |
| 171 ptr_factory_.GetWeakPtr()), |
| 172 base::Bind(&BluetoothHostPairingController::OnSendError, |
| 173 ptr_factory_.GetWeakPtr())); |
| 174 } |
| 175 |
153 void BluetoothHostPairingController::Reset() { | 176 void BluetoothHostPairingController::Reset() { |
154 if (adapter_.get()) { | 177 if (adapter_.get()) { |
155 device::BluetoothDevice* device = | 178 device::BluetoothDevice* device = |
156 adapter_->GetDevice(controller_device_address_); | 179 adapter_->GetDevice(controller_device_address_); |
157 if (device && device->IsPaired()) { | 180 if (device && device->IsPaired()) { |
158 device->Forget(base::Bind(&BluetoothHostPairingController::OnForget, | 181 device->Forget(base::Bind(&BluetoothHostPairingController::OnForget, |
159 ptr_factory_.GetWeakPtr()), | 182 ptr_factory_.GetWeakPtr()), |
160 base::Bind(&BluetoothHostPairingController::OnForget, | 183 base::Bind(&BluetoothHostPairingController::OnForget, |
161 ptr_factory_.GetWeakPtr())); | 184 ptr_factory_.GetWeakPtr())); |
162 return; | 185 return; |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 return confirmation_code_; | 492 return confirmation_code_; |
470 } | 493 } |
471 | 494 |
472 std::string BluetoothHostPairingController::GetEnrollmentDomain() { | 495 std::string BluetoothHostPairingController::GetEnrollmentDomain() { |
473 return enrollment_domain_; | 496 return enrollment_domain_; |
474 } | 497 } |
475 | 498 |
476 void BluetoothHostPairingController::OnNetworkConnectivityChanged( | 499 void BluetoothHostPairingController::OnNetworkConnectivityChanged( |
477 Connectivity connectivity_status) { | 500 Connectivity connectivity_status) { |
478 connectivity_status_ = connectivity_status; | 501 connectivity_status_ = connectivity_status; |
479 if (connectivity_status == CONNECTIVITY_NONE) | 502 if (connectivity_status == CONNECTIVITY_NONE) { |
480 ChangeStage(STAGE_SETUP_NETWORK_ERROR); | 503 ChangeStage(STAGE_SETUP_NETWORK_ERROR); |
481 SendHostStatus(); | 504 SendErrorCodeAndMessage(); |
| 505 } else { |
| 506 SendHostStatus(); |
| 507 } |
482 } | 508 } |
483 | 509 |
484 void BluetoothHostPairingController::OnUpdateStatusChanged( | 510 void BluetoothHostPairingController::OnUpdateStatusChanged( |
485 UpdateStatus update_status) { | 511 UpdateStatus update_status) { |
486 update_status_ = update_status; | 512 update_status_ = update_status; |
487 if (update_status == UPDATE_STATUS_UPDATED) | 513 if (update_status == UPDATE_STATUS_UPDATED) |
488 ChangeStage(STAGE_WAITING_FOR_CREDENTIALS); | 514 ChangeStage(STAGE_WAITING_FOR_CREDENTIALS); |
489 SendHostStatus(); | 515 SendHostStatus(); |
490 } | 516 } |
491 | 517 |
492 void BluetoothHostPairingController::OnEnrollmentStatusChanged( | 518 void BluetoothHostPairingController::OnEnrollmentStatusChanged( |
493 EnrollmentStatus enrollment_status) { | 519 EnrollmentStatus enrollment_status) { |
494 DCHECK_EQ(current_stage_, STAGE_ENROLLING); | 520 DCHECK_EQ(current_stage_, STAGE_ENROLLING); |
495 DCHECK(thread_checker_.CalledOnValidThread()); | 521 DCHECK(thread_checker_.CalledOnValidThread()); |
496 | 522 |
497 enrollment_status_ = enrollment_status; | 523 enrollment_status_ = enrollment_status; |
498 if (enrollment_status == ENROLLMENT_STATUS_SUCCESS) { | 524 if (enrollment_status == ENROLLMENT_STATUS_SUCCESS) { |
499 ChangeStage(STAGE_ENROLLMENT_SUCCESS); | 525 ChangeStage(STAGE_ENROLLMENT_SUCCESS); |
| 526 SendHostStatus(); |
500 } else if (enrollment_status == ENROLLMENT_STATUS_FAILURE) { | 527 } else if (enrollment_status == ENROLLMENT_STATUS_FAILURE) { |
501 ChangeStage(STAGE_ENROLLMENT_ERROR); | 528 ChangeStage(STAGE_ENROLLMENT_ERROR); |
| 529 SendErrorCodeAndMessage(); |
502 } | 530 } |
503 SendHostStatus(); | |
504 } | 531 } |
505 | 532 |
506 void BluetoothHostPairingController::SetPermanentId( | 533 void BluetoothHostPairingController::SetPermanentId( |
507 const std::string& permanent_id) { | 534 const std::string& permanent_id) { |
508 permanent_id_ = permanent_id; | 535 permanent_id_ = permanent_id; |
509 } | 536 } |
510 | 537 |
| 538 void BluetoothHostPairingController::SetErrorCodeAndMessage( |
| 539 int error_code, |
| 540 const std::string& error_message) { |
| 541 error_code_ = error_code; |
| 542 error_message_ = error_message; |
| 543 } |
| 544 |
511 void BluetoothHostPairingController::RequestPinCode( | 545 void BluetoothHostPairingController::RequestPinCode( |
512 device::BluetoothDevice* device) { | 546 device::BluetoothDevice* device) { |
513 // Disallow unknown device. | 547 // Disallow unknown device. |
514 device->RejectPairing(); | 548 device->RejectPairing(); |
515 } | 549 } |
516 | 550 |
517 void BluetoothHostPairingController::RequestPasskey( | 551 void BluetoothHostPairingController::RequestPasskey( |
518 device::BluetoothDevice* device) { | 552 device::BluetoothDevice* device) { |
519 // Disallow unknown device. | 553 // Disallow unknown device. |
520 device->RejectPairing(); | 554 device->RejectPairing(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 ChangeStage(STAGE_WAITING_FOR_CODE_CONFIRMATION); | 588 ChangeStage(STAGE_WAITING_FOR_CODE_CONFIRMATION); |
555 } | 589 } |
556 | 590 |
557 void BluetoothHostPairingController::AuthorizePairing( | 591 void BluetoothHostPairingController::AuthorizePairing( |
558 device::BluetoothDevice* device) { | 592 device::BluetoothDevice* device) { |
559 // Disallow unknown device. | 593 // Disallow unknown device. |
560 device->RejectPairing(); | 594 device->RejectPairing(); |
561 } | 595 } |
562 | 596 |
563 } // namespace pairing_chromeos | 597 } // namespace pairing_chromeos |
OLD | NEW |