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

Unified Diff: chrome/renderer/page_load_metrics/renderer_page_tracker_predicate.cc

Issue 2331053003: Add common page filtering logic for page load metrics. (Closed)
Patch Set: refine interface Created 4 years, 3 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/renderer/page_load_metrics/renderer_page_tracker_predicate.cc
diff --git a/chrome/renderer/page_load_metrics/renderer_page_tracker_predicate.cc b/chrome/renderer/page_load_metrics/renderer_page_tracker_predicate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..860c41585b0e85db610bdf7d681fcfab856bb27f
--- /dev/null
+++ b/chrome/renderer/page_load_metrics/renderer_page_tracker_predicate.cc
@@ -0,0 +1,63 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/renderer/page_load_metrics/renderer_page_tracker_predicate.h"
+
+#include <string>
+
+#include "chrome/renderer/searchbox/search_bouncer.h"
+#include "third_party/WebKit/public/platform/WebURLResponse.h"
+#include "third_party/WebKit/public/web/WebDocument.h"
+#include "url/gurl.h"
+
+namespace page_load_metrics {
+
+RendererPageTrackerPredicate::RendererPageTrackerPredicate(
+ const blink::WebDocument* document,
+ const blink::WebURLResponse* url_response)
+ : document_(document), url_response_(url_response) {}
+
+RendererPageTrackerPredicate::~RendererPageTrackerPredicate() {}
+
+bool RendererPageTrackerPredicate::HasCommitted() {
+ // RendererPageTrackerPredicate is only instantiated for committed pages. TODO
+ // see if blink exposes a concept of whether the current page is provisional
+ // or committed.
+ return true;
+}
+
+bool RendererPageTrackerPredicate::IsHTTPOrHTTPSUrl() {
+ const GURL url = document_->url();
+ return url.SchemeIsHTTPOrHTTPS();
+}
+
+bool RendererPageTrackerPredicate::IsNewTabPageUrl() {
+ return SearchBouncer::GetInstance()->IsNewTabPage(document_->url());
+}
+
+bool RendererPageTrackerPredicate::IsChromeErrorPage() {
+ // TODO figure out if blink or content exposes information to know whether the
+ // current page is a chrome error page.
+ return false;
+}
+
+bool RendererPageTrackerPredicate::IsNetworkErrorPage() {
+ // 2xx and 3xx (304 not modified) response codes are not error pages.
+ int status_code_family = url_response_->httpStatusCode() / 100;
+ return status_code_family != 2 && status_code_family != 3;
+}
+
+bool RendererPageTrackerPredicate::IsHTMLOrXHTMLPage() {
+ // Ignore non-HTML documents (e.g. SVG). Note that images are treated by
+ // Blink as HTML documents, so to exclude images, we must perform
+ // additional mime type checking below.
+ if (!document_->isHTMLDocument() && !document_->isXHTMLDocument())
+ return false;
+
+ // Ignore non-HTML mime types (e.g. images).
+ std::string mime_type = url_response_->mimeType().utf8();
+ return mime_type == "text/html" || mime_type == "application/xhtml+xml";
+}
+
+} // namespace page_load_metrics

Powered by Google App Engine
This is Rietveld 408576698