diff --git a/sharing/BUILD b/sharing/BUILD index 094d23a2..caf97bf2 100644 --- a/sharing/BUILD +++ b/sharing/BUILD @@ -479,6 +479,7 @@ cc_library( "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:flat_hash_set", "@com_google_absl//absl/functional:any_invocable", + "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/synchronization", "@com_google_absl//absl/time", diff --git a/sharing/fake_nearby_sharing_service.cc b/sharing/fake_nearby_sharing_service.cc index 416c4331..e3c90021 100644 --- a/sharing/fake_nearby_sharing_service.cc +++ b/sharing/fake_nearby_sharing_service.cc @@ -22,6 +22,9 @@ #include "location/nearby/sharing/lib/sync/sync_manager.h" #include "absl/functional/any_invocable.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "internal/base/file_path.h" #include "internal/base/observer_list.h" #include "internal/platform/clock.h" #include "sharing/advertisement.h" @@ -297,5 +300,15 @@ void FakeNearbySharingService::FireInitiatePairingResult( std::move(callback)(status); } +void FakeNearbySharingService::UpdateBackupSavePath( + absl::string_view binding_id, absl::string_view save_path, + absl::AnyInvocable + status_codes_callback) { + absl::StatusOr status = + sync_manager_->UpdateSyncBindingDestinationDirectory(binding_id, + FilePath(save_path)); + status_codes_callback(status.ok() ? StatusCodes::kOk : StatusCodes::kError); +} + } // namespace sharing } // namespace nearby diff --git a/sharing/fake_nearby_sharing_service.h b/sharing/fake_nearby_sharing_service.h index 57b0f05c..ca4c4a0f 100644 --- a/sharing/fake_nearby_sharing_service.h +++ b/sharing/fake_nearby_sharing_service.h @@ -142,6 +142,10 @@ class FakeNearbySharingService : public NearbySharingService { uint16_t alternate_service_uuid) override {} SyncManager& sync_manager() override; OutgoingTargetsManager& outgoing_targets_manager() override; + void UpdateBackupSavePath( + absl::string_view binding_id, absl::string_view save_path, + absl::AnyInvocable + status_codes_callback) override; nearby::sharing::api::IdentityRpcClient& fake_identity_rpc_client() { return identity_rpc_client_; diff --git a/sharing/nearby_sharing_service.h b/sharing/nearby_sharing_service.h index f657c968..317b5a02 100644 --- a/sharing/nearby_sharing_service.h +++ b/sharing/nearby_sharing_service.h @@ -22,6 +22,7 @@ #include "location/nearby/sharing/lib/sync/sync_manager.h" #include "absl/functional/any_invocable.h" +#include "absl/strings/string_view.h" #include "absl/time/time.h" #include "internal/platform/clock.h" #include "sharing/advertisement.h" @@ -228,6 +229,10 @@ class NearbySharingService { uint16_t alternate_service_uuid) = 0; virtual SyncManager& sync_manager() = 0; virtual OutgoingTargetsManager& outgoing_targets_manager() = 0; + virtual void UpdateBackupSavePath( + absl::string_view binding_id, absl::string_view save_path, + absl::AnyInvocable + status_codes_callback) = 0; }; } // namespace nearby::sharing diff --git a/sharing/nearby_sharing_service_impl.cc b/sharing/nearby_sharing_service_impl.cc index 3f4e84f9..ef4f3f83 100644 --- a/sharing/nearby_sharing_service_impl.cc +++ b/sharing/nearby_sharing_service_impl.cc @@ -3299,4 +3299,17 @@ void NearbySharingServiceImpl::UpdateFilePathsInProgress( << ": Update file paths in progress: " << update_file_paths; } +void NearbySharingServiceImpl::UpdateBackupSavePath( + absl::string_view binding_id, absl::string_view save_path, + absl::AnyInvocable + status_codes_callback) { + absl::StatusOr original_path = + sync_manager_.UpdateSyncBindingDestinationDirectory(binding_id, + FilePath(save_path)); + // TODO: b/485307320 - If original destination directory exists, move + // contents to the new destination directory. + status_codes_callback( + original_path.ok() ? StatusCodes::kOk : StatusCodes::kError); +} + } // namespace nearby::sharing diff --git a/sharing/nearby_sharing_service_impl.h b/sharing/nearby_sharing_service_impl.h index 44841f00..b4d763be 100644 --- a/sharing/nearby_sharing_service_impl.h +++ b/sharing/nearby_sharing_service_impl.h @@ -173,6 +173,9 @@ class NearbySharingServiceImpl OutgoingTargetsManager& outgoing_targets_manager() override { return outgoing_targets_manager_; } + void UpdateBackupSavePath( + absl::string_view binding_id, absl::string_view save_path, + absl::AnyInvocable status_codes_callback) override; // NearbyConnectionsManager::IncomingConnectionListener: void OnIncomingConnection(absl::string_view endpoint_id,