From fa54c26fcd3bf298fd20eff3ee5b76ace6d51225 Mon Sep 17 00:00:00 2001 From: Anay Wadhera Date: Wed, 26 Apr 2023 07:15:13 -0700 Subject: [PATCH] Plumb CredentialManager::SetLocalDeviceMetadata through to PresenceService PiperOrigin-RevId: 527257552 --- presence/implementation/service_controller.h | 8 ++++++++ .../implementation/service_controller_impl.cc | 13 +++++++++++++ .../implementation/service_controller_impl.h | 9 +++++++++ presence/presence_service.h | 18 ++++++++++++++++++ presence/presence_service_test.cc | 19 +++++++++++++++++++ 5 files changed, 67 insertions(+) diff --git a/presence/implementation/service_controller.h b/presence/implementation/service_controller.h index 34185cdc..ead85a23 100644 --- a/presence/implementation/service_controller.h +++ b/presence/implementation/service_controller.h @@ -16,6 +16,7 @@ #define THIRD_PARTY_NEARBY_PRESENCE_IMPLEMENTATION_SERVICE_CONTROLLER_H_ #include +#include #include "absl/status/statusor.h" #include "presence/broadcast_request.h" @@ -40,6 +41,13 @@ class ServiceController { virtual absl::StatusOr StartBroadcast( BroadcastRequest broadcast_request, BroadcastCallback callback) = 0; virtual void StopBroadcast(BroadcastSessionId session_id) = 0; + virtual void UpdateLocalDeviceMetadata( + const ::nearby::internal::Metadata& metadata, bool regen_credentials, + absl::string_view manager_app_id, + const std::vector& identity_types, + int credential_life_cycle_days, int contiguous_copy_of_credentials, + GenerateCredentialsResultCallback credentials_generated_cb) = 0; + virtual ::nearby::internal::Metadata GetLocalDeviceMetadata() = 0; }; } // namespace presence diff --git a/presence/implementation/service_controller_impl.cc b/presence/implementation/service_controller_impl.cc index c49e035f..efeed31d 100644 --- a/presence/implementation/service_controller_impl.cc +++ b/presence/implementation/service_controller_impl.cc @@ -15,6 +15,7 @@ #include "presence/implementation/service_controller_impl.h" #include +#include #include "absl/status/statusor.h" #include "presence/data_types.h" @@ -40,5 +41,17 @@ void ServiceControllerImpl::StopBroadcast(BroadcastSessionId id) { broadcast_manager_.StopBroadcast(id); } +void ServiceControllerImpl::UpdateLocalDeviceMetadata( + const ::nearby::internal::Metadata& metadata, bool regen_credentials, + absl::string_view manager_app_id, + const std::vector& identity_types, + int credential_life_cycle_days, int contiguous_copy_of_credentials, + GenerateCredentialsResultCallback credentials_generated_cb) { + credential_manager_.SetLocalDeviceMetadata( + metadata, regen_credentials, manager_app_id, identity_types, + credential_life_cycle_days, contiguous_copy_of_credentials, + std::move(credentials_generated_cb)); +} + } // namespace presence } // namespace nearby diff --git a/presence/implementation/service_controller_impl.h b/presence/implementation/service_controller_impl.h index e36ff749..48ea2624 100644 --- a/presence/implementation/service_controller_impl.h +++ b/presence/implementation/service_controller_impl.h @@ -46,6 +46,15 @@ class ServiceControllerImpl : public ServiceController { absl::StatusOr StartBroadcast( BroadcastRequest broadcast_request, BroadcastCallback callback) override; void StopBroadcast(BroadcastSessionId) override; + void UpdateLocalDeviceMetadata( + const ::nearby::internal::Metadata& metadata, bool regen_credentials, + absl::string_view manager_app_id, + const std::vector& identity_types, + int credential_life_cycle_days, int contiguous_copy_of_credentials, + GenerateCredentialsResultCallback credentials_generated_cb) override; + ::nearby::internal::Metadata GetLocalDeviceMetadata() override { + return credential_manager_.GetLocalDeviceMetadata(); + } SingleThreadExecutor& GetBackgroundExecutor() { return executor_; } diff --git a/presence/presence_service.h b/presence/presence_service.h index 972e6487..651776e8 100644 --- a/presence/presence_service.h +++ b/presence/presence_service.h @@ -16,6 +16,8 @@ #define THIRD_PARTY_NEARBY_PRESENCE_PRESENCE_SERVICE_H_ #include +#include +#include #include "internal/platform/borrowable.h" #include "presence/data_types.h" @@ -46,6 +48,22 @@ class PresenceService { void StopBroadcast(BroadcastSessionId session_id); + void UpdateLocalDeviceMetadata( + const ::nearby::internal::Metadata& metadata, bool regen_credentials, + absl::string_view manager_app_id, + const std::vector& identity_types, + int credential_life_cycle_days, int contiguous_copy_of_credentials, + GenerateCredentialsResultCallback credentials_generated_cb) { + service_controller_->UpdateLocalDeviceMetadata( + metadata, regen_credentials, manager_app_id, identity_types, + credential_life_cycle_days, contiguous_copy_of_credentials, + std::move(credentials_generated_cb)); + } + + ::nearby::internal::Metadata GetLocalDeviceMetadata() { + return service_controller_->GetLocalDeviceMetadata(); + } + private: std::unique_ptr service_controller_; ::nearby::Lender lender_{this}; diff --git a/presence/presence_service_test.cc b/presence/presence_service_test.cc index 190301b8..b80035ca 100644 --- a/presence/presence_service_test.cc +++ b/presence/presence_service_test.cc @@ -24,11 +24,22 @@ namespace nearby { namespace presence { namespace { +using Metadata = ::nearby::internal::Metadata; + class PresenceServiceTest : public testing::Test { protected: nearby::MediumEnvironment& env_{nearby::MediumEnvironment::Instance()}; }; +Metadata CreateTestMetadata(absl::string_view account_name) { + Metadata metadata; + metadata.set_account_name(account_name); + metadata.set_device_name("NP test device"); + metadata.set_device_profile_url("test_image.test.com"); + metadata.set_bluetooth_mac_address("\xFF\xFF\xFF\xFF\xFF\xFF"); + return metadata; +} + TEST_F(PresenceServiceTest, DefaultConstructorWorks) { PresenceService presence_service; } @@ -59,6 +70,14 @@ TEST_F(PresenceServiceTest, StartThenStopScan) { env_.Stop(); } +TEST_F(PresenceServiceTest, UpdatingLocalMetadataWorks) { + PresenceService presence_service; + presence_service.UpdateLocalDeviceMetadata(CreateTestMetadata("Test account"), + false, "Test app", {}, 3, 1, {}); + EXPECT_EQ(presence_service.GetLocalDeviceMetadata().SerializeAsString(), + CreateTestMetadata("Test account").SerializeAsString()); +} + } // namespace } // namespace presence } // namespace nearby