Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(704)

Side by Side Diff: chromeos/dbus/fake_bluetooth_device_client.cc

Issue 1258783009: Add functionality to Bluetooth settings UI. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 count = len; 62 count = len;
63 len = write(fd, buf, count); 63 len = write(fd, buf, count);
64 if (len < 0) { 64 if (len < 0) {
65 close(fd); 65 close(fd);
66 return; 66 return;
67 } 67 }
68 68
69 close(fd); 69 close(fd);
70 } 70 }
71 71
72 void SimpleErrorCallback(const std::string& error_name,
73 const std::string& error_message) {
74 VLOG(1) << "Bluetooth Error: " << error_name << ": " << error_message;
75 }
76
77 } // namespace 72 } // namespace
78 73
79 namespace chromeos { 74 namespace chromeos {
80 75
81 const char FakeBluetoothDeviceClient::kPairedDevicePath[] = 76 const char FakeBluetoothDeviceClient::kPairedDevicePath[] =
82 "/fake/hci0/dev0"; 77 "/fake/hci0/dev0";
83 const char FakeBluetoothDeviceClient::kPairedDeviceAddress[] = 78 const char FakeBluetoothDeviceClient::kPairedDeviceAddress[] =
84 "00:11:22:33:44:55"; 79 "00:11:22:33:44:55";
85 const char FakeBluetoothDeviceClient::kPairedDeviceName[] = 80 const char FakeBluetoothDeviceClient::kPairedDeviceName[] =
86 "Fake Device"; 81 "Fake Device";
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 } 299 }
305 300
306 FakeBluetoothDeviceClient::Properties* 301 FakeBluetoothDeviceClient::Properties*
307 FakeBluetoothDeviceClient::GetProperties(const dbus::ObjectPath& object_path) { 302 FakeBluetoothDeviceClient::GetProperties(const dbus::ObjectPath& object_path) {
308 PropertiesMap::iterator iter = properties_map_.find(object_path); 303 PropertiesMap::iterator iter = properties_map_.find(object_path);
309 if (iter != properties_map_.end()) 304 if (iter != properties_map_.end())
310 return iter->second; 305 return iter->second;
311 return NULL; 306 return NULL;
312 } 307 }
313 308
309 FakeBluetoothDeviceClient::SimulatedPairingOptions*
310 FakeBluetoothDeviceClient::GetPairingOptions(
311 const dbus::ObjectPath& object_path) {
312 PairingOptionsMap::iterator iter = pairing_options_map_.find(object_path);
313 if (iter != pairing_options_map_.end())
314 return iter->second;
315 return NULL;
316 }
317
314 void FakeBluetoothDeviceClient::Connect( 318 void FakeBluetoothDeviceClient::Connect(
315 const dbus::ObjectPath& object_path, 319 const dbus::ObjectPath& object_path,
316 const base::Closure& callback, 320 const base::Closure& callback,
317 const ErrorCallback& error_callback) { 321 const ErrorCallback& error_callback) {
318 VLOG(1) << "Connect: " << object_path.value(); 322 VLOG(1) << "Connect: " << object_path.value();
319 Properties* properties = GetProperties(object_path); 323 Properties* properties = GetProperties(object_path);
320 324
321 if (properties->connected.value() == true) { 325 if (properties->connected.value() == true) {
322 // Already connected. 326 // Already connected.
323 callback.Run(); 327 callback.Run();
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 void FakeBluetoothDeviceClient::EndIncomingPairingSimulation( 552 void FakeBluetoothDeviceClient::EndIncomingPairingSimulation(
549 const dbus::ObjectPath& adapter_path) { 553 const dbus::ObjectPath& adapter_path) {
550 VLOG(1) << "stopping incoming pairing simulation"; 554 VLOG(1) << "stopping incoming pairing simulation";
551 incoming_pairing_simulation_step_ = 0; 555 incoming_pairing_simulation_step_ = 0;
552 } 556 }
553 557
554 void FakeBluetoothDeviceClient::SetSimulationIntervalMs(int interval_ms) { 558 void FakeBluetoothDeviceClient::SetSimulationIntervalMs(int interval_ms) {
555 simulation_interval_ms_ = interval_ms; 559 simulation_interval_ms_ = interval_ms;
556 } 560 }
557 561
562 void FakeBluetoothDeviceClient::SimpleErrorCallback(
xiyuan 2015/07/30 17:21:22 Why move this into FakeBluetoothDeviceClient inter
rfrappier 2015/07/30 22:21:39 Forgot to revert this change (I thought I needed i
563 const std::string& error_name,
564 const std::string& error_message) {
565 VLOG(1) << "Bluetooth Error: " << error_name << ": " << error_message;
566 }
567
558 void FakeBluetoothDeviceClient::CreateDevice( 568 void FakeBluetoothDeviceClient::CreateDevice(
559 const dbus::ObjectPath& adapter_path, 569 const dbus::ObjectPath& adapter_path,
560 const dbus::ObjectPath& device_path) { 570 const dbus::ObjectPath& device_path) {
561 if (std::find(device_list_.begin(), 571 if (std::find(device_list_.begin(),
562 device_list_.end(), device_path) != device_list_.end()) 572 device_list_.end(), device_path) != device_list_.end())
563 return; 573 return;
564 574
565 Properties* properties = new Properties(base::Bind( 575 Properties* properties = new Properties(base::Bind(
566 &FakeBluetoothDeviceClient::OnPropertyChanged, 576 &FakeBluetoothDeviceClient::OnPropertyChanged,
567 base::Unretained(this), 577 base::Unretained(this),
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 NOTREACHED(); 674 NOTREACHED();
665 675
666 } 676 }
667 677
668 properties_map_[device_path] = properties; 678 properties_map_[device_path] = properties;
669 device_list_.push_back(device_path); 679 device_list_.push_back(device_path);
670 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, 680 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_,
671 DeviceAdded(device_path)); 681 DeviceAdded(device_path));
672 } 682 }
673 683
684 void FakeBluetoothDeviceClient::CreateDeviceWithProperties(
685 const dbus::ObjectPath& adapter_path,
686 const dbus::ObjectPath& device_path,
687 const std::string& device_name,
688 const std::string& device_alias,
689 const std::string& device_address,
690 const std::string& pairing_method,
691 const std::string& pairing_auth_token,
692 const uint32& device_class,
693 const bool is_trusted) {
694 if (std::find(device_list_.begin(), device_list_.end(), device_path) !=
695 device_list_.end())
stevenjb 2015/07/30 18:28:52 LOG(ERROR) << "Bluetootl device already exists: "
rfrappier 2015/07/30 22:21:39 This will probably be removed later to allow for e
696 return;
697
698 Properties* properties =
stevenjb 2015/07/30 18:28:51 Use a scoped_ptr here so that ownership passing is
rfrappier 2015/07/30 22:21:39 Done.
699 new Properties(base::Bind(&FakeBluetoothDeviceClient::OnPropertyChanged,
700 base::Unretained(this), device_path));
701 properties->adapter.ReplaceValue(adapter_path);
702 properties->name.ReplaceValue(device_name);
703 properties->alias.ReplaceValue(device_alias);
704 properties->address.ReplaceValue(device_address);
705 properties->bluetooth_class.ReplaceValue(device_class);
706 properties->trusted.ReplaceValue(is_trusted);
707
708 if (is_trusted)
709 properties->paired.ReplaceValue(true);
710
711 SimulatedPairingOptions* options = new SimulatedPairingOptions;
stevenjb 2015/07/30 18:28:52 scoped_ptr
rfrappier 2015/07/30 22:21:39 Done.
712 options->pairing_method = pairing_method;
713 options->pairing_auth_token = pairing_auth_token;
714
715 properties_map_[device_path] = properties;
stevenjb 2015/07/30 18:28:52 If we make this a ScopedPtrMap, this will be prope
rfrappier 2015/07/30 22:21:39 Acknowledged.
716 device_list_.push_back(device_path);
717 pairing_options_map_[device_path] = options;
xiyuan 2015/07/30 17:21:22 This leaks. You need to do "STLDeleteValues()" sim
stevenjb 2015/07/30 18:28:52 A good reason to use ScopedPtrMap for both of thes
rfrappier 2015/07/30 22:21:39 Done.
718 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_,
719 DeviceAdded(device_path));
720 }
721
674 void FakeBluetoothDeviceClient::RemoveDevice( 722 void FakeBluetoothDeviceClient::RemoveDevice(
675 const dbus::ObjectPath& adapter_path, 723 const dbus::ObjectPath& adapter_path,
676 const dbus::ObjectPath& device_path) { 724 const dbus::ObjectPath& device_path) {
677 std::vector<dbus::ObjectPath>::iterator listiter = 725 std::vector<dbus::ObjectPath>::iterator listiter =
678 std::find(device_list_.begin(), device_list_.end(), device_path); 726 std::find(device_list_.begin(), device_list_.end(), device_path);
679 if (listiter == device_list_.end()) 727 if (listiter == device_list_.end())
680 return; 728 return;
681 729
682 PropertiesMap::iterator iter = properties_map_.find(device_path); 730 PropertiesMap::iterator iter = properties_map_.find(device_path);
683 Properties* properties = iter->second; 731 Properties* properties = iter->second;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 void FakeBluetoothDeviceClient::IncomingPairingSimulationTimer() { 837 void FakeBluetoothDeviceClient::IncomingPairingSimulationTimer() {
790 if (!incoming_pairing_simulation_step_) 838 if (!incoming_pairing_simulation_step_)
791 return; 839 return;
792 840
793 VLOG(1) << "incoming pairing simulation, step " 841 VLOG(1) << "incoming pairing simulation, step "
794 << incoming_pairing_simulation_step_; 842 << incoming_pairing_simulation_step_;
795 switch (incoming_pairing_simulation_step_) { 843 switch (incoming_pairing_simulation_step_) {
796 case 1: 844 case 1:
797 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 845 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
798 dbus::ObjectPath(kConfirmPasskeyPath)); 846 dbus::ObjectPath(kConfirmPasskeyPath));
799 SimulatePairing(dbus::ObjectPath(kConfirmPasskeyPath), true, 847 SimulatePairing(
800 base::Bind(&base::DoNothing), 848 dbus::ObjectPath(kConfirmPasskeyPath), true,
801 base::Bind(&SimpleErrorCallback)); 849 base::Bind(&base::DoNothing),
850 base::Bind(&FakeBluetoothDeviceClient::SimpleErrorCallback));
802 break; 851 break;
803 case 2: 852 case 2:
804 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 853 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
805 dbus::ObjectPath(kJustWorksPath)); 854 dbus::ObjectPath(kJustWorksPath));
806 SimulatePairing(dbus::ObjectPath(kJustWorksPath), true, 855 SimulatePairing(
807 base::Bind(&base::DoNothing), 856 dbus::ObjectPath(kJustWorksPath), true, base::Bind(&base::DoNothing),
808 base::Bind(&SimpleErrorCallback)); 857 base::Bind(&FakeBluetoothDeviceClient::SimpleErrorCallback));
809 break; 858 break;
810 case 3: 859 case 3:
811 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 860 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
812 dbus::ObjectPath(kDisplayPinCodePath)); 861 dbus::ObjectPath(kDisplayPinCodePath));
813 SimulatePairing(dbus::ObjectPath(kDisplayPinCodePath), true, 862 SimulatePairing(
814 base::Bind(&base::DoNothing), 863 dbus::ObjectPath(kDisplayPinCodePath), true,
815 base::Bind(&SimpleErrorCallback)); 864 base::Bind(&base::DoNothing),
865 base::Bind(&FakeBluetoothDeviceClient::SimpleErrorCallback));
816 break; 866 break;
817 case 4: 867 case 4:
818 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 868 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
819 dbus::ObjectPath(kDisplayPasskeyPath)); 869 dbus::ObjectPath(kDisplayPasskeyPath));
820 SimulatePairing(dbus::ObjectPath(kDisplayPasskeyPath), true, 870 SimulatePairing(
821 base::Bind(&base::DoNothing), 871 dbus::ObjectPath(kDisplayPasskeyPath), true,
822 base::Bind(&SimpleErrorCallback)); 872 base::Bind(&base::DoNothing),
873 base::Bind(&FakeBluetoothDeviceClient::SimpleErrorCallback));
823 break; 874 break;
824 case 5: 875 case 5:
825 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 876 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
826 dbus::ObjectPath(kRequestPinCodePath)); 877 dbus::ObjectPath(kRequestPinCodePath));
827 SimulatePairing(dbus::ObjectPath(kRequestPinCodePath), true, 878 SimulatePairing(
828 base::Bind(&base::DoNothing), 879 dbus::ObjectPath(kRequestPinCodePath), true,
829 base::Bind(&SimpleErrorCallback)); 880 base::Bind(&base::DoNothing),
881 base::Bind(&FakeBluetoothDeviceClient::SimpleErrorCallback));
830 break; 882 break;
831 case 6: 883 case 6:
832 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 884 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
833 dbus::ObjectPath(kRequestPasskeyPath)); 885 dbus::ObjectPath(kRequestPasskeyPath));
834 SimulatePairing(dbus::ObjectPath(kRequestPasskeyPath), true, 886 SimulatePairing(
835 base::Bind(&base::DoNothing), 887 dbus::ObjectPath(kRequestPasskeyPath), true,
836 base::Bind(&SimpleErrorCallback)); 888 base::Bind(&base::DoNothing),
889 base::Bind(&FakeBluetoothDeviceClient::SimpleErrorCallback));
837 break; 890 break;
838 default: 891 default:
839 return; 892 return;
840 } 893 }
841 894
842 ++incoming_pairing_simulation_step_; 895 ++incoming_pairing_simulation_step_;
843 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 896 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
844 FROM_HERE, 897 FROM_HERE,
845 base::Bind(&FakeBluetoothDeviceClient::IncomingPairingSimulationTimer, 898 base::Bind(&FakeBluetoothDeviceClient::IncomingPairingSimulationTimer,
846 base::Unretained(this)), 899 base::Unretained(this)),
847 base::TimeDelta::FromMilliseconds(45 * simulation_interval_ms_)); 900 base::TimeDelta::FromMilliseconds(45 * simulation_interval_ms_));
848 } 901 }
849 902
850 void FakeBluetoothDeviceClient::SimulatePairing( 903 void FakeBluetoothDeviceClient::SimulatePairing(
851 const dbus::ObjectPath& object_path, 904 const dbus::ObjectPath& object_path,
852 bool incoming_request, 905 bool incoming_request,
853 const base::Closure& callback, 906 const base::Closure& callback,
854 const ErrorCallback& error_callback) { 907 const ErrorCallback& error_callback) {
855 pairing_cancelled_ = false; 908 pairing_cancelled_ = false;
856 909
857 FakeBluetoothAgentManagerClient* fake_bluetooth_agent_manager_client = 910 FakeBluetoothAgentManagerClient* fake_bluetooth_agent_manager_client =
858 static_cast<FakeBluetoothAgentManagerClient*>( 911 static_cast<FakeBluetoothAgentManagerClient*>(
859 DBusThreadManager::Get()->GetBluetoothAgentManagerClient()); 912 DBusThreadManager::Get()->GetBluetoothAgentManagerClient());
860 FakeBluetoothAgentServiceProvider* agent_service_provider = 913 FakeBluetoothAgentServiceProvider* agent_service_provider =
861 fake_bluetooth_agent_manager_client->GetAgentServiceProvider(); 914 fake_bluetooth_agent_manager_client->GetAgentServiceProvider();
862 CHECK(agent_service_provider != NULL); 915 CHECK(agent_service_provider != NULL);
863 916
864 if (object_path == dbus::ObjectPath(kLegacyAutopairPath) || 917 // Grab the device's pairing properties.
865 object_path == dbus::ObjectPath(kConnectUnpairablePath) || 918 PairingOptionsMap::iterator iter = pairing_options_map_.find(object_path);
866 object_path == dbus::ObjectPath(kUnconnectableDevicePath) ||
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 919
877 } else if (object_path == dbus::ObjectPath(kDisplayPinCodePath)) { 920 // If the device with path |object_path| has simulated pairing properties
878 // Display a Pincode, and wait 7 times the interval before acting as 921 // defined, then pair it based on its |pairing_method|.
879 // if the other end accepted it. 922 if (iter != pairing_options_map_.end()) {
880 agent_service_provider->DisplayPinCode(object_path, "123456"); 923 if (iter->second->pairing_method == "None" ||
xiyuan 2015/07/30 17:21:22 nit: Put "None", "PIN Code" etc in const.
rfrappier 2015/07/30 22:21:39 Done.
924 iter->second->pairing_method == "") {
925 // Simply pair and connect the device.
926 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
927 FROM_HERE,
928 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing,
929 base::Unretained(this), object_path, callback,
930 error_callback),
931 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_));
932 } else if (iter->second->pairing_method == "PIN Code") {
933 // Display a Pincode, and wait 7 times the interval before acting as
934 // if the other end accepted it.
935 agent_service_provider->DisplayPinCode(object_path,
936 iter->second->pairing_auth_token);
881 937
882 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 938 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
883 FROM_HERE, 939 FROM_HERE,
884 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, 940 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing,
885 base::Unretained(this), object_path, callback, 941 base::Unretained(this), object_path, callback,
886 error_callback), 942 error_callback),
887 base::TimeDelta::FromMilliseconds(7 * simulation_interval_ms_)); 943 base::TimeDelta::FromMilliseconds(7 * simulation_interval_ms_));
stevenjb 2015/07/30 18:28:52 7 should be a const and used here and below.
rfrappier 2015/07/30 22:21:39 Done.
944 } else if (iter->second->pairing_method == "PassKey") {
945 // Display a passkey, and each interval act as if another key was entered
946 // for it.
947 agent_service_provider->DisplayPasskey(
948 object_path, std::stoi(iter->second->pairing_auth_token), 0);
888 949
889 } else if (object_path == dbus::ObjectPath(kVanishingDevicePath)) { 950 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
890 // The vanishing device simulates being too far away, and thus times out. 951 FROM_HERE, base::Bind(&FakeBluetoothDeviceClient::SimulateKeypress,
891 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 952 base::Unretained(this), 1, object_path,
892 FROM_HERE, 953 callback, error_callback),
893 base::Bind(&FakeBluetoothDeviceClient::TimeoutSimulatedPairing, 954 base::TimeDelta::FromMilliseconds(simulation_interval_ms_));
894 base::Unretained(this), object_path, error_callback), 955 }
895 base::TimeDelta::FromMilliseconds(4 * simulation_interval_ms_)); 956 } else {
896 957 if (object_path == dbus::ObjectPath(kLegacyAutopairPath) ||
897 } else if (object_path == dbus::ObjectPath(kDisplayPasskeyPath)) { 958 object_path == dbus::ObjectPath(kConnectUnpairablePath) ||
898 // Display a passkey, and each interval act as if another key was entered 959 object_path == dbus::ObjectPath(kUnconnectableDevicePath) ||
899 // for it. 960 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 961 // 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. 962 // the interval before acting as if the other end accepted it.
959 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 963 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
960 FROM_HERE, 964 FROM_HERE,
961 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, 965 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing,
962 base::Unretained(this), object_path, callback, 966 base::Unretained(this), object_path, callback,
963 error_callback), 967 error_callback),
964 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_)); 968 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_));
969
970 } else if (object_path == dbus::ObjectPath(kDisplayPinCodePath)) {
971 // Display a Pincode, and wait 7 times the interval before acting as
972 // if the other end accepted it.
973 agent_service_provider->DisplayPinCode(object_path, "123456");
stevenjb 2015/07/30 18:28:52 "123456" should be declared as a const char[].
rfrappier 2015/07/30 22:21:39 Done.
974
975 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
976 FROM_HERE,
977 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing,
978 base::Unretained(this), object_path, callback,
979 error_callback),
980 base::TimeDelta::FromMilliseconds(7 * simulation_interval_ms_));
981
982 } else if (object_path == dbus::ObjectPath(kVanishingDevicePath)) {
983 // The vanishing device simulates being too far away, and thus times out.
984 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
985 FROM_HERE,
986 base::Bind(&FakeBluetoothDeviceClient::TimeoutSimulatedPairing,
987 base::Unretained(this), object_path, error_callback),
988 base::TimeDelta::FromMilliseconds(4 * simulation_interval_ms_));
989
990 } else if (object_path == dbus::ObjectPath(kDisplayPasskeyPath)) {
991 // Display a passkey, and each interval act as if another key was entered
992 // for it.
993 agent_service_provider->DisplayPasskey(object_path, 123456, 0);
stevenjb 2015/07/30 18:28:52 const int for 123456
rfrappier 2015/07/30 22:21:39 Done.
994
995 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
996 FROM_HERE, base::Bind(&FakeBluetoothDeviceClient::SimulateKeypress,
997 base::Unretained(this), 1, object_path,
998 callback, error_callback),
999 base::TimeDelta::FromMilliseconds(simulation_interval_ms_));
1000
1001 } else if (object_path == dbus::ObjectPath(kRequestPinCodePath)) {
1002 // Request a Pincode.
1003 agent_service_provider->RequestPinCode(
1004 object_path, base::Bind(&FakeBluetoothDeviceClient::PinCodeCallback,
1005 base::Unretained(this), object_path, callback,
1006 error_callback));
1007
1008 } else if (object_path == dbus::ObjectPath(kConfirmPasskeyPath)) {
1009 // Request confirmation of a Passkey.
1010 agent_service_provider->RequestConfirmation(
1011 object_path, 123456,
1012 base::Bind(&FakeBluetoothDeviceClient::ConfirmationCallback,
1013 base::Unretained(this), object_path, callback,
1014 error_callback));
1015
1016 } else if (object_path == dbus::ObjectPath(kRequestPasskeyPath)) {
1017 // Request a Passkey from the user.
1018 agent_service_provider->RequestPasskey(
1019 object_path, base::Bind(&FakeBluetoothDeviceClient::PasskeyCallback,
1020 base::Unretained(this), object_path, callback,
1021 error_callback));
1022
1023 } else if (object_path == dbus::ObjectPath(kUnpairableDevicePath)) {
1024 // Fails the pairing with an org.bluez.Error.Failed error.
1025 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
1026 FROM_HERE,
1027 base::Bind(&FakeBluetoothDeviceClient::FailSimulatedPairing,
1028 base::Unretained(this), object_path, error_callback),
1029 base::TimeDelta::FromMilliseconds(simulation_interval_ms_));
1030
1031 } else if (object_path == dbus::ObjectPath(kJustWorksPath)) {
1032 if (incoming_request) {
1033 agent_service_provider->RequestAuthorization(
1034 object_path,
1035 base::Bind(&FakeBluetoothDeviceClient::ConfirmationCallback,
1036 base::Unretained(this), object_path, callback,
1037 error_callback));
1038
1039 } else {
1040 // No need to call anything on the pairing delegate, just wait 3 times
1041 // the interval before acting as if the other end accepted it.
1042 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
1043 FROM_HERE,
1044 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing,
1045 base::Unretained(this), object_path, callback,
1046 error_callback),
1047 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_));
stevenjb 2015/07/30 18:28:52 const int for 3
rfrappier 2015/07/30 22:21:39 Done.
1048 }
1049
1050 } else {
1051 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
1052 FROM_HERE,
1053 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing,
1054 base::Unretained(this), object_path, callback,
1055 error_callback),
1056 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_));
1057 // error_callback.Run(kNoResponseError, "No pairing fake");
965 } 1058 }
966
967 } else {
968 error_callback.Run(kNoResponseError, "No pairing fake");
969 } 1059 }
970 } 1060 }
971 1061
972 void FakeBluetoothDeviceClient::CompleteSimulatedPairing( 1062 void FakeBluetoothDeviceClient::CompleteSimulatedPairing(
973 const dbus::ObjectPath& object_path, 1063 const dbus::ObjectPath& object_path,
974 const base::Closure& callback, 1064 const base::Closure& callback,
975 const ErrorCallback& error_callback) { 1065 const ErrorCallback& error_callback) {
976 VLOG(1) << "CompleteSimulatedPairing: " << object_path.value(); 1066 VLOG(1) << "CompleteSimulatedPairing: " << object_path.value();
977 if (pairing_cancelled_) { 1067 if (pairing_cancelled_) {
978 pairing_cancelled_ = false; 1068 pairing_cancelled_ = false;
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 // TODO(keybuk): tear down this side of the connection 1310 // TODO(keybuk): tear down this side of the connection
1221 callback.Run(); 1311 callback.Run();
1222 } else if (status == BluetoothProfileServiceProvider::Delegate::CANCELLED) { 1312 } else if (status == BluetoothProfileServiceProvider::Delegate::CANCELLED) {
1223 error_callback.Run(bluetooth_device::kErrorFailed, "Canceled"); 1313 error_callback.Run(bluetooth_device::kErrorFailed, "Canceled");
1224 } else if (status == BluetoothProfileServiceProvider::Delegate::REJECTED) { 1314 } else if (status == BluetoothProfileServiceProvider::Delegate::REJECTED) {
1225 error_callback.Run(bluetooth_device::kErrorFailed, "Rejected"); 1315 error_callback.Run(bluetooth_device::kErrorFailed, "Rejected");
1226 } 1316 }
1227 } 1317 }
1228 1318
1229 } // namespace chromeos 1319 } // namespace chromeos
OLDNEW
« chromeos/dbus/fake_bluetooth_device_client.h ('K') | « chromeos/dbus/fake_bluetooth_device_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698