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 <unistd.h> | 8 #include <unistd.h> |
9 #include <sys/types.h> | 9 #include <sys/types.h> |
10 #include <sys/socket.h> | 10 #include <sys/socket.h> |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
55 count = len; | 55 count = len; |
56 len = write(fd, buf, count); | 56 len = write(fd, buf, count); |
57 if (len < 0) { | 57 if (len < 0) { |
58 close(fd); | 58 close(fd); |
59 return; | 59 return; |
60 } | 60 } |
61 | 61 |
62 close(fd); | 62 close(fd); |
63 } | 63 } |
64 | 64 |
65 void SimpleErrorCallback(const std::string& error_name, | |
66 const std::string& error_message) { | |
67 VLOG(1) << "Error: " << error_name << ": " << error_message; | |
stevenjb
2014/02/28 21:40:54
nit: "Bluetooth Error: "
keybuk
2014/02/28 22:28:54
Done.
| |
68 } | |
69 | |
65 } // namespace | 70 } // namespace |
66 | 71 |
67 namespace chromeos { | 72 namespace chromeos { |
68 | 73 |
69 const char FakeBluetoothDeviceClient::kPairedDevicePath[] = | 74 const char FakeBluetoothDeviceClient::kPairedDevicePath[] = |
70 "/fake/hci0/dev0"; | 75 "/fake/hci0/dev0"; |
71 const char FakeBluetoothDeviceClient::kPairedDeviceAddress[] = | 76 const char FakeBluetoothDeviceClient::kPairedDeviceAddress[] = |
72 "00:11:22:33:44:55"; | 77 "00:11:22:33:44:55"; |
73 const char FakeBluetoothDeviceClient::kPairedDeviceName[] = | 78 const char FakeBluetoothDeviceClient::kPairedDeviceName[] = |
74 "Fake Device"; | 79 "Fake Device"; |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
192 callback.Run(true); | 197 callback.Run(true); |
193 property->ReplaceValueWithSetValue(); | 198 property->ReplaceValueWithSetValue(); |
194 } else { | 199 } else { |
195 callback.Run(false); | 200 callback.Run(false); |
196 } | 201 } |
197 } | 202 } |
198 | 203 |
199 FakeBluetoothDeviceClient::FakeBluetoothDeviceClient() | 204 FakeBluetoothDeviceClient::FakeBluetoothDeviceClient() |
200 : simulation_interval_ms_(kSimulationIntervalMs), | 205 : simulation_interval_ms_(kSimulationIntervalMs), |
201 discovery_simulation_step_(0), | 206 discovery_simulation_step_(0), |
207 incoming_pairing_simulation_step_(0), | |
202 pairing_cancelled_(false) { | 208 pairing_cancelled_(false) { |
203 Properties* properties = new Properties(base::Bind( | 209 Properties* properties = new Properties(base::Bind( |
204 &FakeBluetoothDeviceClient::OnPropertyChanged, | 210 &FakeBluetoothDeviceClient::OnPropertyChanged, |
205 base::Unretained(this), | 211 base::Unretained(this), |
206 dbus::ObjectPath(kPairedDevicePath))); | 212 dbus::ObjectPath(kPairedDevicePath))); |
207 properties->address.ReplaceValue(kPairedDeviceAddress); | 213 properties->address.ReplaceValue(kPairedDeviceAddress); |
208 properties->bluetooth_class.ReplaceValue(kPairedDeviceClass); | 214 properties->bluetooth_class.ReplaceValue(kPairedDeviceClass); |
209 properties->name.ReplaceValue("Fake Device (Name)"); | 215 properties->name.ReplaceValue("Fake Device (Name)"); |
210 properties->alias.ReplaceValue(kPairedDeviceName); | 216 properties->alias.ReplaceValue(kPairedDeviceName); |
211 properties->paired.ReplaceValue(true); | 217 properties->paired.ReplaceValue(true); |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
433 base::Unretained(this)), | 439 base::Unretained(this)), |
434 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | 440 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); |
435 } | 441 } |
436 | 442 |
437 void FakeBluetoothDeviceClient::EndDiscoverySimulation( | 443 void FakeBluetoothDeviceClient::EndDiscoverySimulation( |
438 const dbus::ObjectPath& adapter_path) { | 444 const dbus::ObjectPath& adapter_path) { |
439 VLOG(1) << "stopping discovery simulation"; | 445 VLOG(1) << "stopping discovery simulation"; |
440 discovery_simulation_step_ = 0; | 446 discovery_simulation_step_ = 0; |
441 } | 447 } |
442 | 448 |
449 void FakeBluetoothDeviceClient::BeginIncomingPairingSimulation( | |
450 const dbus::ObjectPath& adapter_path) { | |
451 VLOG(1) << "starting incoming pairing simulation"; | |
452 | |
453 incoming_pairing_simulation_step_ = 1; | |
454 | |
455 base::MessageLoop::current()->PostDelayedTask( | |
456 FROM_HERE, | |
457 base::Bind(&FakeBluetoothDeviceClient::IncomingPairingSimulationTimer, | |
458 base::Unretained(this)), | |
459 base::TimeDelta::FromMilliseconds(30 * simulation_interval_ms_)); | |
460 } | |
461 | |
462 void FakeBluetoothDeviceClient::EndIncomingPairingSimulation( | |
463 const dbus::ObjectPath& adapter_path) { | |
464 VLOG(1) << "stopping incoming pairing simulation"; | |
465 incoming_pairing_simulation_step_ = 0; | |
466 } | |
467 | |
443 void FakeBluetoothDeviceClient::SetSimulationIntervalMs(int interval_ms) { | 468 void FakeBluetoothDeviceClient::SetSimulationIntervalMs(int interval_ms) { |
444 simulation_interval_ms_ = interval_ms; | 469 simulation_interval_ms_ = interval_ms; |
445 } | 470 } |
446 | 471 |
447 void FakeBluetoothDeviceClient::CreateDevice( | 472 void FakeBluetoothDeviceClient::CreateDevice( |
448 const dbus::ObjectPath& adapter_path, | 473 const dbus::ObjectPath& adapter_path, |
449 const dbus::ObjectPath& device_path) { | 474 const dbus::ObjectPath& device_path) { |
450 if (std::find(device_list_.begin(), | 475 if (std::find(device_list_.begin(), |
451 device_list_.end(), device_path) != device_list_.end()) | 476 device_list_.end(), device_path) != device_list_.end()) |
452 return; | 477 return; |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
635 } | 660 } |
636 | 661 |
637 ++discovery_simulation_step_; | 662 ++discovery_simulation_step_; |
638 base::MessageLoop::current()->PostDelayedTask( | 663 base::MessageLoop::current()->PostDelayedTask( |
639 FROM_HERE, | 664 FROM_HERE, |
640 base::Bind(&FakeBluetoothDeviceClient::DiscoverySimulationTimer, | 665 base::Bind(&FakeBluetoothDeviceClient::DiscoverySimulationTimer, |
641 base::Unretained(this)), | 666 base::Unretained(this)), |
642 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | 667 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); |
643 } | 668 } |
644 | 669 |
670 void FakeBluetoothDeviceClient::IncomingPairingSimulationTimer() { | |
671 if (!incoming_pairing_simulation_step_) | |
672 return; | |
673 | |
674 VLOG(1) << "incoming pairing simulation, step " | |
675 << incoming_pairing_simulation_step_; | |
676 switch (incoming_pairing_simulation_step_) { | |
677 case 1: | |
678 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), | |
679 dbus::ObjectPath(kPhonePath)); | |
680 SimulatePairing(dbus::ObjectPath(kPhonePath), true, | |
681 base::Bind(&base::DoNothing), | |
682 base::Bind(&SimpleErrorCallback)); | |
683 break; | |
684 case 2: | |
685 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), | |
686 dbus::ObjectPath(kBoseSpeakersPath)); | |
687 SimulatePairing(dbus::ObjectPath(kBoseSpeakersPath), true, | |
688 base::Bind(&base::DoNothing), | |
689 base::Bind(&SimpleErrorCallback)); | |
690 break; | |
691 case 3: | |
692 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), | |
693 dbus::ObjectPath(kAppleKeyboardPath)); | |
694 SimulatePairing(dbus::ObjectPath(kAppleKeyboardPath), true, | |
695 base::Bind(&base::DoNothing), | |
696 base::Bind(&SimpleErrorCallback)); | |
697 break; | |
698 case 4: | |
699 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), | |
700 dbus::ObjectPath(kMotorolaKeyboardPath)); | |
701 SimulatePairing(dbus::ObjectPath(kMotorolaKeyboardPath), true, | |
702 base::Bind(&base::DoNothing), | |
703 base::Bind(&SimpleErrorCallback)); | |
704 break; | |
705 case 5: | |
706 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), | |
707 dbus::ObjectPath(kSonyHeadphonesPath)); | |
708 SimulatePairing(dbus::ObjectPath(kSonyHeadphonesPath), true, | |
709 base::Bind(&base::DoNothing), | |
710 base::Bind(&SimpleErrorCallback)); | |
711 break; | |
712 case 6: | |
713 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), | |
714 dbus::ObjectPath(kWeirdDevicePath)); | |
715 SimulatePairing(dbus::ObjectPath(kWeirdDevicePath), true, | |
716 base::Bind(&base::DoNothing), | |
717 base::Bind(&SimpleErrorCallback)); | |
718 break; | |
719 default: | |
720 return; | |
721 } | |
722 | |
723 ++incoming_pairing_simulation_step_; | |
724 base::MessageLoop::current()->PostDelayedTask( | |
725 FROM_HERE, | |
726 base::Bind(&FakeBluetoothDeviceClient::IncomingPairingSimulationTimer, | |
727 base::Unretained(this)), | |
728 base::TimeDelta::FromMilliseconds(45 * simulation_interval_ms_)); | |
729 } | |
645 | 730 |
646 void FakeBluetoothDeviceClient::SimulatePairing( | 731 void FakeBluetoothDeviceClient::SimulatePairing( |
647 const dbus::ObjectPath& object_path, | 732 const dbus::ObjectPath& object_path, |
648 bool incoming_request, | 733 bool incoming_request, |
649 const base::Closure& callback, | 734 const base::Closure& callback, |
650 const ErrorCallback& error_callback) { | 735 const ErrorCallback& error_callback) { |
651 pairing_cancelled_ = false; | 736 pairing_cancelled_ = false; |
652 | 737 |
653 FakeBluetoothAgentManagerClient* fake_bluetooth_agent_manager_client = | 738 FakeBluetoothAgentManagerClient* fake_bluetooth_agent_manager_client = |
654 static_cast<FakeBluetoothAgentManagerClient*>( | 739 static_cast<FakeBluetoothAgentManagerClient*>( |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1008 // TODO(keybuk): tear down this side of the connection | 1093 // TODO(keybuk): tear down this side of the connection |
1009 callback.Run(); | 1094 callback.Run(); |
1010 } else if (status == BluetoothProfileServiceProvider::Delegate::CANCELLED) { | 1095 } else if (status == BluetoothProfileServiceProvider::Delegate::CANCELLED) { |
1011 error_callback.Run(bluetooth_device::kErrorFailed, "Canceled"); | 1096 error_callback.Run(bluetooth_device::kErrorFailed, "Canceled"); |
1012 } else if (status == BluetoothProfileServiceProvider::Delegate::REJECTED) { | 1097 } else if (status == BluetoothProfileServiceProvider::Delegate::REJECTED) { |
1013 error_callback.Run(bluetooth_device::kErrorFailed, "Rejected"); | 1098 error_callback.Run(bluetooth_device::kErrorFailed, "Rejected"); |
1014 } | 1099 } |
1015 } | 1100 } |
1016 | 1101 |
1017 } // namespace chromeos | 1102 } // namespace chromeos |
OLD | NEW |