Chromium Code Reviews| Index: chrome/renderer/page_load_metrics/renderer_page_track_decider.cc |
| diff --git a/chrome/renderer/page_load_metrics/renderer_page_track_decider.cc b/chrome/renderer/page_load_metrics/renderer_page_track_decider.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..daa664afdf16008c8acaba354030b3d99acfd4b8 |
| --- /dev/null |
| +++ b/chrome/renderer/page_load_metrics/renderer_page_track_decider.cc |
| @@ -0,0 +1,62 @@ |
| +// 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_track_decider.h" |
| + |
| +#include <string> |
| + |
| +#include "chrome/renderer/searchbox/search_bouncer.h" |
| +#include "third_party/WebKit/public/platform/WebURLResponse.h" |
| +#include "third_party/WebKit/public/web/WebDataSource.h" |
| +#include "third_party/WebKit/public/web/WebDocument.h" |
| +#include "url/gurl.h" |
| + |
| +namespace page_load_metrics { |
| + |
| +RendererPageTrackDecider::RendererPageTrackDecider( |
| + const blink::WebDocument* document, |
| + const blink::WebDataSource* data_source) |
| + : document_(document), data_source_(data_source) {} |
| + |
| +RendererPageTrackDecider::~RendererPageTrackDecider() {} |
| + |
| +bool RendererPageTrackDecider::HasCommitted() { |
| + // RendererPageTrackDecider 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 RendererPageTrackDecider::IsHTTPOrHTTPSUrl() { |
| + const GURL url = document_->url(); |
|
Charlie Harrison
2016/09/14 13:20:05
Can this method be just one line?
Bryan McQuade
2016/09/14 15:10:58
Yeah - the reason I did this is a bit silly - WebD
|
| + return url.SchemeIsHTTPOrHTTPS(); |
| +} |
| + |
| +bool RendererPageTrackDecider::IsNewTabPageUrl() { |
| + return SearchBouncer::GetInstance()->IsNewTabPage(document_->url()); |
| +} |
| + |
| +bool RendererPageTrackDecider::IsChromeErrorPage() { |
| + return data_source_->hasUnreachableURL(); |
| +} |
| + |
| +bool RendererPageTrackDecider::IsHTTPErrorPage() { |
| + // 2xx and 3xx (304 not modified) response codes are not error pages. |
| + int status_code_family = data_source_->response().httpStatusCode() / 100; |
| + return status_code_family != 2 && status_code_family != 3; |
| +} |
| + |
| +bool RendererPageTrackDecider::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 = data_source_->response().mimeType().utf8(); |
|
Charlie Harrison
2016/09/14 13:20:05
Could you directly compare the WebString without c
Bryan McQuade
2016/09/14 15:10:58
Ah, I think so, yes. The default WebString equalit
|
| + return mime_type == "text/html" || mime_type == "application/xhtml+xml"; |
| +} |
| + |
| +} // namespace page_load_metrics |