Chromium Code Reviews| 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()) |