// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_METRICS_WM_FEATURE_METRICS_RECORDER_H_
#define ASH_METRICS_WM_FEATURE_METRICS_RECORDER_H_
#include <string>
#include "ash/ash_export.h"
namespace ash {
class ASH_EXPORT WMFeatureMetricsRecorder {
public:
// Different types of WM features.
enum class WMFeatureType {
kWindowLayoutState,
};
// Different window size range. See `kWidthRange` and `kHeightRange` in the cc
// file.
// Note this should be kept in sync with `WindowSizeRange` enum in
// tools/metrics/histograms/enums.xml.
enum class WindowSizeRange : int {
kXSWidthXSHeight = 0, // (<=800, <=600)
kXSWidthSHeight = 1, // (<=800, 600-728)
kXSWidthMHeight = 2, // (<=800, 728-900)
kXSWidthLHeight = 3, // (<=800, >900)
kSWidthXSHeight = 4, // (800-1024, <=600)
kSWidthSHeight = 5, // (800-1024, 600-728)
kSWidthMHeight = 6, // (800-1024, 728-900)
kSWidthLHeight = 7, // (800-1024, >900)
kMWidthXSHeight = 8, // (1024-1400, <=600)
kMWidthSHeight = 9, // (1024-1400, 600-728)
kMWidthMHeight = 10, // (1024-1400, 728-900)
kMWidthLHeight = 11, // (1024-1400, >900)
kLWidthXSHeight = 12, // (>1400, <=600)
kLWidthSHeight = 13, // (>1400, 600-728)
kLWidthMHeight = 14, // (>1400, 728-900)
kLWidthLHeight = 15, // (>1400, >900)
kMaxValue = kLWidthLHeight,
};
WMFeatureMetricsRecorder();
WMFeatureMetricsRecorder(WMFeatureMetricsRecorder&) = delete;
WMFeatureMetricsRecorder& operator=(WMFeatureMetricsRecorder&) = delete;
~WMFeatureMetricsRecorder();
// Gets the feature metrics prefix for `wm_feature_type`.
static std::string GetFeatureMetricsPrefix(
const WMFeatureType& wm_feature_type);
// Called by `UserMetricsRecorder` to periodically report WM feature related
// metrics.
void RecordPeriodicalWMMetrics();
};
} // namespace ash
#endif // ASH_METRICS_WM_FEATURE_METRICS_RECORDER_H_