Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Unified Diff: chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc

Issue 2901383002: Buffer cross frame paint timing updates. (Closed)
Patch Set: address comment Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(

Powered by Google App Engine
This is Rietveld 408576698