| Index: chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc
|
| ===================================================================
|
| --- chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc (revision 288696)
|
| +++ chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc (working copy)
|
| @@ -71,13 +71,16 @@
|
| 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),
|
| first_time_screen_show_(true),
|
| weak_ptr_factory_(this) {
|
| }
|
|
|
| HIDDetectionScreenHandler::~HIDDetectionScreenHandler() {
|
| + adapter_initially_powered_.reset();
|
| if (adapter_.get())
|
| adapter_->RemoveObserver(this);
|
| input_service_proxy_.RemoveObserver(this);
|
| @@ -96,6 +99,10 @@
|
| 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.";
|
| }
|
| @@ -177,6 +184,20 @@
|
| 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_)) {
|
| + 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();
|
| @@ -267,6 +288,8 @@
|
| 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,
|
| @@ -415,6 +438,8 @@
|
| // 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,
|
|
|