| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/nearby_sharing/metrics/metric_common.h" |
| |
| namespace nearby::share::metrics { |
| |
| Platform GetPlatform(const ShareTarget& share_target) { |
| return share_target.type; |
| } |
| |
| DeviceRelationship GetDeviceRelationship(const ShareTarget& share_target) { |
| if (share_target.for_self_share) { |
| return DeviceRelationship::kSelf; |
| } else if (share_target.is_known) { |
| return DeviceRelationship::kContact; |
| } else { |
| return DeviceRelationship::kStranger; |
| } |
| } |
| |
| TransferResult GetTransferResult(TransferMetadata::Status status) { |
| switch (status) { |
| // These are non-terminal statuses. |
| case TransferMetadata::Status::kUnknown: |
| case TransferMetadata::Status::kConnecting: |
| case TransferMetadata::Status::kAwaitingLocalConfirmation: |
| case TransferMetadata::Status::kAwaitingRemoteAcceptance: |
| case TransferMetadata::Status::kAwaitingRemoteAcceptanceFailed: |
| case TransferMetadata::Status::kMediaDownloading: |
| case TransferMetadata::Status::kExternalProviderLaunched: |
| case TransferMetadata::Status::kInProgress: |
| // These are terminal, but not transfer related. |
| case TransferMetadata::Status::kMissingTransferUpdateCallback: |
| case TransferMetadata::Status::kMissingShareTarget: |
| case TransferMetadata::Status::kMissingEndpointId: |
| case TransferMetadata::Status::kFailedToCreateShareTarget: |
| case TransferMetadata::Status::kDecodeAdvertisementFailed: |
| return TransferResult::kUnknown; |
| case TransferMetadata::Status::kComplete: |
| return TransferResult::kComplete; |
| case TransferMetadata::Status::kRejected: |
| return TransferResult::kRejected; |
| case TransferMetadata::Status::kCancelled: |
| return TransferResult::kCancelled; |
| case TransferMetadata::Status::kFailed: |
| return TransferResult::kFailed; |
| case TransferMetadata::Status::kTimedOut: |
| return TransferResult::kTimedOut; |
| case TransferMetadata::Status::kNotEnoughSpace: |
| return TransferResult::kNotEnoughSpace; |
| case TransferMetadata::Status::kUnsupportedAttachmentType: |
| return TransferResult::kUnsupportedAttachmentType; |
| case TransferMetadata::Status::kMissingPayloads: |
| return TransferResult::kMissingPayloads; |
| case TransferMetadata::Status::kIncompletePayloads: |
| return TransferResult::kIncompletePayloads; |
| case TransferMetadata::Status::kUnexpectedDisconnection: |
| return TransferResult::kUnexpectedDisconnection; |
| case TransferMetadata::Status::kFailedToInitiateOutgoingConnection: |
| return TransferResult::kFailedToInitiateOutgoingConnection; |
| case TransferMetadata::Status::kFailedToReadOutgoingConnectionResponse: |
| return TransferResult::kFailedToReadOutgoingConnectionResponse; |
| case TransferMetadata::Status::kInvalidIntroductionFrame: |
| return TransferResult::kInvalidIntroductionFrame; |
| case TransferMetadata::Status::kPairedKeyVerificationFailed: |
| return TransferResult::kPairedKeyVerificationFailed; |
| case TransferMetadata::Status::kMediaUnavailable: |
| return TransferResult::kMediaUnavailable; |
| } |
| } |
| |
| } // namespace nearby::share::metrics |