accuracy_tip_safe_browsing_client.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 COMPONENTS_ACCURACY_TIPS_ACCURACY_TIP_SAFE_BROWSING_CLIENT_H_
  5. #define COMPONENTS_ACCURACY_TIPS_ACCURACY_TIP_SAFE_BROWSING_CLIENT_H_
  6. #include "base/callback_forward.h"
  7. #include "base/memory/ref_counted.h"
  8. #include "components/accuracy_tips/accuracy_tip_status.h"
  9. #include "components/safe_browsing/core/browser/db/database_manager.h"
  10. class GURL;
  11. namespace base {
  12. class SequencedTaskRunner;
  13. }
  14. namespace accuracy_tips {
  15. class AccuracyTipSafeBrowsingClient
  16. : public base::RefCountedThreadSafe<AccuracyTipSafeBrowsingClient>,
  17. public safe_browsing::SafeBrowsingDatabaseManager::Client {
  18. public:
  19. using AccuracyCheckCallback = base::OnceCallback<void(AccuracyTipStatus)>;
  20. AccuracyTipSafeBrowsingClient(
  21. scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> sb_database,
  22. scoped_refptr<base::SequencedTaskRunner> ui_task_runner,
  23. scoped_refptr<base::SequencedTaskRunner> io_task_runner);
  24. // Check status of URL with SafeBrowsingDatabaseManager. Will call
  25. // |callback| with result on UI thread.
  26. void CheckAccuracyStatus(const GURL& url, AccuracyCheckCallback callback);
  27. // Cancels pending tasks in |sb_database|.
  28. void Shutdown();
  29. private:
  30. // Check status of URL with SafeBrowsingDatabaseManager. Will call
  31. // |callback| with result on UI thread.
  32. void CheckAccuracyStatusOnIOThread(const GURL& url,
  33. AccuracyCheckCallback callback);
  34. // Replies to |callback| with |status| and ensure that this happens on the
  35. // ui thread.
  36. void ReplyOnUIThread(AccuracyCheckCallback callback,
  37. AccuracyTipStatus status);
  38. void ShutdownOnIOThread();
  39. // SafeBrowsingDatabaseManager::Client:
  40. void OnCheckUrlForAccuracyTip(bool should_show_accuracy_tip) override;
  41. friend class base::RefCountedThreadSafe<AccuracyTipSafeBrowsingClient>;
  42. ~AccuracyTipSafeBrowsingClient() override;
  43. scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> sb_database_;
  44. scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
  45. scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
  46. AccuracyCheckCallback pending_callback_; // accessed on io thread!
  47. };
  48. } // namespace accuracy_tips
  49. #endif // COMPONENTS_ACCURACY_TIPS_ACCURACY_TIP_SAFE_BROWSING_CLIENT_H_