| Index: chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc
|
| diff --git a/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc b/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc
|
| index 9a87792b8ad8032c1fc491d0db18d7bfbedf2933..48cc20a226b8852349ead7d245fdb4a07fbe11ac 100644
|
| --- a/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc
|
| +++ b/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h"
|
|
|
| #include <memory>
|
| +#include <string>
|
|
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| @@ -40,6 +41,18 @@ class TestPageLoadMetricsEmbedderInterface
|
| DISALLOW_COPY_AND_ASSIGN(TestPageLoadMetricsEmbedderInterface);
|
| };
|
|
|
| +base::Optional<base::TimeDelta> OptionalMin(
|
| + const base::Optional<base::TimeDelta>& a,
|
| + const base::Optional<base::TimeDelta>& b) {
|
| + if (a && !b)
|
| + return a;
|
| + if (b && !a)
|
| + return b;
|
| + if (!a && !b)
|
| + return a; // doesn't matter which
|
| + return base::Optional<base::TimeDelta>(std::min(a.value(), b.value()));
|
| +}
|
| +
|
| } // namespace
|
|
|
| PageLoadMetricsObserverTestHarness::PageLoadMetricsObserverTestHarness()
|
| @@ -50,17 +63,17 @@ PageLoadMetricsObserverTestHarness::~PageLoadMetricsObserverTestHarness() {}
|
| // static
|
| void PageLoadMetricsObserverTestHarness::PopulateRequiredTimingFields(
|
| PageLoadTiming* inout_timing) {
|
| - if (inout_timing->first_meaningful_paint && !inout_timing->first_paint) {
|
| - inout_timing->first_paint = inout_timing->first_meaningful_paint;
|
| - }
|
| - if (inout_timing->first_contentful_paint && !inout_timing->first_paint) {
|
| - inout_timing->first_paint = inout_timing->first_contentful_paint;
|
| + if (inout_timing->first_meaningful_paint &&
|
| + !inout_timing->first_contentful_paint) {
|
| + inout_timing->first_contentful_paint = inout_timing->first_meaningful_paint;
|
| }
|
| - if (inout_timing->first_text_paint && !inout_timing->first_paint) {
|
| - inout_timing->first_paint = inout_timing->first_text_paint;
|
| - }
|
| - if (inout_timing->first_image_paint && !inout_timing->first_paint) {
|
| - inout_timing->first_paint = inout_timing->first_image_paint;
|
| + if ((inout_timing->first_text_paint || inout_timing->first_image_paint ||
|
| + inout_timing->first_contentful_paint) &&
|
| + !inout_timing->first_paint) {
|
| + inout_timing->first_paint =
|
| + OptionalMin(OptionalMin(inout_timing->first_text_paint,
|
| + inout_timing->first_image_paint),
|
| + inout_timing->first_contentful_paint);
|
| }
|
| if (inout_timing->first_paint && !inout_timing->first_layout) {
|
| inout_timing->first_layout = inout_timing->first_paint;
|
| @@ -133,6 +146,14 @@ void PageLoadMetricsObserverTestHarness::SimulateTimingAndMetadataUpdate(
|
| web_contents()->GetMainFrame());
|
| }
|
|
|
| +void PageLoadMetricsObserverTestHarness::SimulateLoadedResource(
|
| + const ExtraRequestInfo& info) {
|
| + observer_->OnRequestComplete(
|
| + content::GlobalRequestID(), content::RESOURCE_TYPE_SCRIPT,
|
| + info.was_cached, info.data_reduction_proxy_used, info.raw_body_bytes,
|
| + info.original_network_content_length, base::TimeTicks::Now());
|
| +}
|
| +
|
| void PageLoadMetricsObserverTestHarness::SimulateInputEvent(
|
| const blink::WebInputEvent& event) {
|
| observer_->OnInputEvent(event);
|
|
|