mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-16 15:36:12 -04:00
Add SyncConfig and BindingConfigs to preferences.
PiperOrigin-RevId: 876332995
This commit is contained in:
committed by
Copybara-Service
parent
1a543b0d7f
commit
f81ee02981
@@ -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) {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user