// Copyright 2023 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_DEBUG_STRUCTURED_STRUCTURED_METRICS_DEBUG_PROVIDER_H_ #define COMPONENTS_METRICS_DEBUG_STRUCTURED_STRUCTURED_METRICS_DEBUG_PROVIDER_H_ #include "base/memory/raw_ptr.h" #include "components/metrics/structured/event.h" #include "components/metrics/structured/recorder.h" #include "components/metrics/structured/structured_metrics_recorder.h" namespace metrics::structured { class StructuredMetricsService; // Provides events recorded by Structured Metrics Recorder. // TODO(b/314841749): Update this class to use a watcher interface. class StructuredMetricsDebugProvider : public StructuredMetricsRecorder::Observer { public: explicit StructuredMetricsDebugProvider(StructuredMetricsService* service); StructuredMetricsDebugProvider(const StructuredMetricsDebugProvider&) = delete; StructuredMetricsDebugProvider& operator=( const StructuredMetricsDebugProvider&) = delete; ~StructuredMetricsDebugProvider() override; // StructuredMetricsRecorder::Observer: void OnEventRecorded(const StructuredEventProto& event) override; const base::Value::List& events() const { return events_; } private: // Loads the events that are recorded before the page is loaded. void LoadRecordedEvents(); // Maintain copy of the events to be displayed by the debug page. base::Value::List events_; raw_ptr service_; }; } // namespace metrics::structured #endif // COMPONENTS_METRICS_DEBUG_STRUCTURED_STRUCTURED_METRICS_DEBUG_PROVIDER_H_