Add PreferencesManager into ClientProxy.

PiperOrigin-RevId: 819896910
This commit is contained in:
Guogang Li
2025-10-15 13:47:29 -07:00
committed by Copybara-Service
parent 7250a1f21d
commit bffe543e49
3 changed files with 40 additions and 8 deletions
+5 -3
View File
@@ -1,6 +1,3 @@
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,6 +11,10 @@ load("@rules_cc//cc:cc_test.bzl", "cc_test")
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
licenses(["notice"])
cc_library(
@@ -164,6 +165,7 @@ cc_library(
"//connections/implementation/proto:offline_wire_formats_cc_proto",
"//connections/v3:v3_types",
"//internal/analytics:event_logger",
"//internal/base:file_path",
"//internal/base:masker",
"//internal/flags:nearby_flags",
"//internal/interop:authentication_status",
+29 -5
View File
@@ -52,11 +52,13 @@
#include "connections/v3/connections_device_provider.h"
#include "connections/v3/listeners.h"
#include "internal/analytics/event_logger.h"
#include "internal/base/file_path.h"
#include "internal/flags/nearby_flags.h"
#include "internal/interop/device.h"
#include "internal/platform/byte_array.h"
#include "internal/platform/cancelable_alarm.h"
#include "internal/platform/cancellation_flag.h"
#include "internal/platform/device_info_impl.h"
#include "internal/platform/error_code_params.h"
#include "internal/platform/error_code_recorder.h"
#include "internal/platform/feature_flags.h"
@@ -81,6 +83,8 @@ constexpr char kEndpointIdChars[] = {
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
constexpr absl::string_view kPreferencesFilePath = "Google/Nearby/Connections";
bool IsFeatureUseStableEndpointIdEnabled() {
return NearbyFlags::GetInstance().GetBoolFlag(
connections::config_package_nearby::nearby_connections_feature::
@@ -91,6 +95,12 @@ bool IsFeatureUseStableEndpointIdEnabled() {
ClientProxy::ClientProxy(::nearby::analytics::EventLogger* event_logger)
: client_id_(Prng().NextInt64()) {
VLOG(1) << "ClientProxy ctor event_logger=" << event_logger;
if (NearbyFlags::GetInstance().GetBoolFlag(
config_package_nearby::nearby_connections_feature::
kEnableNearbyConnectionsPreferences)) {
InitializePreferencesManager();
}
is_dct_enabled_ = NearbyFlags::GetInstance().GetBoolFlag(
config_package_nearby::nearby_connections_feature::kEnableDct);
analytics_recorder_ =
@@ -172,8 +182,8 @@ std::optional<MacAddress> ClientProxy::GetBluetoothMacAddress(
return std::nullopt;
}
void ClientProxy::SetBluetoothMacAddress(
const std::string& endpoint_id, MacAddress bluetooth_mac_address) {
void ClientProxy::SetBluetoothMacAddress(const std::string& endpoint_id,
MacAddress bluetooth_mac_address) {
bluetooth_mac_addresses_[endpoint_id] = bluetooth_mac_address;
}
@@ -1188,9 +1198,7 @@ void ClientProxy::ScheduleClearCachedEndpointIdAlarm() {
<< GetClientId() << "; cached_endpoint_id_=" << cached_endpoint_id_;
cached_endpoint_id_alarm_ = std::make_unique<CancelableAlarm>(
"clear_high_power_endpoint_id_cache",
[this]() {
ClearCachedLocalEndpointId();
},
[this]() { ClearCachedLocalEndpointId(); },
kHighPowerAdvertisementEndpointIdCacheTimeout, &single_thread_executor_);
}
@@ -1348,6 +1356,22 @@ std::optional<std::string> ClientProxy::GetEndpointIdForDct() const {
return dct_endpoint_id_;
}
void ClientProxy::InitializePreferencesManager() {
LOG(INFO) << "ClientProxy [InitializePreferencesManager]: client="
<< GetClientId();
auto device_info_ = std::make_unique<nearby::DeviceInfoImpl>();
preferences_manager_ = api::ImplementationPlatform::CreatePreferencesManager(
device_info_->GetAppDataPath()
.append(FilePath(kPreferencesFilePath))
.ToString());
if (preferences_manager_ == nullptr) {
LOG(ERROR) << "ClientProxy [Failed to initialize preferences manager]: "
"client="
<< GetClientId();
}
}
std::string ClientProxy::ToString(PayloadProgressInfo::Status status) const {
switch (status) {
case PayloadProgressInfo::Status::kSuccess:
@@ -45,6 +45,7 @@
#include "internal/platform/cancelable_alarm.h"
#include "internal/platform/cancellation_flag.h"
#include "internal/platform/error_code_recorder.h"
#include "internal/platform/implementation/preferences_manager.h"
#include "internal/platform/mac_address.h"
#include "internal/platform/mutex.h"
// Prefer using absl:: versions of a set and a map; they tend to be more
@@ -458,6 +459,8 @@ class ClientProxy final {
std::optional<std::string> GetEndpointIdForDct() const;
void InitializePreferencesManager();
// The device name used for DCT advertising.
std::string dct_device_name_;
// The dedup value used for DCT advertising.
@@ -534,6 +537,9 @@ class ClientProxy final {
std::unique_ptr<CancellationFlag> default_cancellation_flag_ =
std::make_unique<CancellationFlag>(true);
// A preferences manager for storing client-specific preferences.
std::unique_ptr<nearby::api::PreferencesManager> preferences_manager_;
// An analytics logger with |EventLogger| provided by client, which is default
// nullptr as no-op.
std::unique_ptr<analytics::AnalyticsRecorder> analytics_recorder_;