Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Unified Diff: chrome/browser/banners/app_banner_manager.cc

Issue 2178833002: Add new app banner metrics using InstallableStatusCode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@banner-integrate-checker-no-refptr
Patch Set: Rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/banners/app_banner_manager.cc
diff --git a/chrome/browser/banners/app_banner_manager.cc b/chrome/browser/banners/app_banner_manager.cc
index 2757f5cb5ac99beb1a0576bea768ebea3d80836d..4f08c961aad168505f4330a08e7cd5e52681dc17 100644
--- a/chrome/browser/banners/app_banner_manager.cc
+++ b/chrome/browser/banners/app_banner_manager.cc
@@ -217,6 +217,7 @@ void AppBannerManager::PerformInstallableCheck() {
if (IsWebAppInstalled(web_contents()->GetBrowserContext(),
manifest_.start_url) &&
!IsDebugMode()) {
+ TrackInstallableErrorCode(ALREADY_INSTALLED);
Stop();
}
@@ -273,12 +274,15 @@ void AppBannerManager::ReportError(content::WebContents* web_contents,
InstallableErrorCode code) {
if (IsDebugMode())
LogErrorToConsole(web_contents, code, GetErrorParam(code));
+ else
+ TrackInstallableErrorCode(code);
}
void AppBannerManager::Stop() {
if (was_canceled_by_page_ && !page_requested_prompt_) {
TrackBeforeInstallEvent(
BEFORE_INSTALL_EVENT_PROMPT_NOT_CALLED_AFTER_PREVENT_DEFAULT);
+ ReportError(web_contents(), RENDERER_CANCELLED);
}
is_active_ = false;
@@ -367,19 +371,24 @@ void AppBannerManager::OnEngagementIncreased(content::WebContents* contents,
// 1. engagement increased for the web contents which we are attached to; and
// 2. there are no currently active media players; and
// 3. we have accumulated sufficient engagement.
- if (web_contents() == contents && active_media_players_.empty() &&
- AppBannerSettingsHelper::HasSufficientEngagement(score)) {
- // Stop observing so we don't double-trigger the banner.
- SiteEngagementObserver::Observe(nullptr);
-
- if (!load_finished_) {
- // Wait until the main frame finishes loading before requesting a banner.
- banner_request_queued_ = true;
+ if (web_contents() == contents && active_media_players_.empty()) {
+ if (AppBannerSettingsHelper::HasSufficientEngagement(score)) {
+ // Stop observing so we don't double-trigger the banner.
+ SiteEngagementObserver::Observe(nullptr);
+
+ if (!load_finished_) {
+ // Queue the banner request until the main frame finishes loading.
+ banner_request_queued_ = true;
+ } else {
+ // A banner request performs some simple tests, creates a data fetcher,
+ // and starts some asynchronous checks to test installability. It should
+ // be safe to start this in response to user input.
+ RequestAppBanner(url, false /* is_debug_mode */);
+ }
} else {
- // Requesting a banner performs some simple tests, creates a data fetcher,
- // and starts some asynchronous checks to test installability. It should
- // be safe to start this in response to user input.
- RequestAppBanner(url, false /* is_debug_mode */);
+ // If IsDebugMode() returns true, we must have taken the other branch, so
+ // there is no need to recheck it here to avoid skew.
gone 2016/08/10 21:02:51 Seems like something that should be DCHECKED, as w
dominickn 2016/08/11 07:00:19 Done.
+ TrackInstallableErrorCode(INSUFFICIENT_ENGAGEMENT);
}
}
}
@@ -397,6 +406,7 @@ bool AppBannerManager::CheckIfShouldShowBanner() {
content::WebContents* contents = web_contents();
DCHECK(contents);
+ // ShouldShowBanner will call TrackInstallableErrorCode as appropriate.
return AppBannerSettingsHelper::ShouldShowBanner(
contents, validated_url_, GetAppIdentifier(), GetCurrentTime());
}
@@ -439,7 +449,6 @@ void AppBannerManager::OnBannerPromptReply(
!page_requested_prompt_) {
TrackBeforeInstallEvent(BEFORE_INSTALL_EVENT_PREVENT_DEFAULT_CALLED);
was_canceled_by_page_ = true;
- ReportError(contents, RENDERER_CANCELLED);
return;
}
@@ -461,6 +470,7 @@ void AppBannerManager::OnBannerPromptReply(
DCHECK(!manifest_.IsEmpty());
DCHECK(!icon_url_.is_empty());
DCHECK(icon_.get());
+
TrackBeforeInstallEvent(BEFORE_INSTALL_EVENT_COMPLETE);
ShowBanner();
is_active_ = false;

Powered by Google App Engine
This is Rietveld 408576698