diff --git a/sharing/common/nearby_share_prefs.cc b/sharing/common/nearby_share_prefs.cc index 9d988ba5..279b352b 100644 --- a/sharing/common/nearby_share_prefs.cc +++ b/sharing/common/nearby_share_prefs.cc @@ -67,6 +67,7 @@ void RegisterNearbySharingPrefs(PreferenceManager& preference_manager, preference_manager.Remove(PrefNames::kUsers); preference_manager.SetBoolean(PrefNames::kAdvancedProtectionEnabled, false); + preference_manager.RemoveAllSyncConfigs(); preference_manager.RemoveAllBindingConfigs(); } diff --git a/sharing/internal/api/BUILD b/sharing/internal/api/BUILD index 4087190d..b570847e 100644 --- a/sharing/internal/api/BUILD +++ b/sharing/internal/api/BUILD @@ -45,6 +45,7 @@ cc_library( "//internal/platform/implementation:types", "//location/nearby/sharing/lib/account:account_manager", "//location/nearby/sharing/lib/sync:sync_binding_prefs_cc_proto", + "//location/nearby/sharing/lib/sync:sync_config_prefs_cc_proto", "//sharing/proto:share_cc_proto", "@com_google_absl//absl/functional:any_invocable", "@com_google_absl//absl/strings:string_view", diff --git a/sharing/internal/api/preference_manager.h b/sharing/internal/api/preference_manager.h index 58fba5aa..c1978415 100644 --- a/sharing/internal/api/preference_manager.h +++ b/sharing/internal/api/preference_manager.h @@ -23,6 +23,7 @@ #include #include "location/nearby/sharing/lib/sync/sync_binding_prefs.pb.h" +#include "location/nearby/sharing/lib/sync/sync_config_prefs.pb.h" #include "absl/strings/string_view.h" #include "absl/time/time.h" #include "absl/types/span.h" @@ -80,6 +81,10 @@ class PreferenceManager { virtual void RemoveDictionaryItem(absl::string_view key, absl::string_view dictionary_item) = 0; + virtual void SetSyncConfigValue( + absl::string_view binding_id, + const nearby::sharing::sync::SyncConfigPrefs& value) = 0; + virtual void SetSyncBindingValue( const nearby::sharing::sync::SyncBindingPrefs& value) = 0; @@ -122,12 +127,19 @@ class PreferenceManager { virtual std::optional GetDictionaryStringValue( absl::string_view key, absl::string_view dictionary_item) const = 0; + virtual std::optional + GetSyncConfigValue(absl::string_view binding_id) const = 0; + + virtual void RemoveSyncConfigPref(absl::string_view binding_id) = 0; + virtual std::optional GetSyncBindingValue() const = 0; // Removes preferences virtual void Remove(absl::string_view key) = 0; - // Removes all binding configs. + // 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; diff --git a/sharing/internal/public/pref_names.h b/sharing/internal/public/pref_names.h index 6daef139..e3b3b1b0 100644 --- a/sharing/internal/public/pref_names.h +++ b/sharing/internal/public/pref_names.h @@ -58,10 +58,18 @@ class PrefNames { // Binding configs preferences are stored in pref keys: // kBindingConfigPrefix + // Example: "nearby_sharing.binding_config.FileSync" - // TODO: b/485304482 - define data format for binding configs. + // For FileSync service, data stored in binding config prefs is a + // nearby::sharing::sync::SyncBindingPrefs proto. static constexpr absl::string_view kBindingConfigPrefix = "nearby_sharing.binding_config."; -}; + + // Sync configs preferences are stored in pref keys: + // kSyncConfigPrefix + + // Example: "nearby_sharing.sync_config.01243347-2343-4324-3423-432432432432" + // Data stored in sync config prefs is a + // nearby::sharing::sync::SyncConfigPrefs proto. + static constexpr absl::string_view kSyncConfigPrefix = + "nearby_sharing.sync_config.";}; } // namespace nearby::sharing diff --git a/sharing/internal/test/BUILD b/sharing/internal/test/BUILD index a6069b4c..0342ae4c 100644 --- a/sharing/internal/test/BUILD +++ b/sharing/internal/test/BUILD @@ -41,6 +41,7 @@ cc_library( "//internal/platform:types", "//internal/test", "//location/nearby/sharing/lib/sync:sync_binding_prefs_cc_proto", + "//location/nearby/sharing/lib/sync:sync_config_prefs_cc_proto", "//sharing/internal/api:platform", "//sharing/internal/public:pref_names", "//sharing/internal/public:types", diff --git a/sharing/internal/test/fake_preference_manager.cc b/sharing/internal/test/fake_preference_manager.cc index 27066249..099f9170 100644 --- a/sharing/internal/test/fake_preference_manager.cc +++ b/sharing/internal/test/fake_preference_manager.cc @@ -23,6 +23,7 @@ #include #include "location/nearby/sharing/lib/sync/sync_binding_prefs.pb.h" +#include "location/nearby/sharing/lib/sync/sync_config_prefs.pb.h" #include "absl/container/flat_hash_map.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -36,6 +37,7 @@ namespace nearby { using ::nearby::sharing::PrefNames; using ::nearby::sharing::api::PrivateCertificateData; using ::nearby::sharing::sync::SyncBindingPrefs; +using ::nearby::sharing::sync::SyncConfigPrefs; // Preference suffix for the sync binding information. constexpr absl::string_view kFileSyncBindingName = "FileSync"; @@ -243,6 +245,16 @@ void FakePreferenceManager::RemoveDictionaryItem( NotifyPreferenceChanged(key); } +void FakePreferenceManager::SetSyncConfigValue(absl::string_view binding_id, + const SyncConfigPrefs& value) { + SetValue(absl::StrCat(PrefNames::kSyncConfigPrefix, binding_id), + value.SerializeAsString()); +} + +void FakePreferenceManager::RemoveSyncConfigPref(absl::string_view binding_id) { + Remove(absl::StrCat(PrefNames::kSyncConfigPrefix, binding_id)); +} + void FakePreferenceManager::SetSyncBindingValue( const SyncBindingPrefs& value) { SetValue(absl::StrCat(PrefNames::kBindingConfigPrefix, kFileSyncBindingName), @@ -333,6 +345,21 @@ std::optional FakePreferenceManager::GetDictionaryStringValue( return GetDictionaryValue(key, dictionary_item); } +std::optional 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; + } + SyncConfigPrefs sync_config; + if (!sync_config.ParseFromString(serialized_sync_config)) { + return std::nullopt; + } + return sync_config; +} + std::optional FakePreferenceManager::GetSyncBindingValue() const { std::string serialized_sync_binding; @@ -358,6 +385,13 @@ 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) { diff --git a/sharing/internal/test/fake_preference_manager.h b/sharing/internal/test/fake_preference_manager.h index 1fb023cf..bb7657e8 100644 --- a/sharing/internal/test/fake_preference_manager.h +++ b/sharing/internal/test/fake_preference_manager.h @@ -24,6 +24,7 @@ #include #include "location/nearby/sharing/lib/sync/sync_binding_prefs.pb.h" +#include "location/nearby/sharing/lib/sync/sync_config_prefs.pb.h" #include "absl/base/thread_annotations.h" #include "absl/container/flat_hash_map.h" #include "absl/strings/string_view.h" @@ -75,6 +76,9 @@ 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::sync::SyncConfigPrefs& value) override; void SetSyncBindingValue( const nearby::sharing::sync::SyncBindingPrefs& value) override; @@ -111,10 +115,14 @@ class FakePreferenceManager : public nearby::sharing::api::PreferenceManager { absl::string_view key, absl::string_view dictionary_item) const override; std::optional GetDictionaryStringValue( absl::string_view key, absl::string_view dictionary_item) const override; + std::optional + GetSyncConfigValue(absl::string_view binding_id) const override; + void RemoveSyncConfigPref(absl::string_view binding_id) override; std::optional GetSyncBindingValue() const override; void Remove(absl::string_view key) override; + void RemoveAllSyncConfigs() override; void RemoveAllBindingConfigs() override; void AddObserver(