| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/page_load_metrics/browser_page_track_decider.h" | 5 #include "chrome/browser/page_load_metrics/browser_page_track_decider.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" | 9 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" |
| 10 #include "content/public/browser/navigation_handle.h" | 10 #include "content/public/browser/navigation_handle.h" |
| 11 #include "content/public/browser/web_contents.h" | 11 #include "content/public/browser/web_contents.h" |
| 12 #include "net/http/http_response_headers.h" | 12 #include "net/http/http_response_headers.h" |
| 13 #include "url/url_constants.h" |
| 13 | 14 |
| 14 namespace page_load_metrics { | 15 namespace page_load_metrics { |
| 15 | 16 |
| 16 BrowserPageTrackDecider::BrowserPageTrackDecider( | 17 BrowserPageTrackDecider::BrowserPageTrackDecider( |
| 17 PageLoadMetricsEmbedderInterface* embedder_interface, | 18 PageLoadMetricsEmbedderInterface* embedder_interface, |
| 18 content::WebContents* web_contents, | 19 content::WebContents* web_contents, |
| 19 content::NavigationHandle* navigation_handle) | 20 content::NavigationHandle* navigation_handle) |
| 20 : embedder_interface_(embedder_interface), | 21 : embedder_interface_(embedder_interface), |
| 21 web_contents_(web_contents), | 22 web_contents_(web_contents), |
| 22 navigation_handle_(navigation_handle) {} | 23 navigation_handle_(navigation_handle) {} |
| 23 | 24 |
| 24 BrowserPageTrackDecider::~BrowserPageTrackDecider() {} | 25 BrowserPageTrackDecider::~BrowserPageTrackDecider() {} |
| 25 | 26 |
| 26 bool BrowserPageTrackDecider::HasCommitted() { | 27 bool BrowserPageTrackDecider::HasCommitted() { |
| 27 return navigation_handle_->HasCommitted(); | 28 return navigation_handle_->HasCommitted(); |
| 28 } | 29 } |
| 29 | 30 |
| 30 bool BrowserPageTrackDecider::IsHttpOrHttpsUrl() { | |
| 31 return navigation_handle_->GetURL().SchemeIsHTTPOrHTTPS(); | |
| 32 } | |
| 33 | |
| 34 bool BrowserPageTrackDecider::IsNewTabPageUrl() { | 31 bool BrowserPageTrackDecider::IsNewTabPageUrl() { |
| 35 return embedder_interface_->IsNewTabPageUrl(navigation_handle_->GetURL()); | 32 return embedder_interface_->IsNewTabPageUrl(navigation_handle_->GetURL()); |
| 36 } | 33 } |
| 37 | 34 |
| 35 bool BrowserPageTrackDecider::IsAboutBlankUrl() { |
| 36 return navigation_handle_->GetURL() == GURL(url::kAboutBlankURL); |
| 37 } |
| 38 |
| 38 bool BrowserPageTrackDecider::IsChromeErrorPage() { | 39 bool BrowserPageTrackDecider::IsChromeErrorPage() { |
| 39 DCHECK(HasCommitted()); | 40 DCHECK(HasCommitted()); |
| 40 return navigation_handle_->IsErrorPage(); | 41 return navigation_handle_->IsErrorPage(); |
| 41 } | 42 } |
| 42 | 43 |
| 43 int BrowserPageTrackDecider::GetHttpStatusCode() { | 44 int BrowserPageTrackDecider::GetHttpStatusCode() { |
| 44 DCHECK(HasCommitted()); | 45 DCHECK(HasCommitted()); |
| 45 const net::HttpResponseHeaders* response_headers = | 46 const net::HttpResponseHeaders* response_headers = |
| 46 navigation_handle_->GetResponseHeaders(); | 47 navigation_handle_->GetResponseHeaders(); |
| 47 if (!response_headers) | 48 if (!response_headers) |
| 48 return -1; | 49 return -1; |
| 49 return response_headers->response_code(); | 50 return response_headers->response_code(); |
| 50 } | 51 } |
| 51 | 52 |
| 52 bool BrowserPageTrackDecider::IsHtmlOrXhtmlPage() { | 53 bool BrowserPageTrackDecider::IsHtmlOrXhtmlPage() { |
| 53 DCHECK(HasCommitted()); | 54 DCHECK(HasCommitted()); |
| 54 const std::string& mime_type = web_contents_->GetContentsMimeType(); | 55 const std::string& mime_type = web_contents_->GetContentsMimeType(); |
| 55 return mime_type == "text/html" || mime_type == "application/xhtml+xml"; | 56 return mime_type == "text/html" || mime_type == "application/xhtml+xml"; |
| 56 } | 57 } |
| 57 | 58 |
| 58 } // namespace page_load_metrics | 59 } // namespace page_load_metrics |
| OLD | NEW |