Index: chrome/browser/page_load_metrics/page_load_tracker.cc |
diff --git a/chrome/browser/page_load_metrics/page_load_tracker.cc b/chrome/browser/page_load_metrics/page_load_tracker.cc |
index f6d8e104267d9e300da4da1dadab01eac9151889..d7f9a213ae38f05cbf2f028b0f4c765c54257182 100644 |
--- a/chrome/browser/page_load_metrics/page_load_tracker.cc |
+++ b/chrome/browser/page_load_metrics/page_load_tracker.cc |
@@ -506,6 +506,22 @@ void PageLoadTracker::NotifyClientRedirectTo( |
} |
} |
+void PageLoadTracker::UpdateChildMetadata( |
+ const PageLoadMetadata& child_metadata) { |
+ // Merge the child loading behavior flags with any we've already observed, |
+ // possibly from other child frames. |
+ const int last_child_loading_behavior_flags = |
+ child_frame_metadata_.behavior_flags; |
+ child_frame_metadata_.behavior_flags |= child_metadata.behavior_flags; |
+ if (last_child_loading_behavior_flags == child_frame_metadata_.behavior_flags) |
+ return; |
+ |
+ PageLoadExtraInfo extra_info(ComputePageLoadExtraInfo()); |
+ for (const auto& observer : observers_) { |
+ observer->OnLoadingBehaviorObserved(extra_info); |
+ } |
+} |
+ |
bool PageLoadTracker::UpdateTiming(const PageLoadTiming& new_timing, |
const PageLoadMetadata& new_metadata) { |
// Throw away IPCs that are not relevant to the current navigation. |
@@ -619,7 +635,7 @@ PageLoadExtraInfo PageLoadTracker::ComputePageLoadExtraInfo() { |
first_foreground_time, started_in_foreground_, |
user_initiated_info_, url(), start_url_, did_commit_, |
page_end_reason_, page_end_user_initiated_info_, |
- page_end_time, metadata_); |
+ page_end_time, metadata_, child_frame_metadata_); |
} |
bool PageLoadTracker::HasMatchingNavigationRequestID( |