| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_COMPONENTS_SECURITY_INTERSTITIALS_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_ |
| #define IOS_COMPONENTS_SECURITY_INTERSTITIALS_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_ |
| |
| #include <memory> |
| |
| #include "base/functional/callback.h" |
| #include "base/memory/ref_counted.h" |
| #include "net/cookies/cookie_deletion_info.h" |
| #include "services/network/public/mojom/fetch_api.mojom.h" |
| #include "url/gurl.h" |
| |
| class PrefService; |
| class SafeBrowsingClient; |
| |
| namespace base { |
| class FilePath; |
| } // namespace base |
| |
| namespace network { |
| class SharedURLLoaderFactory; |
| |
| namespace mojom { |
| class NetworkContext; |
| } // namespace mojom |
| } // namespace network |
| |
| namespace safe_browsing { |
| class SafeBrowsingDatabaseManager; |
| class SafeBrowsingUrlCheckerImpl; |
| class SafeBrowsingMetricsCollector; |
| } // namespace safe_browsing |
| |
| namespace web { |
| class WebState; |
| } // namespace web |
| |
| // Manages Safe Browsing related functionality. This class owns and provides |
| // support for constructing and initializing the Safe Browsing database. |
| // This class is RefCounted so that PostTask'd calls into this class can retain |
| // a reference to an instance. |
| class SafeBrowsingService |
| : public base::RefCountedThreadSafe<SafeBrowsingService> { |
| public: |
| SafeBrowsingService(const SafeBrowsingService&) = delete; |
| SafeBrowsingService& operator=(const SafeBrowsingService&) = delete; |
| |
| // Called on the UI thread to initialize the service. |
| virtual void Initialize(const base::FilePath& user_data_path) = 0; |
| |
| // Called on the UI thread when a new BrowserState is created with the |
| // BrowserState's associated `prefs` and `metrics_collector`. |
| virtual void OnBrowserStateCreated( |
| PrefService* prefs, |
| safe_browsing::SafeBrowsingMetricsCollector* metrics_collector) = 0; |
| |
| // Called on the UI thread when a BrowserState is destroyed with the |
| // BrowserState's associated `prefs`. |
| virtual void OnBrowserStateDestroyed(PrefService* prefs) = 0; |
| |
| // Called on the UI thread to terminate the service. This must be called |
| // before the IO thread is torn down. |
| virtual void ShutDown() = 0; |
| |
| // Creates a SafeBrowsingUrlCheckerImpl that can be used to query the |
| // SafeBrowsingDatabaseManager owned by this service. |
| virtual std::unique_ptr<safe_browsing::SafeBrowsingUrlCheckerImpl> |
| CreateUrlChecker(network::mojom::RequestDestination request_destination, |
| web::WebState* web_state, |
| SafeBrowsingClient* client) = 0; |
| |
| // Creates a SafeBrowsingUrlCheckerImpl that can be used for async checks. |
| virtual std::unique_ptr<safe_browsing::SafeBrowsingUrlCheckerImpl> |
| CreateAsyncChecker(network::mojom::RequestDestination request_destination, |
| web::WebState* web_state, |
| SafeBrowsingClient* client) = 0; |
| |
| // Creates a SafeBrowsingUrlCheckerImpl that can be used for sync checks which |
| // handles checks not related to real time. |
| virtual std::unique_ptr<safe_browsing::SafeBrowsingUrlCheckerImpl> |
| CreateSyncChecker(network::mojom::RequestDestination request_destination, |
| web::WebState* web_state, |
| SafeBrowsingClient* client) = 0; |
| |
| // Checks if async check should be created. |
| virtual bool ShouldCreateAsyncChecker(web::WebState* web_state, |
| SafeBrowsingClient* client) = 0; |
| |
| // Returns true if `url` has a scheme that is handled by Safe Browsing. |
| virtual bool CanCheckUrl(const GURL& url) const = 0; |
| |
| // Returns the SharedURLLoaderFactory used for Safe Browsing network requests. |
| virtual scoped_refptr<network::SharedURLLoaderFactory> |
| GetURLLoaderFactory() = 0; |
| |
| // Returns the SafeBrowsingDatabaseManager owned by this service. |
| virtual scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> |
| GetDatabaseManager() = 0; |
| |
| // Returns the network context owned by this service. |
| virtual network::mojom::NetworkContext* GetNetworkContext() = 0; |
| |
| // Clears cookies if the given deletion time range is for "all time". Calls |
| // the given `callback` once deletion is complete. |
| virtual void ClearCookies( |
| const net::CookieDeletionInfo::TimeRange& creation_range, |
| base::OnceClosure callback) = 0; |
| |
| protected: |
| SafeBrowsingService() = default; |
| virtual ~SafeBrowsingService() = default; |
| |
| private: |
| friend class base::RefCountedThreadSafe<SafeBrowsingService>; |
| }; |
| |
| #endif // IOS_COMPONENTS_SECURITY_INTERSTITIALS_SAFE_BROWSING_SAFE_BROWSING_SERVICE_H_ |