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

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: guard against null webcontents 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..3f13df0ce8d73eb99779610a5b9f59252207edf1 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
@@ -247,6 +249,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 +266,10 @@ PageLoadTracker::PageLoadTracker(
}
PageLoadTracker::~PageLoadTracker() {
+ if (app_entered_background_) {
+ UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground, true);
Alexei Svitkine (slow) 2016/07/29 17:31:27 Each histogram macro resolves to a lot of machine
Bryan McQuade 2016/07/29 17:48:10 Ah, right, thanks for reminding me about this. Don
+ }
+
if (did_stop_tracking_)
return;
@@ -398,6 +405,14 @@ void PageLoadTracker::OnInputEvent(const blink::WebInputEvent& event) {
}
}
+void PageLoadTracker::FlushMetricsOnAppEnterBackground() {
+ if (!app_entered_background_) {
+ UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground,
+ false);
+ app_entered_background_ = true;
+ }
+}
+
void PageLoadTracker::NotifyClientRedirectTo(
const PageLoadTracker& destination) {
if (timing_.first_paint) {
@@ -805,6 +820,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