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

Unified Diff: chrome/browser/page_load_metrics/observers/omnibox_suggestion_used_page_load_metrics_observer.cc

Issue 2744983002: [Page Load Metrics] Add page load metrics for omnibox. (Closed)
Patch Set: removed unnecessary override and check first_foreground_time Created 3 years, 9 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/observers/omnibox_suggestion_used_page_load_metrics_observer.cc
diff --git a/chrome/browser/page_load_metrics/observers/omnibox_suggestion_used_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/omnibox_suggestion_used_page_load_metrics_observer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9e1fc0a66e4748dbf6652badb735fe2b39df48e1
--- /dev/null
+++ b/chrome/browser/page_load_metrics/observers/omnibox_suggestion_used_page_load_metrics_observer.cc
@@ -0,0 +1,114 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/page_load_metrics/observers/omnibox_suggestion_used_page_load_metrics_observer.h"
+
+#include <algorithm>
+
+#include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
+
+namespace {
+
+const char kSearchFirstContentfulPaint[] =
+ "Omnibox.SuggestionUsed.Search.ForegroundToFirstContentfulPaint";
Bryan McQuade 2017/03/24 23:13:00 the non prerender histograms should actually be Na
lpy 2017/03/24 23:23:46 Done.
+const char kURLFirstContentfulPaint[] =
+ "Omnibox.SuggestionUsed.URL.ForegroundToFirstContentfulPaint";
Bryan McQuade 2017/03/24 23:13:00 same
lpy 2017/03/24 23:23:46 Done.
+const char kPrerenderSearchFirstContentfulPaint[] =
+ "Omnibox.SuggestionUsed.Search.ForegroundToFirstContentfulPaint.Prerender";
+const char kPrerenderURLFirstContentfulPaint[] =
+ "Omnibox.SuggestionUsed.URL.ForegroundToFirstContentfulPaint.Prerender";
+
+const char kSearchFirstMeaningfulPaint[] =
+ "Omnibox.SuggestionUsed.Search.ForegroundToFirstContentfulPaint";
Bryan McQuade 2017/03/24 23:13:01 these strings need to be updated to FMP
lpy 2017/03/24 23:23:46 Done.
+const char kURLFirstMeaningfulPaint[] =
+ "Omnibox.SuggestionUsed.URL.ForegroundToFirstContentfulPaint";
Bryan McQuade 2017/03/24 23:13:00 FMP
lpy 2017/03/24 23:23:46 Done.
+const char kPrerenderSearchFirstMeaningfulPaint[] =
+ "Omnibox.SuggestionUsed.Search.ForegroundToFirstContentfulPaint.Prerender";
Bryan McQuade 2017/03/24 23:13:01 same
lpy 2017/03/24 23:23:46 Done.
+const char kPrerenderURLFirstMeaningfulPaint[] =
+ "Omnibox.SuggestionUsed.URL.ForegroundToFirstContentfulPaint.Prerender";
Bryan McQuade 2017/03/24 23:13:00 same
lpy 2017/03/24 23:23:46 Done.
+
+const char kPrerenderSearchNavigationToFirstForeground[] =
+ "Omnibox.SuggestionUsed.Search.NavigationToFirstForeground.Prerender";
+const char kPrerenderURLNavigationToFirstForeground[] =
+ "Omnibox.SuggestionUsed.URL.NavigationToFirstForeground.Prerender";
+
+} // namespace
+
+OmniboxSuggestionUsedMetricsObserver::OmniboxSuggestionUsedMetricsObserver(
+ bool is_prerender)
+ : is_prerender_(is_prerender) {}
+
+OmniboxSuggestionUsedMetricsObserver::~OmniboxSuggestionUsedMetricsObserver() {}
+
+page_load_metrics::PageLoadMetricsObserver::ObservePolicy
+OmniboxSuggestionUsedMetricsObserver::OnHidden(
+ const page_load_metrics::PageLoadTiming& timing,
+ const page_load_metrics::PageLoadExtraInfo& info) {
+ return STOP_OBSERVING;
+}
+
+page_load_metrics::PageLoadMetricsObserver::ObservePolicy
+OmniboxSuggestionUsedMetricsObserver::OnCommit(
+ content::NavigationHandle* navigation_handle) {
+ transition_type_ = navigation_handle->GetPageTransition();
+ return (transition_type_ & ui::PAGE_TRANSITION_FROM_ADDRESS_BAR) != 0
+ ? CONTINUE_OBSERVING
+ : STOP_OBSERVING;
+}
+
+void OmniboxSuggestionUsedMetricsObserver::OnFirstContentfulPaint(
+ const page_load_metrics::PageLoadTiming& timing,
+ const page_load_metrics::PageLoadExtraInfo& info) {
+ base::TimeDelta fcp = timing.first_contentful_paint.value();
+
+ if (info.started_in_foreground) {
+ if (ui::PageTransitionCoreTypeIs(transition_type_,
+ ui::PAGE_TRANSITION_GENERATED)) {
+ PAGE_LOAD_HISTOGRAM(kSearchFirstContentfulPaint, fcp);
+ } else if (ui::PageTransitionCoreTypeIs(transition_type_,
+ ui::PAGE_TRANSITION_TYPED)) {
+ PAGE_LOAD_HISTOGRAM(kURLFirstContentfulPaint, fcp);
+ }
+ } else if (is_prerender_ && info.first_foreground_time) {
+ base::TimeDelta perceived_fcp =
+ std::max(base::TimeDelta(), fcp - info.first_foreground_time.value());
+ if (ui::PageTransitionCoreTypeIs(transition_type_,
+ ui::PAGE_TRANSITION_GENERATED)) {
+ PAGE_LOAD_HISTOGRAM(kPrerenderSearchFirstContentfulPaint, perceived_fcp);
+ PAGE_LOAD_HISTOGRAM(kPrerenderSearchNavigationToFirstForeground,
+ info.first_foreground_time.value());
+ } else if (ui::PageTransitionCoreTypeIs(transition_type_,
+ ui::PAGE_TRANSITION_TYPED)) {
+ PAGE_LOAD_HISTOGRAM(kPrerenderURLFirstContentfulPaint, perceived_fcp);
+ PAGE_LOAD_HISTOGRAM(kPrerenderURLNavigationToFirstForeground,
+ info.first_foreground_time.value());
+ }
+ }
+}
+
+void OmniboxSuggestionUsedMetricsObserver::OnFirstMeaningfulPaint(
+ const page_load_metrics::PageLoadTiming& timing,
+ const page_load_metrics::PageLoadExtraInfo& info) {
+ base::TimeDelta fmp = timing.first_meaningful_paint.value();
+
+ if (info.started_in_foreground) {
+ if (ui::PageTransitionCoreTypeIs(transition_type_,
+ ui::PAGE_TRANSITION_GENERATED)) {
+ PAGE_LOAD_HISTOGRAM(kSearchFirstMeaningfulPaint, fmp);
+ } else if (ui::PageTransitionCoreTypeIs(transition_type_,
+ ui::PAGE_TRANSITION_TYPED)) {
+ PAGE_LOAD_HISTOGRAM(kURLFirstMeaningfulPaint, fmp);
+ }
+ } else if (is_prerender_) {
+ base::TimeDelta perceived_fmp =
+ std::max(base::TimeDelta(), fmp - info.first_foreground_time.value());
+ if (ui::PageTransitionCoreTypeIs(transition_type_,
+ ui::PAGE_TRANSITION_GENERATED)) {
+ PAGE_LOAD_HISTOGRAM(kPrerenderSearchFirstMeaningfulPaint, perceived_fmp);
+ } else if (ui::PageTransitionCoreTypeIs(transition_type_,
+ ui::PAGE_TRANSITION_TYPED)) {
+ PAGE_LOAD_HISTOGRAM(kPrerenderURLFirstMeaningfulPaint, perceived_fmp);
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698