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

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

Issue 2909033002: Move UKM PageLoad SourceId generation to PageLoadTracker. (Closed)
Patch Set: address comments Created 3 years, 7 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
« no previous file with comments | « chrome/browser/page_load_metrics/page_load_tracker.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 b3c4f643525cce773c7e57ba7ffc3cd6b75a8ec9..742c8413c16e19c558bad22b74a928241151fcff 100644
--- a/chrome/browser/page_load_metrics/page_load_tracker.cc
+++ b/chrome/browser/page_load_metrics/page_load_tracker.cc
@@ -12,10 +12,12 @@
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_embedder_interface.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
#include "chrome/browser/prerender/prerender_contents.h"
#include "chrome/common/page_load_metrics/page_load_timing.h"
+#include "components/ukm/public/ukm_recorder.h"
#include "content/public/browser/navigation_details.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
@@ -175,7 +177,8 @@ PageLoadTracker::PageLoadTracker(
aborted_chain_size_(aborted_chain_size),
aborted_chain_size_same_url_(aborted_chain_size_same_url),
embedder_interface_(embedder_interface),
- metrics_update_dispatcher_(this, navigation_handle, embedder_interface) {
+ metrics_update_dispatcher_(this, navigation_handle, embedder_interface),
+ source_id_(ukm::UkmRecorder::GetNewSourceID()) {
DCHECK(!navigation_handle->HasCommitted());
embedder_interface_->RegisterObservers(this);
INVOKE_AND_PRUNE_OBSERVERS(observers_, OnStart, navigation_handle,
@@ -326,11 +329,17 @@ void PageLoadTracker::Commit(content::NavigationHandle* navigation_handle) {
page_transition_ = navigation_handle->GetPageTransition();
user_initiated_info_.user_gesture = navigation_handle->HasUserGesture();
- INVOKE_AND_PRUNE_OBSERVERS(
- observers_, ShouldObserveMimeType,
- navigation_handle->GetWebContents()->GetContentsMimeType());
+ const std::string& mime_type =
+ navigation_handle->GetWebContents()->GetContentsMimeType();
+ INVOKE_AND_PRUNE_OBSERVERS(observers_, ShouldObserveMimeType, mime_type);
- INVOKE_AND_PRUNE_OBSERVERS(observers_, OnCommit, navigation_handle);
+ // Only record page load UKM data for standard web page mime types, such as
+ // HTML and XHTML.
+ if (PageLoadMetricsObserver::IsStandardWebPageMimeType(mime_type))
+ RecordUkmSourceInfo();
+
+ INVOKE_AND_PRUNE_OBSERVERS(observers_, OnCommit, navigation_handle,
+ source_id_);
LogAbortChainHistograms(navigation_handle);
}
@@ -355,6 +364,16 @@ void PageLoadTracker::FailedProvisionalLoad(
failed_provisional_load_info_.reset(new FailedProvisionalLoadInfo(
failed_load_time - navigation_handle->NavigationStart(),
navigation_handle->GetNetErrorCode()));
+ RecordUkmSourceInfo();
+}
+
+void PageLoadTracker::RecordUkmSourceInfo() {
+ ukm::UkmRecorder* ukm_recorder = g_browser_process->ukm_recorder();
+ if (!ukm_recorder)
+ return;
+
+ ukm_recorder->UpdateSourceURL(source_id_, start_url_);
+ ukm_recorder->UpdateSourceURL(source_id_, url_);
}
void PageLoadTracker::Redirect(content::NavigationHandle* navigation_handle) {
@@ -481,7 +500,7 @@ PageLoadExtraInfo PageLoadTracker::ComputePageLoadExtraInfo() const {
started_in_foreground_, user_initiated_info_, url(), start_url_,
did_commit_, page_end_reason_, page_end_user_initiated_info_,
page_end_time, metrics_update_dispatcher_.main_frame_metadata(),
- metrics_update_dispatcher_.subframe_metadata());
+ metrics_update_dispatcher_.subframe_metadata(), source_id_);
}
bool PageLoadTracker::HasMatchingNavigationRequestID(
« no previous file with comments | « chrome/browser/page_load_metrics/page_load_tracker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698