| 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 36196692ccc4c5711ce3ba02e344a0dfbb46f665..8d119ef38c7d8ac77494b7ef66b17f6ad23b90f2 100644
|
| --- a/chrome/browser/android/webapk/webapk_installer.h
|
| +++ b/chrome/browser/android/webapk/webapk_installer.h
|
| @@ -34,14 +34,15 @@ class WebApk;
|
| class WebApkIconHasher;
|
|
|
| // Talks to Chrome WebAPK server and Google Play to generate a WebAPK on the
|
| -// server, download it, and install it.
|
| +// server, download it, and install it. The native WebApkInstaller owns the
|
| +// Java WebApkInstaller counterpart.
|
| class WebApkInstaller : public net::URLFetcherDelegate {
|
| public:
|
| - // Called when either a request for creating/updating a WebAPK has been sent
|
| - // to Google Play or the create/update process fails.
|
| + // Called when the creation/updating of a WebAPK is finished or failed.
|
| // Parameters:
|
| - // - whether the request succeeds.
|
| - using FinishCallback = base::Callback<void(bool)>;
|
| + // - whether the process succeeds.
|
| + // - the package name of the WebAPK.
|
| + using FinishCallback = base::Callback<void(bool, const std::string&)>;
|
|
|
| WebApkInstaller(const ShortcutInfo& shortcut_info,
|
| const SkBitmap& shorcut_icon);
|
| @@ -52,12 +53,12 @@ class WebApkInstaller : public net::URLFetcherDelegate {
|
| // Google Play to install the downloaded WebAPK. Calls |callback| after the
|
| // request to install the WebAPK is sent to Google Play.
|
| void InstallAsync(content::BrowserContext* browser_context,
|
| - const FinishCallback& callback);
|
| + const FinishCallback& finish_callback);
|
|
|
| // Same as InstallAsync() but uses the passed in |request_context_getter|.
|
| void InstallAsyncWithURLRequestContextGetter(
|
| net::URLRequestContextGetter* request_context_getter,
|
| - const FinishCallback& callback);
|
| + const FinishCallback& finish_callback);
|
|
|
| // Talks to the Chrome WebAPK server to update a WebAPK on the server and to
|
| // the Google Play server to install the downloaded WebAPK. Calls |callback|
|
| @@ -79,6 +80,14 @@ class WebApkInstaller : public net::URLFetcherDelegate {
|
| // Sets the timeout for the server requests.
|
| void SetTimeoutMs(int timeout_ms);
|
|
|
| + // Called once the installation is complete or failed.
|
| + void OnInstallFinished(JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& obj,
|
| + jboolean success);
|
| +
|
| + // Registers JNI hooks.
|
| + static bool Register(JNIEnv* env);
|
| +
|
| protected:
|
| // Starts installation of the downloaded WebAPK. Returns whether the install
|
| // could be started. The installation may still fail if true is returned.
|
| @@ -98,6 +107,9 @@ class WebApkInstaller : public net::URLFetcherDelegate {
|
| const base::android::ScopedJavaLocalRef<jstring>& java_file_path,
|
| const base::android::ScopedJavaLocalRef<jstring>& java_package_name);
|
|
|
| + // Called when the request to install the WebAPK is sent to Google Play.
|
| + void OnSuccess();
|
| +
|
| private:
|
| enum TaskType {
|
| UNDEFINED,
|
| @@ -105,6 +117,9 @@ class WebApkInstaller : public net::URLFetcherDelegate {
|
| UPDATE,
|
| };
|
|
|
| + // Create the Java object.
|
| + void CreateJavaRef();
|
| +
|
| // net::URLFetcherDelegate:
|
| void OnURLFetchComplete(const net::URLFetcher* source) override;
|
|
|
| @@ -139,28 +154,21 @@ class WebApkInstaller : public net::URLFetcherDelegate {
|
| // Called once the WebAPK has been downloaded. Makes the downloaded WebAPK
|
| // world readable and installs the WebAPK if the download was successful.
|
| // |file_path| is the file path that the WebAPK was downloaded to.
|
| - // |package_name| is the package name that the WebAPK should be installed at.
|
| void OnWebApkDownloaded(const base::FilePath& file_path,
|
| - const std::string& package_name,
|
| FileDownloader::Result result);
|
|
|
| // Called once the downloaded WebAPK has been made world readable. Installs
|
| // the WebAPK.
|
| // |file_path| is the file path that the WebAPK was downloaded to.
|
| - // |package_name| is the package name that the WebAPK should be installed at.
|
| // |change_permission_success| is whether the WebAPK could be made world
|
| // readable.
|
| void OnWebApkMadeWorldReadable(const base::FilePath& file_path,
|
| - const std::string& package_name,
|
| bool change_permission_success);
|
|
|
| // Called when the request to the WebAPK server times out or when the WebAPK
|
| // download times out.
|
| void OnTimeout();
|
|
|
| - // Called when the request to install the WebAPK is sent to Google Play.
|
| - void OnSuccess();
|
| -
|
| // Called if a WebAPK could not be created. WebApkInstaller only tracks the
|
| // WebAPK creation and the WebAPK download. It does not track the
|
| // WebAPK installation. OnFailure() is not called if the WebAPK could not be
|
| @@ -214,6 +222,9 @@ class WebApkInstaller : public net::URLFetcherDelegate {
|
| // Indicates whether the installer is for installing or updating a WebAPK.
|
| TaskType task_type_;
|
|
|
| + // Points to the Java Object.
|
| + base::android::ScopedJavaGlobalRef<jobject> java_ref_;
|
| +
|
| // Used to get |weak_ptr_|.
|
| base::WeakPtrFactory<WebApkInstaller> weak_ptr_factory_;
|
|
|
|
|