[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
This commit is contained in:
hai007
2024-01-24 14:32:00 -08:00
committed by Copybara-Service
parent 0905b2c3e0
commit 2fc575b593
3 changed files with 44 additions and 1 deletions
@@ -19,9 +19,9 @@
#include <string>
#include <utility>
#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.";
@@ -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;
@@ -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) {