Reset to disconnect from individual endpoints

PiperOrigin-RevId: 808300954
This commit is contained in:
Guogang Li
2025-09-17 15:40:08 -07:00
committed by Copybara-Service
parent 3f4e2a6ca0
commit 43ab7841ad
2 changed files with 28 additions and 13 deletions
+12 -8
View File
@@ -823,8 +823,7 @@ void NearbyConnectionsManagerImpl::DeleteUnknownFilePayloadAndCancel(
}
void NearbyConnectionsManagerImpl::ProcessUnknownFilePathsToDelete(
PayloadStatus status, PayloadContent::Type type,
const FilePath& path) {
PayloadStatus status, PayloadContent::Type type, const FilePath& path) {
// Unknown payload comes as kInProgress and kCanceled status with kFile type
// from NearbyConnections. Delete it.
if ((status == PayloadStatus::kCanceled ||
@@ -925,12 +924,17 @@ void NearbyConnectionsManagerImpl::OnPayloadTransferUpdate(
void NearbyConnectionsManagerImpl::Reset() {
MutexLock lock(&mutex_);
nearby_connections_service_->StopAllEndpoints([](ConnectionsStatus status) {
VLOG(1) << __func__
<< ": Stop all endpoints attempted over Nearby "
"Connections with result: "
<< ConnectionsStatusToString(status);
});
for (auto& [endpoint_id, connection] : connections_) {
nearby_connections_service_->DisconnectFromEndpoint(
kServiceId, endpoint_id,
[endpoint_id = std::string(endpoint_id)](ConnectionsStatus status) {
VLOG(1) << __func__
<< ": Disconnect from endpoint attempted over Nearby "
"Connections with result: "
<< ConnectionsStatusToString(status);
});
}
discovered_endpoints_.clear();
payload_status_listeners_.clear();
@@ -204,9 +204,8 @@ class NearbyConnectionsManagerImplTest : public testing::Test {
notification.Notify();
};
nearby_connections_manager_->StartDiscovery(&discovery_listener, data_usage,
std::nullopt,
std::move(callback));
nearby_connections_manager_->StartDiscovery(
&discovery_listener, data_usage, std::nullopt, std::move(callback));
EXPECT_TRUE(
notification.WaitForNotificationWithTimeout(kSynchronizationTimeOut));
@@ -1740,9 +1739,21 @@ TEST_F(NearbyConnectionsManagerImplTest, ShutdownAdvertising) {
incoming_connection_listener;
StartAdvertising(connection_listener_remote, incoming_connection_listener);
NearbyConnectionsService::PayloadListener payload_listener_remote;
NearbyConnection* connection = OnIncomingConnection(
connection_listener_remote, incoming_connection_listener,
payload_listener_remote);
EXPECT_NE(connection, nullptr);
auto payload_listener =
std::make_shared<testing::NiceMock<MockPayloadStatusListener>>();
nearby_connections_manager_->RegisterPayloadStatusListener(
kPayloadId, payload_listener->GetWeakPtr());
absl::Notification notification;
EXPECT_CALL(*nearby_connections_, StopAllEndpoints)
.WillOnce([&](std::function<void(Status status)> callback) {
EXPECT_CALL(*nearby_connections_, DisconnectFromEndpoint)
.WillOnce([&](absl::string_view service_id, absl::string_view endpoint_id,
std::function<void(Status status)> callback) {
std::move(callback)(Status::kSuccess);
notification.Notify();
});