From 57773f9b805f3ab3ccedecd9eaa57e924438ddc1 Mon Sep 17 00:00:00 2001 From: Francis Tsui Date: Thu, 20 Mar 2025 09:42:32 -0700 Subject: [PATCH] Fix DeviceID not changed after logout. PiperOrigin-RevId: 738836722 --- ...by_share_local_device_data_manager_impl.cc | 7 ++-- ...rby_share_local_device_data_manager_impl.h | 1 - ...are_local_device_data_manager_impl_test.cc | 39 ++++++++++++++++++- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/sharing/local_device_data/nearby_share_local_device_data_manager_impl.cc b/sharing/local_device_data/nearby_share_local_device_data_manager_impl.cc index 0814a6df..35f34131 100644 --- a/sharing/local_device_data/nearby_share_local_device_data_manager_impl.cc +++ b/sharing/local_device_data/nearby_share_local_device_data_manager_impl.cc @@ -136,7 +136,6 @@ NearbyShareLocalDeviceDataManagerImpl::NearbyShareLocalDeviceDataManagerImpl( device_info_(device_info), nearby_share_client_(rpc_client_factory->CreateInstance()), nearby_identity_client_(rpc_client_factory->CreateIdentityInstance()), - device_id_(GetId()), executor_(context->CreateSequencedTaskRunner()) {} NearbyShareLocalDeviceDataManagerImpl:: @@ -216,7 +215,7 @@ void NearbyShareLocalDeviceDataManagerImpl::UploadContacts( UpdateDeviceRequest request; request.mutable_device()->set_name( - absl::StrCat(kDeviceIdPrefix, device_id_)); + absl::StrCat(kDeviceIdPrefix, GetId())); request.mutable_device()->mutable_contacts()->Add(contacts.begin(), contacts.end()); request.mutable_update_mask()->add_paths( @@ -254,7 +253,7 @@ void NearbyShareLocalDeviceDataManagerImpl::PublishDevice( << certificates.size() << " certificates."; PublishDeviceRequest request; - request.mutable_device()->set_name(absl::StrCat("devices/", device_id_)); + request.mutable_device()->set_name(absl::StrCat("devices/", GetId())); LOG(INFO) << __func__ << ": [Call Identity API] PublishDeviceRequest with Device.name: " << request.device().name(); @@ -367,7 +366,7 @@ void NearbyShareLocalDeviceDataManagerImpl::UploadCertificates( } UpdateDeviceRequest request; request.mutable_device()->set_name( - absl::StrCat(kDeviceIdPrefix, device_id_)); + absl::StrCat(kDeviceIdPrefix, GetId())); request.mutable_device()->mutable_public_certificates()->Add( certificates.begin(), certificates.end()); request.mutable_update_mask()->add_paths( diff --git a/sharing/local_device_data/nearby_share_local_device_data_manager_impl.h b/sharing/local_device_data/nearby_share_local_device_data_manager_impl.h index c6962acb..c6e0d2b6 100644 --- a/sharing/local_device_data/nearby_share_local_device_data_manager_impl.h +++ b/sharing/local_device_data/nearby_share_local_device_data_manager_impl.h @@ -104,7 +104,6 @@ class NearbyShareLocalDeviceDataManagerImpl std::unique_ptr nearby_share_client_; std::unique_ptr nearby_identity_client_; - const std::string device_id_; std::unique_ptr executor_; }; diff --git a/sharing/local_device_data/nearby_share_local_device_data_manager_impl_test.cc b/sharing/local_device_data/nearby_share_local_device_data_manager_impl_test.cc index 4463e7a8..58322b7a 100644 --- a/sharing/local_device_data/nearby_share_local_device_data_manager_impl_test.cc +++ b/sharing/local_device_data/nearby_share_local_device_data_manager_impl_test.cc @@ -29,7 +29,6 @@ #include "absl/strings/str_cat.h" #include "absl/strings/substitute.h" #include "absl/time/time.h" -#include "absl/types/optional.h" #include "internal/platform/implementation/account_manager.h" #include "internal/test/fake_account_manager.h" #include "internal/test/fake_device_info.h" @@ -246,7 +245,7 @@ class NearbyShareLocalDeviceDataManagerImplTest absl::Milliseconds(1000))); } - private: + protected: nearby::FakePreferenceManager preference_manager_; nearby::FakeAccountManager fake_account_manager_; nearby::FakeDeviceInfo fake_device_info_; @@ -560,6 +559,42 @@ TEST_F(NearbyShareLocalDeviceDataManagerImplTest, PublishDevice_Failure) { EXPECT_FALSE(returned_make_another_call); } +TEST_F(NearbyShareLocalDeviceDataManagerImplTest, + PublishDevice_DeviceIdChangedAfterReset) { + CreateManager(); + bool returned_success; + PublishDeviceResponse response; + + identity_client()->SetPublishDeviceResponse( + absl::StatusOr(response)); + manager()->PublishDevice(GetTestCertificates(), /*is_second_call=*/true, + [&returned_success]( + bool success, bool make_another_call) { + returned_success = success; + }); + + Sync(); + EXPECT_TRUE(returned_success); + ASSERT_EQ(identity_client()->publish_device_requests().size(), 1); + std::string device_id = + identity_client()->publish_device_requests().back().device().name(); + // Reset device ID. + preference_manager_.SetString(prefs::kNearbySharingDeviceIdName, + std::string()); + manager()->PublishDevice( + GetTestCertificates(), /*is_second_call=*/true, + [&returned_success](bool success, bool make_another_call) { + returned_success = success; + }); + Sync(); + EXPECT_TRUE(returned_success); + ASSERT_EQ(identity_client()->publish_device_requests().size(), 2); + std::string new_device_id = + identity_client()->publish_device_requests().back().device().name(); + + EXPECT_NE(device_id, new_device_id); +} + } // namespace } // namespace sharing } // namespace nearby