mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 22:56:12 -04:00
Move Attachments into ShareTargetInfo.
PiperOrigin-RevId: 640597022
This commit is contained in:
committed by
Copybara-Service
parent
37e8523189
commit
3c73448dc8
@@ -85,7 +85,6 @@ cc_library(
|
||||
"//sharing:__subpackages__",
|
||||
],
|
||||
deps = [
|
||||
":attachments",
|
||||
":connection_types",
|
||||
"//internal/network:url",
|
||||
"//sharing/common:enum",
|
||||
@@ -581,7 +580,6 @@ cc_test(
|
||||
name = "share_target_test",
|
||||
srcs = ["share_target_test.cc"],
|
||||
deps = [
|
||||
":attachments",
|
||||
":types",
|
||||
"//internal/network:url",
|
||||
"//sharing/common:enum",
|
||||
|
||||
@@ -268,8 +268,9 @@ void AnalyticsRecorder::NewEstablishConnection(
|
||||
int64_t session_id,
|
||||
::location::nearby::proto::sharing::EstablishConnectionStatus
|
||||
connection_status,
|
||||
ShareTarget share_target, int transfer_position, int concurrent_connections,
|
||||
int64_t duration_millis, std::optional<std::string> referrer_package) {
|
||||
const ShareTarget& share_target, int transfer_position,
|
||||
int concurrent_connections, int64_t duration_millis,
|
||||
std::optional<std::string> referrer_package) {
|
||||
std::unique_ptr<SharingLog> sharing_log = CreateSharingLog(
|
||||
EventCategory::SENDING_EVENT, EventType::ESTABLISH_CONNECTION);
|
||||
|
||||
@@ -429,7 +430,7 @@ void AnalyticsRecorder::NewDescribeAttachments(
|
||||
}
|
||||
|
||||
void AnalyticsRecorder::NewDiscoverShareTarget(
|
||||
ShareTarget share_target, int64_t session_id,
|
||||
const ShareTarget& share_target, int64_t session_id,
|
||||
int64_t latency_since_scanning_start_millis, int64_t flow_id,
|
||||
std::optional<std::string> referrer_package,
|
||||
int64_t latency_since_send_surface_registered_millis) {
|
||||
@@ -593,7 +594,7 @@ void AnalyticsRecorder::NewDismissFastInitialization() {
|
||||
}
|
||||
|
||||
void AnalyticsRecorder::NewReceiveIntroduction(
|
||||
int64_t session_id, ShareTarget share_target,
|
||||
int64_t session_id, const ShareTarget& share_target,
|
||||
std::optional<std::string> referrer_package,
|
||||
::location::nearby::proto::sharing::OSType share_target_os_type) {
|
||||
std::unique_ptr<SharingLog> sharing_log = CreateSharingLog(
|
||||
@@ -696,7 +697,7 @@ void AnalyticsRecorder::NewScanForShareTargetsStart(
|
||||
}
|
||||
|
||||
void AnalyticsRecorder::NewSendAttachmentsEnd(
|
||||
int64_t session_id, int64_t sent_bytes, ShareTarget share_target,
|
||||
int64_t session_id, int64_t sent_bytes, const ShareTarget& share_target,
|
||||
::location::nearby::proto::sharing::AttachmentTransmissionStatus status,
|
||||
int transfer_position, int concurrent_connections, int64_t duration_millis,
|
||||
std::optional<std::string> referrer_package,
|
||||
@@ -759,7 +760,7 @@ void AnalyticsRecorder::NewSendFastInitialization() {
|
||||
|
||||
void AnalyticsRecorder::NewSendStart(int64_t session_id, int transfer_position,
|
||||
int concurrent_connections,
|
||||
ShareTarget share_target) {
|
||||
const ShareTarget& share_target) {
|
||||
std::unique_ptr<SharingLog> sharing_log =
|
||||
CreateSharingLog(EventCategory::SENDING_EVENT, EventType::SEND_START);
|
||||
|
||||
@@ -793,7 +794,7 @@ void AnalyticsRecorder::NewSendIntroduction(
|
||||
}
|
||||
|
||||
void AnalyticsRecorder::NewSendIntroduction(
|
||||
int64_t session_id, ShareTarget share_target, int transfer_position,
|
||||
int64_t session_id, const ShareTarget& share_target, int transfer_position,
|
||||
int concurrent_connections,
|
||||
::location::nearby::proto::sharing::OSType share_target_os_type) {
|
||||
std::unique_ptr<SharingLog> sharing_log = CreateSharingLog(
|
||||
|
||||
@@ -44,7 +44,7 @@ class AnalyticsRecorder {
|
||||
int64_t session_id,
|
||||
location::nearby::proto::sharing::EstablishConnectionStatus
|
||||
connection_status,
|
||||
ShareTarget share_target, int transfer_position,
|
||||
const ShareTarget& share_target, int transfer_position,
|
||||
int concurrent_connections, int64_t duration_millis,
|
||||
std::optional<std::string> referrer_package);
|
||||
|
||||
@@ -74,7 +74,7 @@ class AnalyticsRecorder {
|
||||
void NewDescribeAttachments(const AttachmentContainer& attachments);
|
||||
|
||||
void NewDiscoverShareTarget(
|
||||
ShareTarget share_target, int64_t session_id,
|
||||
const ShareTarget& share_target, int64_t session_id,
|
||||
int64_t latency_since_scanning_start_millis, int64_t flow_id,
|
||||
std::optional<std::string> referrer_package,
|
||||
int64_t latency_since_send_surface_registered_millis);
|
||||
@@ -105,7 +105,7 @@ class AnalyticsRecorder {
|
||||
void NewDismissFastInitialization();
|
||||
|
||||
void NewReceiveIntroduction(
|
||||
int64_t session_id, ShareTarget share_target,
|
||||
int64_t session_id, const ShareTarget& share_target,
|
||||
std::optional<std::string> referrer_package,
|
||||
location::nearby::proto::sharing::OSType share_target_os_type);
|
||||
|
||||
@@ -126,7 +126,7 @@ class AnalyticsRecorder {
|
||||
std::optional<std::string> referrer_package);
|
||||
|
||||
void NewSendAttachmentsEnd(
|
||||
int64_t session_id, int64_t sent_bytes, ShareTarget share_target,
|
||||
int64_t session_id, int64_t sent_bytes, const ShareTarget& share_target,
|
||||
location::nearby::proto::sharing::AttachmentTransmissionStatus status,
|
||||
int transfer_position, int concurrent_connections,
|
||||
int64_t duration_millis, std::optional<std::string> referrer_package,
|
||||
@@ -142,7 +142,8 @@ class AnalyticsRecorder {
|
||||
void NewSendFastInitialization();
|
||||
|
||||
void NewSendStart(int64_t session_id, int transfer_position,
|
||||
int concurrent_connections, ShareTarget share_target);
|
||||
int concurrent_connections,
|
||||
const ShareTarget& share_target);
|
||||
|
||||
void NewSendIntroduction(
|
||||
ShareTargetType target_type, int64_t session_id,
|
||||
@@ -150,8 +151,8 @@ class AnalyticsRecorder {
|
||||
location::nearby::proto::sharing::OSType share_target_os_type);
|
||||
|
||||
void NewSendIntroduction(
|
||||
int64_t session_id, ShareTarget share_target, int transfer_position,
|
||||
int concurrent_connections,
|
||||
int64_t session_id, const ShareTarget& share_target,
|
||||
int transfer_position, int concurrent_connections,
|
||||
location::nearby::proto::sharing::OSType share_target_os_type);
|
||||
|
||||
void NewSetVisibility(nearby::sharing::proto::DeviceVisibility src_visibility,
|
||||
|
||||
@@ -66,4 +66,20 @@ void AttachmentContainer::ClearAttachments() {
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<int64_t> AttachmentContainer::GetAttachmentIds() const {
|
||||
std::vector<int64_t> attachment_ids;
|
||||
|
||||
attachment_ids.reserve(GetAttachmentCount());
|
||||
for (const auto& file : file_attachments_)
|
||||
attachment_ids.push_back(file.id());
|
||||
|
||||
for (const auto& text : text_attachments_)
|
||||
attachment_ids.push_back(text.id());
|
||||
|
||||
for (const auto& wifi_credentials : wifi_credentials_attachments_)
|
||||
attachment_ids.push_back(wifi_credentials.id());
|
||||
|
||||
return attachment_ids;
|
||||
}
|
||||
|
||||
} // namespace nearby::sharing
|
||||
|
||||
@@ -93,6 +93,9 @@ class AttachmentContainer {
|
||||
// place.
|
||||
void ClearAttachments();
|
||||
|
||||
// Returns the list of attachment IDs of attachments in this container.
|
||||
std::vector<int64_t> GetAttachmentIds() const;
|
||||
|
||||
private:
|
||||
std::vector<TextAttachment> text_attachments_;
|
||||
std::vector<FileAttachment> file_attachments_;
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
|
||||
#include "sharing/attachment_container.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <filesystem> // NOLINT
|
||||
#include <optional>
|
||||
#include <vector>
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
@@ -58,8 +60,10 @@ bool operator==(const WifiCredentialsAttachment& lhs,
|
||||
namespace {
|
||||
|
||||
using testing::Eq;
|
||||
using testing::IsEmpty;
|
||||
using testing::IsFalse;
|
||||
using testing::IsTrue;
|
||||
using testing::SizeIs;
|
||||
using testing::UnorderedElementsAre;
|
||||
|
||||
class AttachmentContainerTest : public ::testing::Test {
|
||||
@@ -76,7 +80,7 @@ class AttachmentContainerTest : public ::testing::Test {
|
||||
"text/plain",
|
||||
/*batch_id=*/456547,
|
||||
nearby::sharing::Attachment::SourceType::kContextMenu),
|
||||
file1_(/*id=*/436346, /*size=*/100000, "someFileName", "image/jpeg",
|
||||
file1_(/*id=*/436346L, /*size=*/100000, "someFileName", "image/jpeg",
|
||||
nearby::sharing::service::proto::FileMetadata::IMAGE,
|
||||
"/usr/local/tmp", /*batch_id=*/66657L,
|
||||
nearby::sharing::Attachment::SourceType::kSelectFilesButton),
|
||||
@@ -186,5 +190,38 @@ TEST_F(AttachmentContainerTest, HasAttachments) {
|
||||
EXPECT_THAT(container.HasAttachments(), IsTrue());
|
||||
}
|
||||
|
||||
TEST_F(AttachmentContainerTest, ClearAttachments) {
|
||||
AttachmentContainer container(std::vector<TextAttachment>{text1_, text2_},
|
||||
std::vector<FileAttachment>{file1_},
|
||||
std::vector<WifiCredentialsAttachment>{wifi1_});
|
||||
|
||||
container.ClearAttachments();
|
||||
|
||||
ASSERT_THAT(container.GetTextAttachments(), SizeIs(2));
|
||||
EXPECT_THAT(container.GetTextAttachments()[0].text_body(), IsEmpty());
|
||||
EXPECT_THAT(container.GetTextAttachments()[1].text_body(), IsEmpty());
|
||||
ASSERT_THAT(container.GetFileAttachments(), SizeIs(1));
|
||||
EXPECT_THAT(container.GetFileAttachments()[0].file_path(), Eq(std::nullopt));
|
||||
ASSERT_THAT(container.GetWifiCredentialsAttachments(), SizeIs(1));
|
||||
EXPECT_THAT(container.GetWifiCredentialsAttachments()[0].password(),
|
||||
IsEmpty());
|
||||
EXPECT_THAT(container.GetWifiCredentialsAttachments()[0].is_hidden(),
|
||||
IsFalse());
|
||||
}
|
||||
|
||||
TEST_F(AttachmentContainerTest, GetAttachmentIds) {
|
||||
AttachmentContainer container(std::vector<TextAttachment>{text1_, text2_},
|
||||
std::vector<FileAttachment>{file1_},
|
||||
std::vector<WifiCredentialsAttachment>{wifi1_});
|
||||
|
||||
std::vector<int64_t> attachment_ids = container.GetAttachmentIds();
|
||||
|
||||
EXPECT_THAT(attachment_ids, SizeIs(4));
|
||||
EXPECT_THAT(attachment_ids,
|
||||
UnorderedElementsAre(text1_.id(), text2_.id(), file1_.id(),
|
||||
wifi1_.id()));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
} // namespace nearby::sharing
|
||||
|
||||
@@ -27,10 +27,10 @@ namespace sharing {
|
||||
|
||||
IncomingShareTargetInfo::IncomingShareTargetInfo(
|
||||
std::string endpoint_id, const ShareTarget& share_target,
|
||||
std::function<void(const ShareTarget&, const TransferMetadata&)>
|
||||
std::function<void(const IncomingShareTargetInfo&, const TransferMetadata&)>
|
||||
transfer_update_callback)
|
||||
: ShareTargetInfo(std::move(endpoint_id), share_target,
|
||||
std::move(transfer_update_callback)) {}
|
||||
: ShareTargetInfo(std::move(endpoint_id), share_target),
|
||||
transfer_update_callback_(std::move(transfer_update_callback)) {}
|
||||
|
||||
IncomingShareTargetInfo::IncomingShareTargetInfo(IncomingShareTargetInfo&&) =
|
||||
default;
|
||||
@@ -40,5 +40,10 @@ IncomingShareTargetInfo& IncomingShareTargetInfo::operator=(
|
||||
|
||||
IncomingShareTargetInfo::~IncomingShareTargetInfo() = default;
|
||||
|
||||
void IncomingShareTargetInfo::InvokeTransferUpdateCallback(
|
||||
const TransferMetadata& metadata) {
|
||||
transfer_update_callback_(*this, metadata);
|
||||
}
|
||||
|
||||
} // namespace sharing
|
||||
} // namespace nearby
|
||||
|
||||
@@ -26,15 +26,23 @@ namespace sharing {
|
||||
|
||||
class IncomingShareTargetInfo : public ShareTargetInfo {
|
||||
public:
|
||||
IncomingShareTargetInfo(
|
||||
std::string endpoint_id, const ShareTarget& share_target,
|
||||
std::function<void(const ShareTarget&, const TransferMetadata&)>
|
||||
transfer_update_callback);
|
||||
IncomingShareTargetInfo(std::string endpoint_id,
|
||||
const ShareTarget& share_target,
|
||||
std::function<void(const IncomingShareTargetInfo&,
|
||||
const TransferMetadata&)>
|
||||
transfer_update_callback);
|
||||
IncomingShareTargetInfo(IncomingShareTargetInfo&&);
|
||||
IncomingShareTargetInfo& operator=(IncomingShareTargetInfo&&);
|
||||
~IncomingShareTargetInfo() override;
|
||||
|
||||
bool IsIncoming() const override { return true; }
|
||||
|
||||
protected:
|
||||
void InvokeTransferUpdateCallback(const TransferMetadata& metadata) override;
|
||||
|
||||
private:
|
||||
std::function<void(const IncomingShareTargetInfo&, const TransferMetadata&)>
|
||||
transfer_update_callback_;
|
||||
};
|
||||
|
||||
} // namespace sharing
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -24,7 +24,7 @@
|
||||
#include <optional>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/base/attributes.h"
|
||||
@@ -323,25 +323,25 @@ class NearbySharingServiceImpl
|
||||
void OnTransferStarted(bool is_incoming);
|
||||
|
||||
void ReceivePayloads(
|
||||
ShareTarget share_target,
|
||||
ShareTargetInfo& share_target_info,
|
||||
std::function<void(StatusCodes status_codes)> status_codes_callback);
|
||||
StatusCodes SendPayloads(const ShareTarget& share_target);
|
||||
StatusCodes SendPayloads(ShareTargetInfo& info);
|
||||
void OnPayloadPathsRegistered(
|
||||
const ShareTarget& share_target,
|
||||
ShareTargetInfo& info,
|
||||
std::function<void(StatusCodes status_codes)> status_codes_callback);
|
||||
|
||||
void OnOutgoingConnection(const ShareTarget& share_target,
|
||||
absl::Time connect_start_time,
|
||||
NearbyConnection* connection);
|
||||
void SendIntroduction(const ShareTarget& share_target,
|
||||
void OnOutgoingConnection(absl::Time connect_start_time,
|
||||
NearbyConnection* connection,
|
||||
OutgoingShareTargetInfo& info);
|
||||
void SendIntroduction(OutgoingShareTargetInfo& info,
|
||||
std::optional<std::string> four_digit_token);
|
||||
|
||||
void CreatePayloads(OutgoingShareTargetInfo& info,
|
||||
std::function<void(ShareTarget, bool)> callback);
|
||||
std::function<void(int64_t, bool)> callback);
|
||||
void OnCreatePayloads(std::vector<uint8_t> endpoint_info,
|
||||
ShareTarget share_target, bool success);
|
||||
void OnOpenFiles(ShareTarget share_target,
|
||||
std::function<void(ShareTarget, bool)> callback,
|
||||
int64_t share_target_id, bool success);
|
||||
void OnOpenFiles(int64_t share_target_id,
|
||||
std::function<void(int64_t, bool)> callback,
|
||||
std::vector<NearbyFileHandler::FileInfo> files);
|
||||
std::vector<Payload> CreateTextPayloads(
|
||||
const std::vector<TextAttachment>& attachments);
|
||||
@@ -360,10 +360,12 @@ class NearbySharingServiceImpl
|
||||
void OnIncomingAdvertisementDecoded(
|
||||
absl::string_view endpoint_id, int64_t placeholder_share_target_id,
|
||||
std::unique_ptr<Advertisement> advertisement);
|
||||
void OnIncomingTransferUpdate(const ShareTarget& share_target,
|
||||
const TransferMetadata& metadata);
|
||||
void OnOutgoingTransferUpdate(const ShareTarget& share_target,
|
||||
const TransferMetadata& metadata);
|
||||
void OnIncomingTransferUpdate(
|
||||
const IncomingShareTargetInfo& share_target_info,
|
||||
const TransferMetadata& metadata);
|
||||
void OnOutgoingTransferUpdate(
|
||||
OutgoingShareTargetInfo& share_target_info,
|
||||
const TransferMetadata& metadata);
|
||||
void CloseConnection(int64_t share_target_id);
|
||||
void OnIncomingDecryptedCertificate(
|
||||
absl::string_view endpoint_id, const Advertisement& advertisement,
|
||||
@@ -376,31 +378,31 @@ class NearbySharingServiceImpl
|
||||
::location::nearby::proto::sharing::OSType)>
|
||||
callback);
|
||||
void OnIncomingConnectionKeyVerificationDone(
|
||||
ShareTarget share_target, std::optional<std::string> four_digit_token,
|
||||
int64_t share_target_id, std::optional<std::string> four_digit_token,
|
||||
PairedKeyVerificationRunner::PairedKeyVerificationResult result,
|
||||
::location::nearby::proto::sharing::OSType share_target_os_type);
|
||||
void OnOutgoingConnectionKeyVerificationDone(
|
||||
const ShareTarget& share_target,
|
||||
int64_t share_target_id,
|
||||
std::optional<std::string> four_digit_token,
|
||||
PairedKeyVerificationRunner::PairedKeyVerificationResult result,
|
||||
::location::nearby::proto::sharing::OSType share_target_os_type);
|
||||
void ReceiveIntroduction(ShareTarget share_target,
|
||||
void ReceiveIntroduction(const IncomingShareTargetInfo& info,
|
||||
std::optional<std::string> four_digit_token);
|
||||
void OnReceivedIntroduction(
|
||||
ShareTarget share_target, std::optional<std::string> four_digit_token,
|
||||
int64_t share_target_id, std::optional<std::string> four_digit_token,
|
||||
std::optional<nearby::sharing::service::proto::V1Frame> frame);
|
||||
void ReceiveConnectionResponse(ShareTarget share_target);
|
||||
void ReceiveConnectionResponse(ShareTargetInfo& info);
|
||||
void OnReceiveConnectionResponse(
|
||||
ShareTarget share_target,
|
||||
int64_t share_target_id,
|
||||
std::optional<nearby::sharing::service::proto::V1Frame> frame);
|
||||
void OnStorageCheckCompleted(ShareTarget share_target,
|
||||
void OnStorageCheckCompleted(int64_t share_target_id,
|
||||
std::optional<std::string> four_digit_token,
|
||||
bool is_out_of_storage);
|
||||
void OnFrameRead(
|
||||
ShareTarget share_target,
|
||||
int64_t share_target_id,
|
||||
std::optional<nearby::sharing::service::proto::V1Frame> frame);
|
||||
void HandleProgressUpdateFrame(
|
||||
const ShareTarget& share_target,
|
||||
int64_t share_target_id,
|
||||
const nearby::sharing::service::proto::ProgressUpdateFrame&
|
||||
progress_update_frame);
|
||||
|
||||
@@ -419,8 +421,8 @@ class NearbySharingServiceImpl
|
||||
|
||||
void OnPayloadTransferUpdate(int64_t share_target_id,
|
||||
TransferMetadata metadata);
|
||||
bool OnIncomingPayloadsComplete(ShareTarget& share_target);
|
||||
void RemoveIncomingPayloads(ShareTarget share_target);
|
||||
bool OnIncomingPayloadsComplete(int64_t share_target_id);
|
||||
void RemoveIncomingPayloads(const IncomingShareTargetInfo& share_target_info);
|
||||
void Disconnect(int64_t share_target_id, TransferMetadata metadata);
|
||||
void OnDisconnectingConnectionTimeout(absl::string_view endpoint_id);
|
||||
|
||||
@@ -485,7 +487,7 @@ class NearbySharingServiceImpl
|
||||
absl::AnyInvocable<void()> task);
|
||||
|
||||
// Returns a 1-based position.It is used by group share feature.
|
||||
int GetConnectedShareTargetPos(const ShareTarget& target);
|
||||
int GetConnectedShareTargetPos();
|
||||
|
||||
// Returns the share target count. It is used by group share feature.
|
||||
int GetConnectedShareTargetCount();
|
||||
@@ -497,7 +499,7 @@ class NearbySharingServiceImpl
|
||||
TransportType GetTransportType(const AttachmentContainer& container) const;
|
||||
|
||||
// Update file path for the file attachment.
|
||||
void UpdateFilePath(ShareTarget& share_target);
|
||||
void UpdateFilePath(AttachmentContainer& container);
|
||||
// Returns true if Shutdown() has been called.
|
||||
bool IsShuttingDown();
|
||||
|
||||
@@ -554,10 +556,10 @@ class NearbySharingServiceImpl
|
||||
// Registers the most recent TransferMetadata and ShareTarget used for
|
||||
// transitioning notifications between foreground surfaces and background
|
||||
// surfaces. Empty if no metadata is available.
|
||||
std::optional<std::pair<ShareTarget, TransferMetadata>>
|
||||
std::optional<std::tuple<ShareTarget, AttachmentContainer, TransferMetadata>>
|
||||
last_incoming_metadata_;
|
||||
// The most recent outgoing TransferMetadata and ShareTarget.
|
||||
std::optional<std::pair<ShareTarget, TransferMetadata>>
|
||||
std::optional<std::tuple<ShareTarget, AttachmentContainer, TransferMetadata>>
|
||||
last_outgoing_metadata_;
|
||||
// A map of ShareTarget id to IncomingShareTargetInfo. This lets us know which
|
||||
// Nearby Connections endpoint and public certificate are related to the
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
#include "sharing/fast_initiation/nearby_fast_initiation_impl.h"
|
||||
#include "sharing/file_attachment.h"
|
||||
#include "sharing/flags/generated/nearby_sharing_feature_flags.h"
|
||||
#include "sharing/incoming_share_target_info.h"
|
||||
#include "sharing/internal/api/mock_app_info.h"
|
||||
#include "sharing/internal/api/mock_sharing_platform.h"
|
||||
#include "sharing/internal/api/preference_manager.h"
|
||||
@@ -1715,7 +1716,6 @@ TEST_F(NearbySharingServiceImplTest,
|
||||
.WillOnce([&](ShareTarget share_target) {
|
||||
EXPECT_FALSE(share_target.is_incoming);
|
||||
EXPECT_TRUE(share_target.is_known);
|
||||
EXPECT_FALSE(share_target.attachment_container.HasAttachments());
|
||||
EXPECT_EQ(share_target.device_name, kDeviceName);
|
||||
EXPECT_EQ(share_target.type, kDeviceType);
|
||||
EXPECT_TRUE(share_target.device_id);
|
||||
@@ -1769,7 +1769,6 @@ TEST_F(NearbySharingServiceImplTest, RegisterSendSurfaceEmptyCertificate) {
|
||||
.WillOnce([](ShareTarget share_target) {
|
||||
EXPECT_FALSE(share_target.is_incoming);
|
||||
EXPECT_FALSE(share_target.is_known);
|
||||
EXPECT_FALSE(share_target.attachment_container.HasAttachments());
|
||||
EXPECT_EQ(share_target.device_name, kDeviceName);
|
||||
EXPECT_FALSE(share_target.image_url);
|
||||
EXPECT_EQ(share_target.type, kDeviceType);
|
||||
@@ -4490,17 +4489,16 @@ TEST_F(NearbySharingServiceImplTest, RetryDiscoveredEndpointsDownloadLimit) {
|
||||
|
||||
TEST_F(NearbySharingServiceImplTest, OpenSharedTarget) {
|
||||
ShareTarget share_target;
|
||||
share_target.attachment_container.AddTextAttachment(
|
||||
auto container = std::make_unique<AttachmentContainer>();
|
||||
container->AddTextAttachment(
|
||||
TextAttachment(TextMetadata::TEXT, "body", "title", "mime"));
|
||||
NearbySharingService::StatusCodes result;
|
||||
absl::Notification notification;
|
||||
service_->Open(
|
||||
share_target,
|
||||
std::make_unique<AttachmentContainer>(share_target.attachment_container),
|
||||
[&](NearbySharingService::StatusCodes status_code) {
|
||||
result = status_code;
|
||||
notification.Notify();
|
||||
});
|
||||
service_->Open(share_target, std::move(container),
|
||||
[&](NearbySharingService::StatusCodes status_code) {
|
||||
result = status_code;
|
||||
notification.Notify();
|
||||
});
|
||||
|
||||
ASSERT_TRUE(notification.WaitForNotificationWithTimeout(kWaitTimeout));
|
||||
EXPECT_EQ(result, NearbySharingService::StatusCodes::kOk);
|
||||
@@ -5040,7 +5038,10 @@ TEST_F(NearbySharingServiceImplTest, RemoveIncomingPayloads) {
|
||||
UnorderedElementsAre("test1.txt", "test2.txt"));
|
||||
ShareTarget share_target;
|
||||
share_target.is_incoming = true;
|
||||
service_->RemoveIncomingPayloads(share_target);
|
||||
IncomingShareTargetInfo share_target_info(
|
||||
"endpoint_id", share_target,
|
||||
[](const IncomingShareTargetInfo&, const TransferMetadata&) {});
|
||||
service_->RemoveIncomingPayloads(share_target_info);
|
||||
EXPECT_EQ(
|
||||
fake_nearby_connections_manager_->GetUnknownFilePathsToDeleteForTesting()
|
||||
.size(),
|
||||
|
||||
@@ -30,10 +30,10 @@ namespace sharing {
|
||||
|
||||
OutgoingShareTargetInfo::OutgoingShareTargetInfo(
|
||||
std::string endpoint_id, const ShareTarget& share_target,
|
||||
std::function<void(const ShareTarget&, const TransferMetadata&)>
|
||||
std::function<void(OutgoingShareTargetInfo&, const TransferMetadata&)>
|
||||
transfer_update_callback)
|
||||
: ShareTargetInfo(std::move(endpoint_id), share_target,
|
||||
std::move(transfer_update_callback)) {}
|
||||
: ShareTargetInfo(std::move(endpoint_id), share_target),
|
||||
transfer_update_callback_(std::move(transfer_update_callback)) {}
|
||||
|
||||
OutgoingShareTargetInfo::OutgoingShareTargetInfo(OutgoingShareTargetInfo&&) =
|
||||
default;
|
||||
@@ -43,6 +43,11 @@ OutgoingShareTargetInfo& OutgoingShareTargetInfo::operator=(
|
||||
|
||||
OutgoingShareTargetInfo::~OutgoingShareTargetInfo() = default;
|
||||
|
||||
void OutgoingShareTargetInfo::InvokeTransferUpdateCallback(
|
||||
const TransferMetadata& metadata) {
|
||||
transfer_update_callback_(*this, metadata);
|
||||
}
|
||||
|
||||
std::vector<Payload> OutgoingShareTargetInfo::ExtractTextPayloads() {
|
||||
return std::move(text_payloads_);
|
||||
}
|
||||
|
||||
@@ -32,10 +32,11 @@ namespace sharing {
|
||||
// A description of the outgoing connection to a remote device.
|
||||
class OutgoingShareTargetInfo : public ShareTargetInfo {
|
||||
public:
|
||||
OutgoingShareTargetInfo(
|
||||
std::string endpoint_id, const ShareTarget& share_target,
|
||||
std::function<void(const ShareTarget&, const TransferMetadata&)>
|
||||
transfer_update_callback);
|
||||
OutgoingShareTargetInfo(std::string endpoint_id,
|
||||
const ShareTarget& share_target,
|
||||
std::function<void(OutgoingShareTargetInfo&,
|
||||
const TransferMetadata&)>
|
||||
transfer_update_callback);
|
||||
OutgoingShareTargetInfo(OutgoingShareTargetInfo&&);
|
||||
OutgoingShareTargetInfo& operator=(OutgoingShareTargetInfo&&);
|
||||
~OutgoingShareTargetInfo() override;
|
||||
@@ -81,12 +82,17 @@ class OutgoingShareTargetInfo : public ShareTargetInfo {
|
||||
std::vector<Payload> ExtractWifiCredentialsPayloads();
|
||||
std::optional<Payload> ExtractNextPayload();
|
||||
|
||||
protected:
|
||||
void InvokeTransferUpdateCallback(const TransferMetadata& metadata) override;
|
||||
|
||||
private:
|
||||
std::optional<std::string> obfuscated_gaia_id_;
|
||||
std::vector<Payload> text_payloads_;
|
||||
std::vector<Payload> file_payloads_;
|
||||
std::vector<Payload> wifi_credentials_payloads_;
|
||||
Status connection_layer_status_;
|
||||
std::function<void(OutgoingShareTargetInfo&, const TransferMetadata&)>
|
||||
transfer_update_callback_;
|
||||
};
|
||||
|
||||
} // namespace sharing
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
#include <cinttypes>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
@@ -26,11 +25,7 @@
|
||||
#include "absl/strings/str_format.h"
|
||||
#include "absl/strings/str_join.h"
|
||||
#include "internal/network/url.h"
|
||||
#include "sharing/attachment.h"
|
||||
#include "sharing/common/nearby_share_enums.h"
|
||||
#include "sharing/file_attachment.h"
|
||||
#include "sharing/text_attachment.h"
|
||||
#include "sharing/wifi_credentials_attachment.h"
|
||||
|
||||
namespace nearby {
|
||||
namespace sharing {
|
||||
@@ -45,17 +40,11 @@ ShareTarget::ShareTarget() { id = ++kLastGeneratedId; }
|
||||
|
||||
ShareTarget::ShareTarget(
|
||||
std::string device_name, Url image_url, ShareTargetType type,
|
||||
std::vector<TextAttachment> text_attachments,
|
||||
std::vector<FileAttachment> file_attachments,
|
||||
std::vector<WifiCredentialsAttachment> wifi_credentials_attachments,
|
||||
bool is_incoming, std::optional<std::string> full_name, bool is_known,
|
||||
std::optional<std::string> device_id, bool for_self_share)
|
||||
: device_name(std::move(device_name)),
|
||||
image_url(std::move(image_url)),
|
||||
type(type),
|
||||
attachment_container(std::move(text_attachments),
|
||||
std::move(file_attachments),
|
||||
std::move(wifi_credentials_attachments)),
|
||||
is_incoming(is_incoming),
|
||||
full_name(std::move(full_name)),
|
||||
is_known(is_known),
|
||||
@@ -74,27 +63,6 @@ ShareTarget& ShareTarget::operator=(ShareTarget&&) = default;
|
||||
|
||||
ShareTarget::~ShareTarget() = default;
|
||||
|
||||
std::vector<int64_t> ShareTarget::GetAttachmentIds() const {
|
||||
std::vector<int64_t> attachment_ids;
|
||||
|
||||
attachment_ids.reserve(attachment_container.GetAttachmentCount());
|
||||
for (const auto& file : attachment_container.GetFileAttachments())
|
||||
attachment_ids.push_back(file.id());
|
||||
|
||||
for (const auto& text : attachment_container.GetTextAttachments())
|
||||
attachment_ids.push_back(text.id());
|
||||
|
||||
for (const auto& wifi_credentials :
|
||||
attachment_container.GetWifiCredentialsAttachments())
|
||||
attachment_ids.push_back(wifi_credentials.id());
|
||||
|
||||
return attachment_ids;
|
||||
}
|
||||
|
||||
int64_t ShareTarget::GetTotalAttachmentsSize() const {
|
||||
return attachment_container.GetTotalAttachmentsSize();
|
||||
}
|
||||
|
||||
std::string ShareTarget::ToString() const {
|
||||
std::vector<std::string> fmt;
|
||||
|
||||
@@ -109,15 +77,6 @@ std::string ShareTarget::ToString() const {
|
||||
if (device_id) {
|
||||
fmt.push_back(absl::StrFormat("device_id: %s", *device_id));
|
||||
}
|
||||
fmt.push_back(
|
||||
absl::StrFormat("file_attachments_size: %d",
|
||||
attachment_container.GetFileAttachments().size()));
|
||||
fmt.push_back(
|
||||
absl::StrFormat("text_attachments_size: %d",
|
||||
attachment_container.GetTextAttachments().size()));
|
||||
fmt.push_back(absl::StrFormat(
|
||||
"wifi_credentials_attachments_size: %d",
|
||||
attachment_container.GetWifiCredentialsAttachments().size()));
|
||||
fmt.push_back(absl::StrFormat("is_known: %d", is_known));
|
||||
fmt.push_back(absl::StrFormat("is_incoming: %d", is_incoming));
|
||||
fmt.push_back(absl::StrFormat("for_self_share: %d", for_self_share));
|
||||
|
||||
+1
-11
@@ -18,14 +18,9 @@
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "internal/network/url.h"
|
||||
#include "sharing/attachment_container.h"
|
||||
#include "sharing/common/nearby_share_enums.h"
|
||||
#include "sharing/file_attachment.h"
|
||||
#include "sharing/text_attachment.h"
|
||||
#include "sharing/wifi_credentials_attachment.h"
|
||||
|
||||
namespace nearby {
|
||||
namespace sharing {
|
||||
@@ -36,9 +31,7 @@ struct ShareTarget {
|
||||
ShareTarget();
|
||||
ShareTarget(
|
||||
std::string device_name, ::nearby::network::Url image_url,
|
||||
ShareTargetType type, std::vector<TextAttachment> text_attachments,
|
||||
std::vector<FileAttachment> file_attachments,
|
||||
std::vector<WifiCredentialsAttachment> wifi_credentials_attachments,
|
||||
ShareTargetType type,
|
||||
bool is_incoming, std::optional<std::string> full_name, bool is_known,
|
||||
std::optional<std::string> device_id, bool for_self_share);
|
||||
ShareTarget(const ShareTarget&);
|
||||
@@ -47,8 +40,6 @@ struct ShareTarget {
|
||||
ShareTarget& operator=(ShareTarget&&);
|
||||
~ShareTarget();
|
||||
|
||||
std::vector<int64_t> GetAttachmentIds() const;
|
||||
int64_t GetTotalAttachmentsSize() const;
|
||||
std::string ToString() const;
|
||||
|
||||
int64_t id;
|
||||
@@ -56,7 +47,6 @@ struct ShareTarget {
|
||||
// Uri that points to an image of the ShareTarget, if one exists.
|
||||
std::optional<::nearby::network::Url> image_url;
|
||||
ShareTargetType type = ShareTargetType::kUnknown;
|
||||
AttachmentContainer attachment_container;
|
||||
bool is_incoming = false;
|
||||
std::optional<std::string> full_name;
|
||||
// True if the local device has the PublicCertificate this target is
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
#include "sharing/share_target_info.h"
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
@@ -27,13 +26,10 @@ namespace nearby {
|
||||
namespace sharing {
|
||||
|
||||
ShareTargetInfo::ShareTargetInfo(
|
||||
std::string endpoint_id, const ShareTarget& share_target,
|
||||
std::function<void(const ShareTarget&, const TransferMetadata&)>
|
||||
transfer_update_callback)
|
||||
std::string endpoint_id, const ShareTarget& share_target)
|
||||
: endpoint_id_(std::move(endpoint_id)),
|
||||
self_share_(share_target.for_self_share),
|
||||
share_target_(share_target),
|
||||
transfer_update_callback_(std::move(transfer_update_callback)) {}
|
||||
share_target_(share_target) {}
|
||||
|
||||
ShareTargetInfo::ShareTargetInfo(ShareTargetInfo&&) = default;
|
||||
|
||||
@@ -41,28 +37,20 @@ ShareTargetInfo& ShareTargetInfo::operator=(ShareTargetInfo&&) = default;
|
||||
|
||||
ShareTargetInfo::~ShareTargetInfo() = default;
|
||||
|
||||
void ShareTargetInfo::set_share_target(const ShareTarget& share_target) {
|
||||
NL_DCHECK(share_target.id == share_target_.id);
|
||||
NL_DCHECK(share_target.for_self_share == share_target_.for_self_share);
|
||||
share_target_ = share_target;
|
||||
}
|
||||
|
||||
void ShareTargetInfo::UpdateTransferMetadata(
|
||||
const TransferMetadata& transfer_metadata) {
|
||||
if (transfer_update_callback_) {
|
||||
if (got_final_status_) {
|
||||
// If we already got a final status, we can ignore any subsequent final
|
||||
// statuses caused by race conditions.
|
||||
NL_VLOG(1)
|
||||
<< __func__ << ": Transfer update decorator swallowed "
|
||||
<< "status update because a final status was already received: "
|
||||
<< share_target_.id << ": "
|
||||
<< TransferMetadata::StatusToString(transfer_metadata.status());
|
||||
return;
|
||||
}
|
||||
got_final_status_ = transfer_metadata.is_final_status();
|
||||
transfer_update_callback_(share_target_, transfer_metadata);
|
||||
if (got_final_status_) {
|
||||
// If we already got a final status, we can ignore any subsequent final
|
||||
// statuses caused by race conditions.
|
||||
NL_VLOG(1)
|
||||
<< __func__ << ": Transfer update decorator swallowed "
|
||||
<< "status update because a final status was already received: "
|
||||
<< share_target_.id << ": "
|
||||
<< TransferMetadata::StatusToString(transfer_metadata.status());
|
||||
return;
|
||||
}
|
||||
got_final_status_ = transfer_metadata.is_final_status();
|
||||
InvokeTransferUpdateCallback(transfer_metadata);
|
||||
}
|
||||
|
||||
void ShareTargetInfo::set_disconnect_status(
|
||||
|
||||
+24
-13
@@ -16,7 +16,6 @@
|
||||
#define THIRD_PARTY_NEARBY_SHARING_SHARE_TARGET_INFO_H_
|
||||
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
@@ -24,6 +23,7 @@
|
||||
|
||||
#include "absl/time/time.h"
|
||||
#include "proto/sharing_enums.pb.h"
|
||||
#include "sharing/attachment_container.h"
|
||||
#include "sharing/certificates/nearby_share_decrypted_public_certificate.h"
|
||||
#include "sharing/incoming_frames_reader.h"
|
||||
#include "sharing/nearby_connection.h"
|
||||
@@ -40,9 +40,7 @@ namespace sharing {
|
||||
class ShareTargetInfo {
|
||||
public:
|
||||
ShareTargetInfo(
|
||||
std::string endpoint_id, const ShareTarget& share_target,
|
||||
std::function<void(const ShareTarget&, const TransferMetadata&)>
|
||||
transfer_update_callback);
|
||||
std::string endpoint_id, const ShareTarget& share_target);
|
||||
ShareTargetInfo(ShareTargetInfo&&);
|
||||
ShareTargetInfo& operator=(ShareTargetInfo&&);
|
||||
virtual ~ShareTargetInfo();
|
||||
@@ -87,7 +85,7 @@ class ShareTargetInfo {
|
||||
}
|
||||
|
||||
std::weak_ptr<NearbyConnectionsManager::PayloadStatusListener>
|
||||
payload_tracker() {
|
||||
payload_tracker() const {
|
||||
return payload_tracker_->GetWeakPtr();
|
||||
}
|
||||
|
||||
@@ -95,11 +93,11 @@ class ShareTargetInfo {
|
||||
payload_tracker_ = std::move(payload_tracker);
|
||||
}
|
||||
|
||||
int64_t session_id() { return session_id_; }
|
||||
int64_t session_id() const { return session_id_; }
|
||||
|
||||
void set_session_id(int64_t session_id) { session_id_ = session_id; }
|
||||
|
||||
std::optional<absl::Time> connection_start_time() {
|
||||
std::optional<absl::Time> connection_start_time() const {
|
||||
return connection_start_time_;
|
||||
}
|
||||
|
||||
@@ -108,7 +106,9 @@ class ShareTargetInfo {
|
||||
connection_start_time_ = connection_start_time;
|
||||
}
|
||||
|
||||
::location::nearby::proto::sharing::OSType os_type() { return os_type_; }
|
||||
::location::nearby::proto::sharing::OSType os_type() const {
|
||||
return os_type_;
|
||||
}
|
||||
|
||||
void set_os_type(::location::nearby::proto::sharing::OSType os_type) {
|
||||
os_type_ = os_type;
|
||||
@@ -116,9 +116,7 @@ class ShareTargetInfo {
|
||||
|
||||
bool self_share() const { return self_share_; }
|
||||
|
||||
void set_share_target(const ShareTarget& share_target);
|
||||
|
||||
ShareTarget share_target() const { return share_target_; }
|
||||
const ShareTarget& share_target() const { return share_target_; }
|
||||
|
||||
// Sets the status to send in the TransferMetadataUpdate on connection
|
||||
// disconnect. If |status| is kUnknown, then no TransferMetadataUpdate will be
|
||||
@@ -130,6 +128,20 @@ class ShareTargetInfo {
|
||||
}
|
||||
|
||||
void OnDisconnect();
|
||||
void SetAttachmentContainer(AttachmentContainer container) {
|
||||
attachment_container_ = std::move(container);
|
||||
}
|
||||
const AttachmentContainer& attachment_container() const {
|
||||
return attachment_container_;
|
||||
}
|
||||
|
||||
AttachmentContainer& mutable_attachment_container() {
|
||||
return attachment_container_;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void InvokeTransferUpdateCallback(
|
||||
const TransferMetadata& metadata) = 0;
|
||||
|
||||
private:
|
||||
std::string endpoint_id_;
|
||||
@@ -146,12 +158,11 @@ class ShareTargetInfo {
|
||||
bool self_share_ = false;
|
||||
ShareTarget share_target_;
|
||||
bool got_final_status_ = false;
|
||||
std::function<void(const ShareTarget&, const TransferMetadata&)>
|
||||
transfer_update_callback_;
|
||||
// The status sent in the TransferMetadataUpdate on connection disconnect.
|
||||
// If status is kUnknown, then no TransferMetadataUpdate will be sent.
|
||||
TransferMetadata::Status disconnect_status_ =
|
||||
TransferMetadata::Status::kUnknown;
|
||||
AttachmentContainer attachment_container_;
|
||||
};
|
||||
|
||||
} // namespace sharing
|
||||
|
||||
@@ -14,12 +14,10 @@
|
||||
|
||||
#include "sharing/share_target_info.h"
|
||||
|
||||
#include <functional>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "sharing/share_target.h"
|
||||
@@ -28,38 +26,42 @@
|
||||
|
||||
namespace nearby::sharing {
|
||||
namespace {
|
||||
using testing::_;
|
||||
using testing::Eq;
|
||||
using testing::Invoke;
|
||||
using testing::IsTrue;
|
||||
using testing::MockFunction;
|
||||
|
||||
constexpr absl::string_view kEndpointId = "12345";
|
||||
|
||||
// A test class which makes ShareTargetInfo testable since the class is
|
||||
// abstract.
|
||||
class TestShareTargetInfo : public ShareTargetInfo {
|
||||
public:
|
||||
TestShareTargetInfo(
|
||||
std::string endpoint_id, const ShareTarget& share_target,
|
||||
std::function<void(const ShareTarget&, const TransferMetadata&)>
|
||||
transfer_update_callback)
|
||||
: ShareTargetInfo(std::move(endpoint_id), share_target,
|
||||
std::move(transfer_update_callback)),
|
||||
std::string endpoint_id, const ShareTarget& share_target)
|
||||
: ShareTargetInfo(std::move(endpoint_id), share_target),
|
||||
is_incoming_(share_target.is_incoming) {}
|
||||
|
||||
bool IsIncoming() const override { return is_incoming_; }
|
||||
|
||||
int TransferUpdateCount() { return transfer_update_count_; }
|
||||
|
||||
std::optional<TransferMetadata> LastTransferMetadata() {
|
||||
return last_transfer_metadata_;
|
||||
}
|
||||
|
||||
protected:
|
||||
void InvokeTransferUpdateCallback(
|
||||
const TransferMetadata& metadata) override {
|
||||
++transfer_update_count_;
|
||||
last_transfer_metadata_ = metadata;
|
||||
}
|
||||
|
||||
private:
|
||||
const bool is_incoming_;
|
||||
int transfer_update_count_ = 0;
|
||||
std::optional<TransferMetadata> last_transfer_metadata_;
|
||||
};
|
||||
|
||||
TEST(ShareTargetInfoTest, UpdateTransferMetadata) {
|
||||
MockFunction<void(const ShareTarget&, const TransferMetadata&)>
|
||||
update_callback;
|
||||
ShareTarget share_target;
|
||||
TestShareTargetInfo info(std::string(kEndpointId), share_target,
|
||||
update_callback.AsStdFunction());
|
||||
|
||||
EXPECT_CALL(update_callback, Call(_, _)).Times(2);
|
||||
TestShareTargetInfo info(std::string(kEndpointId), share_target);
|
||||
|
||||
info.UpdateTransferMetadata(
|
||||
TransferMetadataBuilder()
|
||||
@@ -69,16 +71,13 @@ TEST(ShareTargetInfoTest, UpdateTransferMetadata) {
|
||||
TransferMetadataBuilder()
|
||||
.set_status(TransferMetadata::Status::kInProgress)
|
||||
.build());
|
||||
|
||||
EXPECT_EQ(info.TransferUpdateCount(), 2);
|
||||
}
|
||||
|
||||
TEST(ShareTargetInfoTest, UpdateTransferMetadataAfterFinalStatus) {
|
||||
MockFunction<void(const ShareTarget&, const TransferMetadata&)>
|
||||
update_callback;
|
||||
ShareTarget share_target;
|
||||
TestShareTargetInfo info(std::string(kEndpointId), share_target,
|
||||
update_callback.AsStdFunction());
|
||||
|
||||
EXPECT_CALL(update_callback, Call(_, _));
|
||||
TestShareTargetInfo info(std::string(kEndpointId), share_target);
|
||||
|
||||
info.UpdateTransferMetadata(
|
||||
TransferMetadataBuilder()
|
||||
@@ -88,36 +87,31 @@ TEST(ShareTargetInfoTest, UpdateTransferMetadataAfterFinalStatus) {
|
||||
TransferMetadataBuilder()
|
||||
.set_status(TransferMetadata::Status::kInProgress)
|
||||
.build());
|
||||
|
||||
EXPECT_EQ(info.TransferUpdateCount(), 1);
|
||||
}
|
||||
|
||||
TEST(ShareTargetInfoTest, SetDisconnectStatus) {
|
||||
MockFunction<void(const ShareTarget&, const TransferMetadata&)>
|
||||
update_callback;
|
||||
ShareTarget share_target;
|
||||
TestShareTargetInfo info(std::string(kEndpointId), share_target,
|
||||
update_callback.AsStdFunction());
|
||||
TestShareTargetInfo info(std::string(kEndpointId), share_target);
|
||||
|
||||
info.set_disconnect_status(TransferMetadata::Status::kCancelled);
|
||||
EXPECT_EQ(info.disconnect_status(), TransferMetadata::Status::kCancelled);
|
||||
}
|
||||
|
||||
TEST(ShareTargetInfoTest, OnDisconnect) {
|
||||
MockFunction<void(const ShareTarget&, const TransferMetadata&)>
|
||||
update_callback;
|
||||
ShareTarget share_target;
|
||||
TestShareTargetInfo info(std::string(kEndpointId), share_target,
|
||||
update_callback.AsStdFunction());
|
||||
TestShareTargetInfo info(std::string(kEndpointId), share_target);
|
||||
info.set_disconnect_status(TransferMetadata::Status::kCancelled);
|
||||
EXPECT_EQ(info.disconnect_status(), TransferMetadata::Status::kCancelled);
|
||||
EXPECT_CALL(update_callback, Call(_, _))
|
||||
.WillOnce(Invoke([](const ShareTarget& share_target,
|
||||
const TransferMetadata& transfer_metadata) {
|
||||
EXPECT_THAT(transfer_metadata.status(),
|
||||
Eq(TransferMetadata::Status::kCancelled));
|
||||
EXPECT_THAT(transfer_metadata.is_final_status(), IsTrue());
|
||||
}));
|
||||
|
||||
info.OnDisconnect();
|
||||
|
||||
EXPECT_EQ(info.TransferUpdateCount(), 1);
|
||||
ASSERT_TRUE(info.LastTransferMetadata().has_value());
|
||||
EXPECT_EQ(info.LastTransferMetadata()->status(),
|
||||
TransferMetadata::Status::kCancelled);
|
||||
EXPECT_TRUE(info.LastTransferMetadata()->is_final_status());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -20,9 +20,6 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "internal/network/url.h"
|
||||
#include "sharing/common/nearby_share_enums.h"
|
||||
#include "sharing/file_attachment.h"
|
||||
#include "sharing/text_attachment.h"
|
||||
#include "sharing/wifi_credentials_attachment.h"
|
||||
|
||||
namespace nearby {
|
||||
namespace sharing {
|
||||
@@ -38,9 +35,6 @@ std::vector<ShareTargetToStringTestData> GetTestData() {
|
||||
ShareTarget share_target2{"test_name",
|
||||
::nearby::network::Url(),
|
||||
ShareTargetType::kPhone,
|
||||
std::vector<TextAttachment>(),
|
||||
std::vector<FileAttachment>(),
|
||||
std::vector<WifiCredentialsAttachment>(),
|
||||
/* is_incoming */ true,
|
||||
"test_full_name",
|
||||
/* is_known */ false,
|
||||
@@ -53,16 +47,12 @@ std::vector<ShareTargetToStringTestData> GetTestData() {
|
||||
ShareTargetToStringTestData>* kShareTargetToStringTestData =
|
||||
new std::vector<ShareTargetToStringTestData>({
|
||||
{share_target1,
|
||||
"ShareTarget<id: 1, device_name: , "
|
||||
"file_attachments_size: 0, text_attachments_size: 0, "
|
||||
"wifi_credentials_attachments_size: 0, is_known: 0, is_incoming: 0, "
|
||||
"ShareTarget<id: 1, device_name: , is_known: 0, is_incoming: 0, "
|
||||
"for_self_share: 0, vendor_id: 0>"},
|
||||
{share_target2,
|
||||
"ShareTarget<id: 2, device_name: test_name, full_name: "
|
||||
"test_full_name, image_url: ://:0, device_id: test_device_id, "
|
||||
"file_attachments_size: 0, text_attachments_size: 0, "
|
||||
"wifi_credentials_attachments_size: 0, is_known: 0, is_incoming: 1, "
|
||||
"for_self_share: 1, vendor_id: 0>"},
|
||||
"is_known: 0, is_incoming: 1, for_self_share: 1, vendor_id: 0>"},
|
||||
});
|
||||
|
||||
return *kShareTargetToStringTestData;
|
||||
|
||||
Reference in New Issue
Block a user