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

Unified Diff: chrome/browser/page_load_metrics/metrics_web_contents_observer.cc

Issue 2189543002: Notify page load metrics when the app enters the background. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@clankbackgroundcallback
Patch Set: fix histogram description Created 4 years, 5 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/page_load_metrics/metrics_web_contents_observer.cc
diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
index 4f1635151f42b52ef3e52a75ff967db51a72ba94..2e12c4122994467c3b722d5738c0a5ae59607820 100644
--- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
+++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
@@ -53,6 +53,8 @@ const char kClientRedirectWithoutPaint[] =
"PageLoad.Internal.ClientRedirect.NavigationWithoutPaint";
const char kCommitToCompleteNoTimingIPCs[] =
"PageLoad.Internal.CommitToComplete.NoTimingIPCs";
+const char kPageLoadCompletedAfterAppBackground[] =
+ "PageLoad.Internal.PageLoadCompleted.AfterAppBackground";
} // namespace internal
@@ -187,6 +189,11 @@ void RecordInternalError(InternalErrorLoadEvent event) {
UMA_HISTOGRAM_ENUMERATION(internal::kErrorEvents, event, ERR_LAST_ENTRY);
}
+void RecordAppBackgroundPageLoadCompleted(bool completed_after_background) {
+ UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground,
+ completed_after_background);
+}
+
UserAbortType AbortTypeForPageTransition(ui::PageTransition transition) {
if (ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_RELOAD))
return ABORT_RELOAD;
@@ -247,6 +254,7 @@ PageLoadTracker::PageLoadTracker(
int aborted_chain_size,
int aborted_chain_size_same_url)
: did_stop_tracking_(false),
+ app_entered_background_(false),
navigation_start_(navigation_handle->NavigationStart()),
url_(navigation_handle->GetURL()),
abort_type_(ABORT_NONE),
@@ -263,6 +271,10 @@ PageLoadTracker::PageLoadTracker(
}
PageLoadTracker::~PageLoadTracker() {
+ if (app_entered_background_) {
+ RecordAppBackgroundPageLoadCompleted(true);
+ }
+
if (did_stop_tracking_)
return;
@@ -398,6 +410,13 @@ void PageLoadTracker::OnInputEvent(const blink::WebInputEvent& event) {
}
}
+void PageLoadTracker::FlushMetricsOnAppEnterBackground() {
+ if (!app_entered_background_) {
+ RecordAppBackgroundPageLoadCompleted(false);
+ app_entered_background_ = true;
+ }
+}
+
void PageLoadTracker::NotifyClientRedirectTo(
const PageLoadTracker& destination) {
if (timing_.first_paint) {
@@ -805,6 +824,17 @@ void MetricsWebContentsObserver::OnInputEvent(
committed_load_->OnInputEvent(event);
}
+void MetricsWebContentsObserver::FlushMetricsOnAppEnterBackground() {
+ if (committed_load_)
+ committed_load_->FlushMetricsOnAppEnterBackground();
+ for (const auto& kv : provisional_loads_) {
+ kv.second->FlushMetricsOnAppEnterBackground();
+ }
+ for (const auto& tracker : aborted_provisional_loads_) {
+ tracker->FlushMetricsOnAppEnterBackground();
+ }
+}
+
void MetricsWebContentsObserver::DidRedirectNavigation(
content::NavigationHandle* navigation_handle) {
if (!navigation_handle->IsInMainFrame())

Powered by Google App Engine
This is Rietveld 408576698