| Index: chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc
|
| diff --git a/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc b/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc
|
| index 10cc4b0a2497ae3c44e446de378cc2eb9a3f871b..95ae2c28a875e85f8e3077b1645cabfc30997602 100644
|
| --- a/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc
|
| +++ b/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc
|
| @@ -80,8 +80,7 @@ void MetricsRenderFrameObserver::SendMetrics() {
|
| return;
|
| if (HasNoRenderFrame())
|
| return;
|
| - PageLoadTiming timing(GetTiming());
|
| - page_timing_metrics_sender_->Send(timing);
|
| + page_timing_metrics_sender_->Send(GetTiming());
|
| }
|
|
|
| bool MetricsRenderFrameObserver::ShouldSendMetrics() const {
|
| @@ -92,72 +91,73 @@ bool MetricsRenderFrameObserver::ShouldSendMetrics() const {
|
| return RendererPageTrackDecider(&document, frame->DataSource()).ShouldTrack();
|
| }
|
|
|
| -PageLoadTiming MetricsRenderFrameObserver::GetTiming() const {
|
| +mojom::PageLoadTimingPtr MetricsRenderFrameObserver::GetTiming() const {
|
| const blink::WebPerformance& perf =
|
| render_frame()->GetWebFrame()->Performance();
|
|
|
| - PageLoadTiming timing;
|
| + mojom::PageLoadTimingPtr timing(CreatePageLoadTiming());
|
| double start = perf.NavigationStart();
|
| - timing.navigation_start = base::Time::FromDoubleT(start);
|
| + timing->navigation_start = base::Time::FromDoubleT(start);
|
| if (perf.ResponseStart() > 0.0)
|
| - timing.response_start = ClampDelta(perf.ResponseStart(), start);
|
| + timing->response_start = ClampDelta(perf.ResponseStart(), start);
|
| if (perf.DomContentLoadedEventStart() > 0.0) {
|
| - timing.document_timing.dom_content_loaded_event_start =
|
| + timing->document_timing->dom_content_loaded_event_start =
|
| ClampDelta(perf.DomContentLoadedEventStart(), start);
|
| }
|
| if (perf.LoadEventStart() > 0.0) {
|
| - timing.document_timing.load_event_start =
|
| + timing->document_timing->load_event_start =
|
| ClampDelta(perf.LoadEventStart(), start);
|
| }
|
| if (perf.FirstLayout() > 0.0)
|
| - timing.document_timing.first_layout = ClampDelta(perf.FirstLayout(), start);
|
| + timing->document_timing->first_layout =
|
| + ClampDelta(perf.FirstLayout(), start);
|
| if (perf.FirstPaint() > 0.0)
|
| - timing.paint_timing.first_paint = ClampDelta(perf.FirstPaint(), start);
|
| + timing->paint_timing->first_paint = ClampDelta(perf.FirstPaint(), start);
|
| if (perf.FirstTextPaint() > 0.0) {
|
| - timing.paint_timing.first_text_paint =
|
| + timing->paint_timing->first_text_paint =
|
| ClampDelta(perf.FirstTextPaint(), start);
|
| }
|
| if (perf.FirstImagePaint() > 0.0) {
|
| - timing.paint_timing.first_image_paint =
|
| + timing->paint_timing->first_image_paint =
|
| ClampDelta(perf.FirstImagePaint(), start);
|
| }
|
| if (perf.FirstContentfulPaint() > 0.0) {
|
| - timing.paint_timing.first_contentful_paint =
|
| + timing->paint_timing->first_contentful_paint =
|
| ClampDelta(perf.FirstContentfulPaint(), start);
|
| }
|
| if (perf.FirstMeaningfulPaint() > 0.0) {
|
| - timing.paint_timing.first_meaningful_paint =
|
| + timing->paint_timing->first_meaningful_paint =
|
| ClampDelta(perf.FirstMeaningfulPaint(), start);
|
| }
|
| if (perf.ParseStart() > 0.0)
|
| - timing.parse_timing.parse_start = ClampDelta(perf.ParseStart(), start);
|
| + timing->parse_timing->parse_start = ClampDelta(perf.ParseStart(), start);
|
| if (perf.ParseStop() > 0.0)
|
| - timing.parse_timing.parse_stop = ClampDelta(perf.ParseStop(), start);
|
| - if (timing.parse_timing.parse_start) {
|
| + timing->parse_timing->parse_stop = ClampDelta(perf.ParseStop(), start);
|
| + if (timing->parse_timing->parse_start) {
|
| // If we started parsing, record all parser durations such as the amount of
|
| // time blocked on script load, even if those values are zero.
|
| - timing.parse_timing.parse_blocked_on_script_load_duration =
|
| + timing->parse_timing->parse_blocked_on_script_load_duration =
|
| base::TimeDelta::FromSecondsD(perf.ParseBlockedOnScriptLoadDuration());
|
| - timing.parse_timing
|
| - .parse_blocked_on_script_load_from_document_write_duration =
|
| + timing->parse_timing
|
| + ->parse_blocked_on_script_load_from_document_write_duration =
|
| base::TimeDelta::FromSecondsD(
|
| perf.ParseBlockedOnScriptLoadFromDocumentWriteDuration());
|
| - timing.parse_timing.parse_blocked_on_script_execution_duration =
|
| + timing->parse_timing->parse_blocked_on_script_execution_duration =
|
| base::TimeDelta::FromSecondsD(
|
| perf.ParseBlockedOnScriptExecutionDuration());
|
| - timing.parse_timing
|
| - .parse_blocked_on_script_execution_from_document_write_duration =
|
| + timing->parse_timing
|
| + ->parse_blocked_on_script_execution_from_document_write_duration =
|
| base::TimeDelta::FromSecondsD(
|
| perf.ParseBlockedOnScriptExecutionFromDocumentWriteDuration());
|
| }
|
|
|
| if (perf.AuthorStyleSheetParseDurationBeforeFCP() > 0.0) {
|
| - timing.style_sheet_timing.author_style_sheet_parse_duration_before_fcp =
|
| + timing->style_sheet_timing->author_style_sheet_parse_duration_before_fcp =
|
| base::TimeDelta::FromSecondsD(
|
| perf.AuthorStyleSheetParseDurationBeforeFCP());
|
| }
|
| if (perf.UpdateStyleDurationBeforeFCP() > 0.0) {
|
| - timing.style_sheet_timing.update_style_duration_before_fcp =
|
| + timing->style_sheet_timing->update_style_duration_before_fcp =
|
| base::TimeDelta::FromSecondsD(perf.UpdateStyleDurationBeforeFCP());
|
| }
|
| return timing;
|
|
|