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

Side by Side Diff: device/bluetooth/dbus/fake_bluetooth_device_client.cc

Issue 2783733002: Bluetooth: Add service data unit tests for chromeos (Closed)
Patch Set: Incoporate comments Created 3 years, 8 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 "device/bluetooth/dbus/fake_bluetooth_device_client.h" 5 #include "device/bluetooth/dbus/fake_bluetooth_device_client.h"
6 6
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <sys/socket.h> 9 #include <sys/socket.h>
10 #include <sys/types.h> 10 #include <sys/types.h>
(...skipping 1533 matching lines...) Expand 10 before | Expand all | Expand 10 after
1544 if (iter == properties_map_.end()) { 1544 if (iter == properties_map_.end()) {
1545 VLOG(2) << "Fake device does not exist: " << object_path.value(); 1545 VLOG(2) << "Fake device does not exist: " << object_path.value();
1546 return; 1546 return;
1547 } 1547 }
1548 Properties* properties = iter->second.get(); 1548 Properties* properties = iter->second.get();
1549 DCHECK(properties); 1549 DCHECK(properties);
1550 properties->rssi.set_valid(true); 1550 properties->rssi.set_valid(true);
1551 properties->rssi.ReplaceValue(rssi); 1551 properties->rssi.ReplaceValue(rssi);
1552 } 1552 }
1553 1553
1554 void FakeBluetoothDeviceClient::UpdateServiceData(
1555 const dbus::ObjectPath& object_path,
1556 const std::unordered_map<std::string, std::vector<uint8_t>>& service_data) {
1557 PropertiesMap::const_iterator iter = properties_map_.find(object_path);
1558 if (iter == properties_map_.end()) {
1559 VLOG(2) << "Fake device does not exist: " << object_path.value();
1560 return;
1561 }
1562 Properties* properties = iter->second.get();
1563 DCHECK(properties);
1564 properties->service_data.set_valid(true);
1565 properties->service_data.ReplaceValue(service_data);
ortuno 2017/03/30 02:58:14 +scheib fyi *sigh* I wish BlueZ worked like this.
scheib 2017/03/30 03:44:10 Grr... Bluez. I didn't go dig into Bluez code to
Miao 2017/03/30 21:20:07 As Ortuno mentioned, the current BlueZ caches all
ortuno 2017/03/30 22:18:17 We discussed a solution with puthik a while ago. L
xiaoyinh(OOO Sep 11-29) 2017/03/31 16:26:53 Changed it to merge data like what BlueZ does.
xiaoyinh(OOO Sep 11-29) 2017/03/31 16:26:53 Done.
1566 }
1567
1554 void FakeBluetoothDeviceClient::UpdateConnectionInfo( 1568 void FakeBluetoothDeviceClient::UpdateConnectionInfo(
1555 uint16_t connection_rssi, 1569 uint16_t connection_rssi,
1556 uint16_t transmit_power, 1570 uint16_t transmit_power,
1557 uint16_t max_transmit_power) { 1571 uint16_t max_transmit_power) {
1558 connection_rssi_ = connection_rssi; 1572 connection_rssi_ = connection_rssi;
1559 transmit_power_ = transmit_power; 1573 transmit_power_ = transmit_power;
1560 max_transmit_power_ = max_transmit_power; 1574 max_transmit_power_ = max_transmit_power;
1561 } 1575 }
1562 1576
1563 void FakeBluetoothDeviceClient::PinCodeCallback( 1577 void FakeBluetoothDeviceClient::PinCodeCallback(
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1768 void FakeBluetoothDeviceClient::RemoveAllDevices() { 1782 void FakeBluetoothDeviceClient::RemoveAllDevices() {
1769 device_list_.clear(); 1783 device_list_.clear();
1770 } 1784 }
1771 1785
1772 void FakeBluetoothDeviceClient::CreateTestDevice( 1786 void FakeBluetoothDeviceClient::CreateTestDevice(
1773 const dbus::ObjectPath& adapter_path, 1787 const dbus::ObjectPath& adapter_path,
1774 const base::Optional<std::string> name, 1788 const base::Optional<std::string> name,
1775 const std::string alias, 1789 const std::string alias,
1776 const std::string device_address, 1790 const std::string device_address,
1777 const std::vector<std::string>& service_uuids, 1791 const std::vector<std::string>& service_uuids,
1778 device::BluetoothTransport type) { 1792 device::BluetoothTransport type,
1793 const std::unordered_map<std::string, std::vector<uint8_t>>& service_data) {
1779 // Create a random device path. 1794 // Create a random device path.
1780 dbus::ObjectPath device_path; 1795 dbus::ObjectPath device_path;
1781 std::string id; 1796 std::string id;
1782 do { 1797 do {
1783 // Construct an id that is valid according to the DBUS specification. 1798 // Construct an id that is valid according to the DBUS specification.
1784 base::Base64Encode(base::RandBytesAsString(10), &id); 1799 base::Base64Encode(base::RandBytesAsString(10), &id);
1785 base::RemoveChars(id, "+/=", &id); 1800 base::RemoveChars(id, "+/=", &id);
1786 device_path = dbus::ObjectPath(adapter_path.value() + "/dev" + id); 1801 device_path = dbus::ObjectPath(adapter_path.value() + "/dev" + id);
1787 } while (std::find(device_list_.begin(), device_list_.end(), device_path) != 1802 } while (std::find(device_list_.begin(), device_list_.end(), device_path) !=
1788 device_list_.end()); 1803 device_list_.end());
(...skipping 22 matching lines...) Expand all
1811 properties->type.ReplaceValue(BluetoothDeviceClient::kTypeLe); 1826 properties->type.ReplaceValue(BluetoothDeviceClient::kTypeLe);
1812 break; 1827 break;
1813 case device::BLUETOOTH_TRANSPORT_DUAL: 1828 case device::BLUETOOTH_TRANSPORT_DUAL:
1814 properties->type.ReplaceValue(BluetoothDeviceClient::kTypeDual); 1829 properties->type.ReplaceValue(BluetoothDeviceClient::kTypeDual);
1815 break; 1830 break;
1816 default: 1831 default:
1817 NOTREACHED(); 1832 NOTREACHED();
1818 } 1833 }
1819 properties->type.set_valid(true); 1834 properties->type.set_valid(true);
1820 1835
1836 if (!service_data.empty()) {
1837 properties->service_data.ReplaceValue(service_data);
1838 properties->service_data.set_valid(true);
1839 }
1840
1821 properties_map_.insert(std::make_pair(device_path, std::move(properties))); 1841 properties_map_.insert(std::make_pair(device_path, std::move(properties)));
1822 device_list_.push_back(device_path); 1842 device_list_.push_back(device_path);
1823 for (auto& observer : observers_) 1843 for (auto& observer : observers_)
1824 observer.DeviceAdded(device_path); 1844 observer.DeviceAdded(device_path);
1825 } 1845 }
1826 1846
1827 } // namespace bluez 1847 } // namespace bluez
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698