// 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 COMPONENTS_IP_PROTECTION_COMMON_IP_PROTECTION_TELEMETRY_H_ #define COMPONENTS_IP_PROTECTION_COMMON_IP_PROTECTION_TELEMETRY_H_ #include <optional> #include "base/time/time.h" #include "components/ip_protection/common/ip_protection_data_types.h" #include "net/base/proxy_chain.h" namespace ip_protection { // An enumeration of the eligibility finding for use with // `UmaHistogramEnumeration`. These values are persisted to logs. Entries should // not be renumbered and numeric values should never be reused. enum class ProtectionEligibility { … }; // An enumeration of the result of an attempt to fetch a proxy list. These // values are persisted to logs. Entries should not be renumbered and numeric // values should never be reused. enum class GetProxyListResult { … }; // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. // // LINT.IfChange(AuthTokenResultForGeo) enum class AuthTokenResultForGeo { … }; // LINT.ThenChange(//tools/metrics/histograms/metadata/network/enums.xml:IpProtectionGetAuthTokenResultForGeo) // An abstract interface for all of the telemetry associated with IP Protection. // // This is implemented by each telemetry platform, and a singleton made // available on a per-process basis. // // More detail on the metrics produced here can be found in // `tools/metrics/histograms/metadata/network/histograms.xml`. class IpProtectionTelemetry { … }; // Get the singleton instance of this type. This will be implemented by each // subclass, with only one being built on any particular platform. IpProtectionTelemetry& Telemetry(); } // namespace ip_protection #endif // COMPONENTS_IP_PROTECTION_COMMON_IP_PROTECTION_TELEMETRY_H_