safe_browsing_metrics_collector_factory.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef WEBLAYER_BROWSER_SAFE_BROWSING_SAFE_BROWSING_METRICS_COLLECTOR_FACTORY_H_
  5. #define WEBLAYER_BROWSER_SAFE_BROWSING_SAFE_BROWSING_METRICS_COLLECTOR_FACTORY_H_
  6. #include "base/no_destructor.h"
  7. #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
  8. class KeyedService;
  9. namespace content {
  10. class BrowserContext;
  11. }
  12. namespace safe_browsing {
  13. class SafeBrowsingMetricsCollector;
  14. }
  15. namespace weblayer {
  16. // Singleton that owns SafeBrowsingMetricsCollector objects, one for each active
  17. // BrowserContext. It returns nullptr in incognito mode.
  18. class SafeBrowsingMetricsCollectorFactory
  19. : public BrowserContextKeyedServiceFactory {
  20. public:
  21. SafeBrowsingMetricsCollectorFactory(
  22. const SafeBrowsingMetricsCollectorFactory&) = delete;
  23. SafeBrowsingMetricsCollectorFactory& operator=(
  24. const SafeBrowsingMetricsCollectorFactory&) = delete;
  25. // Creates the object if it doesn't exist already for the given
  26. // |browser_context|. If the object already exists, returns its pointer.
  27. static safe_browsing::SafeBrowsingMetricsCollector* GetForBrowserContext(
  28. content::BrowserContext* browser_context);
  29. // Get the singleton instance.
  30. static SafeBrowsingMetricsCollectorFactory* GetInstance();
  31. private:
  32. friend class base::NoDestructor<SafeBrowsingMetricsCollectorFactory>;
  33. SafeBrowsingMetricsCollectorFactory();
  34. ~SafeBrowsingMetricsCollectorFactory() override = default;
  35. // BrowserContextKeyedServiceFactory:
  36. KeyedService* BuildServiceInstanceFor(
  37. content::BrowserContext* context) const override;
  38. };
  39. } // namespace weblayer
  40. #endif // WEBLAYER_BROWSER_SAFE_BROWSING_SAFE_BROWSING_METRICS_COLLECTOR_FACTORY_H_