Index: device/bluetooth/test/bluetooth_test_bluez.cc |
diff --git a/device/bluetooth/test/bluetooth_test_bluez.cc b/device/bluetooth/test/bluetooth_test_bluez.cc |
index b27dd1440e24dc3cd70f78c589e9b152ebfcfe43..075003c6ac147f423afdd2495e28f07192f97c29 100644 |
--- a/device/bluetooth/test/bluetooth_test_bluez.cc |
+++ b/device/bluetooth/test/bluetooth_test_bluez.cc |
@@ -4,36 +4,57 @@ |
#include "device/bluetooth/test/bluetooth_test_bluez.h" |
-#include <iterator> |
-#include <sstream> |
+#include <string> |
-#include "base/logging.h" |
+#include "base/bind.h" |
+#include "base/callback.h" |
+#include "base/memory/ref_counted.h" |
#include "base/run_loop.h" |
+#include "dbus/object_path.h" |
#include "device/bluetooth/bluez/bluetooth_adapter_bluez.h" |
-#include "device/bluetooth/bluez/bluetooth_device_bluez.h" |
+#include "device/bluetooth/bluez/bluetooth_gatt_characteristic_bluez.h" |
#include "device/bluetooth/bluez/bluetooth_gatt_descriptor_bluez.h" |
-#include "device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.h" |
-#include "device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h" |
+#include "device/bluetooth/bluez/bluetooth_local_gatt_characteristic_bluez.h" |
+#include "device/bluetooth/bluez/bluetooth_local_gatt_descriptor_bluez.h" |
#include "device/bluetooth/dbus/bluez_dbus_manager.h" |
#include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h" |
#include "device/bluetooth/dbus/fake_bluetooth_device_client.h" |
-#include "device/bluetooth/test/test_bluetooth_adapter_observer.h" |
+#include "device/bluetooth/dbus/fake_bluetooth_gatt_characteristic_service_provider.h" |
+#include "device/bluetooth/dbus/fake_bluetooth_gatt_descriptor_service_provider.h" |
+#include "device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.h" |
+#include "device/bluetooth/test/bluetooth_gatt_server_test.h" |
namespace device { |
namespace { |
-void AdapterCallback(base::Closure quit_closure) { |
+void AdapterCallback(const base::Closure& quit_closure) { |
quit_closure.Run(); |
} |
+ |
+void GetValueCallback( |
+ const base::Closure& quit_closure, |
+ const BluetoothLocalGattService::Delegate::ValueCallback& value_callback, |
+ const std::vector<uint8_t>& value) { |
+ value_callback.Run(value); |
+ quit_closure.Run(); |
} |
+void ClosureCallback(const base::Closure& quit_closure, |
+ const base::Closure& callback) { |
+ callback.Run(); |
+ quit_closure.Run(); |
+} |
+ |
+} // namespace |
+ |
BluetoothTestBlueZ::BluetoothTestBlueZ() |
: fake_bluetooth_device_client_(nullptr) {} |
BluetoothTestBlueZ::~BluetoothTestBlueZ() {} |
void BluetoothTestBlueZ::SetUp() { |
+ BluetoothTestBase::SetUp(); |
std::unique_ptr<bluez::BluezDBusManagerSetter> dbus_setter = |
bluez::BluezDBusManager::GetSetterForTesting(); |
fake_bluetooth_device_client_ = new bluez::FakeBluetoothDeviceClient; |
@@ -50,6 +71,7 @@ void BluetoothTestBlueZ::SetUp() { |
void BluetoothTestBlueZ::TearDown() { |
adapter_ = nullptr; |
bluez::BluezDBusManager::Shutdown(); |
+ BluetoothTestBase::TearDown(); |
} |
bool BluetoothTestBlueZ::PlatformSupportsLowEnergy() { |
@@ -100,4 +122,117 @@ BluetoothDevice* BluetoothTestBlueZ::DiscoverLowEnergyDevice( |
return device; |
} |
+ |
+void BluetoothTestBlueZ::SimulateLocalGattCharacteristicValueReadRequest( |
+ BluetoothLocalGattService* service, |
+ BluetoothLocalGattCharacteristic* characteristic, |
+ const BluetoothLocalGattService::Delegate::ValueCallback& value_callback, |
+ const base::Closure& error_callback) { |
+ bluez::BluetoothLocalGattCharacteristicBlueZ* characteristic_bluez = |
+ static_cast<bluez::BluetoothLocalGattCharacteristicBlueZ*>( |
+ characteristic); |
+ bluez::FakeBluetoothGattManagerClient* fake_bluetooth_gatt_manager_client = |
+ static_cast<bluez::FakeBluetoothGattManagerClient*>( |
+ bluez::BluezDBusManager::Get()->GetBluetoothGattManagerClient()); |
+ bluez::FakeBluetoothGattCharacteristicServiceProvider* |
+ characteristic_provider = |
+ fake_bluetooth_gatt_manager_client->GetCharacteristicServiceProvider( |
+ characteristic_bluez->object_path()); |
+ |
+ bluez::BluetoothLocalGattServiceBlueZ* service_bluez = |
+ static_cast<bluez::BluetoothLocalGattServiceBlueZ*>(service); |
+ static_cast<TestLocalGattServiceDelegate*>(service_bluez->GetDelegate()) |
+ ->set_expected_characteristic(characteristic); |
+ |
+ base::RunLoop run_loop; |
+ characteristic_provider->GetValue( |
+ base::Bind(&GetValueCallback, run_loop.QuitClosure(), value_callback), |
+ base::Bind(&ClosureCallback, run_loop.QuitClosure(), error_callback)); |
+ run_loop.Run(); |
+} |
+ |
+void BluetoothTestBlueZ::SimulateLocalGattCharacteristicValueWriteRequest( |
+ BluetoothLocalGattService* service, |
+ BluetoothLocalGattCharacteristic* characteristic, |
+ const std::vector<uint8_t>& value_to_write, |
+ const base::Closure& success_callback, |
+ const base::Closure& error_callback) { |
+ bluez::BluetoothLocalGattCharacteristicBlueZ* characteristic_bluez = |
+ static_cast<bluez::BluetoothLocalGattCharacteristicBlueZ*>( |
+ characteristic); |
+ bluez::FakeBluetoothGattManagerClient* fake_bluetooth_gatt_manager_client = |
+ static_cast<bluez::FakeBluetoothGattManagerClient*>( |
+ bluez::BluezDBusManager::Get()->GetBluetoothGattManagerClient()); |
+ bluez::FakeBluetoothGattCharacteristicServiceProvider* |
+ characteristic_provider = |
+ fake_bluetooth_gatt_manager_client->GetCharacteristicServiceProvider( |
+ characteristic_bluez->object_path()); |
+ |
+ bluez::BluetoothLocalGattServiceBlueZ* service_bluez = |
+ static_cast<bluez::BluetoothLocalGattServiceBlueZ*>(service); |
+ static_cast<TestLocalGattServiceDelegate*>(service_bluez->GetDelegate()) |
+ ->set_expected_characteristic(characteristic); |
+ |
+ base::RunLoop run_loop; |
+ characteristic_provider->SetValue( |
+ value_to_write, |
+ base::Bind(&ClosureCallback, run_loop.QuitClosure(), success_callback), |
+ base::Bind(&ClosureCallback, run_loop.QuitClosure(), error_callback)); |
+ run_loop.Run(); |
+} |
+ |
+void BluetoothTestBlueZ::SimulateLocalGattDescriptorValueReadRequest( |
+ BluetoothLocalGattService* service, |
+ BluetoothLocalGattDescriptor* descriptor, |
+ const BluetoothLocalGattService::Delegate::ValueCallback& value_callback, |
+ const base::Closure& error_callback) { |
+ bluez::BluetoothLocalGattDescriptorBlueZ* descriptor_bluez = |
+ static_cast<bluez::BluetoothLocalGattDescriptorBlueZ*>(descriptor); |
+ bluez::FakeBluetoothGattManagerClient* fake_bluetooth_gatt_manager_client = |
+ static_cast<bluez::FakeBluetoothGattManagerClient*>( |
+ bluez::BluezDBusManager::Get()->GetBluetoothGattManagerClient()); |
+ bluez::FakeBluetoothGattDescriptorServiceProvider* descriptor_provider = |
+ fake_bluetooth_gatt_manager_client->GetDescriptorServiceProvider( |
+ descriptor_bluez->object_path()); |
+ |
+ bluez::BluetoothLocalGattServiceBlueZ* service_bluez = |
+ static_cast<bluez::BluetoothLocalGattServiceBlueZ*>(service); |
+ static_cast<TestLocalGattServiceDelegate*>(service_bluez->GetDelegate()) |
+ ->set_expected_descriptor(descriptor); |
+ |
+ base::RunLoop run_loop; |
+ descriptor_provider->GetValue( |
+ base::Bind(&GetValueCallback, run_loop.QuitClosure(), value_callback), |
+ base::Bind(&ClosureCallback, run_loop.QuitClosure(), error_callback)); |
+ run_loop.Run(); |
} |
+ |
+void BluetoothTestBlueZ::SimulateLocalGattDescriptorValueWriteRequest( |
+ BluetoothLocalGattService* service, |
+ BluetoothLocalGattDescriptor* descriptor, |
+ const std::vector<uint8_t>& value_to_write, |
+ const base::Closure& success_callback, |
+ const base::Closure& error_callback) { |
+ bluez::BluetoothLocalGattDescriptorBlueZ* descriptor_bluez = |
+ static_cast<bluez::BluetoothLocalGattDescriptorBlueZ*>(descriptor); |
+ bluez::FakeBluetoothGattManagerClient* fake_bluetooth_gatt_manager_client = |
+ static_cast<bluez::FakeBluetoothGattManagerClient*>( |
+ bluez::BluezDBusManager::Get()->GetBluetoothGattManagerClient()); |
+ bluez::FakeBluetoothGattDescriptorServiceProvider* descriptor_provider = |
+ fake_bluetooth_gatt_manager_client->GetDescriptorServiceProvider( |
+ descriptor_bluez->object_path()); |
+ |
+ bluez::BluetoothLocalGattServiceBlueZ* service_bluez = |
+ static_cast<bluez::BluetoothLocalGattServiceBlueZ*>(service); |
+ static_cast<TestLocalGattServiceDelegate*>(service_bluez->GetDelegate()) |
+ ->set_expected_descriptor(descriptor); |
+ |
+ base::RunLoop run_loop; |
+ descriptor_provider->SetValue( |
+ value_to_write, |
+ base::Bind(&ClosureCallback, run_loop.QuitClosure(), success_callback), |
+ base::Bind(&ClosureCallback, run_loop.QuitClosure(), error_callback)); |
+ run_loop.Run(); |
+} |
+ |
+} // namespace device |