OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_H_ | 5 #ifndef CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_H_ |
6 #define CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_H_ | 6 #define CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 // Stores the data that we need to get from the URLRequest. | 107 // Stores the data that we need to get from the URLRequest. |
108 struct URLRequestSummary { | 108 struct URLRequestSummary { |
109 URLRequestSummary(); | 109 URLRequestSummary(); |
110 URLRequestSummary(const URLRequestSummary& other); | 110 URLRequestSummary(const URLRequestSummary& other); |
111 ~URLRequestSummary(); | 111 ~URLRequestSummary(); |
112 | 112 |
113 NavigationID navigation_id; | 113 NavigationID navigation_id; |
114 GURL resource_url; | 114 GURL resource_url; |
115 content::ResourceType resource_type; | 115 content::ResourceType resource_type; |
116 net::RequestPriority priority; | 116 net::RequestPriority priority; |
| 117 base::TimeTicks response_time; |
| 118 bool before_first_contentful_paint; |
117 | 119 |
118 // Only for responses. | 120 // Only for responses. |
119 std::string mime_type; | 121 std::string mime_type; |
120 bool was_cached; | 122 bool was_cached; |
121 GURL redirect_url; // Empty unless request was redirected to a valid url. | 123 GURL redirect_url; // Empty unless request was redirected to a valid url. |
122 | 124 |
123 bool has_validators; | 125 bool has_validators; |
124 bool always_revalidate; | 126 bool always_revalidate; |
125 | 127 |
126 // Initializes a |URLRequestSummary| from a |URLRequest| response. | 128 // Initializes a |URLRequestSummary| from a |URLRequest| response. |
127 // Returns true for success. Note: NavigationID is NOT initialized | 129 // Returns true for success. Note: NavigationID is NOT initialized |
128 // by this function. | 130 // by this function. |
129 static bool SummarizeResponse(const net::URLRequest& request, | 131 static bool SummarizeResponse(const net::URLRequest& request, |
130 URLRequestSummary* summary); | 132 URLRequestSummary* summary); |
131 }; | 133 }; |
132 | 134 |
133 // Stores the data learned from a single navigation. | 135 // Stores the data learned from a single navigation. |
134 struct PageRequestSummary { | 136 struct PageRequestSummary { |
135 explicit PageRequestSummary(const GURL& main_frame_url); | 137 explicit PageRequestSummary(const GURL& main_frame_url); |
136 PageRequestSummary(const PageRequestSummary& other); | 138 PageRequestSummary(const PageRequestSummary& other); |
137 ~PageRequestSummary(); | 139 ~PageRequestSummary(); |
138 | 140 |
139 GURL main_frame_url; | 141 GURL main_frame_url; |
140 GURL initial_url; | 142 GURL initial_url; |
| 143 base::TimeTicks first_contentful_paint; |
141 | 144 |
142 // Stores all subresource requests within a single navigation, from initial | 145 // Stores all subresource requests within a single navigation, from initial |
143 // main frame request to navigation completion. | 146 // main frame request to navigation completion. |
144 std::vector<URLRequestSummary> subresource_requests; | 147 std::vector<URLRequestSummary> subresource_requests; |
145 }; | 148 }; |
146 | 149 |
147 // Stores a result of prediction. Essentially, |subresource_urls| is main | 150 // Stores a result of prediction. Essentially, |subresource_urls| is main |
148 // result and other fields are used for diagnosis and histograms reporting. | 151 // result and other fields are used for diagnosis and histograms reporting. |
149 struct Prediction { | 152 struct Prediction { |
150 Prediction(); | 153 Prediction(); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 // 'ResourcePrefetchPredictorObserver' calls the below functions to inform the | 201 // 'ResourcePrefetchPredictorObserver' calls the below functions to inform the |
199 // predictor of main frame and resource requests. Should only be called if the | 202 // predictor of main frame and resource requests. Should only be called if the |
200 // corresponding Should* functions return true. | 203 // corresponding Should* functions return true. |
201 void RecordURLRequest(const URLRequestSummary& request); | 204 void RecordURLRequest(const URLRequestSummary& request); |
202 void RecordURLResponse(const URLRequestSummary& response); | 205 void RecordURLResponse(const URLRequestSummary& response); |
203 void RecordURLRedirect(const URLRequestSummary& response); | 206 void RecordURLRedirect(const URLRequestSummary& response); |
204 | 207 |
205 // Called when the main frame of a page completes loading. | 208 // Called when the main frame of a page completes loading. |
206 void RecordMainFrameLoadComplete(const NavigationID& navigation_id); | 209 void RecordMainFrameLoadComplete(const NavigationID& navigation_id); |
207 | 210 |
| 211 // Called after the main frame's first contentful paint. |
| 212 void RecordFirstContentfulPaint( |
| 213 const NavigationID& navigation_id, |
| 214 const base::TimeTicks& first_contentful_paint); |
| 215 |
208 // Starts prefetching if it is enabled for |origin| and prefetching data | 216 // Starts prefetching if it is enabled for |origin| and prefetching data |
209 // exists for the |main_frame_url| either at the URL or at the host level. | 217 // exists for the |main_frame_url| either at the URL or at the host level. |
210 void StartPrefetching(const GURL& main_frame_url, PrefetchOrigin origin); | 218 void StartPrefetching(const GURL& main_frame_url, PrefetchOrigin origin); |
211 | 219 |
212 // Stops prefetching that may be in progress corresponding to | 220 // Stops prefetching that may be in progress corresponding to |
213 // |main_frame_url|. | 221 // |main_frame_url|. |
214 void StopPrefetching(const GURL& main_frame_url); | 222 void StopPrefetching(const GURL& main_frame_url); |
215 | 223 |
216 // Called when ResourcePrefetcher is finished, i.e. there is nothing pending | 224 // Called when ResourcePrefetcher is finished, i.e. there is nothing pending |
217 // in flight. | 225 // in flight. |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 | 473 |
466 private: | 474 private: |
467 ResourcePrefetchPredictor* predictor_; | 475 ResourcePrefetchPredictor* predictor_; |
468 | 476 |
469 DISALLOW_COPY_AND_ASSIGN(TestObserver); | 477 DISALLOW_COPY_AND_ASSIGN(TestObserver); |
470 }; | 478 }; |
471 | 479 |
472 } // namespace predictors | 480 } // namespace predictors |
473 | 481 |
474 #endif // CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_H_ | 482 #endif // CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_H_ |
OLD | NEW |