| 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/logging.h" | 9 #include "base/logging.h" | 
| 10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" | 
| 11 #include "components/pairing/bluetooth_pairing_constants.h" | 11 #include "components/pairing/bluetooth_pairing_constants.h" | 
| 12 #include "components/pairing/pairing_api.pb.h" | 12 #include "components/pairing/pairing_api.pb.h" | 
| 13 #include "components/pairing/proto_decoder.h" | 13 #include "components/pairing/proto_decoder.h" | 
| 14 #include "device/bluetooth/bluetooth_adapter_factory.h" | 14 #include "device/bluetooth/bluetooth_adapter_factory.h" | 
| 15 #include "net/base/io_buffer.h" | 15 #include "net/base/io_buffer.h" | 
| 16 | 16 | 
| 17 namespace pairing_chromeos { | 17 namespace pairing_chromeos { | 
| 18 | 18 | 
| 19 namespace { | 19 namespace { | 
| 20 const int kReceiveSize = 16384; | 20 const int kReceiveSize = 16384; | 
| 21 | 21 | 
|  | 22 pairing_api::HostStatusParameters::Connectivity PairingApiConnectivityStatus( | 
|  | 23     HostPairingController::Connectivity connectivity_status) { | 
|  | 24   switch (connectivity_status) { | 
|  | 25     case HostPairingController::CONNECTIVITY_UNTESTED: | 
|  | 26       return pairing_api::HostStatusParameters::CONNECTIVITY_UNTESTED; | 
|  | 27     case HostPairingController::CONNECTIVITY_NONE: | 
|  | 28       return pairing_api::HostStatusParameters::CONNECTIVITY_NONE; | 
|  | 29     case HostPairingController::CONNECTIVITY_LIMITED: | 
|  | 30       return pairing_api::HostStatusParameters::CONNECTIVITY_LIMITED; | 
|  | 31     case HostPairingController::CONNECTIVITY_CONNECTING: | 
|  | 32       return pairing_api::HostStatusParameters::CONNECTIVITY_CONNECTING; | 
|  | 33     case HostPairingController::CONNECTIVITY_CONNECTED: | 
|  | 34       return pairing_api::HostStatusParameters::CONNECTIVITY_CONNECTED; | 
|  | 35     default: | 
|  | 36       NOTREACHED(); | 
|  | 37       return pairing_api::HostStatusParameters::CONNECTIVITY_UNTESTED; | 
|  | 38   } | 
|  | 39 } | 
|  | 40 | 
| 22 pairing_api::HostStatusParameters::UpdateStatus PairingApiUpdateStatus( | 41 pairing_api::HostStatusParameters::UpdateStatus PairingApiUpdateStatus( | 
| 23     HostPairingController::UpdateStatus update_status) { | 42     HostPairingController::UpdateStatus update_status) { | 
| 24   switch(update_status) { | 43   switch(update_status) { | 
| 25     case HostPairingController::UPDATE_STATUS_UNKNOWN: | 44     case HostPairingController::UPDATE_STATUS_UNKNOWN: | 
| 26       return pairing_api::HostStatusParameters::UPDATE_STATUS_UNKNOWN; | 45       return pairing_api::HostStatusParameters::UPDATE_STATUS_UNKNOWN; | 
| 27     case HostPairingController::UPDATE_STATUS_UPDATING: | 46     case HostPairingController::UPDATE_STATUS_UPDATING: | 
| 28       return pairing_api::HostStatusParameters::UPDATE_STATUS_UPDATING; | 47       return pairing_api::HostStatusParameters::UPDATE_STATUS_UPDATING; | 
| 29     case HostPairingController::UPDATE_STATUS_REBOOTING: | 48     case HostPairingController::UPDATE_STATUS_REBOOTING: | 
| 30       return pairing_api::HostStatusParameters::UPDATE_STATUS_REBOOTING; | 49       return pairing_api::HostStatusParameters::UPDATE_STATUS_REBOOTING; | 
| 31     case HostPairingController::UPDATE_STATUS_UPDATED: | 50     case HostPairingController::UPDATE_STATUS_UPDATED: | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 50     default: | 69     default: | 
| 51       NOTREACHED(); | 70       NOTREACHED(); | 
| 52       return pairing_api::HostStatusParameters::ENROLLMENT_STATUS_UNKNOWN; | 71       return pairing_api::HostStatusParameters::ENROLLMENT_STATUS_UNKNOWN; | 
| 53   } | 72   } | 
| 54 } | 73 } | 
| 55 | 74 | 
| 56 }  // namespace | 75 }  // namespace | 
| 57 | 76 | 
| 58 BluetoothHostPairingController::BluetoothHostPairingController() | 77 BluetoothHostPairingController::BluetoothHostPairingController() | 
| 59     : current_stage_(STAGE_NONE), | 78     : current_stage_(STAGE_NONE), | 
|  | 79       connectivity_status_(CONNECTIVITY_UNTESTED), | 
| 60       update_status_(UPDATE_STATUS_UNKNOWN), | 80       update_status_(UPDATE_STATUS_UNKNOWN), | 
| 61       enrollment_status_(ENROLLMENT_STATUS_UNKNOWN), | 81       enrollment_status_(ENROLLMENT_STATUS_UNKNOWN), | 
| 62       proto_decoder_(new ProtoDecoder(this)), | 82       proto_decoder_(new ProtoDecoder(this)), | 
| 63       ptr_factory_(this) { | 83       ptr_factory_(this) {} | 
| 64 } |  | 
| 65 | 84 | 
| 66 BluetoothHostPairingController::~BluetoothHostPairingController() { | 85 BluetoothHostPairingController::~BluetoothHostPairingController() { | 
| 67   Reset(); | 86   Reset(); | 
| 68   if (adapter_.get()) { | 87   if (adapter_.get()) { | 
| 69     if (adapter_->IsDiscoverable()) { | 88     if (adapter_->IsDiscoverable()) { | 
| 70       adapter_->SetDiscoverable(false, base::Closure(), base::Closure()); | 89       adapter_->SetDiscoverable(false, base::Closure(), base::Closure()); | 
| 71     } | 90     } | 
| 72     adapter_->RemoveObserver(this); | 91     adapter_->RemoveObserver(this); | 
| 73     adapter_ = NULL; | 92     adapter_ = NULL; | 
| 74   } | 93   } | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 86   pairing_api::HostStatus host_status; | 105   pairing_api::HostStatus host_status; | 
| 87 | 106 | 
| 88   host_status.set_api_version(kPairingAPIVersion); | 107   host_status.set_api_version(kPairingAPIVersion); | 
| 89   if (!enrollment_domain_.empty()) | 108   if (!enrollment_domain_.empty()) | 
| 90     host_status.mutable_parameters()->set_domain(enrollment_domain_); | 109     host_status.mutable_parameters()->set_domain(enrollment_domain_); | 
| 91   if (!permanent_id_.empty()) | 110   if (!permanent_id_.empty()) | 
| 92     host_status.mutable_parameters()->set_permanent_id(permanent_id_); | 111     host_status.mutable_parameters()->set_permanent_id(permanent_id_); | 
| 93 | 112 | 
| 94   // TODO(zork): Get these values from the UI. (http://crbug.com/405744) | 113   // TODO(zork): Get these values from the UI. (http://crbug.com/405744) | 
| 95   host_status.mutable_parameters()->set_connectivity( | 114   host_status.mutable_parameters()->set_connectivity( | 
| 96       pairing_api::HostStatusParameters::CONNECTIVITY_CONNECTED); | 115       PairingApiConnectivityStatus(connectivity_status_)); | 
| 97   host_status.mutable_parameters()->set_update_status( | 116   host_status.mutable_parameters()->set_update_status( | 
| 98       PairingApiUpdateStatus(update_status_)); | 117       PairingApiUpdateStatus(update_status_)); | 
| 99   host_status.mutable_parameters()->set_enrollment_status( | 118   host_status.mutable_parameters()->set_enrollment_status( | 
| 100       PairingApiEnrollmentStatus(enrollment_status_)); | 119       PairingApiEnrollmentStatus(enrollment_status_)); | 
| 101 | 120 | 
| 102   // TODO(zork): Get a list of other paired controllers. | 121   // TODO(zork): Get a list of other paired controllers. | 
| 103   // (http://crbug.com/405757) | 122   // (http://crbug.com/405757) | 
| 104 | 123 | 
| 105   int size = 0; | 124   int size = 0; | 
| 106   scoped_refptr<net::IOBuffer> io_buffer( | 125   scoped_refptr<net::IOBuffer> io_buffer( | 
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 302   LOG(ERROR) << reason << ", " << error_message; | 321   LOG(ERROR) << reason << ", " << error_message; | 
| 303 } | 322 } | 
| 304 | 323 | 
| 305 void BluetoothHostPairingController::OnHostStatusMessage( | 324 void BluetoothHostPairingController::OnHostStatusMessage( | 
| 306     const pairing_api::HostStatus& message) { | 325     const pairing_api::HostStatus& message) { | 
| 307   NOTREACHED(); | 326   NOTREACHED(); | 
| 308 } | 327 } | 
| 309 | 328 | 
| 310 void BluetoothHostPairingController::OnConfigureHostMessage( | 329 void BluetoothHostPairingController::OnConfigureHostMessage( | 
| 311     const pairing_api::ConfigureHost& message) { | 330     const pairing_api::ConfigureHost& message) { | 
|  | 331   ChangeStage(STAGE_SETUP_BASIC_CONFIGURATION); | 
| 312   FOR_EACH_OBSERVER(Observer, observers_, | 332   FOR_EACH_OBSERVER(Observer, observers_, | 
| 313                     ConfigureHostRequested( | 333                     ConfigureHostRequested( | 
| 314                         message.parameters().accepted_eula(), | 334                         message.parameters().accepted_eula(), | 
| 315                         message.parameters().lang(), | 335                         message.parameters().lang(), | 
| 316                         message.parameters().timezone(), | 336                         message.parameters().timezone(), | 
| 317                         message.parameters().send_reports(), | 337                         message.parameters().send_reports(), | 
| 318                         message.parameters().keyboard_layout())); | 338                         message.parameters().keyboard_layout())); | 
| 319 } | 339 } | 
| 320 | 340 | 
| 321 void BluetoothHostPairingController::OnPairDevicesMessage( | 341 void BluetoothHostPairingController::OnPairDevicesMessage( | 
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 394 | 414 | 
| 395 std::string BluetoothHostPairingController::GetConfirmationCode() { | 415 std::string BluetoothHostPairingController::GetConfirmationCode() { | 
| 396   DCHECK_EQ(current_stage_, STAGE_WAITING_FOR_CODE_CONFIRMATION); | 416   DCHECK_EQ(current_stage_, STAGE_WAITING_FOR_CODE_CONFIRMATION); | 
| 397   return confirmation_code_; | 417   return confirmation_code_; | 
| 398 } | 418 } | 
| 399 | 419 | 
| 400 std::string BluetoothHostPairingController::GetEnrollmentDomain() { | 420 std::string BluetoothHostPairingController::GetEnrollmentDomain() { | 
| 401   return enrollment_domain_; | 421   return enrollment_domain_; | 
| 402 } | 422 } | 
| 403 | 423 | 
|  | 424 void BluetoothHostPairingController::OnNetworkConnectivityChanged( | 
|  | 425     Connectivity connectivity_status) { | 
|  | 426   connectivity_status_ = connectivity_status; | 
|  | 427   if (connectivity_status == CONNECTIVITY_NONE) | 
|  | 428     ChangeStage(STAGE_SETUP_NETWORK_ERROR); | 
|  | 429   SendHostStatus(); | 
|  | 430 } | 
|  | 431 | 
| 404 void BluetoothHostPairingController::OnUpdateStatusChanged( | 432 void BluetoothHostPairingController::OnUpdateStatusChanged( | 
| 405     UpdateStatus update_status) { | 433     UpdateStatus update_status) { | 
| 406   update_status_ = update_status; | 434   update_status_ = update_status; | 
| 407   if (update_status == UPDATE_STATUS_UPDATED) | 435   if (update_status == UPDATE_STATUS_UPDATED) | 
| 408     ChangeStage(STAGE_WAITING_FOR_CREDENTIALS); | 436     ChangeStage(STAGE_WAITING_FOR_CREDENTIALS); | 
| 409   SendHostStatus(); | 437   SendHostStatus(); | 
| 410 } | 438 } | 
| 411 | 439 | 
| 412 void BluetoothHostPairingController::OnEnrollmentStatusChanged( | 440 void BluetoothHostPairingController::OnEnrollmentStatusChanged( | 
| 413     EnrollmentStatus enrollment_status) { | 441     EnrollmentStatus enrollment_status) { | 
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 476   ChangeStage(STAGE_WAITING_FOR_CODE_CONFIRMATION); | 504   ChangeStage(STAGE_WAITING_FOR_CODE_CONFIRMATION); | 
| 477 } | 505 } | 
| 478 | 506 | 
| 479 void BluetoothHostPairingController::AuthorizePairing( | 507 void BluetoothHostPairingController::AuthorizePairing( | 
| 480     device::BluetoothDevice* device) { | 508     device::BluetoothDevice* device) { | 
| 481   // Disallow unknown device. | 509   // Disallow unknown device. | 
| 482   device->RejectPairing(); | 510   device->RejectPairing(); | 
| 483 } | 511 } | 
| 484 | 512 | 
| 485 }  // namespace pairing_chromeos | 513 }  // namespace pairing_chromeos | 
| OLD | NEW | 
|---|