| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 NET_URL_REQUEST_URL_REQUEST_HTTP_JOB_H_ | 5 #ifndef NET_URL_REQUEST_URL_REQUEST_HTTP_JOB_H_ |
| 6 #define NET_URL_REQUEST_URL_REQUEST_HTTP_JOB_H_ | 6 #define NET_URL_REQUEST_URL_REQUEST_HTTP_JOB_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/memory/weak_ptr.h" | 13 #include "base/memory/weak_ptr.h" |
| 14 #include "base/time/time.h" | 14 #include "base/time/time.h" |
| 15 #include "net/base/auth.h" | 15 #include "net/base/auth.h" |
| 16 #include "net/base/completion_callback.h" | 16 #include "net/base/completion_callback.h" |
| 17 #include "net/base/net_export.h" | 17 #include "net/base/net_export.h" |
| 18 #include "net/base/sdch_manager.h" |
| 18 #include "net/cookies/cookie_store.h" | 19 #include "net/cookies/cookie_store.h" |
| 19 #include "net/filter/filter.h" | 20 #include "net/filter/filter.h" |
| 20 #include "net/http/http_request_info.h" | 21 #include "net/http/http_request_info.h" |
| 21 #include "net/url_request/url_request_job.h" | 22 #include "net/url_request/url_request_job.h" |
| 22 #include "net/url_request/url_request_throttler_entry_interface.h" | 23 #include "net/url_request/url_request_throttler_entry_interface.h" |
| 23 | 24 |
| 24 namespace net { | 25 namespace net { |
| 25 | 26 |
| 26 class HttpRequestHeaders; | 27 class HttpRequestHeaders; |
| 27 class HttpResponseHeaders; | 28 class HttpResponseHeaders; |
| 28 class HttpResponseInfo; | 29 class HttpResponseInfo; |
| 29 class HttpTransaction; | 30 class HttpTransaction; |
| 30 class HttpUserAgentSettings; | 31 class HttpUserAgentSettings; |
| 31 class ProxyInfo; | 32 class ProxyInfo; |
| 32 class UploadDataStream; | 33 class UploadDataStream; |
| 33 class URLRequestContext; | 34 class URLRequestContext; |
| 34 | 35 |
| 35 // A URLRequestJob subclass that is built on top of HttpTransaction. It | 36 // A URLRequestJob subclass that is built on top of HttpTransaction. It |
| 36 // provides an implementation for both HTTP and HTTPS. | 37 // provides an implementation for both HTTP and HTTPS. |
| 37 class NET_EXPORT_PRIVATE URLRequestHttpJob : public URLRequestJob { | 38 class NET_EXPORT_PRIVATE URLRequestHttpJob : public URLRequestJob { |
| 38 public: | 39 public: |
| 39 static URLRequestJob* Factory(URLRequest* request, | 40 static URLRequestJob* Factory(URLRequest* request, |
| 40 NetworkDelegate* network_delegate, | 41 NetworkDelegate* network_delegate, |
| 41 const std::string& scheme); | 42 const std::string& scheme); |
| 42 | 43 |
| 43 protected: | 44 protected: |
| 44 URLRequestHttpJob(URLRequest* request, | 45 URLRequestHttpJob(URLRequest* request, |
| 45 NetworkDelegate* network_delegate, | 46 NetworkDelegate* network_delegate, |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 AuthCredentials auth_credentials_; | 188 AuthCredentials auth_credentials_; |
| 188 | 189 |
| 189 CompletionCallback start_callback_; | 190 CompletionCallback start_callback_; |
| 190 CompletionCallback notify_before_headers_sent_callback_; | 191 CompletionCallback notify_before_headers_sent_callback_; |
| 191 | 192 |
| 192 bool read_in_progress_; | 193 bool read_in_progress_; |
| 193 | 194 |
| 194 scoped_ptr<HttpTransaction> transaction_; | 195 scoped_ptr<HttpTransaction> transaction_; |
| 195 | 196 |
| 196 // This is used to supervise traffic and enforce exponential | 197 // This is used to supervise traffic and enforce exponential |
| 197 // back-off. May be NULL. | 198 // back-off. May be NULL. |
| 198 scoped_refptr<URLRequestThrottlerEntryInterface> throttling_entry_; | 199 scoped_refptr<URLRequestThrottlerEntryInterface> throttling_entry_; |
| 199 | 200 |
| 200 // Indicated if an SDCH dictionary was advertised, and hence an SDCH | 201 // A handle to the SDCH dictionaries that were advertised in this request. |
| 201 // compressed response is expected. We use this to help detect (accidental?) | 202 // May be null. |
| 202 // proxy corruption of a response, which sometimes marks SDCH content as | 203 scoped_ptr<SdchManager::DictionarySet> dictionaries_advertised_; |
| 203 // having no content encoding <oops>. | |
| 204 bool sdch_dictionary_advertised_; | |
| 205 | 204 |
| 206 // For SDCH latency experiments, when we are able to do SDCH, we may enable | 205 // For SDCH latency experiments, when we are able to do SDCH, we may enable |
| 207 // either an SDCH latency test xor a pass through test. The following bools | 206 // either an SDCH latency test xor a pass through test. The following bools |
| 208 // indicate what we decided on for this instance. | 207 // indicate what we decided on for this instance. |
| 209 bool sdch_test_activated_; // Advertising a dictionary for sdch. | 208 bool sdch_test_activated_; // Advertising a dictionary for sdch. |
| 210 bool sdch_test_control_; // Not even accepting-content sdch. | 209 bool sdch_test_control_; // Not even accepting-content sdch. |
| 211 | 210 |
| 212 // For recording of stats, we need to remember if this is cached content. | 211 // For recording of stats, we need to remember if this is cached content. |
| 213 bool is_cached_content_; | 212 bool is_cached_content_; |
| 214 | 213 |
| 215 base::Time request_creation_time_; | 214 base::Time request_creation_time_; |
| 216 | 215 |
| 217 // Data used for statistics gathering. This data is only used for histograms | 216 // Data used for statistics gathering. This data is only used for histograms |
| 218 // and is not required. It is only gathered if packet_timing_enabled_ == true. | 217 // and is not required. It is only gathered if packet_timing_enabled_ == true. |
| 219 // | 218 // |
| 220 // TODO(jar): improve the quality of the gathered info by gathering most times | 219 // TODO(jar): improve the quality of the gathered info by gathering most times |
| 221 // at a lower point in the network stack, assuring we have actual packet | 220 // at a lower point in the network stack, assuring we have actual packet |
| 222 // boundaries, rather than approximations. Also note that input byte count | 221 // boundaries, rather than approximations. Also note that input byte count |
| 223 // as gathered here is post-SSL, and post-cache-fetch, and does not reflect | 222 // as gathered here is post-SSL, and post-cache-fetch, and does not reflect |
| 224 // true packet arrival times in such cases. | 223 // true packet arrival times in such cases. |
| 225 | 224 |
| 226 // Enable recording of packet arrival times for histogramming. | 225 // Enable recording of packet arrival times for histogramming. |
| 227 bool packet_timing_enabled_; | 226 bool packet_timing_enabled_; |
| 228 bool done_; // True when we are done doing work. | 227 bool done_; // True when we are done doing work. |
| 229 | 228 |
| 230 // The number of bytes that have been accounted for in packets (where some of | 229 // The number of bytes that have been accounted for in packets (where some of |
| 231 // those packets may possibly have had their time of arrival recorded). | 230 // those packets may possibly have had their time of arrival recorded). |
| 232 int64 bytes_observed_in_packets_; | 231 int64 bytes_observed_in_packets_; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 const HttpUserAgentSettings* http_user_agent_settings_; | 268 const HttpUserAgentSettings* http_user_agent_settings_; |
| 270 | 269 |
| 271 base::WeakPtrFactory<URLRequestHttpJob> weak_factory_; | 270 base::WeakPtrFactory<URLRequestHttpJob> weak_factory_; |
| 272 | 271 |
| 273 DISALLOW_COPY_AND_ASSIGN(URLRequestHttpJob); | 272 DISALLOW_COPY_AND_ASSIGN(URLRequestHttpJob); |
| 274 }; | 273 }; |
| 275 | 274 |
| 276 } // namespace net | 275 } // namespace net |
| 277 | 276 |
| 278 #endif // NET_URL_REQUEST_URL_REQUEST_HTTP_JOB_H_ | 277 #endif // NET_URL_REQUEST_URL_REQUEST_HTTP_JOB_H_ |
| OLD | NEW |