Chromium Code Reviews| Index: chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc |
| diff --git a/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc |
| index fd49f5bc4ed59c8e7c35fdc48f4cc8acd9d8a05d..c57556b30fc3683267cbf9d00a087d118f2555f2 100644 |
| --- a/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc |
| +++ b/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc |
| @@ -73,12 +73,15 @@ HIDDetectionScreenHandler::HIDDetectionScreenHandler( |
| core_oobe_actor_(core_oobe_actor), |
| show_on_init_(false), |
| mouse_is_pairing_(false), |
| + pointing_device_connect_type_(InputDeviceInfo::TYPE_UNKNOWN), |
| keyboard_is_pairing_(false), |
| + keyboard_device_connect_type_(InputDeviceInfo::TYPE_UNKNOWN), |
| switch_on_adapter_when_ready_(false), |
| weak_ptr_factory_(this) { |
| } |
| HIDDetectionScreenHandler::~HIDDetectionScreenHandler() { |
| + adapter_initially_powered_.reset(); |
| if (adapter_.get()) |
| adapter_->RemoveObserver(this); |
| input_service_proxy_.RemoveObserver(this); |
| @@ -97,6 +100,10 @@ void HIDDetectionScreenHandler::SetPoweredError() { |
| LOG(ERROR) << "Failed to power BT adapter"; |
| } |
| +void HIDDetectionScreenHandler::SetPoweredOffError() { |
| + LOG(ERROR) << "Failed to power off BT adapter"; |
| +} |
| + |
| void HIDDetectionScreenHandler::FindDevicesError() { |
| VLOG(1) << "Failed to start Bluetooth discovery."; |
| } |
| @@ -196,6 +203,20 @@ void HIDDetectionScreenHandler::HandleOnContinue() { |
| scenario_type, |
| CONTINUE_SCENARIO_TYPE_SIZE); |
| + // Switch off BT adapter if it was off before the screen and no BT device |
| + // connected. |
| + if (adapter_ && adapter_->IsPresent() && adapter_->IsPowered() && |
| + !(pointing_device_connect_type_ == InputDeviceInfo::TYPE_BLUETOOTH || |
| + keyboard_device_connect_type_ == InputDeviceInfo::TYPE_BLUETOOTH) && |
| + adapter_initially_powered_ && !(*adapter_initially_powered_.get())) { |
|
Nikita (slow)
2014/08/07 14:47:28
nit: you don't need to .get(), just
!*adapter_in
|
| + VLOG(1) << "Switching off BT adapter after HID OOBE screen as unused."; |
| + adapter_->SetPowered( |
| + false, |
| + base::Bind(&base::DoNothing), |
| + base::Bind(&HIDDetectionScreenHandler::SetPoweredOffError, |
| + weak_ptr_factory_.GetWeakPtr())); |
| + } |
| + |
| core_oobe_actor_->StopDemoModeDetection(); |
| if (delegate_) |
| delegate_->OnExit(); |
| @@ -286,6 +307,8 @@ void HIDDetectionScreenHandler::AuthorizePairing( |
| void HIDDetectionScreenHandler::AdapterPresentChanged( |
| device::BluetoothAdapter* adapter, bool present) { |
| if (present && switch_on_adapter_when_ready_) { |
| + VLOG(1) << "Switching on BT adapter on HID OOBE screen."; |
| + adapter_initially_powered_.reset(new bool(adapter_->IsPowered())); |
| adapter_->SetPowered( |
| true, |
| base::Bind(&HIDDetectionScreenHandler::StartBTDiscoverySession, |
| @@ -430,6 +453,8 @@ void HIDDetectionScreenHandler::TryInitiateBTDevicesUpdate() { |
| // Switch on BT adapter later when it's available. |
| switch_on_adapter_when_ready_ = true; |
| } else if (!adapter_->IsPowered()) { |
| + VLOG(1) << "Switching on BT adapter on HID OOBE screen."; |
| + adapter_initially_powered_.reset(new bool(false)); |
| adapter_->SetPowered( |
| true, |
| base::Bind(&HIDDetectionScreenHandler::StartBTDiscoverySession, |