Index: components/pairing/bluetooth_host_pairing_controller.cc |
diff --git a/components/pairing/bluetooth_host_pairing_controller.cc b/components/pairing/bluetooth_host_pairing_controller.cc |
index 75308e226ce187838676a4f67ad40ef922206a9f..d5319c9f753feff4d26eb0a3d733df21dff65720 100644 |
--- a/components/pairing/bluetooth_host_pairing_controller.cc |
+++ b/components/pairing/bluetooth_host_pairing_controller.cc |
@@ -14,14 +14,51 @@ |
#include "device/bluetooth/bluetooth_adapter_factory.h" |
#include "net/base/io_buffer.h" |
+namespace pairing_chromeos { |
+ |
namespace { |
const int kReceiveSize = 16384; |
+ |
+pairing_api::HostStatusParameters::UpdateStatus PairingApiUpdateStatus( |
+ HostPairingController::UpdateStatus update_status) { |
+ switch(update_status) { |
+ case HostPairingController::UPDATE_STATUS_UNKNOWN: |
+ return pairing_api::HostStatusParameters::UPDATE_STATUS_UNKNOWN; |
+ case HostPairingController::UPDATE_STATUS_UPDATING: |
+ return pairing_api::HostStatusParameters::UPDATE_STATUS_UPDATING; |
+ case HostPairingController::UPDATE_STATUS_REBOOTING: |
+ return pairing_api::HostStatusParameters::UPDATE_STATUS_REBOOTING; |
+ case HostPairingController::UPDATE_STATUS_UPDATED: |
+ return pairing_api::HostStatusParameters::UPDATE_STATUS_UPDATED; |
+ default: |
+ NOTREACHED(); |
+ return pairing_api::HostStatusParameters::UPDATE_STATUS_UNKNOWN; |
+ } |
} |
-namespace pairing_chromeos { |
+pairing_api::HostStatusParameters::EnrollmentStatus PairingApiEnrollmentStatus( |
+ HostPairingController::EnrollmentStatus enrollment_status) { |
+ switch(enrollment_status) { |
+ case HostPairingController::ENROLLMENT_STATUS_UNKNOWN: |
+ return pairing_api::HostStatusParameters::ENROLLMENT_STATUS_UNKNOWN; |
+ case HostPairingController::ENROLLMENT_STATUS_ENROLLING: |
+ return pairing_api::HostStatusParameters::ENROLLMENT_STATUS_ENROLLING; |
+ case HostPairingController::ENROLLMENT_STATUS_FAILURE: |
+ return pairing_api::HostStatusParameters::ENROLLMENT_STATUS_FAILURE; |
+ case HostPairingController::ENROLLMENT_STATUS_SUCCESS: |
+ return pairing_api::HostStatusParameters::ENROLLMENT_STATUS_SUCCESS; |
+ default: |
+ NOTREACHED(); |
+ return pairing_api::HostStatusParameters::ENROLLMENT_STATUS_UNKNOWN; |
+ } |
+} |
+ |
+} // namespace |
BluetoothHostPairingController::BluetoothHostPairingController() |
: current_stage_(STAGE_NONE), |
+ update_status_(UPDATE_STATUS_UNKNOWN), |
+ enrollment_status_(ENROLLMENT_STATUS_UNKNOWN), |
device_(NULL), |
proto_decoder_(new ProtoDecoder(this)), |
ptr_factory_(this) { |
@@ -51,7 +88,9 @@ void BluetoothHostPairingController::SendHostStatus() { |
host_status.mutable_parameters()->set_connectivity( |
pairing_api::HostStatusParameters::CONNECTIVITY_CONNECTED); |
host_status.mutable_parameters()->set_update_status( |
- pairing_api::HostStatusParameters::UPDATE_STATUS_UPDATED); |
+ PairingApiUpdateStatus(update_status_)); |
+ host_status.mutable_parameters()->set_enrollment_status( |
+ PairingApiEnrollmentStatus(enrollment_status_)); |
// TODO(zork): Get a list of other paired controllers. |
// (http://crbug.com/405757) |
@@ -206,7 +245,7 @@ void BluetoothHostPairingController::OnAccept( |
base::Bind(&BluetoothHostPairingController::OnReceiveError, |
ptr_factory_.GetWeakPtr())); |
- ChangeStage(STAGE_WAITING_FOR_CREDENTIALS); |
+ ChangeStage(STAGE_UPDATING); |
} |
void BluetoothHostPairingController::OnSetDiscoverable(bool change_stage) { |
@@ -279,27 +318,11 @@ void BluetoothHostPairingController::OnConfigureHostMessage( |
void BluetoothHostPairingController::OnPairDevicesMessage( |
const pairing_api::PairDevices& message) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- if (current_stage_ != STAGE_WAITING_FOR_CREDENTIALS) { |
- AbortWithError(PAIRING_ERROR_PAIRING_OR_ENROLLMENT, kErrorInvalidProtocol); |
- return; |
- } |
- |
ChangeStage(STAGE_ENROLLING); |
FOR_EACH_OBSERVER(Observer, observers_, |
EnrollHost(message.parameters().admin_access_token())); |
} |
-void BluetoothHostPairingController::SetEnrollmentComplete(bool success) { |
- DCHECK_EQ(current_stage_, STAGE_ENROLLING); |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- if (success) { |
- ChangeStage(STAGE_PAIRING_DONE); |
- SendHostStatus(); |
- } else { |
- AbortWithError(PAIRING_ERROR_PAIRING_OR_ENROLLMENT, kErrorEnrollmentFailed); |
- } |
-} |
- |
void BluetoothHostPairingController::OnCompleteSetupMessage( |
const pairing_api::CompleteSetup& message) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
@@ -368,7 +391,25 @@ std::string BluetoothHostPairingController::GetEnrollmentDomain() { |
void BluetoothHostPairingController::OnUpdateStatusChanged( |
UpdateStatus update_status) { |
- // TODO(zork): Handling updating stages (http://crbug.com/405754). |
+ update_status_ = update_status; |
+ if (update_status == UPDATE_STATUS_UPDATED) |
+ ChangeStage(STAGE_WAITING_FOR_CREDENTIALS); |
+ SendHostStatus(); |
+} |
+ |
+void BluetoothHostPairingController::OnEnrollmentStatusChanged( |
+ EnrollmentStatus enrollment_status) { |
+ DCHECK_EQ(current_stage_, STAGE_ENROLLING); |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ |
+ enrollment_status_ = enrollment_status; |
+ if (enrollment_status == ENROLLMENT_STATUS_SUCCESS) { |
+ ChangeStage(STAGE_PAIRING_DONE); |
+ } else if (enrollment_status == ENROLLMENT_STATUS_FAILURE) { |
+ AbortWithError(PAIRING_ERROR_PAIRING_OR_ENROLLMENT, |
+ kErrorEnrollmentFailed); |
+ } |
+ SendHostStatus(); |
} |
void BluetoothHostPairingController::RequestPinCode( |