general_audience_browsing_service.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright 2019 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 CHROMECAST_BROWSER_GENERAL_AUDIENCE_BROWSING_SERVICE_H_
  5. #define CHROMECAST_BROWSER_GENERAL_AUDIENCE_BROWSING_SERVICE_H_
  6. #include <string>
  7. #include "base/memory/scoped_refptr.h"
  8. #include "chromecast/browser/general_audience_browsing/mojom/general_audience_browsing.mojom.h"
  9. #include "chromecast/external_mojo/external_service_support/external_connector.h"
  10. #include "mojo/public/cpp/bindings/receiver.h"
  11. #include "mojo/public/cpp/bindings/remote.h"
  12. #include "url/gurl.h"
  13. namespace network {
  14. class SharedURLLoaderFactory;
  15. } // namespace network
  16. namespace safe_search_api {
  17. class URLChecker;
  18. } // namespace safe_search_api
  19. namespace chromecast {
  20. class GeneralAudienceBrowsingService
  21. : public mojom::GeneralAudienceBrowsingAPIKeyObserver {
  22. public:
  23. using CheckURLCallback = base::OnceCallback<void(bool is_safe)>;
  24. GeneralAudienceBrowsingService(
  25. external_service_support::ExternalConnector* connector,
  26. scoped_refptr<network::SharedURLLoaderFactory> shared_url_loader_factory);
  27. GeneralAudienceBrowsingService(const GeneralAudienceBrowsingService&) =
  28. delete;
  29. GeneralAudienceBrowsingService& operator=(
  30. const GeneralAudienceBrowsingService&) = delete;
  31. ~GeneralAudienceBrowsingService() override;
  32. // Starts a call to the Safe Search API for the given URL to determine whether
  33. // the URL is "safe" (not porn). Returns whether |callback| was run
  34. // synchronously.
  35. bool CheckURL(const GURL& url, CheckURLCallback callback);
  36. // Creates a SafeSearch URLChecker using a given URLLoaderFactory for testing.
  37. void SetSafeSearchURLCheckerForTest(
  38. std::unique_ptr<safe_search_api::URLChecker> safe_search_url_checker);
  39. // mojom::GeneralAudienceBrowsingAPIKeyObserver implementation
  40. void OnGeneralAudienceBrowsingAPIKeyChanged(
  41. const std::string& api_key) override;
  42. private:
  43. std::unique_ptr<safe_search_api::URLChecker> CreateSafeSearchURLChecker();
  44. std::string api_key_;
  45. std::unique_ptr<safe_search_api::URLChecker> safe_search_url_checker_;
  46. scoped_refptr<network::SharedURLLoaderFactory> shared_url_loader_factory_;
  47. mojo::Receiver<mojom::GeneralAudienceBrowsingAPIKeyObserver>
  48. general_audience_browsing_api_key_observer_receiver_{this};
  49. mojo::Remote<mojom::GeneralAudienceBrowsingAPIKeySubject>
  50. general_audience_browsing_api_key_subject_remote_;
  51. };
  52. } // namespace chromecast
  53. #endif // CHROMECAST_BROWSER_GENERAL_AUDIENCE_BROWSING_SERVICE_H_