| // Copyright 2021 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef CHROME_BROWSER_WEBSHARE_SAFE_BROWSING_REQUEST_H_ | 
 | #define CHROME_BROWSER_WEBSHARE_SAFE_BROWSING_REQUEST_H_ | 
 |  | 
 | #include <memory> | 
 |  | 
 | #include "base/functional/callback.h" | 
 | #include "base/memory/scoped_refptr.h" | 
 | #include "base/memory/weak_ptr.h" | 
 | #include "base/time/time.h" | 
 | #include "content/public/browser/browser_thread.h" | 
 | #include "url/gurl.h" | 
 |  | 
 | namespace safe_browsing { | 
 | class SafeBrowsingDatabaseManager; | 
 | } | 
 |  | 
 | // Represents a single request to the Safe Browsing service to check whether | 
 | // a website is safe when sharing files with the Web Share API. It is used for | 
 | // PDFs for instance on Desktop platforms. Can be created and used on any one | 
 | // thread. | 
 | class SafeBrowsingRequest { | 
 |  public: | 
 |   // Constructs a request that check whether a website |url| is safe by | 
 |   // consulting the |database_manager|, and invokes |callback| when done. | 
 |   // | 
 |   // It is guaranteed that |callback| will never be invoked synchronously, and | 
 |   // it will not be invoked after |this| goes out of scope. | 
 |   SafeBrowsingRequest(scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> | 
 |                           database_manager, | 
 |                       const GURL& url, | 
 |                       base::OnceCallback<void(bool)> callback); | 
 |   ~SafeBrowsingRequest(); | 
 |  | 
 |  private: | 
 |   class SafeBrowsingClient; | 
 |  | 
 |   SafeBrowsingRequest(const SafeBrowsingRequest&) = delete; | 
 |   SafeBrowsingRequest& operator=(const SafeBrowsingRequest&) = delete; | 
 |  | 
 |   // Posted by the |client_| from the IO thread when it gets a response. | 
 |   void OnResultReceived(bool is_url_safe); | 
 |  | 
 |   // The client interfacing with Safe Browsing. | 
 |   std::unique_ptr<SafeBrowsingClient> client_; | 
 |  | 
 |   base::OnceCallback<void(bool)> callback_; | 
 |  | 
 |   base::WeakPtrFactory<SafeBrowsingRequest> weak_factory_{this}; | 
 | }; | 
 |  | 
 | #endif  // CHROME_BROWSER_WEBSHARE_SAFE_BROWSING_REQUEST_H_ |