From 77ce859862ebc2e2169acd6eda1da8c09b529eca Mon Sep 17 00:00:00 2001 From: Francis Tsui Date: Tue, 2 Sep 2025 10:55:12 -0700 Subject: [PATCH] Switch ConnectionOptions to use MacAddress class. PiperOrigin-RevId: 802210252 --- connections/BUILD | 1 + connections/c/nc.cc | 21 +++--------- connections/connection_options.h | 3 +- .../implementation/base_pcp_handler.cc | 34 +++++++------------ .../implementation/base_pcp_handler_test.cc | 15 ++++---- connections/swift/NearbyCoreAdapter/BUILD | 2 ++ .../GNCConnectionOptions+CppConversions.mm | 12 +++++-- sharing/BUILD | 1 + sharing/nearby_connections_service_impl.cc | 9 +++-- 9 files changed, 46 insertions(+), 52 deletions(-) diff --git a/connections/BUILD b/connections/BUILD index adf51dd1..0e9db7ce 100644 --- a/connections/BUILD +++ b/connections/BUILD @@ -93,6 +93,7 @@ cc_library( "//connections/implementation/proto:offline_wire_formats_cc_proto", "//internal/interop:authentication_status", "//internal/platform:base", + "//internal/platform:mac_address", "//internal/platform:types", "//internal/platform:util", "//proto:connections_enums_cc_proto", diff --git a/connections/c/nc.cc b/connections/c/nc.cc index c3dad08e..a26e4905 100644 --- a/connections/c/nc.cc +++ b/connections/c/nc.cc @@ -45,7 +45,6 @@ #include "internal/flags/flag.h" #include "internal/flags/flag_reader.h" #include "internal/flags/nearby_flags.h" -#include "internal/platform/bluetooth_utils.h" #include "internal/platform/byte_array.h" #include "internal/platform/file.h" #include "internal/platform/logging.h" @@ -554,21 +553,11 @@ void NcRequestConnection( cpp_connection_options.low_power = connection_options->low_power; if (connection_options->remote_bluetooth_mac_address.size > 0) { nearby::MacAddress mac_address; - if (!nearby::MacAddress::FromString( - std::string(connection_options->remote_bluetooth_mac_address.data, - connection_options->remote_bluetooth_mac_address.size), - mac_address) || - !mac_address.IsSet()) { - cpp_connection_options.remote_bluetooth_mac_address = nearby::ByteArray(); - } else { - nearby::ByteArray address_bytes( - nearby::BluetoothUtils::kBluetoothMacAddressLength); - mac_address.ToBytes( - absl::MakeSpan(reinterpret_cast(address_bytes.data()), - address_bytes.size())); - cpp_connection_options.remote_bluetooth_mac_address = - std::move(address_bytes); - } + nearby::MacAddress::FromString( + std::string(connection_options->remote_bluetooth_mac_address.data, + connection_options->remote_bluetooth_mac_address.size), + mac_address); + cpp_connection_options.remote_bluetooth_mac_address = mac_address; } if (connection_options->common_options.strategy.type == NC_STRATEGY_TYPE_NONE) cpp_connection_options.strategy = ::nearby::connections::Strategy::kNone; diff --git a/connections/connection_options.h b/connections/connection_options.h index 8649325f..7132aed4 100644 --- a/connections/connection_options.h +++ b/connections/connection_options.h @@ -19,6 +19,7 @@ #include "connections/implementation/proto/offline_wire_formats.pb.h" #include "connections/options_base.h" #include "internal/platform/byte_array.h" +#include "internal/platform/mac_address.h" #include "proto/connections_enums.pb.h" namespace nearby { @@ -49,7 +50,7 @@ struct ConnectionOptions : public OptionsBase { // Whether this is intended to be used in conjunction with InjectEndpoint(). bool is_out_of_band_connection = false; - ByteArray remote_bluetooth_mac_address; + MacAddress remote_bluetooth_mac_address; std::string fast_advertisement_service_uuid; int keep_alive_interval_millis = 0; int keep_alive_timeout_millis = 0; diff --git a/connections/implementation/base_pcp_handler.cc b/connections/implementation/base_pcp_handler.cc index 34d5da22..14ed1963 100644 --- a/connections/implementation/base_pcp_handler.cc +++ b/connections/implementation/base_pcp_handler.cc @@ -859,19 +859,14 @@ Status BasePcpHandler::RequestConnection( return; } - MacAddress remote_bluetooth_mac_address; - MacAddress::FromBytes( - absl::MakeSpan( - reinterpret_cast( - connection_options.remote_bluetooth_mac_address.data()), - connection_options.remote_bluetooth_mac_address.size()), - remote_bluetooth_mac_address); - if (remote_bluetooth_mac_address.IsSet()) { + if (connection_options.remote_bluetooth_mac_address.IsSet()) { if (AppendRemoteBluetoothMacAddressEndpoint( - endpoint_id, remote_bluetooth_mac_address, + endpoint_id, connection_options.remote_bluetooth_mac_address, client->GetDiscoveryOptions())) - LOG(INFO) << "Appended remote Bluetooth MAC Address endpoint [" - << remote_bluetooth_mac_address.ToString() << "]"; + LOG(INFO) + << "Appended remote Bluetooth MAC Address endpoint [" + << connection_options.remote_bluetooth_mac_address.ToString() + << "]"; } if (AppendWebRTCEndpoint(endpoint_id, client->GetDiscoveryOptions())) @@ -1004,19 +999,14 @@ Status BasePcpHandler::RequestConnectionV3( return; } - MacAddress remote_bluetooth_mac_address; - MacAddress::FromBytes( - absl::MakeSpan( - reinterpret_cast( - connection_options.remote_bluetooth_mac_address.data()), - connection_options.remote_bluetooth_mac_address.size()), - remote_bluetooth_mac_address); - if (remote_bluetooth_mac_address.IsSet()) { + if (connection_options.remote_bluetooth_mac_address.IsSet()) { if (AppendRemoteBluetoothMacAddressEndpoint( - endpoint_id, remote_bluetooth_mac_address, + endpoint_id, connection_options.remote_bluetooth_mac_address, client->GetDiscoveryOptions())) - LOG(INFO) << "Appended remote Bluetooth MAC Address endpoint [" - << remote_bluetooth_mac_address.ToString() << "]"; + LOG(INFO) + << "Appended remote Bluetooth MAC Address endpoint [" + << connection_options.remote_bluetooth_mac_address.ToString() + << "]"; } if (AppendWebRTCEndpoint(endpoint_id, client->GetDiscoveryOptions())) diff --git a/connections/implementation/base_pcp_handler_test.cc b/connections/implementation/base_pcp_handler_test.cc index cdb7df34..fdef7e23 100644 --- a/connections/implementation/base_pcp_handler_test.cc +++ b/connections/implementation/base_pcp_handler_test.cc @@ -63,6 +63,7 @@ #include "internal/platform/future.h" #include "internal/platform/input_stream.h" #include "internal/platform/logging.h" +#include "internal/platform/mac_address.h" #include "internal/platform/medium_environment.h" #include "internal/platform/output_stream.h" #include "internal/platform/pipe.h" @@ -433,6 +434,7 @@ class BasePcpHandlerTest NearbyFlags::GetInstance().OverrideBoolFlagValue( config_package_nearby::nearby_connections_feature::kEnableInstantOnLost, false); + MacAddress::FromString("12:34:56:78:9a:bc", remote_mac_address_); } void StartAdvertising(ClientProxy* client, MockPcpHandler* pcp_handler, @@ -626,8 +628,7 @@ class BasePcpHandlerTest .listener = connection_listener_, }; ConnectionOptions connection_options{ - .remote_bluetooth_mac_address = - ByteArray{std::string("\x12\x34\x56\x78\x9a\xbc")}, + .remote_bluetooth_mac_address = remote_mac_address_, .keep_alive_interval_millis = FeatureFlags::GetInstance().GetFlags().keep_alive_interval_millis, .keep_alive_timeout_millis = @@ -700,7 +701,7 @@ class BasePcpHandlerTest .listener = connection_listener_, }; ConnectionOptions connection_options{ - .remote_bluetooth_mac_address = ByteArray{"\x12\x34\x56\x78\x9a\xbc"}, + .remote_bluetooth_mac_address = remote_mac_address_, .keep_alive_interval_millis = FeatureFlags::GetInstance().GetFlags().keep_alive_interval_millis, .keep_alive_timeout_millis = @@ -775,8 +776,7 @@ class BasePcpHandlerTest .listener = connection_listener_, }; ConnectionOptions connection_options{ - .remote_bluetooth_mac_address = - ByteArray{std::string("\x12\x34\x56\x78\x9a\xbc")}, + .remote_bluetooth_mac_address = remote_mac_address_, .keep_alive_interval_millis = FeatureFlags::GetInstance().GetFlags().keep_alive_interval_millis, .keep_alive_timeout_millis = @@ -878,6 +878,7 @@ class BasePcpHandlerTest SetSafeToDisconnect set_safe_to_disconnect_{true}; MediumEnvironment& env_ = MediumEnvironment::Instance(); NiceMock mock_device_; + MacAddress remote_mac_address_; }; TEST_P(BasePcpHandlerTest, ConstructorDestructorWorks) { @@ -1323,7 +1324,7 @@ TEST_P(BasePcpHandlerTest, RequestConnectionV3_ConnectImplFailure) { .listener = connection_listener_, }; ConnectionOptions connection_options{ - .remote_bluetooth_mac_address = ByteArray{"\x12\x34\x56\x78\x9a\xbc"}, + .remote_bluetooth_mac_address = remote_mac_address_, .keep_alive_interval_millis = FeatureFlags::GetInstance().GetFlags().keep_alive_interval_millis, .keep_alive_timeout_millis = @@ -1399,7 +1400,7 @@ TEST_P(BasePcpHandlerTest, RequestConnection_ConnectImplFailure) { .listener = connection_listener_, }; ConnectionOptions connection_options{ - .remote_bluetooth_mac_address = ByteArray{"\x12\x34\x56\x78\x9a\xbc"}, + .remote_bluetooth_mac_address = remote_mac_address_, .keep_alive_interval_millis = FeatureFlags::GetInstance().GetFlags().keep_alive_interval_millis, .keep_alive_timeout_millis = diff --git a/connections/swift/NearbyCoreAdapter/BUILD b/connections/swift/NearbyCoreAdapter/BUILD index e4be84d5..e65615fb 100644 --- a/connections/swift/NearbyCoreAdapter/BUILD +++ b/connections/swift/NearbyCoreAdapter/BUILD @@ -37,9 +37,11 @@ objc_library( "//connections/implementation/flags:connections_flags", "//internal/flags:nearby_flags", "//internal/platform:base", + "//internal/platform:mac_address", "//internal/platform/implementation/apple", # buildcleaner: keep "//internal/platform/implementation/apple/Log:GNCLogger", "//third_party/apple_frameworks:Foundation", + "@com_google_absl//absl/types:span", ], ) diff --git a/connections/swift/NearbyCoreAdapter/Sources/GNCConnectionOptions+CppConversions.mm b/connections/swift/NearbyCoreAdapter/Sources/GNCConnectionOptions+CppConversions.mm index a7260c26..94ab3b9e 100644 --- a/connections/swift/NearbyCoreAdapter/Sources/GNCConnectionOptions+CppConversions.mm +++ b/connections/swift/NearbyCoreAdapter/Sources/GNCConnectionOptions+CppConversions.mm @@ -14,8 +14,9 @@ #import "connections/swift/NearbyCoreAdapter/Sources/GNCConnectionOptions+CppConversions.h" +#include "absl/types/span.h" #include "connections/connection_options.h" -#include "internal/platform/byte_array.h" +#include "internal/platform/mac_address.h" #import "connections/swift/NearbyCoreAdapter/Sources/GNCSupportedMediums+CppConversions.h" #import "internal/platform/implementation/apple/Log/GNCLogger.h" @@ -40,8 +41,13 @@ using ::nearby::connections::ConnectionOptions; connection_options.keep_alive_interval_millis = self.keepAliveIntervalInSeconds * 1000; connection_options.keep_alive_timeout_millis = self.keepAliveTimeoutInSeconds * 1000; - connection_options.remote_bluetooth_mac_address = nearby::ByteArray( - (char *)[self.remoteBluetoothMACAddress bytes], [self.remoteBluetoothMACAddress length]); + nearby::MacAddress mac_address; + nearby::MacAddress::FromBytes( + absl::MakeConstSpan( + (const uint8_t*)[self.remoteBluetoothMACAddress bytes], + [self.remoteBluetoothMACAddress length]), + mac_address); + connection_options.remote_bluetooth_mac_address = mac_address; return connection_options; } diff --git a/sharing/BUILD b/sharing/BUILD index 6f2b47e8..cb585e07 100644 --- a/sharing/BUILD +++ b/sharing/BUILD @@ -325,6 +325,7 @@ cc_library( "//internal/flags:nearby_flags", "//internal/network:url", "//internal/platform:base", + "//internal/platform:mac_address", "//internal/platform:types", "//internal/platform/implementation:account_manager", "//internal/platform/implementation:types", diff --git a/sharing/nearby_connections_service_impl.cc b/sharing/nearby_connections_service_impl.cc index e3dfde93..240d4fa2 100644 --- a/sharing/nearby_connections_service_impl.cc +++ b/sharing/nearby_connections_service_impl.cc @@ -32,6 +32,7 @@ #include "connections/strategy.h" #include "internal/analytics/event_logger.h" #include "internal/platform/logging.h" +#include "internal/platform/mac_address.h" #include "sharing/internal/public/connectivity_manager.h" #include "sharing/nearby_connections_service.h" #include "sharing/nearby_connections_types.h" @@ -214,9 +215,11 @@ void NearbyConnectionsServiceImpl::RequestConnection( *connection_options.keep_alive_timeout / absl::Milliseconds(1); } if (connection_options.remote_bluetooth_mac_address.has_value()) { - auto mac_address = *connection_options.remote_bluetooth_mac_address; - options.remote_bluetooth_mac_address = - NcByteArray(std::string(mac_address.begin(), mac_address.end())); + MacAddress mac_address; + MacAddress::FromBytes( + absl::MakeConstSpan(*connection_options.remote_bluetooth_mac_address), + mac_address); + options.remote_bluetooth_mac_address = mac_address; } options.non_disruptive_hotspot_mode = connection_options.non_disruptive_hotspot_mode;