Index: chrome/common/page_load_metrics/test/page_load_metrics_test_util.cc |
diff --git a/chrome/common/page_load_metrics/test/page_load_metrics_test_util.cc b/chrome/common/page_load_metrics/test/page_load_metrics_test_util.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4b587e87eb3033c411cd965e82ba0b5e90de4dda |
--- /dev/null |
+++ b/chrome/common/page_load_metrics/test/page_load_metrics_test_util.cc |
@@ -0,0 +1,79 @@ |
+// 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/common/page_load_metrics/test/page_load_metrics_test_util.h" |
+ |
+#include "chrome/common/page_load_metrics/page_load_metrics.mojom.h" |
+#include "chrome/common/page_load_metrics/page_load_metrics_util.h" |
+ |
+using page_load_metrics::OptionalMin; |
+ |
+void PopulateRequiredTimingFields( |
+ page_load_metrics::mojom::PageLoadTiming* inout_timing) { |
+ if (inout_timing->paint_timing->first_meaningful_paint && |
+ !inout_timing->paint_timing->first_contentful_paint) { |
+ inout_timing->paint_timing->first_contentful_paint = |
+ inout_timing->paint_timing->first_meaningful_paint; |
+ } |
+ if ((inout_timing->paint_timing->first_text_paint || |
+ inout_timing->paint_timing->first_image_paint || |
+ inout_timing->paint_timing->first_contentful_paint) && |
+ !inout_timing->paint_timing->first_paint) { |
+ inout_timing->paint_timing->first_paint = |
+ OptionalMin(OptionalMin(inout_timing->paint_timing->first_text_paint, |
+ inout_timing->paint_timing->first_image_paint), |
+ inout_timing->paint_timing->first_contentful_paint); |
+ } |
+ if (inout_timing->paint_timing->first_paint && |
+ !inout_timing->document_timing->first_layout) { |
+ inout_timing->document_timing->first_layout = |
+ inout_timing->paint_timing->first_paint; |
+ } |
+ if (inout_timing->document_timing->load_event_start && |
+ !inout_timing->document_timing->dom_content_loaded_event_start) { |
+ inout_timing->document_timing->dom_content_loaded_event_start = |
+ inout_timing->document_timing->load_event_start; |
+ } |
+ if (inout_timing->document_timing->first_layout && |
+ !inout_timing->parse_timing->parse_start) { |
+ inout_timing->parse_timing->parse_start = |
+ inout_timing->document_timing->first_layout; |
+ } |
+ if (inout_timing->document_timing->dom_content_loaded_event_start && |
+ !inout_timing->parse_timing->parse_stop) { |
+ inout_timing->parse_timing->parse_stop = |
+ inout_timing->document_timing->dom_content_loaded_event_start; |
+ } |
+ if (inout_timing->parse_timing->parse_stop && |
+ !inout_timing->parse_timing->parse_start) { |
+ inout_timing->parse_timing->parse_start = |
+ inout_timing->parse_timing->parse_stop; |
+ } |
+ if (inout_timing->parse_timing->parse_start && |
+ !inout_timing->response_start) { |
+ inout_timing->response_start = inout_timing->parse_timing->parse_start; |
+ } |
+ if (inout_timing->parse_timing->parse_start) { |
+ if (!inout_timing->parse_timing->parse_blocked_on_script_load_duration) |
+ inout_timing->parse_timing->parse_blocked_on_script_load_duration = |
+ base::TimeDelta(); |
+ if (!inout_timing->parse_timing |
+ ->parse_blocked_on_script_execution_duration) { |
+ inout_timing->parse_timing->parse_blocked_on_script_execution_duration = |
+ base::TimeDelta(); |
+ } |
+ if (!inout_timing->parse_timing |
+ ->parse_blocked_on_script_load_from_document_write_duration) { |
+ inout_timing->parse_timing |
+ ->parse_blocked_on_script_load_from_document_write_duration = |
+ base::TimeDelta(); |
+ } |
+ if (!inout_timing->parse_timing |
+ ->parse_blocked_on_script_execution_from_document_write_duration) { |
+ inout_timing->parse_timing |
+ ->parse_blocked_on_script_execution_from_document_write_duration = |
+ base::TimeDelta(); |
+ } |
+ } |
+} |