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 |