Chromium Code Reviews| Index: chrome/browser/android/webapk/webapk_installer.cc |
| diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc |
| index 348c336ccc867c6c2cc8f7b7523249ddcd72029f..4319c3fd8cff6a16bf397e5a3c20e2ed2babeb03 100644 |
| --- a/chrome/browser/android/webapk/webapk_installer.cc |
| +++ b/chrome/browser/android/webapk/webapk_installer.cc |
| @@ -13,6 +13,7 @@ |
| #include "base/files/file_path.h" |
| #include "base/files/file_util.h" |
| #include "base/memory/ref_counted.h" |
| +#include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_util.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| @@ -315,6 +316,12 @@ bool WebApkInstaller::StartUpdateUsingDownloadedWebApk( |
| env, java_ref_, java_file_path); |
| } |
| +bool WebApkInstaller::HasGooglePlayWebApkInstallDelegate() { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + return Java_WebApkInstaller_hasGooglePlayWebApkInstallDelegate( |
| + env, java_ref_); |
| +} |
| + |
| void WebApkInstaller::OnURLFetchComplete(const net::URLFetcher* source) { |
| timer_.Stop(); |
| @@ -339,6 +346,17 @@ void WebApkInstaller::OnURLFetchComplete(const net::URLFetcher* source) { |
| OnFailure(); |
| return; |
| } |
| + |
| + if (HasGooglePlayWebApkInstallDelegate()) { |
| + int version = 1; |
| + base::StringToInt(response->version(), &version); |
| + if (!InstallOrUpdateWebApkFromGooglePlay( |
| + response->package_name(), version, response->token())) { |
| + OnFailure(); |
| + } |
| + return; |
| + } |
| + |
| OnGotWebApkDownloadUrl(signed_download_url, response->package_name()); |
| } |
| @@ -410,6 +428,29 @@ void WebApkInstaller::SendRequest(std::unique_ptr<webapk::WebApk> request_proto, |
| url_fetcher_->Start(); |
| } |
| +bool WebApkInstaller::InstallOrUpdateWebApkFromGooglePlay( |
|
pkotwicz
2016/12/06 16:46:32
Nit: Reorder this function to match order in .h fi
Xi Han
2016/12/06 20:30:38
Done.
|
| + const std::string& package_name, |
| + int version, |
| + const std::string& token) { |
| + webapk_package_ = package_name; |
| + |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + base::android::ScopedJavaLocalRef<jstring> java_webapk_package = |
| + base::android::ConvertUTF8ToJavaString(env, webapk_package_); |
| + base::android::ScopedJavaLocalRef<jstring> java_title = |
| + base::android::ConvertUTF16ToJavaString(env, shortcut_info_.user_title); |
| + base::android::ScopedJavaLocalRef<jstring> java_token = |
| + base::android::ConvertUTF8ToJavaString(env, token); |
| + |
| + if (task_type_ == WebApkInstaller::INSTALL) { |
| + return Java_WebApkInstaller_installWebApkFromGooglePlayAsync( |
| + env, java_ref_, java_webapk_package, version, java_title, java_token); |
| + } else { |
| + return Java_WebApkInstaller_updateAsyncFromGooglePlay( |
| + env, java_ref_, java_webapk_package, version, java_title, java_token); |
| + } |
| +} |
| + |
| void WebApkInstaller::OnGotWebApkDownloadUrl(const GURL& download_url, |
| const std::string& package_name) { |
| webapk_package_ = package_name; |