| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <utility> |
| |
| #include "chrome/browser/nearby_sharing/logging/logging.h" |
| #include "chrome/browser/nearby_sharing/transfer_metadata.h" |
| |
| // static |
| bool TransferMetadata::IsFinalStatus(Status status) { |
| switch (status) { |
| case Status::kAwaitingRemoteAcceptanceFailed: |
| case Status::kComplete: |
| case Status::kFailed: |
| case Status::kRejected: |
| case Status::kCancelled: |
| case Status::kTimedOut: |
| case Status::kMediaUnavailable: |
| case Status::kNotEnoughSpace: |
| case Status::kUnsupportedAttachmentType: |
| case Status::kExternalProviderLaunched: |
| case Status::kDecodeAdvertisementFailed: |
| case Status::kMissingTransferUpdateCallback: |
| case Status::kMissingShareTarget: |
| case Status::kMissingEndpointId: |
| case Status::kMissingPayloads: |
| case Status::kPairedKeyVerificationFailed: |
| case Status::kInvalidIntroductionFrame: |
| case Status::kIncompletePayloads: |
| case Status::kFailedToCreateShareTarget: |
| case Status::kFailedToInitiateOutgoingConnection: |
| case Status::kFailedToReadOutgoingConnectionResponse: |
| case Status::kUnexpectedDisconnection: |
| return true; |
| case Status::kUnknown: |
| case Status::kConnecting: |
| case Status::kAwaitingLocalConfirmation: |
| case Status::kAwaitingRemoteAcceptance: |
| case Status::kInProgress: |
| case Status::kMediaDownloading: |
| return false; |
| } |
| } |
| |
| // static |
| TransferMetadata::Result TransferMetadata::ToResult(Status status) { |
| switch (status) { |
| case Status::kComplete: |
| return Result::kSuccess; |
| case Status::kUnknown: |
| case Status::kAwaitingRemoteAcceptanceFailed: |
| case Status::kFailed: |
| case Status::kDecodeAdvertisementFailed: |
| case Status::kMissingTransferUpdateCallback: |
| case Status::kMissingShareTarget: |
| case Status::kMissingEndpointId: |
| case Status::kMissingPayloads: |
| case Status::kPairedKeyVerificationFailed: |
| case Status::kInvalidIntroductionFrame: |
| case Status::kIncompletePayloads: |
| case Status::kFailedToCreateShareTarget: |
| case Status::kFailedToInitiateOutgoingConnection: |
| case Status::kFailedToReadOutgoingConnectionResponse: |
| case Status::kUnexpectedDisconnection: |
| return Result::kFailure; |
| case Status::kConnecting: |
| case Status::kAwaitingLocalConfirmation: |
| case Status::kAwaitingRemoteAcceptance: |
| case Status::kInProgress: |
| case Status::kRejected: |
| case Status::kCancelled: |
| case Status::kTimedOut: |
| case Status::kMediaUnavailable: |
| case Status::kMediaDownloading: |
| case Status::kNotEnoughSpace: |
| case Status::kUnsupportedAttachmentType: |
| case Status::kExternalProviderLaunched: |
| return Result::kIndeterminate; |
| } |
| } |
| |
| // static |
| std::string TransferMetadata::StatusToString(Status status) { |
| switch (status) { |
| case Status::kConnecting: |
| return "kConnecting"; |
| case Status::kUnknown: |
| return "kUnknown"; |
| case Status::kAwaitingLocalConfirmation: |
| return "kAwaitingLocalConfirmation"; |
| case Status::kAwaitingRemoteAcceptance: |
| return "kAwaitingRemoteAcceptance"; |
| case Status::kAwaitingRemoteAcceptanceFailed: |
| return "kAwaitingRemoteAcceptanceFailed"; |
| case Status::kInProgress: |
| return "kInProgress"; |
| case Status::kComplete: |
| return "kComplete"; |
| case Status::kFailed: |
| return "kFailed"; |
| case Status::kRejected: |
| return "kReject"; |
| case Status::kCancelled: |
| return "kCancelled"; |
| case Status::kTimedOut: |
| return "kTimedOut"; |
| case Status::kMediaUnavailable: |
| return "kMediaUnavailable"; |
| case Status::kMediaDownloading: |
| return "kMediaDownloading"; |
| case Status::kNotEnoughSpace: |
| return "kNotEnoughSpace"; |
| case Status::kUnsupportedAttachmentType: |
| return "kUnsupportedAttachmentType"; |
| case Status::kExternalProviderLaunched: |
| return "kExternalProviderLaunched"; |
| case Status::kDecodeAdvertisementFailed: |
| return "kDecodeAdvertisementFailed"; |
| case Status::kMissingTransferUpdateCallback: |
| return "kMissingTransferUpdateCallback"; |
| case Status::kMissingShareTarget: |
| return "kMissingShareTarget"; |
| case Status::kMissingEndpointId: |
| return "kMissingEndpointId"; |
| case Status::kMissingPayloads: |
| return "kMissingPayloads"; |
| case Status::kPairedKeyVerificationFailed: |
| return "kPairedKeyVerificationFailed"; |
| case Status::kInvalidIntroductionFrame: |
| return "kInvalidIntroductionFrame"; |
| case Status::kIncompletePayloads: |
| return "kIncompletePayloads"; |
| case Status::kFailedToCreateShareTarget: |
| return "kFailedToCreateShareTarget"; |
| case Status::kFailedToInitiateOutgoingConnection: |
| return "kFailedToInitiateOutgoingConnection"; |
| case Status::kFailedToReadOutgoingConnectionResponse: |
| return "kFailedToReadOutgoingConnectionResponse"; |
| case Status::kUnexpectedDisconnection: |
| return "kUnexpectedDisconnection"; |
| } |
| } |
| |
| // static |
| nearby_share::mojom::TransferStatus TransferMetadata::StatusToMojo( |
| Status status) { |
| switch (status) { |
| case Status::kUnknown: |
| return nearby_share::mojom::TransferStatus::kUnknown; |
| case Status::kConnecting: |
| return nearby_share::mojom::TransferStatus::kConnecting; |
| case Status::kAwaitingLocalConfirmation: |
| return nearby_share::mojom::TransferStatus::kAwaitingLocalConfirmation; |
| case Status::kAwaitingRemoteAcceptance: |
| return nearby_share::mojom::TransferStatus::kAwaitingRemoteAcceptance; |
| case Status::kAwaitingRemoteAcceptanceFailed: |
| return nearby_share::mojom::TransferStatus:: |
| kAwaitingRemoteAcceptanceFailed; |
| case Status::kInProgress: |
| return nearby_share::mojom::TransferStatus::kInProgress; |
| case Status::kComplete: |
| return nearby_share::mojom::TransferStatus::kComplete; |
| case Status::kFailed: |
| return nearby_share::mojom::TransferStatus::kFailed; |
| case Status::kRejected: |
| return nearby_share::mojom::TransferStatus::kRejected; |
| case Status::kCancelled: |
| return nearby_share::mojom::TransferStatus::kCancelled; |
| case Status::kTimedOut: |
| return nearby_share::mojom::TransferStatus::kTimedOut; |
| case Status::kMediaUnavailable: |
| return nearby_share::mojom::TransferStatus::kMediaUnavailable; |
| case Status::kNotEnoughSpace: |
| return nearby_share::mojom::TransferStatus::kNotEnoughSpace; |
| case Status::kUnsupportedAttachmentType: |
| return nearby_share::mojom::TransferStatus::kUnsupportedAttachmentType; |
| case Status::kDecodeAdvertisementFailed: |
| return nearby_share::mojom::TransferStatus::kDecodeAdvertisementFailed; |
| case Status::kMissingTransferUpdateCallback: |
| return nearby_share::mojom::TransferStatus:: |
| kMissingTransferUpdateCallback; |
| case Status::kMissingShareTarget: |
| return nearby_share::mojom::TransferStatus::kMissingShareTarget; |
| case Status::kMissingEndpointId: |
| return nearby_share::mojom::TransferStatus::kMissingEndpointId; |
| case Status::kMissingPayloads: |
| return nearby_share::mojom::TransferStatus::kMissingPayloads; |
| case Status::kPairedKeyVerificationFailed: |
| return nearby_share::mojom::TransferStatus::kPairedKeyVerificationFailed; |
| case Status::kInvalidIntroductionFrame: |
| return nearby_share::mojom::TransferStatus::kInvalidIntroductionFrame; |
| case Status::kIncompletePayloads: |
| return nearby_share::mojom::TransferStatus::kIncompletePayloads; |
| case Status::kFailedToCreateShareTarget: |
| return nearby_share::mojom::TransferStatus::kFailedToCreateShareTarget; |
| case Status::kFailedToInitiateOutgoingConnection: |
| return nearby_share::mojom::TransferStatus:: |
| kFailedToInitiateOutgoingConnection; |
| case Status::kFailedToReadOutgoingConnectionResponse: |
| return nearby_share::mojom::TransferStatus:: |
| kFailedToReadOutgoingConnectionResponse; |
| case Status::kUnexpectedDisconnection: |
| return nearby_share::mojom::TransferStatus::kUnexpectedDisconnection; |
| case Status::kMediaDownloading: |
| case Status::kExternalProviderLaunched: |
| // These statuses are not used anywhere. |
| NOTREACHED(); |
| return nearby_share::mojom::TransferStatus::kUnknown; |
| } |
| NOTREACHED(); |
| } |
| |
| nearby_share::mojom::TransferMetadataPtr TransferMetadata::ToMojo() const { |
| auto mojo_transfer_metadata = nearby_share::mojom::TransferMetadata::New(); |
| mojo_transfer_metadata->status = StatusToMojo(status()); |
| mojo_transfer_metadata->progress = progress(); |
| mojo_transfer_metadata->token = token(); |
| mojo_transfer_metadata->is_original = is_original(); |
| mojo_transfer_metadata->is_final_status = is_final_status(); |
| return mojo_transfer_metadata; |
| } |
| |
| TransferMetadata::TransferMetadata(Status status, |
| float progress, |
| absl::optional<std::string> token, |
| bool is_original, |
| bool is_final_status) |
| : status_(status), |
| progress_(progress), |
| token_(std::move(token)), |
| is_original_(is_original), |
| is_final_status_(is_final_status) {} |
| |
| TransferMetadata::~TransferMetadata() = default; |
| |
| TransferMetadata::TransferMetadata(const TransferMetadata&) = default; |
| |
| TransferMetadata& TransferMetadata::operator=(const TransferMetadata&) = |
| default; |