Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "chromeos/dbus/fake_bluetooth_device_client.h" | 5 #include "chromeos/dbus/fake_bluetooth_device_client.h" |
| 6 | 6 |
| 7 #include <fcntl.h> | 7 #include <fcntl.h> |
| 8 #include <sys/socket.h> | 8 #include <sys/socket.h> |
| 9 #include <sys/types.h> | 9 #include <sys/types.h> |
| 10 #include <unistd.h> | 10 #include <unistd.h> |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 38 // Default interval between simulated events. | 38 // Default interval between simulated events. |
| 39 const int kSimulationIntervalMs = 750; | 39 const int kSimulationIntervalMs = 750; |
| 40 | 40 |
| 41 // Minimum and maximum bounds for randomly generated RSSI values. | 41 // Minimum and maximum bounds for randomly generated RSSI values. |
| 42 const int kMinRSSI = -90; | 42 const int kMinRSSI = -90; |
| 43 const int kMaxRSSI = -30; | 43 const int kMaxRSSI = -30; |
| 44 | 44 |
| 45 // The default value of connection info properties from GetConnInfo(). | 45 // The default value of connection info properties from GetConnInfo(). |
| 46 const int kUnkownPower = 127; | 46 const int kUnkownPower = 127; |
| 47 | 47 |
| 48 const char kPairingMethodNone[] = "None"; | |
| 49 const char kPairingMethodPinCode[] = "PIN Code"; | |
| 50 const char kPairingMethodPassKey[] = "PassKey"; | |
| 51 const char kTestPinCode[] = "123456"; | |
| 52 | |
| 53 const int kSimulatedPairTimeMultiplierFour = 4; | |
| 54 const int kSimulatedPairTimeMultiplierFortyFive = 45; | |
| 55 const int kSimulatedPairTimeMultiplierSeven = 7; | |
| 56 const int kSimulatedPairTimeMultiplierThirty = 30; | |
| 57 const int kSimulatedPairTimeMultiplierThree = 3; | |
|
stevenjb
2015/07/31 16:49:33
Instead of using undescriptive names like Four, we
| |
| 58 const int kTestPassKey = 123456; | |
| 48 | 59 |
| 49 void SimulatedProfileSocket(int fd) { | 60 void SimulatedProfileSocket(int fd) { |
| 50 // Simulate a server-side socket of a profile; read data from the socket, | 61 // Simulate a server-side socket of a profile; read data from the socket, |
| 51 // write it back, and then close. | 62 // write it back, and then close. |
| 52 char buf[1024]; | 63 char buf[1024]; |
| 53 ssize_t len; | 64 ssize_t len; |
| 54 ssize_t count; | 65 ssize_t count; |
| 55 | 66 |
| 56 len = read(fd, buf, sizeof buf); | 67 len = read(fd, buf, sizeof buf); |
| 57 if (len < 0) { | 68 if (len < 0) { |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 219 dbus::PropertySet::SetCallback callback) { | 230 dbus::PropertySet::SetCallback callback) { |
| 220 VLOG(1) << "Set " << property->name(); | 231 VLOG(1) << "Set " << property->name(); |
| 221 if (property->name() == trusted.name()) { | 232 if (property->name() == trusted.name()) { |
| 222 callback.Run(true); | 233 callback.Run(true); |
| 223 property->ReplaceValueWithSetValue(); | 234 property->ReplaceValueWithSetValue(); |
| 224 } else { | 235 } else { |
| 225 callback.Run(false); | 236 callback.Run(false); |
| 226 } | 237 } |
| 227 } | 238 } |
| 228 | 239 |
| 240 FakeBluetoothDeviceClient::IncomingDeviceProperties::IncomingDeviceProperties() | |
| 241 : device_class(0), is_trusted(true) {} | |
| 242 | |
| 243 FakeBluetoothDeviceClient::IncomingDeviceProperties:: | |
| 244 ~IncomingDeviceProperties() {} | |
| 245 | |
| 229 FakeBluetoothDeviceClient::FakeBluetoothDeviceClient() | 246 FakeBluetoothDeviceClient::FakeBluetoothDeviceClient() |
| 230 : simulation_interval_ms_(kSimulationIntervalMs), | 247 : simulation_interval_ms_(kSimulationIntervalMs), |
| 231 discovery_simulation_step_(0), | 248 discovery_simulation_step_(0), |
| 232 incoming_pairing_simulation_step_(0), | 249 incoming_pairing_simulation_step_(0), |
| 233 pairing_cancelled_(false), | 250 pairing_cancelled_(false), |
| 234 connection_rssi_(kUnkownPower), | 251 connection_rssi_(kUnkownPower), |
| 235 transmit_power_(kUnkownPower), | 252 transmit_power_(kUnkownPower), |
| 236 max_transmit_power_(kUnkownPower) { | 253 max_transmit_power_(kUnkownPower) { |
| 237 Properties* properties = new Properties(base::Bind( | 254 scoped_ptr<Properties> properties(new Properties( |
| 238 &FakeBluetoothDeviceClient::OnPropertyChanged, | 255 base::Bind(&FakeBluetoothDeviceClient::OnPropertyChanged, |
| 239 base::Unretained(this), | 256 base::Unretained(this), dbus::ObjectPath(kPairedDevicePath)))); |
| 240 dbus::ObjectPath(kPairedDevicePath))); | |
| 241 properties->address.ReplaceValue(kPairedDeviceAddress); | 257 properties->address.ReplaceValue(kPairedDeviceAddress); |
| 242 properties->bluetooth_class.ReplaceValue(kPairedDeviceClass); | 258 properties->bluetooth_class.ReplaceValue(kPairedDeviceClass); |
| 243 properties->name.ReplaceValue("Fake Device (Name)"); | 259 properties->name.ReplaceValue("Fake Device (Name)"); |
| 244 properties->alias.ReplaceValue(kPairedDeviceName); | 260 properties->alias.ReplaceValue(kPairedDeviceName); |
| 245 properties->paired.ReplaceValue(true); | 261 properties->paired.ReplaceValue(true); |
| 246 properties->trusted.ReplaceValue(true); | 262 properties->trusted.ReplaceValue(true); |
| 247 properties->adapter.ReplaceValue( | 263 properties->adapter.ReplaceValue( |
| 248 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath)); | 264 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath)); |
| 249 | 265 |
| 250 std::vector<std::string> uuids; | 266 std::vector<std::string> uuids; |
| 251 uuids.push_back("00001800-0000-1000-8000-00805f9b34fb"); | 267 uuids.push_back("00001800-0000-1000-8000-00805f9b34fb"); |
| 252 uuids.push_back("00001801-0000-1000-8000-00805f9b34fb"); | 268 uuids.push_back("00001801-0000-1000-8000-00805f9b34fb"); |
| 253 properties->uuids.ReplaceValue(uuids); | 269 properties->uuids.ReplaceValue(uuids); |
| 254 | 270 |
| 255 properties->modalias.ReplaceValue("usb:v05ACp030Dd0306"); | 271 properties->modalias.ReplaceValue("usb:v05ACp030Dd0306"); |
| 256 | 272 |
| 257 properties_map_[dbus::ObjectPath(kPairedDevicePath)] = properties; | 273 properties_map_.insert(dbus::ObjectPath(kPairedDevicePath), |
| 274 properties.Pass()); | |
| 258 device_list_.push_back(dbus::ObjectPath(kPairedDevicePath)); | 275 device_list_.push_back(dbus::ObjectPath(kPairedDevicePath)); |
| 259 | 276 |
| 260 properties = new Properties(base::Bind( | 277 properties.reset(new Properties(base::Bind( |
| 261 &FakeBluetoothDeviceClient::OnPropertyChanged, base::Unretained(this), | 278 &FakeBluetoothDeviceClient::OnPropertyChanged, base::Unretained(this), |
| 262 dbus::ObjectPath(kPairedUnconnectableDevicePath))); | 279 dbus::ObjectPath(kPairedUnconnectableDevicePath)))); |
| 263 properties->address.ReplaceValue(kPairedUnconnectableDeviceAddress); | 280 properties->address.ReplaceValue(kPairedUnconnectableDeviceAddress); |
| 264 properties->bluetooth_class.ReplaceValue(kPairedUnconnectableDeviceClass); | 281 properties->bluetooth_class.ReplaceValue(kPairedUnconnectableDeviceClass); |
| 265 properties->name.ReplaceValue("Fake Device 2 (Unconnectable)"); | 282 properties->name.ReplaceValue("Fake Device 2 (Unconnectable)"); |
| 266 properties->alias.ReplaceValue(kPairedUnconnectableDeviceName); | 283 properties->alias.ReplaceValue(kPairedUnconnectableDeviceName); |
| 267 properties->paired.ReplaceValue(true); | 284 properties->paired.ReplaceValue(true); |
| 268 properties->trusted.ReplaceValue(true); | 285 properties->trusted.ReplaceValue(true); |
| 269 properties->adapter.ReplaceValue( | 286 properties->adapter.ReplaceValue( |
| 270 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath)); | 287 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath)); |
| 271 | 288 |
| 272 properties->uuids.ReplaceValue(uuids); | 289 properties->uuids.ReplaceValue(uuids); |
| 273 | 290 |
| 274 properties->modalias.ReplaceValue("usb:v05ACp030Dd0306"); | 291 properties->modalias.ReplaceValue("usb:v05ACp030Dd0306"); |
| 275 | 292 |
| 276 properties_map_[dbus::ObjectPath(kPairedUnconnectableDevicePath)] = | 293 properties_map_.insert(dbus::ObjectPath(kPairedUnconnectableDevicePath), |
| 277 properties; | 294 properties.Pass()); |
| 278 device_list_.push_back(dbus::ObjectPath(kPairedUnconnectableDevicePath)); | 295 device_list_.push_back(dbus::ObjectPath(kPairedUnconnectableDevicePath)); |
| 279 } | 296 } |
| 280 | 297 |
| 281 FakeBluetoothDeviceClient::~FakeBluetoothDeviceClient() { | 298 FakeBluetoothDeviceClient::~FakeBluetoothDeviceClient() { |
| 282 // Clean up Properties structures | |
| 283 STLDeleteValues(&properties_map_); | |
| 284 } | 299 } |
| 285 | 300 |
| 286 void FakeBluetoothDeviceClient::Init(dbus::Bus* bus) { | 301 void FakeBluetoothDeviceClient::Init(dbus::Bus* bus) { |
| 287 } | 302 } |
| 288 | 303 |
| 289 void FakeBluetoothDeviceClient::AddObserver(Observer* observer) { | 304 void FakeBluetoothDeviceClient::AddObserver(Observer* observer) { |
| 290 observers_.AddObserver(observer); | 305 observers_.AddObserver(observer); |
| 291 } | 306 } |
| 292 | 307 |
| 293 void FakeBluetoothDeviceClient::RemoveObserver(Observer* observer) { | 308 void FakeBluetoothDeviceClient::RemoveObserver(Observer* observer) { |
| 294 observers_.RemoveObserver(observer); | 309 observers_.RemoveObserver(observer); |
| 295 } | 310 } |
| 296 | 311 |
| 297 std::vector<dbus::ObjectPath> FakeBluetoothDeviceClient::GetDevicesForAdapter( | 312 std::vector<dbus::ObjectPath> FakeBluetoothDeviceClient::GetDevicesForAdapter( |
| 298 const dbus::ObjectPath& adapter_path) { | 313 const dbus::ObjectPath& adapter_path) { |
| 299 if (adapter_path == | 314 if (adapter_path == |
| 300 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath)) | 315 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath)) |
| 301 return device_list_; | 316 return device_list_; |
| 302 else | 317 else |
| 303 return std::vector<dbus::ObjectPath>(); | 318 return std::vector<dbus::ObjectPath>(); |
| 304 } | 319 } |
| 305 | 320 |
| 306 FakeBluetoothDeviceClient::Properties* | 321 FakeBluetoothDeviceClient::Properties* |
| 307 FakeBluetoothDeviceClient::GetProperties(const dbus::ObjectPath& object_path) { | 322 FakeBluetoothDeviceClient::GetProperties(const dbus::ObjectPath& object_path) { |
| 308 PropertiesMap::iterator iter = properties_map_.find(object_path); | 323 PropertiesMap::const_iterator iter = properties_map_.find(object_path); |
| 309 if (iter != properties_map_.end()) | 324 if (iter != properties_map_.end()) |
| 310 return iter->second; | 325 return iter->second; |
| 311 return NULL; | 326 return NULL; |
| 312 } | 327 } |
| 313 | 328 |
| 329 FakeBluetoothDeviceClient::SimulatedPairingOptions* | |
| 330 FakeBluetoothDeviceClient::GetPairingOptions( | |
| 331 const dbus::ObjectPath& object_path) { | |
| 332 PairingOptionsMap::const_iterator iter = | |
| 333 pairing_options_map_.find(object_path); | |
| 334 if (iter != pairing_options_map_.end()) | |
| 335 return iter->second; | |
| 336 return iter != pairing_options_map_.end() ? iter->second : nullptr; | |
| 337 } | |
| 338 | |
| 314 void FakeBluetoothDeviceClient::Connect( | 339 void FakeBluetoothDeviceClient::Connect( |
| 315 const dbus::ObjectPath& object_path, | 340 const dbus::ObjectPath& object_path, |
| 316 const base::Closure& callback, | 341 const base::Closure& callback, |
| 317 const ErrorCallback& error_callback) { | 342 const ErrorCallback& error_callback) { |
| 318 VLOG(1) << "Connect: " << object_path.value(); | 343 VLOG(1) << "Connect: " << object_path.value(); |
| 319 Properties* properties = GetProperties(object_path); | 344 Properties* properties = GetProperties(object_path); |
| 320 | 345 |
| 321 if (properties->connected.value() == true) { | 346 if (properties->connected.value() == true) { |
| 322 // Already connected. | 347 // Already connected. |
| 323 callback.Run(); | 348 callback.Run(); |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 535 void FakeBluetoothDeviceClient::BeginIncomingPairingSimulation( | 560 void FakeBluetoothDeviceClient::BeginIncomingPairingSimulation( |
| 536 const dbus::ObjectPath& adapter_path) { | 561 const dbus::ObjectPath& adapter_path) { |
| 537 VLOG(1) << "starting incoming pairing simulation"; | 562 VLOG(1) << "starting incoming pairing simulation"; |
| 538 | 563 |
| 539 incoming_pairing_simulation_step_ = 1; | 564 incoming_pairing_simulation_step_ = 1; |
| 540 | 565 |
| 541 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 566 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 542 FROM_HERE, | 567 FROM_HERE, |
| 543 base::Bind(&FakeBluetoothDeviceClient::IncomingPairingSimulationTimer, | 568 base::Bind(&FakeBluetoothDeviceClient::IncomingPairingSimulationTimer, |
| 544 base::Unretained(this)), | 569 base::Unretained(this)), |
| 545 base::TimeDelta::FromMilliseconds(30 * simulation_interval_ms_)); | 570 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierThirty * |
| 571 simulation_interval_ms_)); | |
| 546 } | 572 } |
| 547 | 573 |
| 548 void FakeBluetoothDeviceClient::EndIncomingPairingSimulation( | 574 void FakeBluetoothDeviceClient::EndIncomingPairingSimulation( |
| 549 const dbus::ObjectPath& adapter_path) { | 575 const dbus::ObjectPath& adapter_path) { |
| 550 VLOG(1) << "stopping incoming pairing simulation"; | 576 VLOG(1) << "stopping incoming pairing simulation"; |
| 551 incoming_pairing_simulation_step_ = 0; | 577 incoming_pairing_simulation_step_ = 0; |
| 552 } | 578 } |
| 553 | 579 |
| 554 void FakeBluetoothDeviceClient::SetSimulationIntervalMs(int interval_ms) { | 580 void FakeBluetoothDeviceClient::SetSimulationIntervalMs(int interval_ms) { |
| 555 simulation_interval_ms_ = interval_ms; | 581 simulation_interval_ms_ = interval_ms; |
| 556 } | 582 } |
| 557 | 583 |
| 558 void FakeBluetoothDeviceClient::CreateDevice( | 584 void FakeBluetoothDeviceClient::CreateDevice( |
| 559 const dbus::ObjectPath& adapter_path, | 585 const dbus::ObjectPath& adapter_path, |
| 560 const dbus::ObjectPath& device_path) { | 586 const dbus::ObjectPath& device_path) { |
| 561 if (std::find(device_list_.begin(), | 587 if (std::find(device_list_.begin(), |
| 562 device_list_.end(), device_path) != device_list_.end()) | 588 device_list_.end(), device_path) != device_list_.end()) |
| 563 return; | 589 return; |
| 564 | 590 |
| 565 Properties* properties = new Properties(base::Bind( | 591 scoped_ptr<Properties> properties( |
| 566 &FakeBluetoothDeviceClient::OnPropertyChanged, | 592 new Properties(base::Bind(&FakeBluetoothDeviceClient::OnPropertyChanged, |
| 567 base::Unretained(this), | 593 base::Unretained(this), device_path))); |
| 568 device_path)); | |
| 569 properties->adapter.ReplaceValue(adapter_path); | 594 properties->adapter.ReplaceValue(adapter_path); |
| 570 | 595 |
| 571 if (device_path == dbus::ObjectPath(kLegacyAutopairPath)) { | 596 if (device_path == dbus::ObjectPath(kLegacyAutopairPath)) { |
| 572 properties->address.ReplaceValue(kLegacyAutopairAddress); | 597 properties->address.ReplaceValue(kLegacyAutopairAddress); |
| 573 properties->bluetooth_class.ReplaceValue(kLegacyAutopairClass); | 598 properties->bluetooth_class.ReplaceValue(kLegacyAutopairClass); |
| 574 properties->name.ReplaceValue("LegacyAutopair"); | 599 properties->name.ReplaceValue("LegacyAutopair"); |
| 575 properties->alias.ReplaceValue(kLegacyAutopairName); | 600 properties->alias.ReplaceValue(kLegacyAutopairName); |
| 576 | 601 |
| 577 std::vector<std::string> uuids; | 602 std::vector<std::string> uuids; |
| 578 uuids.push_back("00001124-0000-1000-8000-00805f9b34fb"); | 603 uuids.push_back("00001124-0000-1000-8000-00805f9b34fb"); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 658 | 683 |
| 659 std::vector<std::string> uuids; | 684 std::vector<std::string> uuids; |
| 660 uuids.push_back(FakeBluetoothGattServiceClient::kHeartRateServiceUUID); | 685 uuids.push_back(FakeBluetoothGattServiceClient::kHeartRateServiceUUID); |
| 661 properties->uuids.ReplaceValue(uuids); | 686 properties->uuids.ReplaceValue(uuids); |
| 662 | 687 |
| 663 } else { | 688 } else { |
| 664 NOTREACHED(); | 689 NOTREACHED(); |
| 665 | 690 |
| 666 } | 691 } |
| 667 | 692 |
| 668 properties_map_[device_path] = properties; | 693 properties_map_.insert(device_path, properties.Pass()); |
| 669 device_list_.push_back(device_path); | 694 device_list_.push_back(device_path); |
| 670 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, | 695 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, |
| 671 DeviceAdded(device_path)); | 696 DeviceAdded(device_path)); |
| 672 } | 697 } |
| 698 | |
| 699 void FakeBluetoothDeviceClient::CreateDeviceWithProperties( | |
| 700 const dbus::ObjectPath& adapter_path, | |
| 701 const IncomingDeviceProperties& props) { | |
| 702 dbus::ObjectPath device_path(props.device_path); | |
| 703 if (std::find(device_list_.begin(), device_list_.end(), device_path) != | |
| 704 device_list_.end()) | |
| 705 return; | |
| 706 | |
| 707 scoped_ptr<Properties> properties( | |
| 708 new Properties(base::Bind(&FakeBluetoothDeviceClient::OnPropertyChanged, | |
| 709 base::Unretained(this), device_path))); | |
| 710 properties->adapter.ReplaceValue(adapter_path); | |
| 711 properties->name.ReplaceValue(props.device_name); | |
| 712 properties->alias.ReplaceValue(props.device_alias); | |
| 713 properties->address.ReplaceValue(props.device_address); | |
| 714 properties->bluetooth_class.ReplaceValue(props.device_class); | |
| 715 properties->trusted.ReplaceValue(props.is_trusted); | |
| 716 | |
| 717 if (props.is_trusted) | |
| 718 properties->paired.ReplaceValue(true); | |
| 719 | |
| 720 scoped_ptr<SimulatedPairingOptions> options(new SimulatedPairingOptions); | |
| 721 options->pairing_method = props.pairing_method; | |
| 722 options->pairing_auth_token = props.pairing_auth_token; | |
| 723 | |
| 724 properties_map_.insert(device_path, properties.Pass()); | |
| 725 device_list_.push_back(device_path); | |
| 726 pairing_options_map_.insert(device_path, options.Pass()); | |
| 727 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, | |
| 728 DeviceAdded(device_path)); | |
| 729 } | |
| 673 | 730 |
| 674 void FakeBluetoothDeviceClient::RemoveDevice( | 731 void FakeBluetoothDeviceClient::RemoveDevice( |
| 675 const dbus::ObjectPath& adapter_path, | 732 const dbus::ObjectPath& adapter_path, |
| 676 const dbus::ObjectPath& device_path) { | 733 const dbus::ObjectPath& device_path) { |
| 677 std::vector<dbus::ObjectPath>::iterator listiter = | 734 std::vector<dbus::ObjectPath>::iterator listiter = |
| 678 std::find(device_list_.begin(), device_list_.end(), device_path); | 735 std::find(device_list_.begin(), device_list_.end(), device_path); |
| 679 if (listiter == device_list_.end()) | 736 if (listiter == device_list_.end()) |
| 680 return; | 737 return; |
| 681 | 738 |
| 682 PropertiesMap::iterator iter = properties_map_.find(device_path); | 739 PropertiesMap::const_iterator iter = properties_map_.find(device_path); |
| 683 Properties* properties = iter->second; | 740 Properties* properties = iter->second; |
| 684 | 741 |
| 685 VLOG(1) << "removing device: " << properties->alias.value(); | 742 VLOG(1) << "removing device: " << properties->alias.value(); |
| 686 device_list_.erase(listiter); | 743 device_list_.erase(listiter); |
| 687 | 744 |
| 688 // Remove the Input interface if it exists. This should be called before the | 745 // Remove the Input interface if it exists. This should be called before the |
| 689 // BluetoothDeviceClient::Observer::DeviceRemoved because it deletes the | 746 // BluetoothDeviceClient::Observer::DeviceRemoved because it deletes the |
| 690 // BluetoothDeviceChromeOS object, including the device_path referenced here. | 747 // BluetoothDeviceChromeOS object, including the device_path referenced here. |
| 691 FakeBluetoothInputClient* fake_bluetooth_input_client = | 748 FakeBluetoothInputClient* fake_bluetooth_input_client = |
| 692 static_cast<FakeBluetoothInputClient*>( | 749 static_cast<FakeBluetoothInputClient*>( |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 837 break; | 894 break; |
| 838 default: | 895 default: |
| 839 return; | 896 return; |
| 840 } | 897 } |
| 841 | 898 |
| 842 ++incoming_pairing_simulation_step_; | 899 ++incoming_pairing_simulation_step_; |
| 843 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 900 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 844 FROM_HERE, | 901 FROM_HERE, |
| 845 base::Bind(&FakeBluetoothDeviceClient::IncomingPairingSimulationTimer, | 902 base::Bind(&FakeBluetoothDeviceClient::IncomingPairingSimulationTimer, |
| 846 base::Unretained(this)), | 903 base::Unretained(this)), |
| 847 base::TimeDelta::FromMilliseconds(45 * simulation_interval_ms_)); | 904 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierFortyFive * |
| 905 simulation_interval_ms_)); | |
| 848 } | 906 } |
| 849 | 907 |
| 850 void FakeBluetoothDeviceClient::SimulatePairing( | 908 void FakeBluetoothDeviceClient::SimulatePairing( |
| 851 const dbus::ObjectPath& object_path, | 909 const dbus::ObjectPath& object_path, |
| 852 bool incoming_request, | 910 bool incoming_request, |
| 853 const base::Closure& callback, | 911 const base::Closure& callback, |
| 854 const ErrorCallback& error_callback) { | 912 const ErrorCallback& error_callback) { |
| 855 pairing_cancelled_ = false; | 913 pairing_cancelled_ = false; |
| 856 | 914 |
| 857 FakeBluetoothAgentManagerClient* fake_bluetooth_agent_manager_client = | 915 FakeBluetoothAgentManagerClient* fake_bluetooth_agent_manager_client = |
| 858 static_cast<FakeBluetoothAgentManagerClient*>( | 916 static_cast<FakeBluetoothAgentManagerClient*>( |
| 859 DBusThreadManager::Get()->GetBluetoothAgentManagerClient()); | 917 DBusThreadManager::Get()->GetBluetoothAgentManagerClient()); |
| 860 FakeBluetoothAgentServiceProvider* agent_service_provider = | 918 FakeBluetoothAgentServiceProvider* agent_service_provider = |
| 861 fake_bluetooth_agent_manager_client->GetAgentServiceProvider(); | 919 fake_bluetooth_agent_manager_client->GetAgentServiceProvider(); |
| 862 CHECK(agent_service_provider != NULL); | 920 CHECK(agent_service_provider != NULL); |
| 863 | 921 |
| 864 if (object_path == dbus::ObjectPath(kLegacyAutopairPath) || | 922 // Grab the device's pairing properties. |
| 865 object_path == dbus::ObjectPath(kConnectUnpairablePath) || | 923 PairingOptionsMap::const_iterator iter = |
| 866 object_path == dbus::ObjectPath(kUnconnectableDevicePath) || | 924 pairing_options_map_.find(object_path); |
| 867 object_path == dbus::ObjectPath(kLowEnergyPath)) { | |
| 868 // No need to call anything on the pairing delegate, just wait 3 times | |
| 869 // the interval before acting as if the other end accepted it. | |
| 870 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 871 FROM_HERE, | |
| 872 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | |
| 873 base::Unretained(this), object_path, callback, | |
| 874 error_callback), | |
| 875 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_)); | |
| 876 | 925 |
| 877 } else if (object_path == dbus::ObjectPath(kDisplayPinCodePath)) { | 926 // If the device with path |object_path| has simulated pairing properties |
| 878 // Display a Pincode, and wait 7 times the interval before acting as | 927 // defined, then pair it based on its |pairing_method|. |
| 879 // if the other end accepted it. | 928 if (iter != pairing_options_map_.end()) { |
| 880 agent_service_provider->DisplayPinCode(object_path, "123456"); | 929 if (iter->second->pairing_method == kPairingMethodNone || |
| 930 iter->second->pairing_method == "") { | |
|
stevenjb
2015/07/31 16:49:33
nit: iter->second->pairing_method.empty()
| |
| 931 // Simply pair and connect the device. | |
| 932 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 933 FROM_HERE, | |
| 934 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | |
| 935 base::Unretained(this), object_path, callback, | |
| 936 error_callback), | |
| 937 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierThree * | |
| 938 simulation_interval_ms_)); | |
| 939 } else if (iter->second->pairing_method == kPairingMethodPinCode) { | |
| 940 // Display a Pincode, and wait 7 times the interval before acting as | |
|
stevenjb
2015/07/31 16:49:33
nit: We should remove any hard coded values from t
| |
| 941 // if the other end accepted it. | |
| 942 agent_service_provider->DisplayPinCode(object_path, | |
| 943 iter->second->pairing_auth_token); | |
| 881 | 944 |
| 882 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 945 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 883 FROM_HERE, | 946 FROM_HERE, |
| 884 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | 947 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, |
| 885 base::Unretained(this), object_path, callback, | 948 base::Unretained(this), object_path, callback, |
| 886 error_callback), | 949 error_callback), |
| 887 base::TimeDelta::FromMilliseconds(7 * simulation_interval_ms_)); | 950 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierSeven * |
| 951 simulation_interval_ms_)); | |
| 952 } else if (iter->second->pairing_method == kPairingMethodPassKey) { | |
| 953 // Display a passkey, and each interval act as if another key was entered | |
| 954 // for it. | |
| 955 agent_service_provider->DisplayPasskey( | |
| 956 object_path, std::stoi(iter->second->pairing_auth_token), 0); | |
| 888 | 957 |
| 889 } else if (object_path == dbus::ObjectPath(kVanishingDevicePath)) { | 958 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 890 // The vanishing device simulates being too far away, and thus times out. | 959 FROM_HERE, base::Bind(&FakeBluetoothDeviceClient::SimulateKeypress, |
| 891 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 960 base::Unretained(this), 1, object_path, |
| 892 FROM_HERE, | 961 callback, error_callback), |
| 893 base::Bind(&FakeBluetoothDeviceClient::TimeoutSimulatedPairing, | 962 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); |
| 894 base::Unretained(this), object_path, error_callback), | 963 } |
| 895 base::TimeDelta::FromMilliseconds(4 * simulation_interval_ms_)); | 964 } else { |
| 896 | 965 if (object_path == dbus::ObjectPath(kLegacyAutopairPath) || |
| 897 } else if (object_path == dbus::ObjectPath(kDisplayPasskeyPath)) { | 966 object_path == dbus::ObjectPath(kConnectUnpairablePath) || |
| 898 // Display a passkey, and each interval act as if another key was entered | 967 object_path == dbus::ObjectPath(kUnconnectableDevicePath) || |
| 899 // for it. | 968 object_path == dbus::ObjectPath(kLowEnergyPath)) { |
| 900 agent_service_provider->DisplayPasskey(object_path, 123456, 0); | |
| 901 | |
| 902 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 903 FROM_HERE, base::Bind(&FakeBluetoothDeviceClient::SimulateKeypress, | |
| 904 base::Unretained(this), 1, object_path, callback, | |
| 905 error_callback), | |
| 906 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | |
| 907 | |
| 908 } else if (object_path == dbus::ObjectPath(kRequestPinCodePath)) { | |
| 909 // Request a Pincode. | |
| 910 agent_service_provider->RequestPinCode( | |
| 911 object_path, | |
| 912 base::Bind(&FakeBluetoothDeviceClient::PinCodeCallback, | |
| 913 base::Unretained(this), | |
| 914 object_path, | |
| 915 callback, | |
| 916 error_callback)); | |
| 917 | |
| 918 } else if (object_path == dbus::ObjectPath(kConfirmPasskeyPath)) { | |
| 919 // Request confirmation of a Passkey. | |
| 920 agent_service_provider->RequestConfirmation( | |
| 921 object_path, 123456, | |
| 922 base::Bind(&FakeBluetoothDeviceClient::ConfirmationCallback, | |
| 923 base::Unretained(this), | |
| 924 object_path, | |
| 925 callback, | |
| 926 error_callback)); | |
| 927 | |
| 928 } else if (object_path == dbus::ObjectPath(kRequestPasskeyPath)) { | |
| 929 // Request a Passkey from the user. | |
| 930 agent_service_provider->RequestPasskey( | |
| 931 object_path, | |
| 932 base::Bind(&FakeBluetoothDeviceClient::PasskeyCallback, | |
| 933 base::Unretained(this), | |
| 934 object_path, | |
| 935 callback, | |
| 936 error_callback)); | |
| 937 | |
| 938 } else if (object_path == dbus::ObjectPath(kUnpairableDevicePath)) { | |
| 939 // Fails the pairing with an org.bluez.Error.Failed error. | |
| 940 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 941 FROM_HERE, | |
| 942 base::Bind(&FakeBluetoothDeviceClient::FailSimulatedPairing, | |
| 943 base::Unretained(this), object_path, error_callback), | |
| 944 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | |
| 945 | |
| 946 } else if (object_path == dbus::ObjectPath(kJustWorksPath)) { | |
| 947 if (incoming_request) { | |
| 948 agent_service_provider->RequestAuthorization( | |
| 949 object_path, | |
| 950 base::Bind(&FakeBluetoothDeviceClient::ConfirmationCallback, | |
| 951 base::Unretained(this), | |
| 952 object_path, | |
| 953 callback, | |
| 954 error_callback)); | |
| 955 | |
| 956 } else { | |
| 957 // No need to call anything on the pairing delegate, just wait 3 times | 969 // No need to call anything on the pairing delegate, just wait 3 times |
| 958 // the interval before acting as if the other end accepted it. | 970 // the interval before acting as if the other end accepted it. |
| 959 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 971 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 960 FROM_HERE, | 972 FROM_HERE, |
| 961 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | 973 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, |
| 962 base::Unretained(this), object_path, callback, | 974 base::Unretained(this), object_path, callback, |
| 963 error_callback), | 975 error_callback), |
| 964 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_)); | 976 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierThree * |
| 977 simulation_interval_ms_)); | |
| 978 | |
| 979 } else if (object_path == dbus::ObjectPath(kDisplayPinCodePath)) { | |
| 980 // Display a Pincode, and wait 7 times the interval before acting as | |
| 981 // if the other end accepted it. | |
| 982 agent_service_provider->DisplayPinCode(object_path, kTestPinCode); | |
| 983 | |
| 984 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 985 FROM_HERE, | |
| 986 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | |
| 987 base::Unretained(this), object_path, callback, | |
| 988 error_callback), | |
| 989 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierSeven * | |
| 990 simulation_interval_ms_)); | |
| 991 | |
| 992 } else if (object_path == dbus::ObjectPath(kVanishingDevicePath)) { | |
| 993 // The vanishing device simulates being too far away, and thus times out. | |
| 994 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 995 FROM_HERE, | |
| 996 base::Bind(&FakeBluetoothDeviceClient::TimeoutSimulatedPairing, | |
| 997 base::Unretained(this), object_path, error_callback), | |
| 998 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierFour * | |
| 999 simulation_interval_ms_)); | |
| 1000 | |
| 1001 } else if (object_path == dbus::ObjectPath(kDisplayPasskeyPath)) { | |
| 1002 // Display a passkey, and each interval act as if another key was entered | |
| 1003 // for it. | |
| 1004 agent_service_provider->DisplayPasskey(object_path, kTestPassKey, 0); | |
| 1005 | |
| 1006 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 1007 FROM_HERE, base::Bind(&FakeBluetoothDeviceClient::SimulateKeypress, | |
| 1008 base::Unretained(this), 1, object_path, | |
| 1009 callback, error_callback), | |
| 1010 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | |
| 1011 | |
| 1012 } else if (object_path == dbus::ObjectPath(kRequestPinCodePath)) { | |
| 1013 // Request a Pincode. | |
| 1014 agent_service_provider->RequestPinCode( | |
| 1015 object_path, base::Bind(&FakeBluetoothDeviceClient::PinCodeCallback, | |
| 1016 base::Unretained(this), object_path, callback, | |
| 1017 error_callback)); | |
| 1018 | |
| 1019 } else if (object_path == dbus::ObjectPath(kConfirmPasskeyPath)) { | |
| 1020 // Request confirmation of a Passkey. | |
| 1021 agent_service_provider->RequestConfirmation( | |
| 1022 object_path, kTestPassKey, | |
| 1023 base::Bind(&FakeBluetoothDeviceClient::ConfirmationCallback, | |
| 1024 base::Unretained(this), object_path, callback, | |
| 1025 error_callback)); | |
| 1026 | |
| 1027 } else if (object_path == dbus::ObjectPath(kRequestPasskeyPath)) { | |
| 1028 // Request a Passkey from the user. | |
| 1029 agent_service_provider->RequestPasskey( | |
| 1030 object_path, base::Bind(&FakeBluetoothDeviceClient::PasskeyCallback, | |
| 1031 base::Unretained(this), object_path, callback, | |
| 1032 error_callback)); | |
| 1033 | |
| 1034 } else if (object_path == dbus::ObjectPath(kUnpairableDevicePath)) { | |
| 1035 // Fails the pairing with an org.bluez.Error.Failed error. | |
| 1036 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 1037 FROM_HERE, | |
| 1038 base::Bind(&FakeBluetoothDeviceClient::FailSimulatedPairing, | |
| 1039 base::Unretained(this), object_path, error_callback), | |
| 1040 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | |
| 1041 | |
| 1042 } else if (object_path == dbus::ObjectPath(kJustWorksPath)) { | |
| 1043 if (incoming_request) { | |
| 1044 agent_service_provider->RequestAuthorization( | |
| 1045 object_path, | |
| 1046 base::Bind(&FakeBluetoothDeviceClient::ConfirmationCallback, | |
| 1047 base::Unretained(this), object_path, callback, | |
| 1048 error_callback)); | |
| 1049 | |
| 1050 } else { | |
| 1051 // No need to call anything on the pairing delegate, just wait 3 times | |
| 1052 // the interval before acting as if the other end accepted it. | |
| 1053 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | |
| 1054 FROM_HERE, | |
| 1055 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | |
| 1056 base::Unretained(this), object_path, callback, | |
| 1057 error_callback), | |
| 1058 base::TimeDelta::FromMilliseconds( | |
| 1059 kSimulatedPairTimeMultiplierThree * simulation_interval_ms_)); | |
| 1060 } | |
| 1061 | |
| 1062 } else { | |
| 1063 error_callback.Run(kNoResponseError, "No pairing fake"); | |
| 965 } | 1064 } |
| 966 | |
| 967 } else { | |
| 968 error_callback.Run(kNoResponseError, "No pairing fake"); | |
| 969 } | 1065 } |
| 970 } | 1066 } |
| 971 | 1067 |
| 972 void FakeBluetoothDeviceClient::CompleteSimulatedPairing( | 1068 void FakeBluetoothDeviceClient::CompleteSimulatedPairing( |
| 973 const dbus::ObjectPath& object_path, | 1069 const dbus::ObjectPath& object_path, |
| 974 const base::Closure& callback, | 1070 const base::Closure& callback, |
| 975 const ErrorCallback& error_callback) { | 1071 const ErrorCallback& error_callback) { |
| 976 VLOG(1) << "CompleteSimulatedPairing: " << object_path.value(); | 1072 VLOG(1) << "CompleteSimulatedPairing: " << object_path.value(); |
| 977 if (pairing_cancelled_) { | 1073 if (pairing_cancelled_) { |
| 978 pairing_cancelled_ = false; | 1074 pairing_cancelled_ = false; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1033 static_cast<FakeBluetoothInputClient*>( | 1129 static_cast<FakeBluetoothInputClient*>( |
| 1034 DBusThreadManager::Get()->GetBluetoothInputClient()); | 1130 DBusThreadManager::Get()->GetBluetoothInputClient()); |
| 1035 | 1131 |
| 1036 if ((properties->bluetooth_class.value() & 0x001f03) == 0x000500) | 1132 if ((properties->bluetooth_class.value() & 0x001f03) == 0x000500) |
| 1037 fake_bluetooth_input_client->AddInputDevice(object_path); | 1133 fake_bluetooth_input_client->AddInputDevice(object_path); |
| 1038 } | 1134 } |
| 1039 | 1135 |
| 1040 void FakeBluetoothDeviceClient::UpdateDeviceRSSI( | 1136 void FakeBluetoothDeviceClient::UpdateDeviceRSSI( |
| 1041 const dbus::ObjectPath& object_path, | 1137 const dbus::ObjectPath& object_path, |
| 1042 int16 rssi) { | 1138 int16 rssi) { |
| 1043 PropertiesMap::iterator iter = properties_map_.find(object_path); | 1139 PropertiesMap::const_iterator iter = properties_map_.find(object_path); |
| 1044 if (iter == properties_map_.end()) { | 1140 if (iter == properties_map_.end()) { |
| 1045 VLOG(2) << "Fake device does not exist: " << object_path.value(); | 1141 VLOG(2) << "Fake device does not exist: " << object_path.value(); |
| 1046 return; | 1142 return; |
| 1047 } | 1143 } |
| 1048 Properties* properties = iter->second; | 1144 Properties* properties = iter->second; |
| 1049 DCHECK(properties); | 1145 DCHECK(properties); |
| 1050 properties->rssi.ReplaceValue(rssi); | 1146 properties->rssi.ReplaceValue(rssi); |
| 1051 } | 1147 } |
| 1052 | 1148 |
| 1053 void FakeBluetoothDeviceClient::UpdateConnectionInfo( | 1149 void FakeBluetoothDeviceClient::UpdateConnectionInfo( |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1066 BluetoothAgentServiceProvider::Delegate::Status status, | 1162 BluetoothAgentServiceProvider::Delegate::Status status, |
| 1067 const std::string& pincode) { | 1163 const std::string& pincode) { |
| 1068 VLOG(1) << "PinCodeCallback: " << object_path.value(); | 1164 VLOG(1) << "PinCodeCallback: " << object_path.value(); |
| 1069 | 1165 |
| 1070 if (status == BluetoothAgentServiceProvider::Delegate::SUCCESS) { | 1166 if (status == BluetoothAgentServiceProvider::Delegate::SUCCESS) { |
| 1071 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1167 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 1072 FROM_HERE, | 1168 FROM_HERE, |
| 1073 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | 1169 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, |
| 1074 base::Unretained(this), object_path, callback, | 1170 base::Unretained(this), object_path, callback, |
| 1075 error_callback), | 1171 error_callback), |
| 1076 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_)); | 1172 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierThree * |
| 1173 simulation_interval_ms_)); | |
| 1077 | 1174 |
| 1078 } else if (status == BluetoothAgentServiceProvider::Delegate::CANCELLED) { | 1175 } else if (status == BluetoothAgentServiceProvider::Delegate::CANCELLED) { |
| 1079 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1176 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 1080 FROM_HERE, | 1177 FROM_HERE, |
| 1081 base::Bind(&FakeBluetoothDeviceClient::CancelSimulatedPairing, | 1178 base::Bind(&FakeBluetoothDeviceClient::CancelSimulatedPairing, |
| 1082 base::Unretained(this), object_path, error_callback), | 1179 base::Unretained(this), object_path, error_callback), |
| 1083 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | 1180 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); |
| 1084 | 1181 |
| 1085 } else if (status == BluetoothAgentServiceProvider::Delegate::REJECTED) { | 1182 } else if (status == BluetoothAgentServiceProvider::Delegate::REJECTED) { |
| 1086 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1183 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 1098 BluetoothAgentServiceProvider::Delegate::Status status, | 1195 BluetoothAgentServiceProvider::Delegate::Status status, |
| 1099 uint32 passkey) { | 1196 uint32 passkey) { |
| 1100 VLOG(1) << "PasskeyCallback: " << object_path.value(); | 1197 VLOG(1) << "PasskeyCallback: " << object_path.value(); |
| 1101 | 1198 |
| 1102 if (status == BluetoothAgentServiceProvider::Delegate::SUCCESS) { | 1199 if (status == BluetoothAgentServiceProvider::Delegate::SUCCESS) { |
| 1103 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1200 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 1104 FROM_HERE, | 1201 FROM_HERE, |
| 1105 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | 1202 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, |
| 1106 base::Unretained(this), object_path, callback, | 1203 base::Unretained(this), object_path, callback, |
| 1107 error_callback), | 1204 error_callback), |
| 1108 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_)); | 1205 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierThree * |
| 1206 simulation_interval_ms_)); | |
| 1109 | 1207 |
| 1110 } else if (status == BluetoothAgentServiceProvider::Delegate::CANCELLED) { | 1208 } else if (status == BluetoothAgentServiceProvider::Delegate::CANCELLED) { |
| 1111 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1209 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 1112 FROM_HERE, | 1210 FROM_HERE, |
| 1113 base::Bind(&FakeBluetoothDeviceClient::CancelSimulatedPairing, | 1211 base::Bind(&FakeBluetoothDeviceClient::CancelSimulatedPairing, |
| 1114 base::Unretained(this), object_path, error_callback), | 1212 base::Unretained(this), object_path, error_callback), |
| 1115 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | 1213 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); |
| 1116 | 1214 |
| 1117 } else if (status == BluetoothAgentServiceProvider::Delegate::REJECTED) { | 1215 } else if (status == BluetoothAgentServiceProvider::Delegate::REJECTED) { |
| 1118 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1216 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 1129 const ErrorCallback& error_callback, | 1227 const ErrorCallback& error_callback, |
| 1130 BluetoothAgentServiceProvider::Delegate::Status status) { | 1228 BluetoothAgentServiceProvider::Delegate::Status status) { |
| 1131 VLOG(1) << "ConfirmationCallback: " << object_path.value(); | 1229 VLOG(1) << "ConfirmationCallback: " << object_path.value(); |
| 1132 | 1230 |
| 1133 if (status == BluetoothAgentServiceProvider::Delegate::SUCCESS) { | 1231 if (status == BluetoothAgentServiceProvider::Delegate::SUCCESS) { |
| 1134 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1232 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 1135 FROM_HERE, | 1233 FROM_HERE, |
| 1136 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, | 1234 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, |
| 1137 base::Unretained(this), object_path, callback, | 1235 base::Unretained(this), object_path, callback, |
| 1138 error_callback), | 1236 error_callback), |
| 1139 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_)); | 1237 base::TimeDelta::FromMilliseconds(kSimulatedPairTimeMultiplierThree * |
| 1238 simulation_interval_ms_)); | |
| 1140 | 1239 |
| 1141 } else if (status == BluetoothAgentServiceProvider::Delegate::CANCELLED) { | 1240 } else if (status == BluetoothAgentServiceProvider::Delegate::CANCELLED) { |
| 1142 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1241 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 1143 FROM_HERE, | 1242 FROM_HERE, |
| 1144 base::Bind(&FakeBluetoothDeviceClient::CancelSimulatedPairing, | 1243 base::Bind(&FakeBluetoothDeviceClient::CancelSimulatedPairing, |
| 1145 base::Unretained(this), object_path, error_callback), | 1244 base::Unretained(this), object_path, error_callback), |
| 1146 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | 1245 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); |
| 1147 | 1246 |
| 1148 } else if (status == BluetoothAgentServiceProvider::Delegate::REJECTED) { | 1247 } else if (status == BluetoothAgentServiceProvider::Delegate::REJECTED) { |
| 1149 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1248 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 1165 static_cast<FakeBluetoothAgentManagerClient*>( | 1264 static_cast<FakeBluetoothAgentManagerClient*>( |
| 1166 DBusThreadManager::Get()->GetBluetoothAgentManagerClient()); | 1265 DBusThreadManager::Get()->GetBluetoothAgentManagerClient()); |
| 1167 FakeBluetoothAgentServiceProvider* agent_service_provider = | 1266 FakeBluetoothAgentServiceProvider* agent_service_provider = |
| 1168 fake_bluetooth_agent_manager_client->GetAgentServiceProvider(); | 1267 fake_bluetooth_agent_manager_client->GetAgentServiceProvider(); |
| 1169 | 1268 |
| 1170 // The agent service provider object could have been destroyed after the | 1269 // The agent service provider object could have been destroyed after the |
| 1171 // pairing is canceled. | 1270 // pairing is canceled. |
| 1172 if (!agent_service_provider) | 1271 if (!agent_service_provider) |
| 1173 return; | 1272 return; |
| 1174 | 1273 |
| 1175 agent_service_provider->DisplayPasskey(object_path, 123456, entered); | 1274 agent_service_provider->DisplayPasskey(object_path, kTestPassKey, entered); |
| 1176 | 1275 |
| 1177 if (entered < 7) { | 1276 if (entered < 7) { |
| 1178 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1277 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 1179 FROM_HERE, base::Bind(&FakeBluetoothDeviceClient::SimulateKeypress, | 1278 FROM_HERE, base::Bind(&FakeBluetoothDeviceClient::SimulateKeypress, |
| 1180 base::Unretained(this), entered + 1, object_path, | 1279 base::Unretained(this), entered + 1, object_path, |
| 1181 callback, error_callback), | 1280 callback, error_callback), |
| 1182 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | 1281 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); |
| 1183 | 1282 |
| 1184 } else { | 1283 } else { |
| 1185 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1284 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1220 // TODO(keybuk): tear down this side of the connection | 1319 // TODO(keybuk): tear down this side of the connection |
| 1221 callback.Run(); | 1320 callback.Run(); |
| 1222 } else if (status == BluetoothProfileServiceProvider::Delegate::CANCELLED) { | 1321 } else if (status == BluetoothProfileServiceProvider::Delegate::CANCELLED) { |
| 1223 error_callback.Run(bluetooth_device::kErrorFailed, "Canceled"); | 1322 error_callback.Run(bluetooth_device::kErrorFailed, "Canceled"); |
| 1224 } else if (status == BluetoothProfileServiceProvider::Delegate::REJECTED) { | 1323 } else if (status == BluetoothProfileServiceProvider::Delegate::REJECTED) { |
| 1225 error_callback.Run(bluetooth_device::kErrorFailed, "Rejected"); | 1324 error_callback.Run(bluetooth_device::kErrorFailed, "Rejected"); |
| 1226 } | 1325 } |
| 1227 } | 1326 } |
| 1228 | 1327 |
| 1229 } // namespace chromeos | 1328 } // namespace chromeos |
| OLD | NEW |