chromium/components/history_clusters/core/cluster_metrics_utils.h

// Copyright 2022 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_HISTORY_CLUSTERS_CORE_CLUSTER_METRICS_UTILS_H_
#define COMPONENTS_HISTORY_CLUSTERS_CORE_CLUSTER_METRICS_UTILS_H_

#include "base/metrics/histogram_functions.h"

namespace history_clusters {

// A helper object for recording metrics about whether a cluster was filtered
// for a specified reason. The metric is emitted when the object falls out of
// scope.
class ScopedFilterClusterMetricsRecorder {};

/**
 * The following enums must be kept in sync with their respective variants in
 * //tools/metrics/histograms/metadata/history/histograms.xml and
 * //ui/webui/resources/cr_components/history_clusters/history_clusters.mojom
 */

// Actions that can be performed on clusters. The int values are not logged and
// can be changed, but should remain consistent with history_clusters.mojom.
enum class ClusterAction {};

// Actions that can be performed on related search items.
enum class RelatedSearchAction {};

// Actions that can be performed on visits.
enum class VisitAction {};

// Types of visits that can be shown and acted on.
enum class VisitType {};

// Returns the string representation of each enum class used for
// logging/histograms.
std::string ClusterActionToString(ClusterAction action);
std::string VisitActionToString(VisitAction action);
std::string VisitTypeToString(VisitType action);
std::string RelatedSearchActionToString(RelatedSearchAction action);

}  // namespace history_clusters

#endif  // COMPONENTS_HISTORY_CLUSTERS_CORE_CLUSTER_METRICS_UTILS_H_