From 95f070796f57308bc93d483efe7c289016776ecc Mon Sep 17 00:00:00 2001 From: Anay Wadhera Date: Tue, 27 Jun 2023 12:47:52 -0700 Subject: [PATCH] Add identity type field to PresenceDevice PiperOrigin-RevId: 543824854 --- presence/implementation/scan_manager.cc | 4 +--- presence/presence_device.cc | 12 ++++++++++++ presence/presence_device.h | 11 ++++++++--- presence/presence_device_test.cc | 26 +++++++++++++++++-------- 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/presence/implementation/scan_manager.cc b/presence/implementation/scan_manager.cc index 6f35e49b..19d2a119 100644 --- a/presence/implementation/scan_manager.cc +++ b/presence/implementation/scan_manager.cc @@ -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) { diff --git a/presence/presence_device.cc b/presence/presence_device.cc index b53b135b..da14c17e 100644 --- a/presence/presence_device.cc +++ b/presence/presence_device.cc @@ -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 PresenceDevice::GetConnectionInfos() const { std::vector transformed_actions; diff --git a/presence/presence_device.h b/presence/presence_device.h index 3d56b5db..19cde45f 100644 --- a/presence/presence_device.h +++ b/presence/presence_device.h @@ -15,13 +15,12 @@ #ifndef THIRD_PARTY_NEARBY_PRESENCE_PRESENCE_DEVICE_H_ #define THIRD_PARTY_NEARBY_PRESENCE_PRESENCE_DEVICE_H_ -#include #include #include #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 extended_properties_; std::vector 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) { diff --git a/presence/presence_device_test.cc b/presence/presence_device_test.cc index a9323bfb..e8a422bb 100644 --- a/presence/presence_device_test.cc +++ b/presence/presence_device_test.cc @@ -14,13 +14,12 @@ #include "presence/presence_device.h" -#include - #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{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