Index: chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc |
diff --git a/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc |
index 89b97bcb05716fec7d7cc87ea4d01d5de230bb83..07d663c74dcf1e21739b712dcbb24ae7e6341f03 100644 |
--- a/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc |
+++ b/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc |
@@ -4,6 +4,7 @@ |
#include "chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.h" |
+#include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h" |
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
#include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h" |
@@ -23,6 +24,12 @@ const char kBackgroundHistogramServiceWorkerFirstContentfulPaint[] = |
const char kHistogramServiceWorkerParseStartToFirstContentfulPaint[] = |
"PageLoad.Clients.ServiceWorker.PaintTiming." |
"ParseStartToFirstContentfulPaint"; |
+const char kHistogramServiceWorkerFirstMeaningfulPaint[] = |
+ "PageLoad.Clients.ServiceWorker.Experimental.PaintTiming." |
+ "NavigationToFirstMeaningfulPaint"; |
+const char kHistogramServiceWorkerParseStartToFirstMeaningfulPaint[] = |
+ "PageLoad.Clients.ServiceWorker.Experimental.PaintTiming." |
+ "ParseStartToFirstMeaningfulPaint"; |
const char kHistogramServiceWorkerDomContentLoaded[] = |
"PageLoad.Clients.ServiceWorker.DocumentTiming." |
"NavigationToDOMContentLoadedEventFired"; |
@@ -35,6 +42,12 @@ const char kHistogramServiceWorkerFirstContentfulPaintInbox[] = |
const char kHistogramServiceWorkerParseStartToFirstContentfulPaintInbox[] = |
"PageLoad.Clients.ServiceWorker.PaintTiming." |
"ParseStartToFirstContentfulPaint.inbox"; |
+const char kHistogramServiceWorkerFirstMeaningfulPaintInbox[] = |
+ "PageLoad.Clients.ServiceWorker.Experimental.PaintTiming." |
+ "NavigationToFirstMeaningfulPaint.inbox"; |
+const char kHistogramServiceWorkerParseStartToFirstMeaningfulPaintInbox[] = |
+ "PageLoad.Clients.ServiceWorker.Experimental.PaintTiming." |
+ "ParseStartToFirstMeaningfulPaint.inbox"; |
const char kHistogramServiceWorkerDomContentLoadedInbox[] = |
"PageLoad.Clients.ServiceWorker.DocumentTiming." |
"NavigationToDOMContentLoadedEventFired.inbox"; |
@@ -42,6 +55,25 @@ const char kHistogramServiceWorkerLoadInbox[] = |
"PageLoad.Clients.ServiceWorker.DocumentTiming.NavigationToLoadEventFired." |
"inbox"; |
+const char kHistogramServiceWorkerFirstContentfulPaintSearch[] = |
+ "PageLoad.Clients.ServiceWorker.PaintTiming." |
+ "NavigationToFirstContentfulPaint.search"; |
+const char kHistogramServiceWorkerParseStartToFirstContentfulPaintSearch[] = |
+ "PageLoad.Clients.ServiceWorker.PaintTiming." |
+ "ParseStartToFirstContentfulPaint.search"; |
+const char kHistogramServiceWorkerFirstMeaningfulPaintSearch[] = |
+ "PageLoad.Clients.ServiceWorker.Experimental.PaintTiming." |
+ "NavigationToFirstMeaningfulPaint.search"; |
+const char kHistogramServiceWorkerParseStartToFirstMeaningfulPaintSearch[] = |
+ "PageLoad.Clients.ServiceWorker.Experimental.PaintTiming." |
+ "ParseStartToFirstMeaningfulPaint.search"; |
+const char kHistogramServiceWorkerDomContentLoadedSearch[] = |
+ "PageLoad.Clients.ServiceWorker.DocumentTiming." |
+ "NavigationToDOMContentLoadedEventFired.search"; |
+const char kHistogramServiceWorkerLoadSearch[] = |
+ "PageLoad.Clients.ServiceWorker.DocumentTiming.NavigationToLoadEventFired." |
+ "search"; |
+ |
} // namespace internal |
namespace { |
@@ -88,6 +120,50 @@ void ServiceWorkerPageLoadMetricsObserver::OnFirstContentfulPaintInPage( |
internal::kHistogramServiceWorkerParseStartToFirstContentfulPaintInbox, |
timing.paint_timing->first_contentful_paint.value() - |
timing.parse_timing->parse_start.value()); |
+ } else if (FromGWSPageLoadMetricsLogger::IsGoogleSearchResultUrl(info.url)) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramServiceWorkerFirstContentfulPaintSearch, |
+ timing.paint_timing->first_contentful_paint.value()); |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramServiceWorkerParseStartToFirstContentfulPaintSearch, |
+ timing.paint_timing->first_contentful_paint.value() - |
+ timing.parse_timing->parse_start.value()); |
+ } |
+} |
+ |
+void ServiceWorkerPageLoadMetricsObserver:: |
+ OnFirstMeaningfulPaintInMainFrameDocument( |
+ const page_load_metrics::mojom::PageLoadTiming& timing, |
+ const page_load_metrics::PageLoadExtraInfo& info) { |
+ if (!IsServiceWorkerControlled(info)) |
+ return; |
+ if (!WasStartedInForegroundOptionalEventInForeground( |
+ timing.paint_timing->first_meaningful_paint, info)) { |
+ return; |
+ } |
+ PAGE_LOAD_HISTOGRAM(internal::kHistogramServiceWorkerFirstMeaningfulPaint, |
+ timing.paint_timing->first_meaningful_paint.value()); |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramServiceWorkerParseStartToFirstMeaningfulPaint, |
+ timing.paint_timing->first_meaningful_paint.value() - |
+ timing.parse_timing->parse_start.value()); |
+ |
+ if (IsInboxSite(info.url)) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramServiceWorkerFirstMeaningfulPaintInbox, |
+ timing.paint_timing->first_meaningful_paint.value()); |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramServiceWorkerParseStartToFirstMeaningfulPaintInbox, |
+ timing.paint_timing->first_meaningful_paint.value() - |
+ timing.parse_timing->parse_start.value()); |
+ } else if (FromGWSPageLoadMetricsLogger::IsGoogleSearchResultUrl(info.url)) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramServiceWorkerFirstMeaningfulPaintSearch, |
+ timing.paint_timing->first_meaningful_paint.value()); |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramServiceWorkerParseStartToFirstMeaningfulPaintSearch, |
+ timing.paint_timing->first_meaningful_paint.value() - |
+ timing.parse_timing->parse_start.value()); |
} |
} |
@@ -107,6 +183,10 @@ void ServiceWorkerPageLoadMetricsObserver::OnDomContentLoadedEventStart( |
PAGE_LOAD_HISTOGRAM( |
internal::kHistogramServiceWorkerDomContentLoadedInbox, |
timing.document_timing->dom_content_loaded_event_start.value()); |
+ } else if (FromGWSPageLoadMetricsLogger::IsGoogleSearchResultUrl(info.url)) { |
+ PAGE_LOAD_HISTOGRAM( |
+ internal::kHistogramServiceWorkerDomContentLoadedSearch, |
+ timing.document_timing->dom_content_loaded_event_start.value()); |
} |
} |
@@ -123,6 +203,9 @@ void ServiceWorkerPageLoadMetricsObserver::OnLoadEventStart( |
if (IsInboxSite(info.url)) { |
PAGE_LOAD_HISTOGRAM(internal::kHistogramServiceWorkerLoadInbox, |
timing.document_timing->load_event_start.value()); |
+ } else if (FromGWSPageLoadMetricsLogger::IsGoogleSearchResultUrl(info.url)) { |
+ PAGE_LOAD_HISTOGRAM(internal::kHistogramServiceWorkerLoadSearch, |
+ timing.document_timing->load_event_start.value()); |
} |
} |