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_FETCHER_CORE_H_ | 5 #ifndef NET_URL_REQUEST_URL_FETCHER_CORE_H_ |
6 #define NET_URL_REQUEST_URL_FETCHER_CORE_H_ | 6 #define NET_URL_REQUEST_URL_FETCHER_CORE_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <set> | 10 #include <set> |
11 #include <string> | 11 #include <string> |
12 | 12 |
13 #include "base/basictypes.h" | |
14 #include "base/compiler_specific.h" | 13 #include "base/compiler_specific.h" |
15 #include "base/debug/stack_trace.h" | 14 #include "base/debug/stack_trace.h" |
16 #include "base/files/file_path.h" | 15 #include "base/files/file_path.h" |
17 #include "base/lazy_instance.h" | 16 #include "base/lazy_instance.h" |
| 17 #include "base/macros.h" |
18 #include "base/memory/ref_counted.h" | 18 #include "base/memory/ref_counted.h" |
19 #include "base/memory/scoped_ptr.h" | 19 #include "base/memory/scoped_ptr.h" |
20 #include "base/timer/timer.h" | 20 #include "base/timer/timer.h" |
21 #include "net/base/host_port_pair.h" | 21 #include "net/base/host_port_pair.h" |
22 #include "net/http/http_request_headers.h" | 22 #include "net/http/http_request_headers.h" |
23 #include "net/url_request/url_fetcher.h" | 23 #include "net/url_request/url_fetcher.h" |
24 #include "net/url_request/url_request.h" | 24 #include "net/url_request/url_request.h" |
25 #include "net/url_request/url_request_context_getter_observer.h" | 25 #include "net/url_request/url_request_context_getter_observer.h" |
26 #include "net/url_request/url_request_status.h" | 26 #include "net/url_request/url_request_status.h" |
27 #include "url/gurl.h" | 27 #include "url/gurl.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 void Stop(); | 61 void Stop(); |
62 | 62 |
63 // URLFetcher-like functions. | 63 // URLFetcher-like functions. |
64 | 64 |
65 // For POST requests, set |content_type| to the MIME type of the | 65 // For POST requests, set |content_type| to the MIME type of the |
66 // content and set |content| to the data to upload. | 66 // content and set |content| to the data to upload. |
67 void SetUploadData(const std::string& upload_content_type, | 67 void SetUploadData(const std::string& upload_content_type, |
68 const std::string& upload_content); | 68 const std::string& upload_content); |
69 void SetUploadFilePath(const std::string& upload_content_type, | 69 void SetUploadFilePath(const std::string& upload_content_type, |
70 const base::FilePath& file_path, | 70 const base::FilePath& file_path, |
71 uint64 range_offset, | 71 uint64_t range_offset, |
72 uint64 range_length, | 72 uint64_t range_length, |
73 scoped_refptr<base::TaskRunner> file_task_runner); | 73 scoped_refptr<base::TaskRunner> file_task_runner); |
74 void SetUploadStreamFactory( | 74 void SetUploadStreamFactory( |
75 const std::string& upload_content_type, | 75 const std::string& upload_content_type, |
76 const URLFetcher::CreateUploadStreamCallback& callback); | 76 const URLFetcher::CreateUploadStreamCallback& callback); |
77 void SetChunkedUpload(const std::string& upload_content_type); | 77 void SetChunkedUpload(const std::string& upload_content_type); |
78 // Adds a block of data to be uploaded in a POST body. This can only be | 78 // Adds a block of data to be uploaded in a POST body. This can only be |
79 // called after Start(). | 79 // called after Start(). |
80 void AppendChunkToUpload(const std::string& data, bool is_last_chunk); | 80 void AppendChunkToUpload(const std::string& data, bool is_last_chunk); |
81 // |flags| are flags to apply to the load operation--these should be | 81 // |flags| are flags to apply to the load operation--these should be |
82 // one or more of the LOAD_* flags defined in net/base/load_flags.h. | 82 // one or more of the LOAD_* flags defined in net/base/load_flags.h. |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 int WriteBuffer(scoped_refptr<DrainableIOBuffer> data); | 208 int WriteBuffer(scoped_refptr<DrainableIOBuffer> data); |
209 | 209 |
210 // Used to implement WriteBuffer(). | 210 // Used to implement WriteBuffer(). |
211 void DidWriteBuffer(scoped_refptr<DrainableIOBuffer> data, int result); | 211 void DidWriteBuffer(scoped_refptr<DrainableIOBuffer> data, int result); |
212 | 212 |
213 // Read response bytes from the request. | 213 // Read response bytes from the request. |
214 void ReadResponse(); | 214 void ReadResponse(); |
215 | 215 |
216 // Notify Delegate about the progress of upload/download. | 216 // Notify Delegate about the progress of upload/download. |
217 void InformDelegateUploadProgress(); | 217 void InformDelegateUploadProgress(); |
218 void InformDelegateUploadProgressInDelegateThread(int64 current, int64 total); | 218 void InformDelegateUploadProgressInDelegateThread(int64_t current, |
| 219 int64_t total); |
219 void InformDelegateDownloadProgress(); | 220 void InformDelegateDownloadProgress(); |
220 void InformDelegateDownloadProgressInDelegateThread(int64 current, | 221 void InformDelegateDownloadProgressInDelegateThread(int64_t current, |
221 int64 total); | 222 int64_t total); |
222 | 223 |
223 // Check if any upload data is set or not. | 224 // Check if any upload data is set or not. |
224 void AssertHasNoUploadData() const; | 225 void AssertHasNoUploadData() const; |
225 | 226 |
226 URLFetcher* fetcher_; // Corresponding fetcher object | 227 URLFetcher* fetcher_; // Corresponding fetcher object |
227 GURL original_url_; // The URL we were asked to fetch | 228 GURL original_url_; // The URL we were asked to fetch |
228 GURL url_; // The URL we eventually wound up at | 229 GURL url_; // The URL we eventually wound up at |
229 URLFetcher::RequestType request_type_; // What type of request is this? | 230 URLFetcher::RequestType request_type_; // What type of request is this? |
230 URLRequestStatus status_; // Status of the request | 231 URLRequestStatus status_; // Status of the request |
231 URLFetcherDelegate* delegate_; // Object to notify on completion | 232 URLFetcherDelegate* delegate_; // Object to notify on completion |
(...skipping 19 matching lines...) Expand all Loading... |
251 scoped_refptr<HttpResponseHeaders> response_headers_; | 252 scoped_refptr<HttpResponseHeaders> response_headers_; |
252 bool was_fetched_via_proxy_; | 253 bool was_fetched_via_proxy_; |
253 bool was_cached_; | 254 bool was_cached_; |
254 int64_t received_response_content_length_; | 255 int64_t received_response_content_length_; |
255 int64_t total_received_bytes_; | 256 int64_t total_received_bytes_; |
256 HostPortPair socket_address_; | 257 HostPortPair socket_address_; |
257 | 258 |
258 bool upload_content_set_; // SetUploadData has been called | 259 bool upload_content_set_; // SetUploadData has been called |
259 std::string upload_content_; // HTTP POST payload | 260 std::string upload_content_; // HTTP POST payload |
260 base::FilePath upload_file_path_; // Path to file containing POST payload | 261 base::FilePath upload_file_path_; // Path to file containing POST payload |
261 uint64 upload_range_offset_; // Offset from the beginning of the file | 262 uint64_t upload_range_offset_; // Offset from the beginning of the file |
262 // to be uploaded. | 263 // to be uploaded. |
263 uint64 upload_range_length_; // The length of the part of file to be | 264 uint64_t upload_range_length_; // The length of the part of file to be |
264 // uploaded. | 265 // uploaded. |
265 URLFetcher::CreateUploadStreamCallback | 266 URLFetcher::CreateUploadStreamCallback |
266 upload_stream_factory_; // Callback to create HTTP POST payload. | 267 upload_stream_factory_; // Callback to create HTTP POST payload. |
267 std::string upload_content_type_; // MIME type of POST payload | 268 std::string upload_content_type_; // MIME type of POST payload |
268 std::string referrer_; // HTTP Referer header value and policy | 269 std::string referrer_; // HTTP Referer header value and policy |
269 URLRequest::ReferrerPolicy referrer_policy_; | 270 URLRequest::ReferrerPolicy referrer_policy_; |
270 bool is_chunked_upload_; // True if using chunked transfer encoding | 271 bool is_chunked_upload_; // True if using chunked transfer encoding |
271 | 272 |
272 // Used to determine how long to wait before making a request or doing a | 273 // Used to determine how long to wait before making a request or doing a |
273 // retry. | 274 // retry. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 // The number of retries that have been attempted due to ERR_NETWORK_CHANGED. | 322 // The number of retries that have been attempted due to ERR_NETWORK_CHANGED. |
322 int num_retries_on_network_changes_; | 323 int num_retries_on_network_changes_; |
323 // Maximum retries allowed when the request fails with ERR_NETWORK_CHANGED. | 324 // Maximum retries allowed when the request fails with ERR_NETWORK_CHANGED. |
324 // 0 by default. | 325 // 0 by default. |
325 int max_retries_on_network_changes_; | 326 int max_retries_on_network_changes_; |
326 | 327 |
327 // Timer to poll the progress of uploading for POST and PUT requests. | 328 // Timer to poll the progress of uploading for POST and PUT requests. |
328 // When crbug.com/119629 is fixed, scoped_ptr is not necessary here. | 329 // When crbug.com/119629 is fixed, scoped_ptr is not necessary here. |
329 scoped_ptr<base::RepeatingTimer> upload_progress_checker_timer_; | 330 scoped_ptr<base::RepeatingTimer> upload_progress_checker_timer_; |
330 // Number of bytes sent so far. | 331 // Number of bytes sent so far. |
331 int64 current_upload_bytes_; | 332 int64_t current_upload_bytes_; |
332 // Number of bytes received so far. | 333 // Number of bytes received so far. |
333 int64 current_response_bytes_; | 334 int64_t current_response_bytes_; |
334 // Total expected bytes to receive (-1 if it cannot be determined). | 335 // Total expected bytes to receive (-1 if it cannot be determined). |
335 int64 total_response_bytes_; | 336 int64_t total_response_bytes_; |
336 | 337 |
337 // TODO(willchan): Get rid of this after debugging crbug.com/90971. | 338 // TODO(willchan): Get rid of this after debugging crbug.com/90971. |
338 base::debug::StackTrace stack_trace_; | 339 base::debug::StackTrace stack_trace_; |
339 | 340 |
340 static base::LazyInstance<Registry> g_registry; | 341 static base::LazyInstance<Registry> g_registry; |
341 | 342 |
342 DISALLOW_COPY_AND_ASSIGN(URLFetcherCore); | 343 DISALLOW_COPY_AND_ASSIGN(URLFetcherCore); |
343 }; | 344 }; |
344 | 345 |
345 } // namespace net | 346 } // namespace net |
346 | 347 |
347 #endif // NET_URL_REQUEST_URL_FETCHER_CORE_H_ | 348 #endif // NET_URL_REQUEST_URL_FETCHER_CORE_H_ |
OLD | NEW |