client_side_detection_service_factory.cc 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright 2020 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. #include "weblayer/browser/safe_browsing/client_side_detection_service_factory.h"
  5. #include "base/no_destructor.h"
  6. #include "components/keyed_service/content/browser_context_dependency_manager.h"
  7. #include "components/safe_browsing/content/browser/client_side_detection_service.h"
  8. #include "content/public/browser/browser_context.h"
  9. #include "weblayer/browser/browser_context_impl.h"
  10. #include "weblayer/browser/browser_process.h"
  11. #include "weblayer/browser/feature_list_creator.h"
  12. #include "weblayer/browser/safe_browsing/weblayer_client_side_detection_service_delegate.h"
  13. #include "weblayer/common/features.h"
  14. namespace weblayer {
  15. // static
  16. safe_browsing::ClientSideDetectionService*
  17. ClientSideDetectionServiceFactory::GetForBrowserContext(
  18. content::BrowserContext* browser_context) {
  19. if (base::FeatureList::IsEnabled(
  20. features::kWebLayerClientSidePhishingDetection)) {
  21. return static_cast<safe_browsing::ClientSideDetectionService*>(
  22. GetInstance()->GetServiceForBrowserContext(browser_context,
  23. /* create= */ true));
  24. }
  25. return nullptr;
  26. }
  27. // static
  28. ClientSideDetectionServiceFactory*
  29. ClientSideDetectionServiceFactory::GetInstance() {
  30. static base::NoDestructor<ClientSideDetectionServiceFactory> factory;
  31. return factory.get();
  32. }
  33. ClientSideDetectionServiceFactory::ClientSideDetectionServiceFactory()
  34. : BrowserContextKeyedServiceFactory(
  35. "ClientSideDetectionService",
  36. BrowserContextDependencyManager::GetInstance()) {}
  37. ClientSideDetectionServiceFactory::~ClientSideDetectionServiceFactory() =
  38. default;
  39. KeyedService* ClientSideDetectionServiceFactory::BuildServiceInstanceFor(
  40. content::BrowserContext* context) const {
  41. return new safe_browsing::ClientSideDetectionService(
  42. std::make_unique<WebLayerClientSideDetectionServiceDelegate>(
  43. static_cast<BrowserContextImpl*>(context)));
  44. }
  45. content::BrowserContext*
  46. ClientSideDetectionServiceFactory::GetBrowserContextToUse(
  47. content::BrowserContext* context) const {
  48. return context;
  49. }
  50. } // namespace weblayer