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 908b825e12899712509a0974db413b921afce79b..650920af917e61070754c55d48024d9d6f896d25 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,13 @@ class TestPageLoadMetricsEmbedderInterface |
test_->RegisterObservers(tracker); |
} |
+ std::unique_ptr<base::Timer> CreateTimer() override { |
+ std::unique_ptr<PageLoadMetricsObserverTestHarness::WeakMockTimer> timer = |
+ base::MakeUnique<PageLoadMetricsObserverTestHarness::WeakMockTimer>(); |
+ test_->SetMostRecentTimer(timer->AsWeakPtr()); |
+ return std::move(timer); |
+ } |
+ |
private: |
PageLoadMetricsObserverTestHarness* test_; |
@@ -146,6 +153,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 = GetMostRecentTimer(); |
+ if (mock_timer && mock_timer->IsRunning()) |
+ mock_timer->Fire(); |
} |
void PageLoadMetricsObserverTestHarness::SimulateStartedResource( |