OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_FROM_GWS_PAGE_LOAD_METRICS_OB
SERVER_H_ | 5 #ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_FROM_GWS_PAGE_LOAD_METRICS_OB
SERVER_H_ |
6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_FROM_GWS_PAGE_LOAD_METRICS_OB
SERVER_H_ | 6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_FROM_GWS_PAGE_LOAD_METRICS_OB
SERVER_H_ |
7 | 7 |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/optional.h" | 9 #include "base/optional.h" |
10 #include "components/page_load_metrics/browser/page_load_metrics_observer.h" | 10 #include "components/page_load_metrics/browser/page_load_metrics_observer.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 | 54 |
55 void SetNavigationStart(const base::TimeTicks navigation_start) { | 55 void SetNavigationStart(const base::TimeTicks navigation_start) { |
56 // Should be invoked at most once | 56 // Should be invoked at most once |
57 DCHECK(navigation_start_.is_null()); | 57 DCHECK(navigation_start_.is_null()); |
58 navigation_start_ = navigation_start; | 58 navigation_start_ = navigation_start; |
59 } | 59 } |
60 | 60 |
61 // Invoked when metrics for the given page are complete. | 61 // Invoked when metrics for the given page are complete. |
62 void OnComplete(const page_load_metrics::PageLoadTiming& timing, | 62 void OnComplete(const page_load_metrics::PageLoadTiming& timing, |
63 const page_load_metrics::PageLoadExtraInfo& extra_info); | 63 const page_load_metrics::PageLoadExtraInfo& extra_info); |
| 64 void OnFailedProvisionalLoad( |
| 65 const page_load_metrics::FailedProvisionalLoadInfo& failed_load_info, |
| 66 const page_load_metrics::PageLoadExtraInfo& extra_info); |
64 | 67 |
65 void OnDomContentLoadedEventStart( | 68 void OnDomContentLoadedEventStart( |
66 const page_load_metrics::PageLoadTiming& timing, | 69 const page_load_metrics::PageLoadTiming& timing, |
67 const page_load_metrics::PageLoadExtraInfo& extra_info); | 70 const page_load_metrics::PageLoadExtraInfo& extra_info); |
68 void OnLoadEventStart(const page_load_metrics::PageLoadTiming& timing, | 71 void OnLoadEventStart(const page_load_metrics::PageLoadTiming& timing, |
69 const page_load_metrics::PageLoadExtraInfo& extra_info); | 72 const page_load_metrics::PageLoadExtraInfo& extra_info); |
70 void OnFirstPaint(const page_load_metrics::PageLoadTiming& timing, | 73 void OnFirstPaint(const page_load_metrics::PageLoadTiming& timing, |
71 const page_load_metrics::PageLoadExtraInfo& extra_info); | 74 const page_load_metrics::PageLoadExtraInfo& extra_info); |
72 void OnFirstTextPaint(const page_load_metrics::PageLoadTiming& timing, | 75 void OnFirstTextPaint(const page_load_metrics::PageLoadTiming& timing, |
73 const page_load_metrics::PageLoadExtraInfo& extra_info); | 76 const page_load_metrics::PageLoadExtraInfo& extra_info); |
74 void OnFirstImagePaint( | 77 void OnFirstImagePaint( |
75 const page_load_metrics::PageLoadTiming& timing, | 78 const page_load_metrics::PageLoadTiming& timing, |
76 const page_load_metrics::PageLoadExtraInfo& extra_info); | 79 const page_load_metrics::PageLoadExtraInfo& extra_info); |
77 void OnFirstContentfulPaint( | 80 void OnFirstContentfulPaint( |
78 const page_load_metrics::PageLoadTiming& timing, | 81 const page_load_metrics::PageLoadTiming& timing, |
79 const page_load_metrics::PageLoadExtraInfo& extra_info); | 82 const page_load_metrics::PageLoadExtraInfo& extra_info); |
80 void OnParseStart(const page_load_metrics::PageLoadTiming& timing, | 83 void OnParseStart(const page_load_metrics::PageLoadTiming& timing, |
81 const page_load_metrics::PageLoadExtraInfo& extra_info); | 84 const page_load_metrics::PageLoadExtraInfo& extra_info); |
82 void OnParseStop(const page_load_metrics::PageLoadTiming& timing, | 85 void OnParseStop(const page_load_metrics::PageLoadTiming& timing, |
83 const page_load_metrics::PageLoadExtraInfo& extra_info); | 86 const page_load_metrics::PageLoadExtraInfo& extra_info); |
84 void OnUserInput(const blink::WebInputEvent& event); | 87 void OnUserInput(const blink::WebInputEvent& event); |
85 | 88 |
86 // The methods below are public only for testing. | 89 // The methods below are public only for testing. |
87 static bool IsGoogleSearchHostname(base::StringPiece host); | 90 static bool IsGoogleSearchHostname(base::StringPiece host); |
88 static bool IsGoogleSearchResultUrl(const GURL& url); | 91 static bool IsGoogleSearchResultUrl(const GURL& url); |
89 static bool IsGoogleSearchRedirectorUrl(const GURL& url); | 92 static bool IsGoogleSearchRedirectorUrl(const GURL& url); |
90 bool ShouldLogMetrics(const GURL& url); | 93 bool ShouldLogFailedProvisionalLoadMetrics(); |
| 94 bool ShouldLogPostCommitMetrics(const GURL& url); |
91 bool ShouldLogForegroundEventAfterCommit( | 95 bool ShouldLogForegroundEventAfterCommit( |
92 const base::Optional<base::TimeDelta>& event, | 96 const base::Optional<base::TimeDelta>& event, |
93 const page_load_metrics::PageLoadExtraInfo& info); | 97 const page_load_metrics::PageLoadExtraInfo& info); |
94 | 98 |
95 // Whether the given query string contains the given component. The query | 99 // Whether the given query string contains the given component. The query |
96 // parameter should contain the query string of a URL (the portion following | 100 // parameter should contain the query string of a URL (the portion following |
97 // the question mark, excluding the question mark). The component must fully | 101 // the question mark, excluding the question mark). The component must fully |
98 // match a component in the query string. For example, 'foo=bar' would match | 102 // match a component in the query string. For example, 'foo=bar' would match |
99 // the query string 'a=b&foo=bar&c=d' but would not match 'a=b&zzzfoo=bar&c=d' | 103 // the query string 'a=b&foo=bar&c=d' but would not match 'a=b&zzzfoo=bar&c=d' |
100 // since, though foo=bar appears in the query string, the key specified in the | 104 // since, though foo=bar appears in the query string, the key specified in the |
101 // component 'foo' does not match the full key in the query string | 105 // component 'foo' does not match the full key in the query string |
102 // 'zzzfoo'. For QueryContainsComponent, the component should of the form | 106 // 'zzzfoo'. For QueryContainsComponent, the component should of the form |
103 // 'key=value'. For QueryContainsComponentPrefix, the component should be of | 107 // 'key=value'. For QueryContainsComponentPrefix, the component should be of |
104 // the form 'key=' (where the value is not specified). | 108 // the form 'key=' (where the value is not specified). |
105 static bool QueryContainsComponent(const base::StringPiece query, | 109 static bool QueryContainsComponent(const base::StringPiece query, |
106 const base::StringPiece component); | 110 const base::StringPiece component); |
107 static bool QueryContainsComponentPrefix(const base::StringPiece query, | 111 static bool QueryContainsComponentPrefix(const base::StringPiece query, |
108 const base::StringPiece component); | 112 const base::StringPiece component); |
109 | 113 |
110 private: | 114 private: |
111 bool previously_committed_url_is_search_results_ = false; | 115 bool previously_committed_url_is_search_results_ = false; |
112 bool previously_committed_url_is_search_redirector_ = false; | 116 bool previously_committed_url_is_search_redirector_ = false; |
113 bool navigation_initiated_via_link_ = false; | 117 bool navigation_initiated_via_link_ = false; |
114 bool provisional_url_has_search_hostname_ = false; | 118 bool provisional_url_has_search_hostname_ = false; |
115 bool provisional_url_is_non_http_or_https_ = false; | |
116 | 119 |
117 // The state of if first paint is triggered. | 120 // The state of if first paint is triggered. |
118 bool first_paint_triggered_ = false; | 121 bool first_paint_triggered_ = false; |
119 | 122 |
120 base::TimeTicks navigation_start_; | 123 base::TimeTicks navigation_start_; |
121 | 124 |
122 // The time of first user interaction after paint from navigation start. | 125 // The time of first user interaction after paint from navigation start. |
123 base::Optional<base::TimeDelta> first_user_interaction_after_paint_; | 126 base::Optional<base::TimeDelta> first_user_interaction_after_paint_; |
124 | 127 |
125 // Common helper for QueryContainsComponent and QueryContainsComponentPrefix. | 128 // Common helper for QueryContainsComponent and QueryContainsComponentPrefix. |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 void OnParseStart( | 165 void OnParseStart( |
163 const page_load_metrics::PageLoadTiming& timing, | 166 const page_load_metrics::PageLoadTiming& timing, |
164 const page_load_metrics::PageLoadExtraInfo& extra_info) override; | 167 const page_load_metrics::PageLoadExtraInfo& extra_info) override; |
165 void OnParseStop( | 168 void OnParseStop( |
166 const page_load_metrics::PageLoadTiming& timing, | 169 const page_load_metrics::PageLoadTiming& timing, |
167 const page_load_metrics::PageLoadExtraInfo& extra_info) override; | 170 const page_load_metrics::PageLoadExtraInfo& extra_info) override; |
168 | 171 |
169 void OnComplete( | 172 void OnComplete( |
170 const page_load_metrics::PageLoadTiming& timing, | 173 const page_load_metrics::PageLoadTiming& timing, |
171 const page_load_metrics::PageLoadExtraInfo& extra_info) override; | 174 const page_load_metrics::PageLoadExtraInfo& extra_info) override; |
| 175 void OnFailedProvisionalLoad( |
| 176 const page_load_metrics::FailedProvisionalLoadInfo& failed_load_info, |
| 177 const page_load_metrics::PageLoadExtraInfo& extra_info) override; |
172 | 178 |
173 void OnUserInput(const blink::WebInputEvent& event) override; | 179 void OnUserInput(const blink::WebInputEvent& event) override; |
174 | 180 |
175 private: | 181 private: |
176 FromGWSPageLoadMetricsLogger logger_; | 182 FromGWSPageLoadMetricsLogger logger_; |
177 | 183 |
178 DISALLOW_COPY_AND_ASSIGN(FromGWSPageLoadMetricsObserver); | 184 DISALLOW_COPY_AND_ASSIGN(FromGWSPageLoadMetricsObserver); |
179 }; | 185 }; |
180 | 186 |
181 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_FROM_GWS_PAGE_LOAD_METRICS
_OBSERVER_H_ | 187 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_FROM_GWS_PAGE_LOAD_METRICS
_OBSERVER_H_ |
OLD | NEW |