| 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(
|
|
|