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; |