Chromium Code Reviews| Index: chrome/browser/android/webapk/webapk_installer.h |
| diff --git a/chrome/browser/android/webapk/webapk_installer.h b/chrome/browser/android/webapk/webapk_installer.h |
| index 2dd425de7932a5b2ac3b82f04a774dea95ecb4d2..9909449d2e6d4bb9b4fe9f22dcfc387911879e5d 100644 |
| --- a/chrome/browser/android/webapk/webapk_installer.h |
| +++ b/chrome/browser/android/webapk/webapk_installer.h |
| @@ -15,6 +15,7 @@ |
| #include "base/timer/timer.h" |
| #include "chrome/browser/android/shortcut_info.h" |
| #include "chrome/browser/net/file_downloader.h" |
| +#include "net/url_request/url_fetcher.h" |
| #include "net/url_request/url_fetcher_delegate.h" |
| #include "third_party/skia/include/core/SkBitmap.h" |
| @@ -26,23 +27,29 @@ namespace content { |
| class BrowserContext; |
| } |
| -namespace net { |
| -class URLFetcher; |
| -class URLRequestContextGetter; |
| +namespace google { |
| +namespace protobuf { |
| +class MessageLite; |
| +} |
| } |
| namespace webapk { |
| -class CreateWebApkRequest; |
| +class WebApk; |
| } |
| // Talks to Chrome WebAPK server and Google Play to generate a WebAPK on the |
| // server, download it, and install it. |
| class WebApkInstaller : public net::URLFetcherDelegate { |
| public: |
| + // Called when either a request of creating or updating WebAPK has been sent |
| + // or the creation process of the WebAPK on the server side fails. |
| + // Parameters: |
| + // - whether the request succeeds. |
| using FinishCallback = base::Callback<void(bool)>; |
| WebApkInstaller(const ShortcutInfo& shortcut_info, |
| const SkBitmap& shorcut_icon); |
| + |
| ~WebApkInstaller() override; |
| // Talks to the Chrome WebAPK server to generate a WebAPK on the server and to |
| @@ -56,6 +63,15 @@ class WebApkInstaller : public net::URLFetcherDelegate { |
| net::URLRequestContextGetter* request_context_getter, |
| const FinishCallback& callback); |
| + // Talks to the Chrome WebAPK server to update a WebAPK on the server and to |
| + // the Google Play server to download and install the generated WebAPK. Calls |
| + // |callback| after the request to download and install the WebAPK is sent to |
| + // the Google Play server. |
| + void UpdateAsync(content::BrowserContext* browser_context, |
| + const FinishCallback& callback, |
| + const std::string& webapk_package, |
| + int version); |
| + |
| protected: |
| // Starts installation of the downloaded WebAPK. Returns whether the install |
| // could be started. The installation may still fail if true is returned. |
| @@ -68,6 +84,12 @@ class WebApkInstaller : public net::URLFetcherDelegate { |
| const base::android::ScopedJavaLocalRef<jstring>& java_package_name); |
| private: |
| + enum TaskType { |
| + UNDEFINED, |
| + INSTALL, |
| + UPDATE, |
| + }; |
| + |
| // net::URLFetcherDelegate: |
| void OnURLFetchComplete(const net::URLFetcher* source) override; |
| @@ -75,10 +97,20 @@ class WebApkInstaller : public net::URLFetcherDelegate { |
| void InitializeRequestContextGetterOnUIThread( |
| content::BrowserContext* browser_context); |
| - // Sends request to WebAPK server to create WebAPK. During a successful |
| - // request the WebAPK server responds with the URL of the generated WebAPK. |
| + // Sends request to WebAPK server to create WebAPK. |
| void SendCreateWebApkRequest(); |
| + // Sends request to WebAPK server to update a WebAPK. |
| + void SendUpdateWebApkRequest(); |
| + |
| + // Sends a request to WebAPK server. During a successful request the |
| + // WebAPK server responds with a URL to send to Google Play to |
| + // download and install the generated WebAPK. |
| + void SendRequest( |
| + std::unique_ptr<::google::protobuf::MessageLite> request_proto, |
| + net::URLFetcher::RequestType request_type, |
| + const GURL& server_url); |
| + |
| // Called with the URL of generated WebAPK and the package name that the |
| // WebAPK should be installed at. |
| void OnGotWebApkDownloadUrl(const std::string& download_url, |
| @@ -92,8 +124,8 @@ class WebApkInstaller : public net::URLFetcherDelegate { |
| const std::string& package_name, |
| FileDownloader::Result result); |
| - // Populates webapk::CreateWebApkRequest and returns it. |
| - std::unique_ptr<webapk::CreateWebApkRequest> BuildCreateWebApkRequest(); |
| + // Populate the |webapk| field of a request. |
| + void PopulateWebApkProto(webapk::WebApk* webapk); |
| // Called when the request to the WebAPK server times out or when the WebAPK |
| // download times out. |
| @@ -132,6 +164,16 @@ class WebApkInstaller : public net::URLFetcherDelegate { |
| // WebAPK server URL. |
| GURL server_url_; |
| + // WebAPK package name. |
| + std::string webapk_package_; |
| + |
| + // WebAPK version code. |
| + int version_; |
|
pkotwicz
2016/08/08 18:59:16
Nit: Rename to |webapk_version_| for the sake of c
Xi Han
2016/08/08 21:25:05
Done.
|
| + |
| + // A flag to indicate whether the installer is for installing or updating a |
| + // WebAPK. |
| + TaskType taskType_; |
| + |
| // Used to get |weak_ptr_| on the IO thread. |
| base::WeakPtrFactory<WebApkInstaller> io_weak_ptr_factory_; |