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 4bb94ba61ca12602c6d366c8835ed3e59f1b6f7a..7c40df10a4ee6df585818b49dbf8a6afdb665d12 100644 |
| --- a/chrome/browser/android/webapk/webapk_installer.cc |
| +++ b/chrome/browser/android/webapk/webapk_installer.cc |
| @@ -4,6 +4,8 @@ |
| #include "chrome/browser/android/webapk/webapk_installer.h" |
| +#include <stdlib.h> |
| + |
| #include "base/android/build_info.h" |
| #include "base/android/jni_android.h" |
| #include "base/android/jni_string.h" |
| @@ -22,6 +24,7 @@ |
| #include "chrome/browser/android/webapk/webapk.pb.h" |
| #include "chrome/browser/android/webapk/webapk_icon_hasher.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "components/variations/variations_associated_data.h" |
| #include "components/version_info/version_info.h" |
| #include "content/public/browser/browser_thread.h" |
| @@ -328,6 +331,15 @@ void WebApkInstaller::OnURLFetchComplete(const net::URLFetcher* source) { |
| OnFailure(); |
| return; |
| } |
| + |
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnablePlayInstallWebApk)) { |
| + InstallWebApkFromPlayStore(response->package_name(), |
| + std::atoi(response->version().c_str()), |
|
pkotwicz
2016/11/23 03:11:28
Random thought: Why isn't the version part of the
Xi Han
2016/11/23 15:43:46
Scott confirmed that the token is just a random nu
pkotwicz
2016/11/23 15:56:38
I dislike that the token is a random number. If it
Xi Han
2016/11/23 16:44:42
As discussed offline, the version is required by P
|
| + response->token()); |
| + return; |
| + } |
| + |
| OnGotWebApkDownloadUrl(signed_download_url, response->package_name()); |
| } |
| @@ -399,6 +411,22 @@ void WebApkInstaller::SendRequest(std::unique_ptr<webapk::WebApk> request_proto, |
| url_fetcher_->Start(); |
| } |
| +void WebApkInstaller::InstallWebApkFromPlayStore( |
| + 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); |
| + |
| + Java_WebApkInstaller_installWebApkFromPlayStoreAsyncAndMonitorInstallation( |
| + 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; |