Chromium Code Reviews| Index: chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
| diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
| index 02c3a98923fe879ea39cecc4b521c52b8bac6fdf..0a0824bae6380405be5446bb2d53a8fc978c37c6 100644 |
| --- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
| +++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc |
| @@ -44,32 +44,46 @@ const char kHistogramFromGWSAbortUnknownNavigationBeforeCommit[] = |
| const char kHistogramFromGWSAbortNewNavigationBeforePaint[] = |
| "PageLoad.Clients.FromGoogleSearch.AbortTiming.NewNavigation.AfterCommit." |
| "BeforePaint"; |
| +const char kHistogramFromGWSAbortNewNavigationBeforeInteraction[] = |
| + "PageLoad.Clients.FromGoogleSearch.AbortTiming.NewNavigation.AfterPaint." |
| + "BeforeInteraction"; |
| const char kHistogramFromGWSAbortStopBeforeCommit[] = |
| "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.BeforeCommit"; |
| const char kHistogramFromGWSAbortStopBeforePaint[] = |
| "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.AfterCommit." |
| "BeforePaint"; |
| +const char kHistogramFromGWSAbortStopBeforeInteraction[] = |
| + "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.AfterPaint." |
| + "BeforeInteraction"; |
| const char kHistogramFromGWSAbortCloseBeforeCommit[] = |
| "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.BeforeCommit"; |
| const char kHistogramFromGWSAbortCloseBeforePaint[] = |
| "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.AfterCommit." |
| "BeforePaint"; |
| - |
| +const char kHistogramFromGWSAbortCloseBeforeInteraction[] = |
| + "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.AfterPaint." |
| + "BeforeInteraction"; |
| const char kHistogramFromGWSAbortOtherBeforeCommit[] = |
| "PageLoad.Clients.FromGoogleSearch.AbortTiming.Other.BeforeCommit"; |
| const char kHistogramFromGWSAbortReloadBeforePaint[] = |
| "PageLoad.Clients.FromGoogleSearch.AbortTiming.Reload.AfterCommit." |
| "BeforePaint"; |
| +const char kHistogramFromGWSAbortReloadBeforeInteraction[] = |
| + "PageLoad.Clients.FromGoogleSearch.AbortTiming.Reload.AfterPaint." |
| + "BeforeInteraction"; |
| const char kHistogramFromGWSAbortForwardBackBeforePaint[] = |
| "PageLoad.Clients.FromGoogleSearch.AbortTiming.ForwardBackNavigation." |
| "AfterCommit.BeforePaint"; |
| +const char kHistogramFromGWSAbortForwardBackBeforeInteraction[] = |
| + "PageLoad.Clients.FromGoogleSearch.AbortTiming.ForwardBackNavigation." |
| + "AfterPaint.BeforeInteraction"; |
| } // namespace internal |
| namespace { |
| void LogCommittedAbortsBeforePaint(UserAbortType abort_type, |
| - base::TimeDelta time_to_abort) { |
| + base::TimeDelta time_to_abort) { |
| switch (abort_type) { |
| case UserAbortType::ABORT_STOP: |
| PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortStopBeforePaint, |
| @@ -101,6 +115,41 @@ void LogCommittedAbortsBeforePaint(UserAbortType abort_type, |
| } |
| } |
| +void LogAbortsAfterPaintBeforeInteraction(UserAbortType abort_type, |
| + base::TimeDelta time_to_abort) { |
| + switch (abort_type) { |
| + case UserAbortType::ABORT_STOP: |
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortStopBeforeInteraction, |
| + time_to_abort); |
| + break; |
| + case UserAbortType::ABORT_CLOSE: |
| + PAGE_LOAD_HISTOGRAM( |
| + internal::kHistogramFromGWSAbortCloseBeforeInteraction, |
| + time_to_abort); |
| + break; |
| + case UserAbortType::ABORT_NEW_NAVIGATION: |
| + PAGE_LOAD_HISTOGRAM( |
| + internal::kHistogramFromGWSAbortNewNavigationBeforeInteraction, |
| + time_to_abort); |
| + break; |
| + case UserAbortType::ABORT_RELOAD: |
| + PAGE_LOAD_HISTOGRAM( |
| + internal::kHistogramFromGWSAbortReloadBeforeInteraction, |
| + time_to_abort); |
| + break; |
| + case UserAbortType::ABORT_FORWARD_BACK: |
| + PAGE_LOAD_HISTOGRAM( |
| + internal::kHistogramFromGWSAbortForwardBackBeforeInteraction, |
| + time_to_abort); |
| + break; |
| + default: |
| + // These should only be logged for provisional aborts. |
| + DCHECK_NE(abort_type, UserAbortType::ABORT_OTHER); |
| + DCHECK_NE(abort_type, UserAbortType::ABORT_UNKNOWN_NAVIGATION); |
| + break; |
| + } |
| +} |
| + |
| void LogProvisionalAborts(UserAbortType abort_type, |
| base::TimeDelta time_to_abort) { |
| switch (abort_type) { |
| @@ -406,6 +455,11 @@ void FromGWSPageLoadMetricsLogger::OnComplete( |
| (timing.first_paint.is_zero() || timing.first_paint >= time_to_abort); |
| if (aborted_before_paint) |
| LogCommittedAbortsBeforePaint(abort_type, time_to_abort); |
| + if ((timing.first_paint.is_zero() || timing.first_paint < time_to_abort) && |
| + (extra_info.first_user_interaction_time.is_zero() || |
| + extra_info.first_user_interaction_time >= time_to_abort)) { |
|
Bryan McQuade
2016/05/25 21:32:29
if there first user interaction time is before pai
|
| + LogAbortsAfterPaintBeforeInteraction(abort_type, time_to_abort); |
| + } |
| } else { |
| if (aborted_in_foreground) |
| LogProvisionalAborts(abort_type, time_to_abort); |