// Copyright 2022 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_UKM_UKM_RECORDER_OBSERVER_H_ #define COMPONENTS_UKM_UKM_RECORDER_OBSERVER_H_ #include #include "base/observer_list_types.h" #include "services/metrics/public/cpp/ukm_source_id.h" #include "services/metrics/public/mojom/ukm_interface.mojom.h" #include "url/gurl.h" namespace ukm { // Base class for observing UkmRecorderImpl. This object is notified when // a new UKM entry is added, or when a source URL is updated, or when // purge happens. Observers are notified even if |recording_enabled_| is // false. All the methods are notified on the same SequencedTaskRunner // on which the observer is added. class COMPONENT_EXPORT(UKM_RECORDER) UkmRecorderObserver : public base::CheckedObserver { public: UkmRecorderObserver() = default; ~UkmRecorderObserver() override = default; UkmRecorderObserver(const UkmRecorderObserver&) = delete; UkmRecorderObserver& operator=(const UkmRecorderObserver&) = delete; // Called when a new UKM entry is added. virtual void OnEntryAdded(mojom::UkmEntryPtr entry); // Called when URLs are updated for a |source_id|. virtual void OnUpdateSourceURL(SourceId source_id, const std::vector& urls); // Called when UKM entries related to the given URL scheme should be purged. virtual void OnPurgeRecordingsWithUrlScheme(const std::string& url_scheme); // Called when all UKM entries should be purged. virtual void OnPurge(); // Called when the UKM consent state is changed. |allow| is true iff all UKM // is allowed for all profile states and URL-keyed anonymized data collection // is enabled for all profiles. This won't be called when extension or app // consent is changed. virtual void OnUkmAllowedStateChanged(bool allowed); }; } // namespace ukm #endif // COMPONENTS_UKM_UKM_RECORDER_OBSERVER_H_