Index: components/page_load_metrics/browser/metrics_web_contents_observer.cc |
diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer.cc b/components/page_load_metrics/browser/metrics_web_contents_observer.cc |
index 50f071523618a7aacccb39df8d8be58ab9d56d44..e998a816a15aaf54b23a12f059abd98808abaec5 100644 |
--- a/components/page_load_metrics/browser/metrics_web_contents_observer.cc |
+++ b/components/page_load_metrics/browser/metrics_web_contents_observer.cc |
@@ -323,7 +323,8 @@ void PageLoadTracker::Redirect(content::NavigationHandle* navigation_handle) { |
} |
} |
-bool PageLoadTracker::UpdateTiming(const PageLoadTiming& new_timing) { |
+bool PageLoadTracker::UpdateTiming(const PageLoadTiming& new_timing, |
+ const PageLoadMetadata& new_metadata) { |
// Throw away IPCs that are not relevant to the current navigation. |
// Two timing structures cannot refer to the same navigation if they indicate |
// that a navigation started at different times, so a new timing struct with a |
@@ -333,6 +334,7 @@ bool PageLoadTracker::UpdateTiming(const PageLoadTiming& new_timing) { |
timing_.navigation_start == new_timing.navigation_start; |
if (IsValidPageLoadTiming(new_timing) && valid_timing_descendent) { |
timing_ = new_timing; |
+ metadata_ = new_metadata; |
return true; |
} |
return false; |
@@ -373,10 +375,10 @@ PageLoadExtraInfo PageLoadTracker::GetPageLoadMetricsInfo() { |
} else { |
DCHECK(commit_time_.is_null()); |
} |
- return PageLoadExtraInfo(first_background_time, first_foreground_time, |
- started_in_foreground_, |
- commit_time_.is_null() ? GURL() : url_, |
- time_to_commit, abort_type_, time_to_abort); |
+ return PageLoadExtraInfo( |
+ first_background_time, first_foreground_time, started_in_foreground_, |
+ commit_time_.is_null() ? GURL() : url_, time_to_commit, abort_type_, |
+ time_to_abort, metadata_); |
} |
void PageLoadTracker::NotifyAbort(UserAbortType abort_type, |
@@ -678,7 +680,8 @@ MetricsWebContentsObserver::NotifyAbortedProvisionalLoadsNewNavigation( |
void MetricsWebContentsObserver::OnTimingUpdated( |
content::RenderFrameHost* render_frame_host, |
- const PageLoadTiming& timing) { |
+ const PageLoadTiming& timing, |
+ const PageLoadMetadata& metadata) { |
bool error = false; |
if (!committed_load_ || !committed_load_->renderer_tracked()) { |
RecordInternalError(ERR_IPC_WITH_NO_RELEVANT_LOAD); |
@@ -703,7 +706,7 @@ void MetricsWebContentsObserver::OnTimingUpdated( |
if (error) |
return; |
- if (!committed_load_->UpdateTiming(timing)) { |
+ if (!committed_load_->UpdateTiming(timing, metadata)) { |
// If the page load tracker cannot update its timing, something is wrong |
// with the IPC (it's from another load, or it's invalid in some other way). |
// We expect this to be a rare occurrence. |