OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // This file contains URLFetcher, a wrapper around net::URLRequest that handles | 5 // This file contains URLFetcher, a wrapper around net::URLRequest that handles |
6 // low-level details like thread safety, ref counting, and incremental buffer | 6 // low-level details like thread safety, ref counting, and incremental buffer |
7 // reading. This is useful for callers who simply want to get the data from a | 7 // reading. This is useful for callers who simply want to get the data from a |
8 // URL and don't care about all the nitty-gritty details. | 8 // URL and don't care about all the nitty-gritty details. |
9 // | 9 // |
10 // NOTE(willchan): Only one "IO" thread is supported for URLFetcher. This is a | 10 // NOTE(willchan): Only one "IO" thread is supported for URLFetcher. This is a |
11 // temporary situation. We will work on allowing support for multiple "io" | 11 // temporary situation. We will work on allowing support for multiple "io" |
12 // threads per process. | 12 // threads per process. |
13 | 13 |
14 #ifndef CHROME_COMMON_NET_URL_FETCHER_H_ | 14 #ifndef CHROME_COMMON_NET_URL_FETCHER_H_ |
15 #define CHROME_COMMON_NET_URL_FETCHER_H_ | 15 #define CHROME_COMMON_NET_URL_FETCHER_H_ |
16 #pragma once | 16 #pragma once |
17 | 17 |
18 #include <string> | 18 #include <string> |
19 #include <vector> | 19 #include <vector> |
20 | 20 |
21 #include "base/message_loop.h" | 21 #include "base/message_loop.h" |
22 #include "base/ref_counted.h" | 22 #include "base/ref_counted.h" |
23 #include "base/time.h" | 23 #include "base/time.h" |
24 | 24 |
25 class GURL; | 25 class GURL; |
26 typedef std::vector<std::string> ResponseCookies; | 26 typedef std::vector<std::string> ResponseCookies; |
27 class URLFetcher; | 27 class URLFetcher; |
28 class URLRequestContextGetter; | 28 class URLRequestContextGetter; |
29 class URLRequestStatus; | |
30 | 29 |
31 namespace net { | 30 namespace net { |
32 class HttpResponseHeaders; | 31 class HttpResponseHeaders; |
33 } | 32 class URLRequestStatus; |
| 33 } // namespace net |
34 | 34 |
35 // To use this class, create an instance with the desired URL and a pointer to | 35 // To use this class, create an instance with the desired URL and a pointer to |
36 // the object to be notified when the URL has been loaded: | 36 // the object to be notified when the URL has been loaded: |
37 // URLFetcher* fetcher = new URLFetcher("http://www.google.com", this); | 37 // URLFetcher* fetcher = new URLFetcher("http://www.google.com", this); |
38 // | 38 // |
39 // Then, optionally set properties on this object, like the request context or | 39 // Then, optionally set properties on this object, like the request context or |
40 // extra headers: | 40 // extra headers: |
41 // fetcher->SetExtraRequestHeaders("X-Foo: bar"); | 41 // fetcher->SetExtraRequestHeaders("X-Foo: bar"); |
42 // | 42 // |
43 // Finally, start the request: | 43 // Finally, start the request: |
(...skipping 24 matching lines...) Expand all Loading... |
68 }; | 68 }; |
69 | 69 |
70 class Delegate { | 70 class Delegate { |
71 public: | 71 public: |
72 // This will be called when the URL has been fetched, successfully or not. | 72 // This will be called when the URL has been fetched, successfully or not. |
73 // |response_code| is the HTTP response code (200, 404, etc.) if | 73 // |response_code| is the HTTP response code (200, 404, etc.) if |
74 // applicable. |url|, |status| and |data| are all valid until the | 74 // applicable. |url|, |status| and |data| are all valid until the |
75 // URLFetcher instance is destroyed. | 75 // URLFetcher instance is destroyed. |
76 virtual void OnURLFetchComplete(const URLFetcher* source, | 76 virtual void OnURLFetchComplete(const URLFetcher* source, |
77 const GURL& url, | 77 const GURL& url, |
78 const URLRequestStatus& status, | 78 const net::URLRequestStatus& status, |
79 int response_code, | 79 int response_code, |
80 const ResponseCookies& cookies, | 80 const ResponseCookies& cookies, |
81 const std::string& data) = 0; | 81 const std::string& data) = 0; |
82 | 82 |
83 protected: | 83 protected: |
84 virtual ~Delegate() {} | 84 virtual ~Delegate() {} |
85 }; | 85 }; |
86 | 86 |
87 // URLFetcher::Create uses the currently registered Factory to create the | 87 // URLFetcher::Create uses the currently registered Factory to create the |
88 // URLFetcher. Factory is intended for testing. | 88 // URLFetcher. Factory is intended for testing. |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 base::TimeDelta backoff_delay_; | 213 base::TimeDelta backoff_delay_; |
214 // Maximum retries allowed. | 214 // Maximum retries allowed. |
215 int max_retries_; | 215 int max_retries_; |
216 | 216 |
217 static bool g_interception_enabled; | 217 static bool g_interception_enabled; |
218 | 218 |
219 DISALLOW_COPY_AND_ASSIGN(URLFetcher); | 219 DISALLOW_COPY_AND_ASSIGN(URLFetcher); |
220 }; | 220 }; |
221 | 221 |
222 #endif // CHROME_COMMON_NET_URL_FETCHER_H_ | 222 #endif // CHROME_COMMON_NET_URL_FETCHER_H_ |
OLD | NEW |