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.h" | 14 #include "base/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/cookies/cookie_store.h" | 17 #include "net/cookies/cookie_store.h" |
18 #include "net/http/http_request_info.h" | 18 #include "net/http/http_request_info.h" |
19 #include "net/url_request/url_request_job.h" | 19 #include "net/url_request/url_request_job.h" |
20 #include "net/url_request/url_request_throttler_entry_interface.h" | 20 #include "net/url_request/url_request_throttler_entry_interface.h" |
21 | 21 |
22 namespace net { | 22 namespace net { |
23 | 23 |
| 24 class CookieStore; |
| 25 class FraudulentCertificateReporter; |
24 class HttpResponseHeaders; | 26 class HttpResponseHeaders; |
25 class HttpResponseInfo; | 27 class HttpResponseInfo; |
26 class HttpTransaction; | 28 class HttpTransaction; |
| 29 class HttpTransactionFactory; |
| 30 class NetworkDelegate; |
| 31 class SSLConfigService; |
| 32 class TransportSecurityState; |
27 class URLRequestContext; | 33 class URLRequestContext; |
| 34 class URLRequestThrottlerManager; |
28 | 35 |
29 // A URLRequestJob subclass that is built on top of HttpTransaction. It | 36 // A URLRequestJob subclass that is built on top of HttpTransaction. It |
30 // provides an implementation for both HTTP and HTTPS. | 37 // provides an implementation for both HTTP and HTTPS. |
31 class URLRequestHttpJob : public URLRequestJob { | 38 class URLRequestHttpJob : public URLRequestJob { |
32 public: | 39 public: |
33 static URLRequestJob* Factory(URLRequest* request, | 40 static URLRequestJob* Factory(URLRequest* request, |
34 const std::string& scheme); | 41 const std::string& scheme); |
35 | 42 |
36 protected: | 43 protected: |
37 explicit URLRequestHttpJob(URLRequest* request); | 44 URLRequestHttpJob( |
| 45 URLRequest* request, |
| 46 HttpTransactionFactory* http_transaction_factory, |
| 47 NetworkDelegate* network_delegate, |
| 48 URLRequestThrottlerManager* throttler_manager, |
| 49 const std::string& accept_language, |
| 50 const std::string& accept_charset, |
| 51 CookieStore* cookie_store, |
| 52 FraudulentCertificateReporter* fraudulent_certificate_reporter, |
| 53 SSLConfigService* ssl_config_service, |
| 54 TransportSecurityState* transport_security_state); |
38 | 55 |
39 // Shadows URLRequestJob's version of this method so we can grab cookies. | 56 // Shadows URLRequestJob's version of this method so we can grab cookies. |
40 void NotifyHeadersComplete(); | 57 void NotifyHeadersComplete(); |
41 | 58 |
42 // Shadows URLRequestJob's method so we can record histograms. | 59 // Shadows URLRequestJob's method so we can record histograms. |
43 void NotifyDone(const URLRequestStatus& status); | 60 void NotifyDone(const URLRequestStatus& status); |
44 | 61 |
45 void DestroyTransaction(); | 62 void DestroyTransaction(); |
46 | 63 |
47 void AddExtraHeaders(); | 64 void AddExtraHeaders(); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 // For SDCH latency experiments, when we are able to do SDCH, we may enable | 144 // For SDCH latency experiments, when we are able to do SDCH, we may enable |
128 // either an SDCH latency test xor a pass through test. The following bools | 145 // either an SDCH latency test xor a pass through test. The following bools |
129 // indicate what we decided on for this instance. | 146 // indicate what we decided on for this instance. |
130 bool sdch_test_activated_; // Advertising a dictionary for sdch. | 147 bool sdch_test_activated_; // Advertising a dictionary for sdch. |
131 bool sdch_test_control_; // Not even accepting-content sdch. | 148 bool sdch_test_control_; // Not even accepting-content sdch. |
132 | 149 |
133 // For recording of stats, we need to remember if this is cached content. | 150 // For recording of stats, we need to remember if this is cached content. |
134 bool is_cached_content_; | 151 bool is_cached_content_; |
135 | 152 |
136 private: | 153 private: |
| 154 friend class HttpProtocolHandler; |
137 enum CompletionCause { | 155 enum CompletionCause { |
138 ABORTED, | 156 ABORTED, |
139 FINISHED | 157 FINISHED |
140 }; | 158 }; |
141 | 159 |
142 typedef base::RefCountedData<bool> SharedBoolean; | 160 typedef base::RefCountedData<bool> SharedBoolean; |
143 | 161 |
144 class HttpFilterContext; | 162 class HttpFilterContext; |
145 class HttpTransactionDelegateImpl; | 163 class HttpTransactionDelegateImpl; |
146 | 164 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 scoped_refptr<HttpResponseHeaders> override_response_headers_; | 250 scoped_refptr<HttpResponseHeaders> override_response_headers_; |
233 | 251 |
234 // Flag used to verify that |this| is not deleted while we are awaiting | 252 // Flag used to verify that |this| is not deleted while we are awaiting |
235 // a callback from the NetworkDelegate. Used as a fail-fast mechanism. | 253 // a callback from the NetworkDelegate. Used as a fail-fast mechanism. |
236 // True if we are waiting a callback and | 254 // True if we are waiting a callback and |
237 // NetworkDelegate::NotifyURLRequestDestroyed has not been called, yet, | 255 // NetworkDelegate::NotifyURLRequestDestroyed has not been called, yet, |
238 // to inform the NetworkDelegate that it may not call back. | 256 // to inform the NetworkDelegate that it may not call back. |
239 bool awaiting_callback_; | 257 bool awaiting_callback_; |
240 | 258 |
241 scoped_ptr<HttpTransactionDelegateImpl> http_transaction_delegate_; | 259 scoped_ptr<HttpTransactionDelegateImpl> http_transaction_delegate_; |
| 260 HttpTransactionFactory* http_transaction_factory_; |
| 261 NetworkDelegate* network_delegate_; |
| 262 URLRequestThrottlerManager* throttler_manager_; |
| 263 const std::string accept_language_; |
| 264 const std::string accept_charset_; |
| 265 CookieStore* cookie_store_; |
| 266 FraudulentCertificateReporter* fraudulent_certificate_reporter_; |
| 267 SSLConfigService* ssl_config_service_; |
| 268 TransportSecurityState* transport_security_state_; |
242 | 269 |
243 DISALLOW_COPY_AND_ASSIGN(URLRequestHttpJob); | 270 DISALLOW_COPY_AND_ASSIGN(URLRequestHttpJob); |
244 }; | 271 }; |
245 | 272 |
246 } // namespace net | 273 } // namespace net |
247 | 274 |
248 #endif // NET_URL_REQUEST_URL_REQUEST_HTTP_JOB_H_ | 275 #endif // NET_URL_REQUEST_URL_REQUEST_HTTP_JOB_H_ |
OLD | NEW |