| Index: chrome/browser/android/banners/app_banner_infobar_delegate.cc
|
| diff --git a/chrome/browser/android/banners/app_banner_infobar_delegate.cc b/chrome/browser/android/banners/app_banner_infobar_delegate.cc
|
| index 18f146f7c8688d8575398cecb799c1b36625fd11..789fecf17119b6fed599a0a5f29e0e47401b5a0f 100644
|
| --- a/chrome/browser/android/banners/app_banner_infobar_delegate.cc
|
| +++ b/chrome/browser/android/banners/app_banner_infobar_delegate.cc
|
| @@ -14,6 +14,7 @@
|
| #include "chrome/browser/android/shortcut_helper.h"
|
| #include "chrome/browser/android/shortcut_info.h"
|
| #include "chrome/browser/android/tab_android.h"
|
| +#include "chrome/browser/banners/app_banner_metrics.h"
|
| #include "chrome/browser/banners/app_banner_settings_helper.h"
|
| #include "chrome/browser/infobars/infobar_service.h"
|
| #include "chrome/browser/ui/android/infobars/app_banner_infobar.h"
|
| @@ -87,6 +88,7 @@ AppBannerInfoBarDelegate::AppBannerInfoBarDelegate(
|
| }
|
|
|
| AppBannerInfoBarDelegate::~AppBannerInfoBarDelegate() {
|
| + TrackDismissEvent(DISMISS_EVENT_DISMISSED);
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| Java_AppBannerInfoBarDelegate_destroy(env,
|
| java_delegate_.obj());
|
| @@ -111,6 +113,8 @@ void AppBannerInfoBarDelegate::InfoBarDismissed() {
|
| if (!web_contents)
|
| return;
|
|
|
| + TrackDismissEvent(DISMISS_EVENT_CLOSE_BUTTON);
|
| +
|
| if (!native_app_data_.is_null()) {
|
| AppBannerSettingsHelper::RecordBannerEvent(
|
| web_contents, web_contents->GetURL(),
|
| @@ -129,21 +133,32 @@ void AppBannerInfoBarDelegate::InfoBarDismissed() {
|
| bool AppBannerInfoBarDelegate::Accept() {
|
| content::WebContents* web_contents =
|
| InfoBarService::WebContentsFromInfoBar(infobar());
|
| - if (!web_contents)
|
| + if (!web_contents) {
|
| + TrackDismissEvent(DISMISS_EVENT_ERROR);
|
| return true;
|
| + }
|
|
|
| if (!native_app_data_.is_null()) {
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
|
|
| TabAndroid* tab = TabAndroid::FromWebContents(web_contents);
|
| - if (tab == nullptr)
|
| + if (tab == nullptr) {
|
| + TrackDismissEvent(DISMISS_EVENT_ERROR);
|
| return true;
|
| + }
|
|
|
| - return Java_AppBannerInfoBarDelegate_installOrOpenNativeApp(
|
| + bool was_opened = Java_AppBannerInfoBarDelegate_installOrOpenNativeApp(
|
| env,
|
| java_delegate_.obj(),
|
| tab->GetJavaObject().obj(),
|
| native_app_data_.obj());
|
| +
|
| + if (was_opened) {
|
| + TrackDismissEvent(DISMISS_EVENT_APP_OPEN);
|
| + } else {
|
| + TrackInstallEvent(INSTALL_EVENT_NATIVE_APP_INSTALL_TRIGGERED);
|
| + }
|
| + return was_opened;
|
| } else if (!web_app_data_.IsEmpty()) {
|
| AppBannerSettingsHelper::RecordBannerEvent(
|
| web_contents, web_contents->GetURL(),
|
| @@ -159,6 +174,8 @@ bool AppBannerInfoBarDelegate::Accept() {
|
| info,
|
| *app_icon_.get()),
|
| true);
|
| +
|
| + TrackInstallEvent(INSTALL_EVENT_WEB_APP_INSTALLED);
|
| return true;
|
| }
|
|
|
| @@ -176,13 +193,17 @@ bool AppBannerInfoBarDelegate::LinkClicked(WindowOpenDisposition disposition) {
|
| InfoBarService::WebContentsFromInfoBar(infobar());
|
| TabAndroid* tab = web_contents ? TabAndroid::FromWebContents(web_contents)
|
| : nullptr;
|
| - if (tab == nullptr)
|
| + if (tab == nullptr) {
|
| + TrackDismissEvent(DISMISS_EVENT_ERROR);
|
| return true;
|
| + }
|
|
|
| Java_AppBannerInfoBarDelegate_showAppDetails(env,
|
| java_delegate_.obj(),
|
| tab->GetJavaObject().obj(),
|
| native_app_data_.obj());
|
| +
|
| + TrackDismissEvent(DISMISS_EVENT_BANNER_CLICK);
|
| return true;
|
| }
|
|
|
| @@ -205,6 +226,8 @@ void AppBannerInfoBarDelegate::OnInstallIntentReturned(
|
| native_app_package_,
|
| AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN,
|
| AppBannerManager::GetCurrentTime());
|
| +
|
| + TrackInstallEvent(INSTALL_EVENT_NATIVE_APP_INSTALL_STARTED);
|
| }
|
|
|
| UpdateInstallState(env, obj);
|
| @@ -217,8 +240,10 @@ void AppBannerInfoBarDelegate::OnInstallFinished(JNIEnv* env,
|
| return;
|
|
|
| if (success) {
|
| + TrackInstallEvent(INSTALL_EVENT_NATIVE_APP_INSTALL_COMPLETED);
|
| UpdateInstallState(env, obj);
|
| } else if (infobar()->owner()) {
|
| + TrackDismissEvent(DISMISS_EVENT_INSTALL_TIMEOUT);
|
| infobar()->owner()->RemoveInfoBar(infobar());
|
| }
|
| }
|
|
|