| 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..bdd1dab2910077179b18f3b61e052e64a13388e1 100644
|
| --- a/chrome/browser/page_load_metrics/page_load_tracker.cc
|
| +++ b/chrome/browser/page_load_metrics/page_load_tracker.cc
|
| @@ -303,6 +303,7 @@ PageLoadTracker::PageLoadTracker(
|
| started_in_foreground_(in_foreground),
|
| page_transition_(navigation_handle->GetPageTransition()),
|
| user_initiated_info_(user_initiated_info),
|
| + child_loading_behavior_flags_(0),
|
| aborted_chain_size_(aborted_chain_size),
|
| aborted_chain_size_same_url_(aborted_chain_size_same_url),
|
| embedder_interface_(embedder_interface) {
|
| @@ -506,6 +507,21 @@ 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_loading_behavior_flags_;
|
| + child_loading_behavior_flags_ |= child_metadata.behavior_flags;
|
| + if (last_child_loading_behavior_flags == child_loading_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.
|
| @@ -615,11 +631,11 @@ PageLoadExtraInfo PageLoadTracker::ComputePageLoadExtraInfo() {
|
| (!page_end_user_initiated_info_.browser_initiated &&
|
| !page_end_user_initiated_info_.user_gesture &&
|
| !page_end_user_initiated_info_.user_input_event));
|
| - return PageLoadExtraInfo(navigation_start_, first_background_time,
|
| - 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_);
|
| + return PageLoadExtraInfo(
|
| + navigation_start_, first_background_time, 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_, child_loading_behavior_flags_);
|
| }
|
|
|
| bool PageLoadTracker::HasMatchingNavigationRequestID(
|
|
|