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

Unified Diff: components/page_load_metrics/browser/metrics_web_contents_observer.cc

Issue 2152683004: Refactor PageLoadMetricsObserver completion callback policy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@relevantloads
Patch Set: remove histogram checks that can be flaky due to immediate logging Created 4 years, 5 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: 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 5b0d5dde828234aa95d6a4b8834394db1c4934b8..0c586b7c65e6a9842bfa0a0f6fced893633f73f1 100644
--- a/components/page_load_metrics/browser/metrics_web_contents_observer.cc
+++ b/components/page_load_metrics/browser/metrics_web_contents_observer.cc
@@ -51,6 +51,8 @@ const char kClientRedirectFirstPaintToNavigation[] =
"PageLoad.Internal.ClientRedirect.FirstPaintToNavigation";
const char kClientRedirectWithoutPaint[] =
"PageLoad.Internal.ClientRedirect.NavigationWithoutPaint";
+const char kCommitToCompleteNoTimingIPCs[] =
+ "PageLoad.Internal.CommitToComplete.NoTimingIPCs";
} // namespace internal
@@ -265,9 +267,14 @@ PageLoadTracker::~PageLoadTracker() {
return;
const PageLoadExtraInfo info = ComputePageLoadExtraInfo();
-
+ DCHECK_NE(static_cast<bool>(info.time_to_commit),
+ static_cast<bool>(failed_provisional_load_info_));
if (info.time_to_commit && timing_.IsEmpty()) {
RecordInternalError(ERR_NO_IPCS_RECEIVED);
+ const base::TimeTicks commit_time =
+ navigation_start_ + info.time_to_commit.value();
+ PAGE_LOAD_HISTOGRAM(internal::kCommitToCompleteNoTimingIPCs,
+ base::TimeTicks::Now() - commit_time);
}
// Recall that trackers that are given ABORT_UNKNOWN_NAVIGATION have their
// chain length added to the next navigation. Take care not to double count
@@ -276,7 +283,11 @@ PageLoadTracker::~PageLoadTracker() {
LogAbortChainHistograms(nullptr);
for (const auto& observer : observers_) {
- observer->OnComplete(timing_, info);
+ if (failed_provisional_load_info_) {
+ observer->OnFailedProvisionalLoad(*failed_provisional_load_info_, info);
+ } else {
+ observer->OnComplete(timing_, info);
+ }
}
}
@@ -369,9 +380,10 @@ void PageLoadTracker::Commit(content::NavigationHandle* navigation_handle) {
void PageLoadTracker::FailedProvisionalLoad(
content::NavigationHandle* navigation_handle) {
- for (const auto& observer : observers_) {
- observer->OnFailedProvisionalLoad(navigation_handle);
- }
+ DCHECK(!failed_provisional_load_info_);
+ failed_provisional_load_info_.reset(new FailedProvisionalLoadInfo(
+ base::TimeTicks::Now() - navigation_handle->NavigationStart(),
+ navigation_handle->GetNetErrorCode()));
}
void PageLoadTracker::Redirect(content::NavigationHandle* navigation_handle) {

Powered by Google App Engine
This is Rietveld 408576698