| // 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_METRICS_STRUCTURED_EVENTS_PROCESSOR_INTERFACE_H_ |
| #define COMPONENTS_METRICS_STRUCTURED_EVENTS_PROCESSOR_INTERFACE_H_ |
| |
| #include "components/metrics/structured/event.h" |
| |
| namespace metrics::structured { |
| |
| // An interface allowing different classes to add fields to events after the |
| // events are recorded by a client. |
| class EventsProcessorInterface { |
| public: |
| EventsProcessorInterface() = default; |
| |
| EventsProcessorInterface(const EventsProcessorInterface& events_processor) = |
| delete; |
| EventsProcessorInterface& operator=( |
| const EventsProcessorInterface& events_processor) = delete; |
| |
| virtual ~EventsProcessorInterface() = default; |
| |
| // Returns true if |event| should be processed by |this|. |
| virtual bool ShouldProcessOnEventRecord(const Event& event) = 0; |
| |
| // Processes |event|. Note that this function may mutate |event|. |
| virtual void OnEventsRecord(Event* event) = 0; |
| }; |
| |
| } // namespace metrics::structured |
| |
| #endif // COMPONENTS_METRICS_STRUCTURED_EVENTS_PROCESSOR_INTERFACE_H_ |