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 bc777a07be34d4562fef85557e98d1068d3adab8..37a51c5485f77adecdd67f970fd62c980a00f9fa 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 |
@@ -38,6 +38,12 @@ class TestPageLoadMetricsEmbedderInterface |
test_->RegisterObservers(tracker); |
} |
+ std::unique_ptr<base::Timer> CreateTimer() override { |
+ auto timer = base::MakeUnique<test::WeakMockTimer>(); |
+ test_->SetMockTimer(timer->AsWeakPtr()); |
+ return std::move(timer); |
+ } |
+ |
private: |
PageLoadMetricsObserverTestHarness* test_; |
@@ -51,76 +57,6 @@ PageLoadMetricsObserverTestHarness::PageLoadMetricsObserverTestHarness() |
PageLoadMetricsObserverTestHarness::~PageLoadMetricsObserverTestHarness() {} |
-// static |
-void PageLoadMetricsObserverTestHarness::PopulateRequiredTimingFields( |
- 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(); |
- } |
- } |
-} |
- |
void PageLoadMetricsObserverTestHarness::SetUp() { |
ChromeRenderViewHostTestHarness::SetUp(); |
SetContents(CreateTestWebContents()); |
@@ -146,6 +82,12 @@ void PageLoadMetricsObserverTestHarness::SimulateTimingAndMetadataUpdate( |
const mojom::PageLoadTiming& timing, |
const mojom::PageLoadMetadata& metadata) { |
observer_->OnTimingUpdated(web_contents()->GetMainFrame(), timing, metadata); |
+ // If sending the timing update caused the PageLoadMetricsUpdateDispatcher to |
+ // schedule a buffering timer, then fire it now so metrics are dispatched to |
+ // observers. |
+ base::MockTimer* mock_timer = GetMockTimer(); |
+ if (mock_timer && mock_timer->IsRunning()) |
+ mock_timer->Fire(); |
} |
void PageLoadMetricsObserverTestHarness::SimulateStartedResource( |