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

Unified Diff: device/bluetooth/dbus/fake_bluetooth_device_client.cc

Issue 2783733002: Bluetooth: Add service data unit tests for chromeos (Closed)
Patch Set: comments and rebase Created 3 years, 9 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: device/bluetooth/dbus/fake_bluetooth_device_client.cc
diff --git a/device/bluetooth/dbus/fake_bluetooth_device_client.cc b/device/bluetooth/dbus/fake_bluetooth_device_client.cc
index 58f694f03cf6e3161e261e099f74dafe446a5215..3ce62c3519c1d4cab6d4587e31703d0dbed40105 100644
--- a/device/bluetooth/dbus/fake_bluetooth_device_client.cc
+++ b/device/bluetooth/dbus/fake_bluetooth_device_client.cc
@@ -1551,6 +1551,29 @@ void FakeBluetoothDeviceClient::UpdateDeviceRSSI(
properties->rssi.ReplaceValue(rssi);
}
+void FakeBluetoothDeviceClient::UpdateServiceData(
+ const dbus::ObjectPath& object_path,
+ const std::unordered_map<std::string, std::vector<uint8_t>>& service_data) {
+ PropertiesMap::const_iterator iter = properties_map_.find(object_path);
+ if (iter == properties_map_.end()) {
+ VLOG(2) << "Fake device does not exist: " << object_path.value();
+ return;
+ }
+ Properties* properties = iter->second.get();
+ DCHECK(properties);
+ properties->service_data.set_valid(true);
+
+ // BlueZ caches all the previously received advertisements. To mimic BlueZ
+ // caching behavior, merge the new data here with the existing data.
+ // TODO(crbug.com/707039): once the BlueZ caching behavior is changed, this
+ // needs to be updated as well.
+ std::unordered_map<std::string, std::vector<uint8_t>> merged_data =
+ service_data;
+ merged_data.insert(properties->service_data.value().begin(),
+ properties->service_data.value().end());
+ properties->service_data.ReplaceValue(merged_data);
+}
+
void FakeBluetoothDeviceClient::UpdateConnectionInfo(
uint16_t connection_rssi,
uint16_t transmit_power,
@@ -1775,7 +1798,8 @@ void FakeBluetoothDeviceClient::CreateTestDevice(
const std::string alias,
const std::string device_address,
const std::vector<std::string>& service_uuids,
- device::BluetoothTransport type) {
+ device::BluetoothTransport type,
+ const std::unordered_map<std::string, std::vector<uint8_t>>& service_data) {
// Create a random device path.
dbus::ObjectPath device_path;
std::string id;
@@ -1818,6 +1842,11 @@ void FakeBluetoothDeviceClient::CreateTestDevice(
}
properties->type.set_valid(true);
+ if (!service_data.empty()) {
+ properties->service_data.ReplaceValue(service_data);
+ properties->service_data.set_valid(true);
+ }
+
properties_map_.insert(std::make_pair(device_path, std::move(properties)));
device_list_.push_back(device_path);
for (auto& observer : observers_)

Powered by Google App Engine
This is Rietveld 408576698