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

Unified Diff: content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc

Issue 2217573002: bluetooth: Only add new devices, connected devices and devices that changed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-add-or-update
Patch Set: Fix typo Created 4 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 side-by-side diff with in-line comments
Download patch
Index: content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc
diff --git a/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc b/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc
index 3edc48ced57f9e33f668f4b89dc59f90b45b5ca9..16f613fb9e262d26a27454eee54617e2a1454044 100644
--- a/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc
+++ b/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc
@@ -123,6 +123,14 @@ std::set<BluetoothUUID> GetUUIDs(
return result;
}
+// Notifies the adapter's observers for each device id the adapter.
+void NotifyDevicesAdded(MockBluetoothAdapter* adapter) {
+ for (BluetoothDevice* device : adapter->GetMockDevices()) {
+ FOR_EACH_OBSERVER(BluetoothAdapter::Observer, adapter->GetObservers(),
+ DeviceAdded(adapter, device));
+ }
+}
+
// Notifies the adapter's observers that the services have been discovered.
void NotifyServicesDiscovered(MockBluetoothAdapter* adapter,
MockBluetoothDevice* device) {
@@ -188,6 +196,8 @@ LayoutTestBluetoothAdapterProvider::GetBluetoothAdapter(
return GetFailingGATTOperationsAdapter();
if (fake_adapter_name == "SecondDiscoveryFindsHeartRateAdapter")
return GetSecondDiscoveryFindsHeartRateAdapter();
+ if (fake_adapter_name == "DeviceEventAdapter")
+ return GetDeviceEventAdapter();
if (fake_adapter_name == "DelayedServicesDiscoveryAdapter")
return GetDelayedServicesDiscoveryAdapter();
if (fake_adapter_name.empty())
@@ -263,6 +273,7 @@ LayoutTestBluetoothAdapterProvider::GetNotPoweredAdapter() {
scoped_refptr<NiceMockBluetoothAdapter>
LayoutTestBluetoothAdapterProvider::GetScanFilterCheckingAdapter() {
scoped_refptr<NiceMockBluetoothAdapter> adapter(GetPoweredAdapter());
+ MockBluetoothAdapter* adapter_ptr = adapter.get();
// This fails the test with an error message listing actual and expected UUIDs
// if StartDiscoverySessionWithFilter() is called with the wrong argument.
@@ -273,8 +284,14 @@ LayoutTestBluetoothAdapterProvider::GetScanFilterCheckingAdapter() {
BluetoothUUID(kHeartRateServiceUUID),
BluetoothUUID(kBatteryServiceUUID))),
_, _))
- .WillRepeatedly(RunCallbackWithResult<1 /* success_callback */>(
- []() { return GetDiscoverySession(); }));
+ .WillRepeatedly(
+ RunCallbackWithResult<1 /* success_callback */>([adapter_ptr]() {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&NotifyDevicesAdded,
+ base::RetainedRef(adapter_ptr)));
+
+ return GetDiscoverySession();
+ }));
// Any unexpected call results in the failure callback.
ON_CALL(*adapter, StartDiscoverySessionWithFilterRaw(_, _, _))
@@ -302,9 +319,17 @@ scoped_refptr<NiceMockBluetoothAdapter>
LayoutTestBluetoothAdapterProvider::GetEmptyAdapter() {
scoped_refptr<NiceMockBluetoothAdapter> adapter(GetPoweredAdapter());
+ MockBluetoothAdapter* adapter_ptr = adapter.get();
+
ON_CALL(*adapter, StartDiscoverySessionWithFilterRaw(_, _, _))
- .WillByDefault(RunCallbackWithResult<1 /* success_callback */>(
- []() { return GetDiscoverySession(); }));
+ .WillByDefault(
+ RunCallbackWithResult<1 /* success_callback */>([adapter_ptr]() {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&NotifyDevicesAdded,
+ base::RetainedRef(adapter_ptr)));
+
+ return GetDiscoverySession();
+ }));
return adapter;
}
@@ -356,7 +381,6 @@ LayoutTestBluetoothAdapterProvider::GetSecondDiscoveryFindsHeartRateAdapter() {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::Bind(&AddDevice, make_scoped_refptr(adapter_ptr),
-
base::Passed(GetHeartRateDevice(adapter_ptr))));
return GetDiscoverySession();
}));
@@ -366,6 +390,81 @@ LayoutTestBluetoothAdapterProvider::GetSecondDiscoveryFindsHeartRateAdapter() {
// static
scoped_refptr<NiceMockBluetoothAdapter>
+LayoutTestBluetoothAdapterProvider::GetDeviceEventAdapter() {
+ scoped_refptr<NiceMockBluetoothAdapter> adapter(GetPoweredAdapter());
+ NiceMockBluetoothAdapter* adapter_ptr = adapter.get();
+
+ // Add ConnectedHeartRateDevice.
+ std::unique_ptr<NiceMockBluetoothDevice> connected_hr(GetBaseDevice(
+ adapter.get(), "Connected Heart Rate Device",
+ {BluetoothUUID(kHeartRateServiceUUID)}, makeMACAddress(0x0)));
+ connected_hr->SetConnected(true);
+ adapter->AddMockDevice(std::move(connected_hr));
+
+ // Add ChangingBatteryDevice with no uuids.
+ std::unique_ptr<NiceMockBluetoothDevice> changing_battery(
+ GetBaseDevice(adapter.get(), "Changing Battery Device",
+ BluetoothDevice::UUIDList(), makeMACAddress(0x1)));
+ changing_battery->SetConnected(false);
+
+ NiceMockBluetoothDevice* changing_battery_ptr = changing_battery.get();
+ adapter->AddMockDevice(std::move(changing_battery));
+
+ // Add Non Connected Tx Power Device.
+ std::unique_ptr<NiceMockBluetoothDevice> non_connected_tx_power(
+ GetBaseDevice(adapter.get(), "Non Connected Tx Power Device",
+ {BluetoothUUID(kTxPowerServiceUUID)}, makeMACAddress(0x2)));
+ non_connected_tx_power->SetConnected(false);
+ adapter->AddMockDevice(std::move(non_connected_tx_power));
+
+ // Add Discovery Generic Access Device with no uuids.
+ std::unique_ptr<NiceMockBluetoothDevice> discovery_generic_access(
+ GetBaseDevice(adapter.get(), "Discovery Generic Access Device",
+ BluetoothDevice::UUIDList(), makeMACAddress(0x3)));
+ discovery_generic_access->SetConnected(true);
+
+ NiceMockBluetoothDevice* discovery_generic_access_ptr =
+ discovery_generic_access.get();
+ adapter->AddMockDevice(std::move(discovery_generic_access));
+
+ ON_CALL(*adapter, StartDiscoverySessionWithFilterRaw(_, _, _))
+ .WillByDefault(RunCallbackWithResult<1 /* success_callback */>(
+ [adapter_ptr, changing_battery_ptr, discovery_generic_access_ptr]() {
+ if (adapter_ptr->GetDevices().size() == 4) {
+ // Post task to add NewGlucoseDevice.
+ std::unique_ptr<NiceMockBluetoothDevice> glucose_device(
+ GetBaseDevice(adapter_ptr, "New Glucose Device",
+ {BluetoothUUID(kGlucoseServiceUUID)},
+ makeMACAddress(0x4)));
+
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+ base::Bind(&AddDevice, make_scoped_refptr(adapter_ptr),
+ base::Passed(&glucose_device)));
+
+ // Add uuid and notify of device changed.
+ changing_battery_ptr->AddUUID(BluetoothUUID(kBatteryServiceUUID));
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&NotifyDeviceChanged,
+ base::RetainedRef(adapter_ptr),
+ changing_battery_ptr));
+
+ // Add uuid and notify of services discovered.
+ discovery_generic_access_ptr->AddUUID(
+ BluetoothUUID(kGenericAccessServiceUUID));
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&NotifyServicesDiscovered,
+ base::RetainedRef(adapter_ptr),
+ discovery_generic_access_ptr));
+ }
+ return GetDiscoverySession();
+ }));
+
+ return adapter;
+}
+
+// static
+scoped_refptr<NiceMockBluetoothAdapter>
LayoutTestBluetoothAdapterProvider::GetMissingServiceHeartRateAdapter() {
scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter());
@@ -753,9 +852,11 @@ LayoutTestBluetoothAdapterProvider::GetBaseDevice(
const std::string& address) {
std::unique_ptr<NiceMockBluetoothDevice> device(new NiceMockBluetoothDevice(
adapter, 0x1F00 /* Bluetooth class */, device_name, address,
- true /* paired */, true /* connected */));
+ false /* paired */, false /* connected */));
- ON_CALL(*device, GetUUIDs()).WillByDefault(Return(uuids));
+ for (const auto& uuid : uuids) {
+ device->AddUUID(uuid);
+ }
// Using Invoke allows the device returned from this method to be futher
// modified and have more services added to it. The call to ::GetGattServices

Powered by Google App Engine
This is Rietveld 408576698