weblayer_safe_browsing_tab_observer_delegate.cc 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. #include "weblayer/browser/safe_browsing/weblayer_safe_browsing_tab_observer_delegate.h"
  5. #include "base/bind.h"
  6. #include "components/prefs/pref_service.h"
  7. #include "components/safe_browsing/content/browser/client_side_detection_host.h"
  8. #include "components/safe_browsing/content/browser/client_side_detection_service.h"
  9. #include "content/public/browser/web_contents.h"
  10. #include "weblayer/browser/browser_context_impl.h"
  11. #include "weblayer/browser/browser_process.h"
  12. #include "weblayer/browser/profile_impl.h"
  13. #include "weblayer/browser/safe_browsing/client_side_detection_service_factory.h"
  14. #include "weblayer/browser/safe_browsing/safe_browsing_service.h"
  15. #include "weblayer/browser/safe_browsing/safe_browsing_token_fetcher_impl.h"
  16. #include "weblayer/browser/safe_browsing/weblayer_client_side_detection_host_delegate.h"
  17. namespace weblayer {
  18. namespace {
  19. std::unique_ptr<safe_browsing::ClientSideDetectionHost>
  20. CreateClientSideDetectionHost(content::WebContents* web_contents,
  21. PrefService* prefs,
  22. BrowserContextImpl* browser_context) {
  23. return safe_browsing::ClientSideDetectionHost::Create(
  24. web_contents,
  25. std::make_unique<WebLayerClientSideDetectionHostDelegate>(web_contents),
  26. prefs,
  27. std::make_unique<SafeBrowsingTokenFetcherImpl>(base::BindRepeating(
  28. &ProfileImpl::access_token_fetch_delegate,
  29. base::Unretained(ProfileImpl::FromBrowserContext(browser_context)))),
  30. static_cast<BrowserContextImpl*>(browser_context)->IsOffTheRecord(),
  31. // TODO(crbug.com/1171215): Change this to production mechanism for
  32. // enabling Gaia-keyed CSD once that mechanism is determined. See also
  33. // crbug.com/1190615.
  34. /* account_signed_in_callback= */ base::BindRepeating([]() {
  35. return false;
  36. }));
  37. }
  38. } // namespace
  39. WebLayerSafeBrowsingTabObserverDelegate::
  40. WebLayerSafeBrowsingTabObserverDelegate() = default;
  41. WebLayerSafeBrowsingTabObserverDelegate::
  42. ~WebLayerSafeBrowsingTabObserverDelegate() = default;
  43. PrefService* WebLayerSafeBrowsingTabObserverDelegate::GetPrefs(
  44. content::BrowserContext* browser_context) {
  45. return static_cast<BrowserContextImpl*>(browser_context)->pref_service();
  46. }
  47. safe_browsing::ClientSideDetectionService*
  48. WebLayerSafeBrowsingTabObserverDelegate::GetClientSideDetectionServiceIfExists(
  49. content::BrowserContext* browser_context) {
  50. return ClientSideDetectionServiceFactory::GetForBrowserContext(
  51. browser_context);
  52. }
  53. bool WebLayerSafeBrowsingTabObserverDelegate::DoesSafeBrowsingServiceExist() {
  54. return BrowserProcess::GetInstance()->GetSafeBrowsingService();
  55. }
  56. std::unique_ptr<safe_browsing::ClientSideDetectionHost>
  57. WebLayerSafeBrowsingTabObserverDelegate::CreateClientSideDetectionHost(
  58. content::WebContents* web_contents) {
  59. BrowserContextImpl* browser_context =
  60. static_cast<BrowserContextImpl*>(web_contents->GetBrowserContext());
  61. return ::weblayer::CreateClientSideDetectionHost(
  62. web_contents, GetPrefs(browser_context), browser_context);
  63. }
  64. } // namespace weblayer