Add SyncConfig and BindingConfigs to preferences.

PiperOrigin-RevId: 876332995
This commit is contained in:
Francis Tsui
2026-02-27 11:01:49 -08:00
committed by Copybara-Service
parent 1a543b0d7f
commit f81ee02981
7 changed files with 82 additions and 5 deletions
+3
View File
@@ -66,6 +66,9 @@ void RegisterNearbySharingPrefs(PreferenceManager& preference_manager,
preference_manager.Remove(PrefNames::kSchedulerUploadLocalDeviceCertificates);
preference_manager.Remove(PrefNames::kUsers);
preference_manager.SetBoolean(PrefNames::kAdvancedProtectionEnabled, false);
preference_manager.RemoveAllSyncConfigs();
preference_manager.RemoveAllBindingConfigs();
}
void ResetSchedulers(PreferenceManager& preference_manager) {
+1 -1
View File
@@ -45,8 +45,8 @@ cc_library(
"//internal/platform/implementation:account_manager",
"//sharing/analytics",
"//sharing/proto:share_cc_proto",
"//sharing/proto:wire_format_cc_proto",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/time",
+15
View File
@@ -26,6 +26,7 @@
#include "absl/time/time.h"
#include "absl/types/span.h"
#include "sharing/internal/api/private_certificate_data.h"
#include "sharing/proto/wire_format.pb.h"
namespace nearby::sharing::api {
@@ -78,6 +79,11 @@ class PreferenceManager {
std::string value) = 0;
virtual void RemoveDictionaryItem(absl::string_view key,
absl::string_view dictionary_item) = 0;
virtual void SetSyncConfigValue(
absl::string_view binding_id,
const nearby::sharing::service::proto::SyncConfig& value) = 0;
// Gets values
virtual bool GetBoolean(absl::string_view key, bool default_value) const = 0;
virtual int GetInteger(absl::string_view key, int default_value) const = 0;
@@ -117,8 +123,17 @@ class PreferenceManager {
virtual std::optional<std::string> GetDictionaryStringValue(
absl::string_view key, absl::string_view dictionary_item) const = 0;
virtual std::optional<nearby::sharing::service::proto::SyncConfig>
GetSyncConfigValue(absl::string_view binding_id) const = 0;
// Removes preferences
virtual void Remove(absl::string_view key) = 0;
// Removes all sync configs.
// Observers are not notified for each removed config.
virtual void RemoveAllSyncConfigs() = 0;
// Removes all binding configs.
// Observers are not notified for each removed config.
virtual void RemoveAllBindingConfigs() = 0;
// Adds preference observer
virtual void AddObserver(
+14
View File
@@ -54,6 +54,20 @@ class PrefNames {
"nearby_sharing.advanced_protection_enabled";
static constexpr absl::string_view kSchedulerGetAccountInfo =
"nearby_sharing.scheduler.get_account_info";
// Binding configs preferences are stored in pref keys:
// kBindingConfigPrefix + <service_name>
// Example: "nearby_sharing.binding_config.FileSync"
// TODO: b/485304482 - define data format for binding configs.
static constexpr absl::string_view kBindingConfigPrefix =
"nearby_sharing.binding_config.";
// Sync configs preferences are stored in pref keys:
// kSyncConfigPrefix + <binding ID>
// Example: "nearby_sharing.sync_config.01243347-2343-4324-3423-432432432432"
// Data stored in sync config prefs is a SyncConfig proto.
static constexpr absl::string_view kSyncConfigPrefix =
"nearby_sharing.sync_config.";
};
} // namespace nearby::sharing
+1 -2
View File
@@ -37,17 +37,16 @@ cc_library(
visibility = ["//visibility:public"],
deps = [
"//internal/base",
"//internal/base:bluetooth_address",
"//internal/platform:mac_address",
"//internal/platform:types",
"//internal/test",
"//sharing/internal/api:platform",
"//sharing/internal/public:pref_names",
"//sharing/internal/public:types",
"//sharing/proto:share_cc_proto",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/synchronization",
"@com_google_absl//absl/time",
@@ -13,6 +13,7 @@
// limitations under the License.
#include "sharing/internal/test/fake_preference_manager.h"
#include <cstdint>
#include <functional>
#include <optional>
@@ -22,13 +23,16 @@
#include <vector>
#include "absl/container/flat_hash_map.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
#include "absl/synchronization/mutex.h"
#include "absl/time/time.h"
#include "absl/types/span.h"
#include "sharing/internal/api/private_certificate_data.h"
#include "sharing/internal/public/pref_names.h"
namespace nearby {
using ::nearby::sharing::PrefNames;
using ::nearby::sharing::api::PrivateCertificateData;
template <typename T>
@@ -180,8 +184,7 @@ void FakePreferenceManager::SetStringArray(
}
void FakePreferenceManager::SetPrivateCertificateArray(
absl::string_view key,
absl::Span<const PrivateCertificateData> value) {
absl::string_view key, absl::Span<const PrivateCertificateData> value) {
absl::MutexLock lock(mutex_);
if (certs_.contains(key)) {
certs_.erase(key);
@@ -235,6 +238,12 @@ void FakePreferenceManager::RemoveDictionaryItem(
NotifyPreferenceChanged(key);
}
void FakePreferenceManager::SetSyncConfigValue(
absl::string_view binding_id,
const nearby::sharing::service::proto::SyncConfig& value) {
SetValue(absl::StrCat(PrefNames::kSyncConfigPrefix, binding_id),
value.SerializeAsString());
}
bool FakePreferenceManager::GetBoolean(absl::string_view key,
bool default_value) const {
@@ -320,6 +329,21 @@ std::optional<std::string> FakePreferenceManager::GetDictionaryStringValue(
return GetDictionaryValue<std::string>(key, dictionary_item);
}
std::optional<nearby::sharing::service::proto::SyncConfig>
FakePreferenceManager::GetSyncConfigValue(absl::string_view binding_id) const {
std::string serialized_sync_config;
serialized_sync_config =
GetString(absl::StrCat(PrefNames::kSyncConfigPrefix, binding_id), "");
if (serialized_sync_config.empty()) {
return std::nullopt;
}
nearby::sharing::service::proto::SyncConfig sync_config;
if (!sync_config.ParseFromString(serialized_sync_config)) {
return std::nullopt;
}
return sync_config;
}
void FakePreferenceManager::Remove(absl::string_view key) {
{
absl::MutexLock lock(mutex_);
@@ -330,6 +354,20 @@ void FakePreferenceManager::Remove(absl::string_view key) {
NotifyPreferenceChanged(key);
}
void FakePreferenceManager::RemoveAllSyncConfigs() {
absl::MutexLock lock(mutex_);
absl::erase_if(values_, [](const auto& item) {
return item.first.starts_with(PrefNames::kSyncConfigPrefix);
});
}
void FakePreferenceManager::RemoveAllBindingConfigs() {
absl::MutexLock lock(mutex_);
absl::erase_if(values_, [](const auto& item) {
return item.first.starts_with(PrefNames::kBindingConfigPrefix);
});
}
void FakePreferenceManager::NotifyPreferenceChanged(absl::string_view key) {
absl::flat_hash_map<std::string, std::function<void(absl::string_view)>>
observers;
@@ -74,6 +74,10 @@ class FakePreferenceManager : public nearby::sharing::api::PreferenceManager {
void RemoveDictionaryItem(absl::string_view key,
absl::string_view dictionary_item) override;
void SetSyncConfigValue(
absl::string_view binding_id,
const nearby::sharing::service::proto::SyncConfig& value) override;
bool GetBoolean(absl::string_view key, bool default_value) const override;
int GetInteger(absl::string_view key, int default_value) const override;
int64_t GetInt64(absl::string_view key, int64_t default_value) const override;
@@ -107,8 +111,12 @@ class FakePreferenceManager : public nearby::sharing::api::PreferenceManager {
absl::string_view key, absl::string_view dictionary_item) const override;
std::optional<std::string> GetDictionaryStringValue(
absl::string_view key, absl::string_view dictionary_item) const override;
std::optional<nearby::sharing::service::proto::SyncConfig>
GetSyncConfigValue(absl::string_view binding_id) const override;
void Remove(absl::string_view key) override;
void RemoveAllSyncConfigs() override;
void RemoveAllBindingConfigs() override;
void AddObserver(
absl::string_view name,