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

Unified Diff: chrome/browser/page_load_metrics/page_load_tracker.cc

Issue 2737563007: Add support for tracking loading behavior of child frames. (Closed)
Patch Set: test fixes Created 3 years, 9 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/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(

Powered by Google App Engine
This is Rietveld 408576698