Add identity type field to PresenceDevice

PiperOrigin-RevId: 543824854
This commit is contained in:
Anay Wadhera
2023-06-27 12:49:28 -07:00
committed by Copybara-Service
parent 259350e343
commit 95f070796f
4 changed files with 39 additions and 14 deletions
+1 -3
View File
@@ -112,11 +112,9 @@ void ScanManager::NotifyFoundBle(ScanSessionId id, BleAdvertisementData data,
return;
}
if (it->second.decoder.MatchesScanFilter(advert->data_elements)) {
// TODO(b/256913915): Provide more information in PresenceDevice once
// fully implemented
internal::Metadata metadata;
metadata.set_bluetooth_mac_address(std::string(remote_address));
PresenceDevice device{metadata};
PresenceDevice device(DeviceMotion(), metadata, advert->identity_type);
device.AddExtendedProperties(advert->data_elements);
for (const auto& data_element : advert->data_elements) {
if (data_element.GetType() == DataElement::kActionFieldType) {
+12
View File
@@ -19,8 +19,10 @@
#include "internal/interop/device.h"
#include "internal/platform/ble_connection_info.h"
#include "internal/platform/implementation/crypto.h"
#include "internal/platform/implementation/system_clock.h"
#include "internal/platform/prng.h"
#include "internal/proto/credential.pb.h"
#include "presence/device_motion.h"
namespace nearby {
@@ -56,6 +58,16 @@ PresenceDevice::PresenceDevice(DeviceMotion device_motion,
endpoint_id_ = GenerateRandomEndpointId();
}
PresenceDevice::PresenceDevice(
DeviceMotion device_motion, Metadata metadata,
nearby::internal::IdentityType identity_type) noexcept
: discovery_timestamp_(nearby::SystemClock::ElapsedRealtime()),
device_motion_(device_motion),
metadata_(metadata),
identity_type_(identity_type) {
endpoint_id_ = GenerateRandomEndpointId();
}
std::vector<nearby::ConnectionInfoVariant> PresenceDevice::GetConnectionInfos()
const {
std::vector<uint8_t> transformed_actions;
+8 -3
View File
@@ -15,13 +15,12 @@
#ifndef THIRD_PARTY_NEARBY_PRESENCE_PRESENCE_DEVICE_H_
#define THIRD_PARTY_NEARBY_PRESENCE_PRESENCE_DEVICE_H_
#include <memory>
#include <string>
#include <vector>
#include "absl/time/time.h"
#include "absl/types/variant.h"
#include "internal/interop/device.h"
#include "internal/proto/credential.pb.h"
#include "internal/proto/metadata.pb.h"
#include "presence/data_element.h"
#include "presence/device_motion.h"
@@ -39,6 +38,9 @@ class PresenceDevice : public nearby::NearbyDevice {
explicit PresenceDevice(Metadata metadata) noexcept;
explicit PresenceDevice(DeviceMotion device_motion,
Metadata metadata) noexcept;
explicit PresenceDevice(
DeviceMotion device_motion, Metadata metadata,
nearby::internal::IdentityType identity_type) noexcept;
std::string GetEndpointId() const override { return endpoint_id_; }
void AddExtendedProperty(const DataElement& data_element) {
extended_properties_.push_back(data_element);
@@ -62,6 +64,7 @@ class PresenceDevice : public nearby::NearbyDevice {
Metadata GetMetadata() const { return metadata_; }
void SetMetadata(const Metadata metadata) { metadata_ = metadata; }
absl::Time GetDiscoveryTimestamp() const { return discovery_timestamp_; }
internal::IdentityType GetIdentityType() const { return identity_type_; }
private:
const absl::Time discovery_timestamp_;
@@ -70,6 +73,7 @@ class PresenceDevice : public nearby::NearbyDevice {
std::vector<DataElement> extended_properties_;
std::vector<PresenceAction> actions_;
std::string endpoint_id_;
internal::IdentityType identity_type_ = internal::IDENTITY_TYPE_UNSPECIFIED;
};
// Timestamp is not used for equality since if the same device is discovered
@@ -80,7 +84,8 @@ inline bool operator==(const PresenceDevice& d1, const PresenceDevice& d2) {
d1.GetMetadata().SerializeAsString() ==
d2.GetMetadata().SerializeAsString() &&
d1.GetActions() == d2.GetActions() &&
d1.GetExtendedProperties() == d2.GetExtendedProperties();
d1.GetExtendedProperties() == d2.GetExtendedProperties() &&
d1.GetIdentityType() == d2.GetIdentityType();
}
inline bool operator!=(const PresenceDevice& d1, const PresenceDevice& d2) {
+18 -8
View File
@@ -14,13 +14,12 @@
#include "presence/presence_device.h"
#include <memory>
#include "gmock/gmock.h"
#include "protobuf-matchers/protocol-buffer-matchers.h"
#include "gtest/gtest.h"
#include "absl/types/variant.h"
#include "internal/platform/ble_connection_info.h"
#include "internal/proto/credential.pb.h"
#include "presence/data_element.h"
#include "presence/presence_action.h"
@@ -58,17 +57,21 @@ TEST(PresenceDeviceTest, DefaultMotionEquals) {
TEST(PresenceDeviceTest, ExplicitInitEquals) {
Metadata metadata = CreateTestMetadata();
PresenceDevice device1 =
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata);
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata,
internal::IDENTITY_TYPE_PUBLIC);
PresenceDevice device2 =
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata);
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata,
internal::IDENTITY_TYPE_PUBLIC);
EXPECT_EQ(device1, device2);
}
TEST(PresenceDeviceTest, ExplicitInitNotEquals) {
Metadata metadata = CreateTestMetadata();
PresenceDevice device1 = PresenceDevice({kDefaultMotionType}, metadata);
PresenceDevice device1 = PresenceDevice({kDefaultMotionType}, metadata,
internal::IDENTITY_TYPE_PUBLIC);
PresenceDevice device2 =
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata);
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata,
internal::IDENTITY_TYPE_PRIVATE);
EXPECT_NE(device1, device2);
}
@@ -84,7 +87,7 @@ TEST(PresenceDeviceTest, TestGetBleConnectionInfo) {
EXPECT_EQ(ble_info.GetActions(), std::vector<uint8_t>{kTestAction});
}
TEST(PresenceDevicetest, TestGetAddExtendedProperties) {
TEST(PresenceDeviceTest, TestGetAddExtendedProperties) {
Metadata metadata = CreateTestMetadata();
PresenceDevice device = PresenceDevice({kDefaultMotionType}, metadata);
device.AddExtendedProperty({kDataElementType, kDataElementValue});
@@ -93,7 +96,7 @@ TEST(PresenceDevicetest, TestGetAddExtendedProperties) {
DataElement(kDataElementType, kDataElementValue));
}
TEST(PresenceDevicetest, TestGetAddExtendedPropertiesVector) {
TEST(PresenceDeviceTest, TestGetAddExtendedPropertiesVector) {
Metadata metadata = CreateTestMetadata();
PresenceDevice device = PresenceDevice({kDefaultMotionType}, metadata);
device.AddExtendedProperties(
@@ -124,6 +127,13 @@ TEST(PresenceDeviceTest, TestEndpointIdIsRandom) {
EXPECT_NE(device.GetEndpointId(), std::string(kEndpointIdLength, 0));
}
TEST(PresenceDeviceTest, TestGetIdentityType) {
Metadata metadata = CreateTestMetadata();
PresenceDevice device =
PresenceDevice(DeviceMotion(), metadata, internal::IDENTITY_TYPE_PUBLIC);
EXPECT_EQ(device.GetIdentityType(), internal::IDENTITY_TYPE_PUBLIC);
}
} // namespace
} // namespace presence
} // namespace nearby