| 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..840e1147b10384bafe8f733ff94de58fd64767f1 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,39 @@ bool WebApkInstaller::StartUpdateUsingDownloadedWebApk(
|
| env, java_ref_, java_file_path);
|
| }
|
|
|
| +bool WebApkInstaller::HasGooglePlayWebApkInstallDelegate() {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + return Java_WebApkInstaller_hasGooglePlayWebApkInstallDelegate(
|
| + env, java_ref_);
|
| +}
|
| +
|
| +bool WebApkInstaller::InstallOrUpdateWebApkFromGooglePlay(
|
| + 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);
|
| + base::android::ScopedJavaLocalRef<jstring> java_url =
|
| + base::android::ConvertUTF8ToJavaString(env, shortcut_info_.url.spec());
|
| +
|
| + if (task_type_ == WebApkInstaller::INSTALL) {
|
| + return Java_WebApkInstaller_installWebApkFromGooglePlayAsync(
|
| + env, java_ref_, java_webapk_package, version, java_title, java_token,
|
| + java_url);
|
| + } else {
|
| + return Java_WebApkInstaller_updateAsyncFromGooglePlay(
|
| + env, java_ref_, java_webapk_package, version, java_title, java_token,
|
| + java_url);
|
| + }
|
| +}
|
| +
|
| void WebApkInstaller::OnURLFetchComplete(const net::URLFetcher* source) {
|
| timer_.Stop();
|
|
|
| @@ -339,6 +373,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());
|
| }
|
|
|
|
|