Index: chrome/browser/android/webapk/webapk_icon_hasher.h |
diff --git a/chrome/browser/android/webapk/webapk_icon_hasher.h b/chrome/browser/android/webapk/webapk_icon_hasher.h |
index 8fb7e2ed0db288840b85f1554dde5a41bd2dfa6a..4a337106990f5d977c70017b18143d053a1906c2 100644 |
--- a/chrome/browser/android/webapk/webapk_icon_hasher.h |
+++ b/chrome/browser/android/webapk/webapk_icon_hasher.h |
@@ -10,44 +10,54 @@ |
#include "base/callback.h" |
#include "base/macros.h" |
-#include "base/time/time.h" |
+#include "base/timer/timer.h" |
#include "net/url_request/url_fetcher_delegate.h" |
+#include "url/gurl.h" |
namespace net { |
class URLFetcher; |
class URLRequestContextGetter; |
} |
-class GURL; |
- |
// Downloads an icon and takes a Murmur2 hash of the downloaded image. |
class WebApkIconHasher : public net::URLFetcherDelegate { |
public: |
using Murmur2HashCallback = |
base::Callback<void(const std::string& /* icon_murmur2_hash */)>; |
- WebApkIconHasher(); |
- ~WebApkIconHasher() override; |
- |
- // Downloads |icon_url|. Calls |callback| with the Murmur2 hash of the |
- // downloaded image. The hash is taken over the raw image bytes (no image |
- // encoding/decoding beforehand). |callback| is called with an empty string if |
- // the image cannot not be downloaded (e.g. 404 HTTP error code). |
- void DownloadAndComputeMurmur2Hash( |
+ WebApkIconHasher( |
net::URLRequestContextGetter* request_context_getter, |
const GURL& icon_url, |
const Murmur2HashCallback& callback); |
+ ~WebApkIconHasher() override; |
+ |
+ // Downloads |icon_url_|. Calls |callback_| with the Murmur2 hash of the |
+ // downloaded image. The hash is taken over the raw image bytes (no image |
+ // encoding/decoding beforehand). |callback_| is called with an empty string |
+ // if the image cannot not be downloaded in time (e.g. 404 HTTP error code). |
+ void DownloadAndComputeMurmur2Hash(); |
private: |
// net::URLFetcherDelegate: |
void OnURLFetchComplete(const net::URLFetcher* source) override; |
- // Fetches the image. |
- std::unique_ptr<net::URLFetcher> url_fetcher_; |
+ // Called if downloading the icon takes too long. |
+ void OnDownloadTimedOut(); |
+ |
+ // For retrieving URLRequestContext. Owned by the caller of this class. |
+ net::URLRequestContextGetter* url_request_context_getter_; |
+ |
+ // The icon URL. |
+ GURL icon_url_; |
// Called with the image hash. |
Murmur2HashCallback callback_; |
+ std::unique_ptr<net::URLFetcher> url_fetcher_; |
+ |
+ // Fails WebApkIconHasher if the download takes too long. |
+ base::OneShotTimer download_timeout_timer_; |
+ |
DISALLOW_COPY_AND_ASSIGN(WebApkIconHasher); |
}; |