From 2fc575b5932efa538d936967b7d9ce23a3d2fe6c Mon Sep 17 00:00:00 2001 From: hai007 Date: Wed, 24 Jan 2024 14:30:31 -0800 Subject: [PATCH] [NC] Add ServiceControllerRouter constructor for EnableBleV2 Adds a new constructor for the ServiceControllerRouter which overrides the value of the EnableBleV2 flag in Nearby Connections. PiperOrigin-RevId: 601236068 --- .../service_controller_router.cc | 16 ++++++++++- .../service_controller_router.h | 1 + .../service_controller_router_test.cc | 28 +++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/connections/implementation/service_controller_router.cc b/connections/implementation/service_controller_router.cc index 15605478..a9883f81 100644 --- a/connections/implementation/service_controller_router.cc +++ b/connections/implementation/service_controller_router.cc @@ -19,9 +19,9 @@ #include #include -#include "absl/memory/memory.h" #include "connections/discovery_options.h" #include "connections/implementation/client_proxy.h" +#include "connections/implementation/flags/nearby_connections_feature_flags.h" #include "connections/implementation/offline_service_controller.h" #include "connections/listeners.h" #include "connections/params.h" @@ -30,6 +30,7 @@ #include "connections/v3/connection_result.h" #include "connections/v3/connections_device.h" #include "connections/v3/listening_result.h" +#include "internal/flags/nearby_flags.h" #include "internal/platform/logging.h" // TODO(b/285657711): Add tests for uncovered logic, even if trivial. @@ -86,6 +87,19 @@ ServiceControllerRouter::ServiceControllerRouter() { NEARBY_LOGS(INFO) << "ServiceControllerRouter going up."; } +// Constructor called by the CrOS platform implementation to override the +// kEnableBleV2 flag. +ServiceControllerRouter::ServiceControllerRouter(bool enable_ble_v2) + : ServiceControllerRouter() { + if (NearbyFlags::GetInstance().GetBoolFlag( + config_package_nearby::nearby_connections_feature::kEnableBleV2) != + enable_ble_v2) { + NearbyFlags::GetInstance().OverrideBoolFlagValue( + config_package_nearby::nearby_connections_feature::kEnableBleV2, + enable_ble_v2); + } +} + ServiceControllerRouter::~ServiceControllerRouter() { NEARBY_LOGS(INFO) << "ServiceControllerRouter going down."; diff --git a/connections/implementation/service_controller_router.h b/connections/implementation/service_controller_router.h index 759aea75..31f7a9c3 100644 --- a/connections/implementation/service_controller_router.h +++ b/connections/implementation/service_controller_router.h @@ -58,6 +58,7 @@ namespace connections { class ServiceControllerRouter { public: ServiceControllerRouter(); + explicit ServiceControllerRouter(bool enable_ble_v2); virtual ~ServiceControllerRouter(); // Not copyable or movable ServiceControllerRouter(const ServiceControllerRouter&) = delete; diff --git a/connections/implementation/service_controller_router_test.cc b/connections/implementation/service_controller_router_test.cc index 9fdd2b8f..1088e248 100644 --- a/connections/implementation/service_controller_router_test.cc +++ b/connections/implementation/service_controller_router_test.cc @@ -26,6 +26,7 @@ #include "gtest/gtest.h" #include "absl/types/span.h" #include "connections/implementation/client_proxy.h" +#include "connections/implementation/flags/nearby_connections_feature_flags.h" #include "connections/implementation/mock_service_controller.h" #include "connections/listeners.h" #include "connections/params.h" @@ -35,6 +36,7 @@ #include "connections/v3/connections_device.h" #include "connections/v3/listening_result.h" #include "connections/v3/params.h" +#include "internal/flags/nearby_flags.h" #include "internal/platform/byte_array.h" #include "internal/platform/condition_variable.h" #include "internal/platform/count_down_latch.h" @@ -530,6 +532,32 @@ TEST_F(ServiceControllerRouterTest, QualityConversionWorks) { EXPECT_EQ(router_.GetMediumQuality(Medium::WIFI_AWARE), v3::Quality::kHigh); } +TEST_F(ServiceControllerRouterTest, EnableBleV2InConstructor) { + // This constructor is used to allow the platform to set the value + // of kEnableBleV2 to |enable_ble_v2|. + NearbyFlags::GetInstance().OverrideBoolFlagValue( + config_package_nearby::nearby_connections_feature::kEnableBleV2, false); + EXPECT_FALSE(NearbyFlags::GetInstance().GetBoolFlag( + config_package_nearby::nearby_connections_feature::kEnableBleV2)); + ServiceControllerRouter ble_v2_enabled_router = + ServiceControllerRouter(/*enable_ble_v2=*/true); + EXPECT_TRUE(NearbyFlags::GetInstance().GetBoolFlag( + config_package_nearby::nearby_connections_feature::kEnableBleV2)); +} + +TEST_F(ServiceControllerRouterTest, DisableBleV2InConstructor) { + // This constructor is used to allow the platform to set the value + // of kEnableBleV2 to |enable_ble_v2|. + NearbyFlags::GetInstance().OverrideBoolFlagValue( + config_package_nearby::nearby_connections_feature::kEnableBleV2, true); + EXPECT_TRUE(NearbyFlags::GetInstance().GetBoolFlag( + config_package_nearby::nearby_connections_feature::kEnableBleV2)); + ServiceControllerRouter ble_v2_disabled_router = + ServiceControllerRouter(/*enable_ble_v2=*/false); + EXPECT_FALSE(NearbyFlags::GetInstance().GetBoolFlag( + config_package_nearby::nearby_connections_feature::kEnableBleV2)); +} + TEST_F(ServiceControllerRouterTest, StartAdvertisingCalled) { StartAdvertising(&client_, kServiceId, kAdvertisingOptions, kConnectionRequestInfo, [this](Status status) {