Index: chrome/browser/android/banners/app_banner_infobar_delegate_android.cc |
diff --git a/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc b/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc |
index 36a65e3cdc4cce17f59af8862fd119465b0805fa..1ce9874a5b97b8d4416ec86cba3494bda2eb1656 100644 |
--- a/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc |
+++ b/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc |
@@ -38,6 +38,8 @@ using base::android::ConvertUTF16ToJavaString; |
using base::android::JavaParamRef; |
using base::android::ScopedJavaLocalRef; |
+// TODO(zpeng): Reorganize control flow to allow itemized metrics. |
dominickn
2016/09/28 02:10:25
Nit: don't have a TODO without a crbug link.
F
2016/09/30 18:02:01
Done. Thanks for the information!
|
+ |
namespace { |
bool IsInfoEmpty(const std::unique_ptr<ShortcutInfo>& info) { |
@@ -194,26 +196,37 @@ bool AppBannerInfoBarDelegateAndroid::AcceptWebApk( |
return true; |
} |
- // Request install the WebAPK. |
- install_state_ = INSTALLING; |
- TrackUserResponse(USER_RESPONSE_WEB_APP_ACCEPTED); |
- AppBannerSettingsHelper::RecordBannerInstallEvent( |
- web_contents, shortcut_info_->url.spec(), AppBannerSettingsHelper::WEB); |
+ // Check whether the WebAPK has been installed. |
+ std::string installed_webapk_package_name = |
+ ShortcutHelper::QueryWebApkPackage(web_contents->GetLastCommittedURL()); |
+ if (installed_webapk_package_name.empty()) { |
+ // Request install the WebAPK. |
+ install_state_ = INSTALLING; |
+ TrackUserResponse(USER_RESPONSE_WEB_APP_ACCEPTED); |
+ AppBannerSettingsHelper::RecordBannerInstallEvent( |
+ web_contents, shortcut_info_->url.spec(), AppBannerSettingsHelper::WEB); |
- Java_AppBannerInfoBarDelegateAndroid_setWebApkInstallingState( |
- env, java_delegate_, true); |
- UpdateInstallState(env, nullptr); |
- WebApkInstaller::FinishCallback callback = |
- base::Bind(&AppBannerInfoBarDelegateAndroid::OnWebApkInstallFinished, |
- weak_ptr_factory_.GetWeakPtr()); |
- ShortcutHelper::InstallWebApkWithSkBitmap(web_contents->GetBrowserContext(), |
- *shortcut_info_, |
- *icon_.get(), callback); |
- SendBannerAccepted(web_contents, "web"); |
+ Java_AppBannerInfoBarDelegateAndroid_setWebApkInstallingState( |
+ env, java_delegate_, true); |
+ UpdateInstallState(env, nullptr); |
+ WebApkInstaller::FinishCallback callback = |
+ base::Bind(&AppBannerInfoBarDelegateAndroid::OnWebApkInstallFinished, |
+ weak_ptr_factory_.GetWeakPtr()); |
+ ShortcutHelper::InstallWebApkWithSkBitmap(web_contents->GetBrowserContext(), |
+ *shortcut_info_, |
+ *icon_.get(), callback); |
+ SendBannerAccepted(web_contents, "web"); |
- // Prevent the infobar from disappearing, because the infobar will show |
- // "Adding" during the installation process. |
- return false; |
+ // Prevent the infobar from disappearing, because the infobar will show |
+ // "Adding" during the installation process. |
+ return false; |
+ } else { |
dominickn
2016/09/28 02:10:25
Nit: remove the else clause (no else after return)
F
2016/09/30 18:02:01
Done. Thanks for the information!
|
+ // Bypass the installation process. |
+ TrackUserResponse(USER_RESPONSE_WEB_APP_ACCEPTED); |
pkotwicz
2016/09/29 14:18:54
Shouldn't you log:
webapk::TrackUserAction(webapk:
F
2016/09/30 18:02:01
Resolved in offline discussion. Filed new issue ht
|
+ weak_ptr_factory_.GetWeakPtr()->OnWebApkInstallFinished( |
+ true, installed_webapk_package_name); |
pkotwicz
2016/09/29 14:18:54
Calling AppBannerInfoBarDelegateAndroid::OnWebApkI
F
2016/09/30 18:02:01
Resolved in offline discussion. See above.
|
+ return false; |
+ } |
} |
AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid( |