1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // 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_SEGMENTATION_PLATFORM_INTERNAL_UKM_DATA_MANAGER_H_
- #define COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_UKM_DATA_MANAGER_H_
- #include "services/metrics/public/cpp/ukm_source_id.h"
- #include "services/metrics/public/mojom/ukm_interface.mojom.h"
- #include "url/gurl.h"
- namespace base {
- class FilePath;
- }
- namespace segmentation_platform {
- class UkmDatabase;
- class UrlSignalHandler;
- class UkmConfig;
- class UkmObserver;
- // Manages ownership and lifetime of all UKM related classes, like database and
- // observer. There is only one manager per browser process. Created before
- // profile initialization and destroyed after all profiles are destroyed. The
- // database, observer and signal handler can have different lifetimes, see
- // comments below.
- class UkmDataManager {
- public:
- UkmDataManager() = default;
- virtual ~UkmDataManager() = default;
- UkmDataManager(UkmDataManager&) = delete;
- UkmDataManager& operator=(UkmDataManager&) = delete;
- // Initializes UKM database and the observer of all UKM events.
- virtual void Initialize(const base::FilePath& database_path,
- UkmObserver* ukm_observer) = 0;
- // Returns true when UKM engine is usable. If false, then UKM based engine is
- // disabled and this class is a no-op. UkmObserver, UrlSignalHandler and
- // UkmDatabase are not created and are unusable when this method returns
- // false.
- virtual bool IsUkmEngineEnabled() = 0;
- // Can be called at any time, starts observing UKM with the given config. This
- // must be called after the Initialize() call.
- virtual void StartObservingUkm(const UkmConfig& config) = 0;
- // Pauses or resumes observation of UKM, can be called any time, irrespective
- // of UKM observer's lifetime, similar to StartObservingUkm().
- virtual void PauseOrResumeObservation(bool pause) = 0;
- // Get URL signal handler. The signal handler is safe to use as long as data
- // manager is alive, so until after all profiles are destroyed.
- virtual UrlSignalHandler* GetOrCreateUrlHandler() = 0;
- // Get UKM database. The database is safe to use as long as data manager is
- // alive, so until after all profiles are destroyed.
- virtual UkmDatabase* GetUkmDatabase() = 0;
- // Called when a new UKM entry is added.
- virtual void OnEntryAdded(ukm::mojom::UkmEntryPtr entry) = 0;
- // Called when UKM source URL is updated.
- virtual void OnUkmSourceUpdated(ukm::SourceId source_id,
- const std::vector<GURL>& urls) = 0;
- // Keep track of all the segmentation services that hold reference to this
- // object.
- virtual void AddRef() = 0;
- virtual void RemoveRef() = 0;
- };
- } // namespace segmentation_platform
- #endif // COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_UKM_DATA_MANAGER_H_
|