diff --git a/sharing/nearby_sharing_settings.cc b/sharing/nearby_sharing_settings.cc index 8d894727..baf1118e 100644 --- a/sharing/nearby_sharing_settings.cc +++ b/sharing/nearby_sharing_settings.cc @@ -48,6 +48,7 @@ using ::nearby::sharing::api::PreferenceManager; using ::nearby::sharing::proto::DataUsage; using ::nearby::sharing::proto::DeviceVisibility; using ::nearby::sharing::proto::FastInitiationNotificationState; +using ::nearby::sharing::sync::SyncBindingPrefs; constexpr absl::string_view kPreferencesObserverName = "nearby-sharing-settings"; @@ -186,6 +187,16 @@ std::string NearbyShareSettings::GetCustomSavePath() const { PrefNames::kCustomSavePath, device_info_.GetDownloadPath().ToString()); } +SyncBindingPrefs NearbyShareSettings::GetSyncBindingPrefs() const { + return preference_manager_.GetSyncBindingValue().value_or( + SyncBindingPrefs()); +} + +void NearbyShareSettings::SetSyncBindingPrefs( + const SyncBindingPrefs& prefs) { + preference_manager_.SetSyncBindingValue(prefs); +} + bool NearbyShareSettings::IsDisabledByPolicy() const { return false; } void NearbyShareSettings::AddSettingsObserver(Observer* observer) { diff --git a/sharing/nearby_sharing_settings.h b/sharing/nearby_sharing_settings.h index 665d8f97..f0793bae 100644 --- a/sharing/nearby_sharing_settings.h +++ b/sharing/nearby_sharing_settings.h @@ -22,6 +22,7 @@ #include #include +#include "location/nearby/sharing/lib/sync/sync_binding_prefs.pb.h" #include "absl/base/thread_annotations.h" #include "absl/strings/string_view.h" #include "absl/synchronization/mutex.h" @@ -161,6 +162,10 @@ class NearbyShareSettings std::string GetCustomSavePath() const; + nearby::sharing::sync::SyncBindingPrefs GetSyncBindingPrefs() const; + void SetSyncBindingPrefs( + const nearby::sharing::sync::SyncBindingPrefs& prefs); + // Returns true if the feature is disabled by policy. bool IsDisabledByPolicy() const; diff --git a/sharing/nearby_sharing_settings_test.cc b/sharing/nearby_sharing_settings_test.cc index 531e4ed7..e11e22a1 100644 --- a/sharing/nearby_sharing_settings_test.cc +++ b/sharing/nearby_sharing_settings_test.cc @@ -19,6 +19,8 @@ #include #include +#include "gmock/gmock.h" +#include "protobuf-matchers/protocol-buffer-matchers.h" #include "gtest/gtest.h" #include "absl/base/thread_annotations.h" #include "absl/strings/string_view.h" @@ -43,6 +45,7 @@ namespace { using ::nearby::sharing::proto::DataUsage; using ::nearby::sharing::proto::DeviceVisibility; using ::nearby::sharing::proto::FastInitiationNotificationState; +using ::protobuf_matchers::EqualsProto; constexpr char kDefaultDeviceName[] = "Josh's Chromebook"; @@ -386,6 +389,35 @@ TEST_F(NearbyShareSettingsTest, SetVisibilityWithExpirationTooLong) { EXPECT_LT(absl::AbsDuration(time_diff), absl::Seconds(1)); } +TEST_F(NearbyShareSettingsTest, GetSyncBindingPrefs_NoBindings) { + EXPECT_THAT(settings()->GetSyncBindingPrefs(), + EqualsProto(sync::SyncBindingPrefs::default_instance())); +} + +TEST_F(NearbyShareSettingsTest, GetSyncBindingPerfs_Success) { + sync::SyncBindingPrefs sync_binding_prefs; + sync_binding_prefs.add_sync_bindings()->set_binding_id("binding_id"); + sync_binding_prefs.add_sync_bindings()->set_source_name("source_name"); + sync_binding_prefs.add_sync_bindings()->set_destination_directory( + "destination_name"); + preference_manager_.SetSyncBindingValue(sync_binding_prefs); + EXPECT_THAT(settings()->GetSyncBindingPrefs(), + EqualsProto(sync_binding_prefs)); +} + +TEST_F(NearbyShareSettingsTest, SetSyncBindingPerfs_Success) { + sync::SyncBindingPrefs sync_binding_prefs; + sync_binding_prefs.add_sync_bindings()->set_binding_id("binding_id"); + sync_binding_prefs.add_sync_bindings()->set_source_name("source_name"); + sync_binding_prefs.add_sync_bindings()->set_destination_directory( + "destination_name"); + settings()->SetSyncBindingPrefs(sync_binding_prefs); + auto sync_binding_value = preference_manager_.GetSyncBindingValue(); + ASSERT_TRUE(sync_binding_value.has_value()); + EXPECT_THAT(sync_binding_value.value(), + EqualsProto(sync_binding_prefs)); +} + TEST(NearbyShareVisibilityTest, RestoresFallbackVisibility_ExpiredTimer) { // Create Nearby Share settings dependencies. FakeContext context;