| 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
|
|
|