From e2714e1685adbec0821d56349e57b7ac01ed3a91 Mon Sep 17 00:00:00 2001 From: Francis Tsui Date: Thu, 15 Jan 2026 16:43:33 -0800 Subject: [PATCH] Deprecate UseStableEndpointId flag. PiperOrigin-RevId: 856873445 --- .../implementation/base_pcp_handler.cc | 25 +----- .../implementation/base_pcp_handler_test.cc | 3 - connections/implementation/client_proxy.cc | 90 ++++--------------- connections/implementation/client_proxy.h | 14 --- .../implementation/client_proxy_test.cc | 74 +-------------- .../flags/nearby_connections_feature_flags.h | 3 - 6 files changed, 23 insertions(+), 186 deletions(-) diff --git a/connections/implementation/base_pcp_handler.cc b/connections/implementation/base_pcp_handler.cc index 614c621e..3108f357 100644 --- a/connections/implementation/base_pcp_handler.cc +++ b/connections/implementation/base_pcp_handler.cc @@ -250,21 +250,8 @@ Status BasePcpHandler::StartAdvertising( if (compatible_advertising_options.force_new_endpoint_id) { client->ClearCachedLocalEndpointId(); } - if (NearbyFlags::GetInstance().GetBoolFlag( - connections::config_package_nearby::nearby_connections_feature:: - kUseStableEndpointId)) { - if (ShouldEnterStableEndpointIdMode(compatible_advertising_options)) { - client->EnterStableEndpointIdMode(); - } - } else { - // The endpoint id inside of the advertisement is different to high - // visibility and low visibility mode. In order to decide if client - // should grab the high visibility or low visibility id, it needs to - // tell client which one right now, before - // client#StartedAdvertising. - if (ShouldEnterHighVisibilityMode(compatible_advertising_options)) { - client->EnterHighVisibilityMode(); - } + if (ShouldEnterStableEndpointIdMode(compatible_advertising_options)) { + client->EnterStableEndpointIdMode(); } if (client->IsDctEnabled()) { @@ -283,13 +270,7 @@ Status BasePcpHandler::StartAdvertising( client, service_id, client->GetLocalEndpointId(), info.endpoint_info, compatible_advertising_options); if (!result.status.Ok()) { - if (NearbyFlags::GetInstance().GetBoolFlag( - connections::config_package_nearby:: - nearby_connections_feature::kUseStableEndpointId)) { - client->ExitStableEndpointIdMode(); - } else { - client->ExitHighVisibilityMode(); - } + client->ExitStableEndpointIdMode(); response.Set(result.status); return; } diff --git a/connections/implementation/base_pcp_handler_test.cc b/connections/implementation/base_pcp_handler_test.cc index 901f794e..7831442d 100644 --- a/connections/implementation/base_pcp_handler_test.cc +++ b/connections/implementation/base_pcp_handler_test.cc @@ -2770,9 +2770,6 @@ TEST_F(BasePcpHandlerTest, TestNeedsToTurnOffAdvertisingMedium) { TEST_F(BasePcpHandlerTest, TestUpdateAdvertisingOptionsWorks) { env_.Start(); - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_connections_feature::kUseStableEndpointId, - true); AdvertisingOptions old_options{ {}, true, // auto_upgrade_bandwidth diff --git a/connections/implementation/client_proxy.cc b/connections/implementation/client_proxy.cc index 876b47b3..7c303b83 100644 --- a/connections/implementation/client_proxy.cc +++ b/connections/implementation/client_proxy.cc @@ -95,11 +95,6 @@ constexpr absl::string_view kAdvertisingTimestamp = "nc.advertising.timestamp"; constexpr absl::Duration kAdvertisingKeepAliveDuration = absl::Seconds(30); -bool IsFeatureUseStableEndpointIdEnabled() { - return NearbyFlags::GetInstance().GetBoolFlag( - connections::config_package_nearby::nearby_connections_feature:: - kUseStableEndpointId); -} } // namespace ClientProxy::ClientProxy(::nearby::analytics::EventLogger* event_logger) @@ -214,26 +209,14 @@ void ClientProxy::SetBluetoothMacAddress(const std::string& endpoint_id, } std::string ClientProxy::GenerateLocalEndpointId() { - if (IsFeatureUseStableEndpointIdEnabled()) { - if (!cached_endpoint_id_.empty()) { - if (stable_endpoint_id_mode_) { - LOG(INFO) << "ClientProxy [Local Endpoint Re-using cached " - "endpoint id due to in stable endpoint id mode]: " - "client=" - << GetClientId() - << "; cached_endpoint_id_=" << cached_endpoint_id_; - return cached_endpoint_id_; - } - } - } else { - if (high_vis_mode_) { - if (!cached_endpoint_id_.empty()) { - LOG(INFO) << "ClientProxy [Local Endpoint Re-using cached " - "endpoint id]: client=" - << GetClientId() - << "; cached_endpoint_id_=" << cached_endpoint_id_; - return cached_endpoint_id_; - } + if (!cached_endpoint_id_.empty()) { + if (stable_endpoint_id_mode_) { + LOG(INFO) << "ClientProxy [Local Endpoint Re-using cached " + "endpoint id due to in stable endpoint id mode]: " + "client=" + << GetClientId() + << "; cached_endpoint_id_=" << cached_endpoint_id_; + return cached_endpoint_id_; } } std::string id; @@ -252,11 +235,7 @@ void ClientProxy::Reset() { StoppedAdvertising(); StoppedDiscovery(); RemoveAllEndpoints(); - if (IsFeatureUseStableEndpointIdEnabled()) { - ExitStableEndpointIdMode(); - } else { - ExitHighVisibilityMode(); - } + ExitStableEndpointIdMode(); } void ClientProxy::StartedAdvertising( @@ -269,24 +248,14 @@ void ClientProxy::StartedAdvertising( MutexLock lock(&mutex_); LOG(INFO) << "ClientProxy [StartedAdvertising]: client=" << GetClientId(); - if (IsFeatureUseStableEndpointIdEnabled()) { - if (stable_endpoint_id_mode_) { - cached_endpoint_id_ = local_endpoint_id_; - } else { - cached_endpoint_id_.clear(); - } - - CancelClearCachedEndpointIdAlarm(); + if (stable_endpoint_id_mode_) { + cached_endpoint_id_ = local_endpoint_id_; } else { - if (high_vis_mode_) { - cached_endpoint_id_ = local_endpoint_id_; - LOG(INFO) - << "ClientProxy [High Visibility Mode Adv, Cache EndpointId]: client=" - << GetClientId() << "; cached_endpoint_id_=" << cached_endpoint_id_; - CancelClearCachedEndpointIdAlarm(); - } + cached_endpoint_id_.clear(); } + CancelClearCachedEndpointIdAlarm(); + advertising_info_ = {service_id, listener}; advertising_options_ = advertising_options; @@ -313,11 +282,7 @@ void ClientProxy::StoppedAdvertising() { // advertising_options_ is purposefully not cleared here. OnSessionComplete(); - if (IsFeatureUseStableEndpointIdEnabled()) { - ExitStableEndpointIdMode(); - } else { - ExitHighVisibilityMode(); - } + ExitStableEndpointIdMode(); } bool ClientProxy::IsAdvertising() const { @@ -640,10 +605,8 @@ void ClientProxy::OnDisconnected(const std::string& endpoint_id, bool notify) { CancelEndpoint(endpoint_id); - if (IsFeatureUseStableEndpointIdEnabled()) { - if (!stable_endpoint_id_mode_ && !HasOngoingConnection()) { - ScheduleClearCachedEndpointIdAlarm(); - } + if (!stable_endpoint_id_mode_ && !HasOngoingConnection()) { + ScheduleClearCachedEndpointIdAlarm(); } } @@ -1158,22 +1121,6 @@ v3::ConnectionListeningOptions ClientProxy::GetListeningOptions() const { return listening_options_; } -void ClientProxy::EnterHighVisibilityMode() { - MutexLock lock(&mutex_); - LOG(INFO) << "ClientProxy [EnterHighVisibilityMode]: client=" - << GetClientId(); - - high_vis_mode_ = true; -} - -void ClientProxy::ExitHighVisibilityMode() { - MutexLock lock(&mutex_); - LOG(INFO) << "ClientProxy [ExitHighVisibilityMode]: client=" << GetClientId(); - - high_vis_mode_ = false; - ScheduleClearCachedEndpointIdAlarm(); -} - void ClientProxy::EnterStableEndpointIdMode() { MutexLock lock(&mutex_); VLOG(1) << "ClientProxy [EnterStableEndpointIdMode]: client=" @@ -1200,7 +1147,7 @@ void ClientProxy::ScheduleClearCachedEndpointIdAlarm() { return; } - if (IsFeatureUseStableEndpointIdEnabled() && HasOngoingConnection()) { + if (HasOngoingConnection()) { VLOG(1) << "ClientProxy [Handle clearing cached endpoint ID " "during disconnection]: client=" << GetClientId(); @@ -1468,7 +1415,6 @@ std::string ClientProxy::Dump() { sstream << " Client ID: " << GetClientId() << std::endl; sstream << " Local Endpoint ID: " << GetLocalEndpointId() << std::endl; sstream << std::boolalpha; - sstream << " High Visibility Mode: " << high_vis_mode_ << std::endl; sstream << " Is Advertising: " << IsAdvertising() << std::endl; sstream << " Is Discovering: " << IsDiscovering() << std::endl; sstream << std::noboolalpha; diff --git a/connections/implementation/client_proxy.h b/connections/implementation/client_proxy.h index 93c7e587..c567f574 100644 --- a/connections/implementation/client_proxy.h +++ b/connections/implementation/client_proxy.h @@ -266,15 +266,6 @@ class ClientProxy final { DiscoveryOptions GetDiscoveryOptions() const; v3::ConnectionListeningOptions GetListeningOptions() const; - // The endpoint id will be stable for 30 seconds after high visibility mode - // (high power and Bluetooth Classic) advertisement stops. - // If client re-enters high visibility mode within 30 seconds, he is going to - // have the same endpoint id. - void EnterHighVisibilityMode(); - // Cleans up any modifications in high visibility mode. The endpoint id always - // rotates. - void ExitHighVisibilityMode(); - // Enters stable endpoint ID mode. void EnterStableEndpointIdMode(); // Cleans up any modifications in stable endpoint ID mode. The endpoint id @@ -472,11 +463,6 @@ class ClientProxy final { std::int64_t client_id_; std::string local_endpoint_id_; std::string local_endpoint_info_; - // If currently is advertising in high visibility mode is true: high power and - // Bluetooth Classic enabled. When high_visibility_mode_ is true, the endpoint - // id is stable for 30s. When high_visibility_mode_ is false, the endpoint id - // always rotates. - bool high_vis_mode_ = false; // If advertising is in stable endpoint ID mode, the endpoint ID is stable // for 30s after advertising or disconnection. When stable_endpoint_id_mode_ diff --git a/connections/implementation/client_proxy_test.cc b/connections/implementation/client_proxy_test.cc index 05eac36b..a1ca21e5 100644 --- a/connections/implementation/client_proxy_test.cc +++ b/connections/implementation/client_proxy_test.cc @@ -176,12 +176,6 @@ class ClientProxyTest : public ::testing::TestWithParam { NearbyFlags::GetInstance().ResetOverridedValues(); } - bool ShouldEnterHighVisibilityMode( - const AdvertisingOptions& advertising_options) { - return !advertising_options.low_power && - advertising_options.allowed.bluetooth; - } - bool ShouldEnterStableEndpointIdMode( const AdvertisingOptions& advertising_options) { if (advertising_options.use_stable_endpoint_id) { @@ -196,16 +190,8 @@ class ClientProxyTest : public ::testing::TestWithParam { Endpoint StartAdvertising( ClientProxy* client, ConnectionListener listener, AdvertisingOptions advertising_options = AdvertisingOptions{}) { - if (NearbyFlags::GetInstance().GetBoolFlag( - connections::config_package_nearby::nearby_connections_feature:: - kUseStableEndpointId)) { - if (ShouldEnterStableEndpointIdMode(advertising_options)) { - client->EnterStableEndpointIdMode(); - } - } else { - if (ShouldEnterHighVisibilityMode(advertising_options)) { - client->EnterHighVisibilityMode(); - } + if (ShouldEnterStableEndpointIdMode(advertising_options)) { + client->EnterStableEndpointIdMode(); } Endpoint endpoint{ .info = ByteArray{"advertising endpoint name"}, @@ -369,13 +355,6 @@ class ClientProxyTest : public ::testing::TestWithParam { client->OnPayloadProgress(endpoint.id, {}); } - void EnableUseStableEndpointIdFeature() { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - connections::config_package_nearby::nearby_connections_feature:: - kUseStableEndpointId, - true); - } - ClientProxy* client1() { return client1_.get(); } ClientProxy* client2() { return client2_.get(); } @@ -575,7 +554,6 @@ TEST_F(ClientProxyTest, DumpString) { "Nearby Connections State\n" " Client ID: %d\n" " Local Endpoint ID: %s\n" - " High Visibility Mode: false\n" " Is Advertising: false\n" " Is Discovering: false\n" " Advertising Service ID: \n" @@ -826,7 +804,6 @@ TEST_F(ClientProxyTest, TEST_F(ClientProxyTest, RotateWhenLowVizAdvertisementAfterHighVizAndStableAdvertisement) { - EnableUseStableEndpointIdFeature(); BooleanMediumSelector booleanMediumSelector; booleanMediumSelector.bluetooth = true; @@ -867,7 +844,6 @@ TEST_F(ClientProxyTest, TEST_F( ClientProxyTest, NoRotateWhenLowVizStableAdvertisementAfterHighVizAndStableAdvertisement) { - EnableUseStableEndpointIdFeature(); BooleanMediumSelector booleanMediumSelector; booleanMediumSelector.bluetooth = true; @@ -911,7 +887,6 @@ TEST_F( TEST_F( ClientProxyTest, NoRotateWhenAdvertisementHasConnectionAfterStableAdvertisementForAWhile) { - EnableUseStableEndpointIdFeature(); BooleanMediumSelector booleanMediumSelector; booleanMediumSelector.bluetooth = true; @@ -958,7 +933,6 @@ TEST_F( } TEST_F(ClientProxyTest, RotateWhenLowVizAdvertisementAfterDisconnection) { - EnableUseStableEndpointIdFeature(); BooleanMediumSelector booleanMediumSelector; booleanMediumSelector.bluetooth = true; @@ -1001,7 +975,6 @@ TEST_F(ClientProxyTest, RotateWhenLowVizAdvertisementAfterDisconnection) { TEST_F(ClientProxyTest, NoRotateWhenLowVizAndStableAdvertisementAfterDisconnection) { - EnableUseStableEndpointIdFeature(); BooleanMediumSelector booleanMediumSelector; booleanMediumSelector.bluetooth = true; @@ -1046,7 +1019,6 @@ TEST_F(ClientProxyTest, } TEST_F(ClientProxyTest, RotateWhenAdvertisementAfterDisconnectionForAWhile) { - EnableUseStableEndpointIdFeature(); BooleanMediumSelector booleanMediumSelector; booleanMediumSelector.bluetooth = true; @@ -1147,36 +1119,6 @@ TEST_F(ClientProxyTest, EXPECT_NE(advertising_endpoint_1.id, advertising_endpoint_2.id); } -// Tests the low visibility mode with bluetooth disabled advertisment. -TEST_F(ClientProxyTest, - EndpointIdRotateWhenLowVizAdvertisementWithBluetoothDisabled) { - BooleanMediumSelector booleanMediumSelector; - booleanMediumSelector.bluetooth = false; - - AdvertisingOptions advertising_options{ - { - strategy_, - booleanMediumSelector, - }, - false, // auto_upgrade_bandwidth - false, // enforce_topology_constraints - false, // low_power - true, // enable_bluetooth_listening - false, // enable_webrtc_listening - true, // use_stable_endpoint_id - }; - - Endpoint advertising_endpoint_1 = StartAdvertising( - client1(), advertising_connection_listener_, advertising_options); - - StopAdvertising(client1()); - - Endpoint advertising_endpoint_2 = StartAdvertising( - client1(), advertising_connection_listener_, advertising_options); - - EXPECT_NE(advertising_endpoint_1.id, advertising_endpoint_2.id); -} - // Tests the low visibility mode with low power advertisment. TEST_F(ClientProxyTest, EndpointIdRotateWhenLowVizAdvertisementWithLowPower) { BooleanMediumSelector booleanMediumSelector; @@ -1623,9 +1565,6 @@ TEST_F(ClientProxyTest, TestRemoteMultiplexSocketBitmask) { } TEST_F(ClientProxyTest, SaveClientInfoFromPreferences) { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_connections_feature::kUseStableEndpointId, - true); NearbyFlags::GetInstance().OverrideBoolFlagValue( config_package_nearby::nearby_connections_feature:: kEnableNearbyConnectionsPreferences, @@ -1642,9 +1581,6 @@ TEST_F(ClientProxyTest, SaveClientInfoFromPreferences) { // The new client should load the same endpoint ID. EXPECT_EQ(client1()->GetLocalEndpointId(), endpoint_id); - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_connections_feature::kUseStableEndpointId, - false); NearbyFlags::GetInstance().OverrideBoolFlagValue( config_package_nearby::nearby_connections_feature:: kEnableNearbyConnectionsPreferences, @@ -1652,9 +1588,6 @@ TEST_F(ClientProxyTest, SaveClientInfoFromPreferences) { } TEST_F(ClientProxyTest, NotLoadClientInfoFromPreferencesOnExpired) { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_connections_feature::kUseStableEndpointId, - true); NearbyFlags::GetInstance().OverrideBoolFlagValue( config_package_nearby::nearby_connections_feature:: kEnableNearbyConnectionsPreferences, @@ -1673,9 +1606,6 @@ TEST_F(ClientProxyTest, NotLoadClientInfoFromPreferencesOnExpired) { // The new client should load the same endpoint ID. EXPECT_NE(client1()->GetLocalEndpointId(), endpoint_id); - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_connections_feature::kUseStableEndpointId, - false); NearbyFlags::GetInstance().OverrideBoolFlagValue( config_package_nearby::nearby_connections_feature:: kEnableNearbyConnectionsPreferences, diff --git a/connections/implementation/flags/nearby_connections_feature_flags.h b/connections/implementation/flags/nearby_connections_feature_flags.h index 1e9e07b9..f20d9172 100644 --- a/connections/implementation/flags/nearby_connections_feature_flags.h +++ b/connections/implementation/flags/nearby_connections_feature_flags.h @@ -123,9 +123,6 @@ constexpr auto kRefactorBleL2cap = // 4. auto-resume 5. non-distance-constraint-recovery 6. payload_ack constexpr auto kSafeToDisconnectVersion = flags::Flag(kConfigPackage, "45425841", 0); -// When true, use stable endpoint ID. -constexpr auto kUseStableEndpointId = - flags::Flag(kConfigPackage, "45639298", false); } // namespace nearby_connections_feature } // namespace config_package_nearby