Index: chrome/browser/page_load_metrics/metrics_web_contents_observer.cc |
diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc |
index 86a76e25c8ed3f35079a4c580c73489dbca8cff0..9ce6449f201e8852a4c5376e8a4423f32a9278a2 100644 |
--- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc |
+++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc |
@@ -14,6 +14,7 @@ |
#include "base/memory/ptr_util.h" |
#include "base/metrics/histogram_macros.h" |
#include "base/metrics/user_metrics.h" |
+#include "chrome/browser/page_load_metrics/browser_page_tracker_predicate.h" |
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
#include "chrome/common/page_load_metrics/page_load_metrics_messages.h" |
#include "chrome/common/page_load_metrics/page_load_timing.h" |
@@ -27,6 +28,7 @@ |
#include "content/public/browser/web_contents_user_data.h" |
#include "ipc/ipc_message.h" |
#include "ipc/ipc_message_macros.h" |
+#include "net/http/http_response_headers.h" |
#include "ui/base/page_transition_types.h" |
DEFINE_WEB_CONTENTS_USER_DATA_KEY( |
@@ -1061,18 +1063,14 @@ void MetricsWebContentsObserver::OnTimingUpdated( |
bool MetricsWebContentsObserver::ShouldTrackNavigation( |
content::NavigationHandle* navigation_handle) const { |
DCHECK(navigation_handle->IsInMainFrame()); |
- if (!navigation_handle->GetURL().SchemeIsHTTPOrHTTPS()) |
- return false; |
- if (embedder_interface_->IsNewTabPageUrl(navigation_handle->GetURL())) |
+ |
+ // Ignore same-page navigations. |
+ if (navigation_handle->HasCommitted() && navigation_handle->IsSamePage()) |
return false; |
- if (navigation_handle->HasCommitted()) { |
- if (navigation_handle->IsSamePage() || navigation_handle->IsErrorPage()) |
- return false; |
- const std::string& mime_type = web_contents()->GetContentsMimeType(); |
- if (mime_type != "text/html" && mime_type != "application/xhtml+xml") |
- return false; |
- } |
- return true; |
+ |
+ BrowserPageTrackerPredicate tracker_predicate( |
+ embedder_interface_.get(), web_contents(), navigation_handle); |
+ return tracker_predicate.ShouldTrackPage(); |
} |
} // namespace page_load_metrics |