// 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 COMPONENTS_METRICS_STRUCTURED_HISTOGRAM_UTIL_H_ #define COMPONENTS_METRICS_STRUCTURED_HISTOGRAM_UTIL_H_ #include <string_view> #include "components/prefs/persistent_pref_store.h" namespace metrics::structured { // Whether a single event was recorded correctly, or otherwise what error state // occurred. These values are persisted to logs. Entries should not be // renumbered and numeric values should never be reused. enum class EventRecordingState { … }; inline constexpr std::string_view kExternalMetricsProducedHistogramPrefix = …; inline constexpr std::string_view kExternalMetricsDroppedHistogramPrefix = …; void LogEventRecordingState(EventRecordingState state); // Log how many structured metrics events were contained in a call to // ProvideCurrentSessionData. void LogNumEventsInUpload(int num_events); // Logs the number of events that were recorded before device and user // cryptographic keys have been loaded to hash events. These events will be kept // in memory. void LogNumEventsRecordedBeforeInit(int num_events); // Logs the number of files processed per external metrics scan. void LogNumFilesPerExternalMetricsScan(int num_files); // Logs the file size of an event. void LogEventFileSizeKB(int64_t file_size_kb); // Logs the serialized size of an event when it is recorded in bytes. void LogEventSerializedSizeBytes(int64_t event_size_bytes); // Logs the StructuredMetrics uploaded size to UMA in bytes. void LogUploadSizeBytes(int64_t upload_size_bytes); // Logs the number of external metrics were scanned for an upload. void LogExternalMetricsScanInUpload(int num_scans); // Logs the number of external metrics that were dropped. void LogDroppedExternalMetrics(int num_dropped); // Logs the number of external metrics that were dropped per-project. void LogDroppedProjectExternalMetrics(std::string_view project_name, int num_dropped); // Logs the number of external metrics produced per-project. void LogProducedProjectExternalMetrics(std::string_view project_name, int num_produced); // Possible status of the Storage Manager when flushing a buffer to disk. These // values must match the values in // tools/metrics/histograms/metadata/structured_metrics/enums.xml. enum class StorageManagerFlushStatus { … }; // Possible status when an event is recorded to the Storage Manager. These // values must match the values in // tools/metrics/histograms/metadata/structured_metrics/enums.xml. enum class RecordStatus { … }; // Possible internal errors of the FlushedMap. These should // be looked at in absolute counts. These values must match the values in // tools/metrics/histograms/metadata/structured_metrics/enums.xml. enum class FlushedMapError { … }; // Logs Storage Managers result when flushing a buffer. void LogStorageManagerFlushStatus(StorageManagerFlushStatus status); // Logs internal errors of the FlushedMap. void LogFlushedMapError(FlushedMapError error); // Logs the number of FlushedKeys that are loaded at boot. void LogFlushedMapLoadedFlushedKeys(int count); // Logs the number of flushed buffers that were deleted when disk quota is // reached. void LogDeletedBuffersWhenOverQuota(int count); // Logs the number of bytes the disk quota has been exceeded. This should be // proportional to the number of buffers deleted. void LogDiskQuotaExceededDelta(int delta_kb); // Logs the number of flushed buffers when an upload occurs. // // With the current implementation, this is implying that this is the number of // buffers read when creating the uploaded log. void LogFlushedBuffersAtUpload(int count); // Logs the number of in-memory events when an upload occurs. void LogInMemoryEventsAtUpload(int count); // Logs the max disk size in kb that the Storage Manager can consume. void LogMaxDiskSizeKb(int size_kb); // Logs the max amount of memory in kb that the in-memory events can consume. void LogMaxMemorySizeKb(int size_kb); // Logs the status of recording an event. void LogStorageManagerRecordStatus(RecordStatus status); } // namespace metrics::structured #endif // COMPONENTS_METRICS_STRUCTURED_HISTOGRAM_UTIL_H_