| // 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. |
| |
| #ifndef CHROME_BROWSER_NEARBY_SHARING_NEARBY_SHARE_METRICS_H_ |
| #define CHROME_BROWSER_NEARBY_SHARING_NEARBY_SHARE_METRICS_H_ |
| |
| #include <optional> |
| |
| #include "base/time/time.h" |
| #include "chrome/browser/nearby_sharing/nearby_share_feature_status.h" |
| #include "chrome/browser/nearby_sharing/nearby_share_feature_usage_metrics.h" |
| #include "chrome/browser/nearby_sharing/share_target.h" |
| #include "chrome/browser/nearby_sharing/transfer_metadata.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chromeos/ash/services/nearby/public/mojom/nearby_connections_types.mojom-shared.h" |
| #include "chromeos/ash/services/nearby/public/mojom/nearby_connections_types.mojom.h" |
| #include "chromeos/ash/services/nearby/public/mojom/nearby_decoder_types.mojom.h" |
| #include "chromeos/ash/services/nearby/public/mojom/nearby_share_target_types.mojom.h" |
| |
| enum class NearbyShareError; |
| |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. The numbers here correspond to the |
| // ordering of the flow. This enum should be kept in sync with the |
| // NearbyShareBackgroundScanningDeviceNearbySharingNotificationFlowEvent enum in |
| // //tools/metrics/histograms/metadata/nearby/enums.xml. |
| enum class |
| NearbyShareBackgroundScanningDeviceNearbySharingNotificationFlowEvent { |
| kNotificationShown = 1, |
| kEnable = 12, |
| kDismiss = 13, |
| kExit = 14, |
| }; |
| |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. The numbers here correspond to the |
| // ordering of the flow. This enum should be kept in sync with the |
| // NearbyShareBackgroundScanningSetupNotificationFlowEvent enum in |
| // //tools/metrics/histograms/metadata/nearby/enums.xml. |
| enum class NearbyShareBackgroundScanningSetupNotificationFlowEvent { |
| kNotificationShown = 1, |
| kSetup = 12, |
| kDismiss = 13, |
| kExit = 14, |
| }; |
| |
| enum class PayloadFileOperation { |
| kOpen, |
| kRead, |
| }; |
| |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. The numbers here correspond to the |
| // ordering of the flow. This enum should be kept in sync with the |
| // PairedKeyVerificationError enum in |
| // //tools/metrics/histograms/metadata/nearby/enums.xml. |
| enum class NearbySharePairedKeyVerificationError { |
| kFailedToReadEncryptionFrame, |
| kFailedToReadResultFrame, |
| kUnableToVerifyRemotePublicCertificateWhileRestrictedToContacts, |
| kMissingOptionalSignature, |
| kUnableToVerifyOptionalSignature, |
| kMaxValue = kUnableToVerifyOptionalSignature, |
| }; |
| |
| std::string GetMediumName(nearby::connections::mojom::Medium medium); |
| |
| void RecordNearbyShareEnabledMetric(NearbyShareEnabledState state); |
| |
| void RecordNearbyShareEstablishConnectionMetrics( |
| bool success, |
| bool cancelled, |
| base::TimeDelta time_to_connect); |
| |
| void RecordNearbyShareTimeFromInitiateSendToRemoteDeviceNotificationMetric( |
| base::TimeDelta time); |
| |
| void RecordNearbyShareTimeFromLocalAcceptToTransferStartMetric( |
| base::TimeDelta time); |
| |
| void RecordNearbySharePayloadFileAttachmentTypeMetric( |
| sharing::mojom::FileMetadata::Type type, |
| bool is_incoming, |
| bool is_contact, |
| bool for_self_share, |
| nearby::connections::mojom::PayloadStatus status); |
| |
| void RecordNearbySharePayloadTextAttachmentTypeMetric( |
| sharing::mojom::TextMetadata::Type type, |
| bool is_incoming, |
| bool is_contact, |
| bool for_self_share, |
| nearby::connections::mojom::PayloadStatus status); |
| |
| void RecordNearbySharePayloadWifiCredentialsAttachmentTypeMetric( |
| bool is_incoming, |
| bool is_contact, |
| bool for_self_share, |
| nearby::connections::mojom::PayloadStatus status); |
| |
| void RecordNearbySharePayloadFileOperationMetrics( |
| Profile* profile, |
| const ShareTarget& share_target, |
| PayloadFileOperation operation, |
| const bool success); |
| |
| void RecordNearbySharePayloadFinalStatusMetric( |
| nearby::connections::mojom::PayloadStatus status, |
| std::optional<nearby::connections::mojom::Medium> medium); |
| |
| void RecordNearbySharePayloadMediumMetric( |
| std::optional<nearby::connections::mojom::Medium> medium, |
| nearby_share::mojom::ShareTargetType type, |
| uint64_t num_bytes_transferred); |
| |
| void RecordNearbySharePayloadNumAttachmentsMetric( |
| size_t num_text_attachments, |
| size_t num_file_attachments, |
| size_t num_wifi_credentials_attachments); |
| |
| void RecordNearbySharePayloadSizeMetric( |
| bool is_incoming, |
| nearby_share::mojom::ShareTargetType type, |
| std::optional<nearby::connections::mojom::Medium> last_upgraded_medium, |
| nearby::connections::mojom::PayloadStatus status, |
| uint64_t payload_size_bytes); |
| |
| void RecordNearbySharePayloadTransferRateMetric( |
| bool is_incoming, |
| nearby_share::mojom::ShareTargetType type, |
| std::optional<nearby::connections::mojom::Medium> last_upgraded_medium, |
| nearby::connections::mojom::PayloadStatus status, |
| uint64_t transferred_payload_bytes, |
| base::TimeDelta time_elapsed); |
| |
| void RecordNearbyShareStartAdvertisingResultMetric( |
| bool is_high_visibility, |
| nearby::connections::mojom::Status status); |
| |
| void RecordNearbyShareTransferFinalStatusMetric( |
| NearbyShareFeatureUsageMetrics* feature_usage_metrics, |
| bool is_incoming, |
| nearby_share::mojom::ShareTargetType type, |
| TransferMetadata::Status status, |
| bool is_known, |
| bool for_self_share, |
| bool is_screen_locked); |
| |
| void RecordNearbyShareDeviceNearbySharingNotificationFlowEvent( |
| NearbyShareBackgroundScanningDeviceNearbySharingNotificationFlowEvent |
| event); |
| |
| void RecordNearbyShareDeviceNearbySharingNotificationTimeToAction( |
| base::TimeDelta time); |
| |
| void RecordNearbyShareBackgroundScanningDevicesDetected(); |
| |
| void RecordNearbyShareBackgroundScanningDevicesDetectedDuration( |
| base::TimeDelta duration); |
| |
| void RecordNearbyShareBackgroundScanningSessionStarted(bool success); |
| |
| void RecordNearbyShareSetupNotificationFlowEvent( |
| NearbyShareBackgroundScanningSetupNotificationFlowEvent event); |
| |
| void RecordNearbyShareSetupNotificationTimeToAction(base::TimeDelta time); |
| |
| void RecordNearbyShareWifiConfigurationResultMetric(bool success); |
| |
| void RecordNearbyShareDiscoveredToConnectionEstablishedDuration( |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareInitiatedToSentIntroductionFrameDuration( |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareEndpointDecodedToReceivedIntroductionFrameDuration( |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareConnectionEstablishedToBandwidthUpgradeDuration( |
| nearby::connections::mojom::Medium medium, |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareHighVisibilityEndpointDecodedToBandwidthUpgradeDuration( |
| nearby::connections::mojom::Medium medium, |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareNonHighVisibilityPairedKeyCompleteToBandwidthUpgradeDuration( |
| nearby::connections::mojom::Medium medium, |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareBandwidthUpgradeToAllFilesReceivedDuration( |
| nearby::connections::mojom::Medium medium, |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareAcceptedTransferToAllFilesReceivedDuration( |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareReceivedIntroductionFrameToAllFilesReceivedDuration( |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareBandwidthUpgradeToAllFilesSentDuration( |
| nearby::connections::mojom::Medium medium, |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareStartSendFilesToAllFilesSentDuration( |
| base::TimeDelta delta); |
| |
| void RecordNearbyShareInitiatedToAllFilesSentDuration(base::TimeDelta delta); |
| |
| void RecordNearbyShareError(NearbyShareError error_code); |
| |
| void RecordNearbySharePairedKeyVerificationError( |
| NearbySharePairedKeyVerificationError error); |
| |
| #endif // CHROME_BROWSER_NEARBY_SHARING_NEARBY_SHARE_METRICS_H_ |