[email protected] | 9c4eff2 | 2012-03-20 22:42:29 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
license.bot | bf09a50 | 2008-08-24 00:55:55 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 4 | |
| 5 | // This class represents contextual information (cookies, cache, etc.) |
| 6 | // that's useful when processing resource requests. |
| 7 | // The class is reference-counted so that it can be cleaned up after any |
| 8 | // requests that are using it have been completed. |
| 9 | |
[email protected] | 43530b3 | 2008-08-04 22:21:34 | [diff] [blame] | 10 | #ifndef NET_URL_REQUEST_URL_REQUEST_CONTEXT_H_ |
| 11 | #define NET_URL_REQUEST_URL_REQUEST_CONTEXT_H_ |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 12 | |
[email protected] | 7c52ed9 | 2012-04-06 15:42:40 | [diff] [blame] | 13 | #include <set> |
| 14 | |
[email protected] | 3b63f8f4 | 2011-03-28 01:54:15 | [diff] [blame] | 15 | #include "base/memory/ref_counted.h" |
[email protected] | ede9666 | 2011-07-14 12:34:18 | [diff] [blame] | 16 | #include "base/memory/scoped_ptr.h" |
[email protected] | 18590f2 | 2011-07-29 16:41:28 | [diff] [blame] | 17 | #include "base/memory/weak_ptr.h" |
[email protected] | c917750 | 2011-01-01 04:48:49 | [diff] [blame] | 18 | #include "base/threading/non_thread_safe.h" |
[email protected] | 172da1b | 2011-08-12 15:52:26 | [diff] [blame] | 19 | #include "net/base/net_export.h" |
[email protected] | 9e743cd | 2010-03-16 07:03:53 | [diff] [blame] | 20 | #include "net/base/net_log.h" |
[email protected] | db36938c | 2009-08-19 21:48:42 | [diff] [blame] | 21 | #include "net/base/ssl_config_service.h" |
[email protected] | 326e679 | 2009-12-11 21:04:42 | [diff] [blame] | 22 | #include "net/base/transport_security_state.h" |
[email protected] | c2dad29 | 2012-09-07 21:27:35 | [diff] [blame^] | 23 | #include "net/http/http_network_session.h" |
[email protected] | db96a88 | 2011-10-09 02:01:54 | [diff] [blame] | 24 | #include "net/http/http_server_properties.h" |
[email protected] | 515838c | 2009-01-15 06:43:48 | [diff] [blame] | 25 | #include "net/ftp/ftp_auth_cache.h" |
[email protected] | 8a26ff6 | 2012-08-24 21:49:20 | [diff] [blame] | 26 | #include "net/url_request/url_request.h" |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 27 | |
[email protected] | 8ac1a75 | 2008-07-31 19:40:37 | [diff] [blame] | 28 | namespace net { |
[email protected] | 822581d | 2010-12-16 17:27:15 | [diff] [blame] | 29 | class CertVerifier; |
[email protected] | 9349cfb | 2010-08-31 18:00:53 | [diff] [blame] | 30 | class CookieStore; |
[email protected] | b97d770 | 2011-10-16 01:11:07 | [diff] [blame] | 31 | class FraudulentCertificateReporter; |
[email protected] | b65ce094 | 2009-03-16 20:13:33 | [diff] [blame] | 32 | class FtpTransactionFactory; |
[email protected] | 9349cfb | 2010-08-31 18:00:53 | [diff] [blame] | 33 | class HostResolver; |
[email protected] | fa55e19 | 2010-02-15 14:25:50 | [diff] [blame] | 34 | class HttpAuthHandlerFactory; |
[email protected] | b65ce094 | 2009-03-16 20:13:33 | [diff] [blame] | 35 | class HttpTransactionFactory; |
[email protected] | 0651b81 | 2011-02-24 00:22:50 | [diff] [blame] | 36 | class NetworkDelegate; |
[email protected] | 9c4eff2 | 2012-03-20 22:42:29 | [diff] [blame] | 37 | class ServerBoundCertService; |
[email protected] | 6104ea5d | 2011-04-27 21:37:12 | [diff] [blame] | 38 | class ProxyService; |
[email protected] | eaadd905 | 2009-06-23 18:02:23 | [diff] [blame] | 39 | class URLRequest; |
[email protected] | a8c1e745 | 2011-05-14 06:17:07 | [diff] [blame] | 40 | class URLRequestJobFactory; |
[email protected] | a73a280 | 2012-05-02 19:20:15 | [diff] [blame] | 41 | class URLRequestThrottlerManager; |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 42 | |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 43 | // Subclass to provide application-specific context for URLRequest |
[email protected] | 529623e | 2011-02-23 17:37:16 | [diff] [blame] | 44 | // instances. Note that URLRequestContext typically does not provide storage for |
| 45 | // these member variables, since they may be shared. For the ones that aren't |
| 46 | // shared, URLRequestContextStorage can be helpful in defining their storage. |
[email protected] | 172da1b | 2011-08-12 15:52:26 | [diff] [blame] | 47 | class NET_EXPORT URLRequestContext |
[email protected] | ef2bf42 | 2012-05-11 03:27:09 | [diff] [blame] | 48 | : NON_EXPORTED_BASE(public base::NonThreadSafe) { |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 49 | public: |
[email protected] | 9349cfb | 2010-08-31 18:00:53 | [diff] [blame] | 50 | URLRequestContext(); |
[email protected] | ef2bf42 | 2012-05-11 03:27:09 | [diff] [blame] | 51 | virtual ~URLRequestContext(); |
[email protected] | 18590f2 | 2011-07-29 16:41:28 | [diff] [blame] | 52 | |
[email protected] | d969667 | 2011-03-15 22:45:09 | [diff] [blame] | 53 | // Copies the state from |other| into this context. |
[email protected] | fa22a6f1 | 2012-05-11 17:19:59 | [diff] [blame] | 54 | void CopyFrom(const URLRequestContext* other); |
[email protected] | d969667 | 2011-03-15 22:45:09 | [diff] [blame] | 55 | |
[email protected] | c2dad29 | 2012-09-07 21:27:35 | [diff] [blame^] | 56 | // May return NULL if this context doesn't have an associated network session. |
| 57 | const HttpNetworkSession::Params* GetNetworkSessionParams() const; |
| 58 | |
[email protected] | 8a26ff6 | 2012-08-24 21:49:20 | [diff] [blame] | 59 | URLRequest* CreateRequest( |
| 60 | const GURL& url, URLRequest::Delegate* delegate) const; |
| 61 | |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 62 | NetLog* net_log() const { |
[email protected] | 9e743cd | 2010-03-16 07:03:53 | [diff] [blame] | 63 | return net_log_; |
| 64 | } |
| 65 | |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 66 | void set_net_log(NetLog* net_log) { |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 67 | net_log_ = net_log; |
| 68 | } |
| 69 | |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 70 | HostResolver* host_resolver() const { |
[email protected] | 8a00f00a | 2009-06-12 00:49:38 | [diff] [blame] | 71 | return host_resolver_; |
| 72 | } |
| 73 | |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 74 | void set_host_resolver(HostResolver* host_resolver) { |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 75 | host_resolver_ = host_resolver; |
| 76 | } |
| 77 | |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 78 | CertVerifier* cert_verifier() const { |
[email protected] | 822581d | 2010-12-16 17:27:15 | [diff] [blame] | 79 | return cert_verifier_; |
| 80 | } |
| 81 | |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 82 | void set_cert_verifier(CertVerifier* cert_verifier) { |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 83 | cert_verifier_ = cert_verifier; |
| 84 | } |
| 85 | |
[email protected] | 9c4eff2 | 2012-03-20 22:42:29 | [diff] [blame] | 86 | ServerBoundCertService* server_bound_cert_service() const { |
| 87 | return server_bound_cert_service_; |
[email protected] | feb79bcd | 2011-07-21 16:55:17 | [diff] [blame] | 88 | } |
[email protected] | 273e37d | 2011-08-11 01:49:12 | [diff] [blame] | 89 | |
[email protected] | 9c4eff2 | 2012-03-20 22:42:29 | [diff] [blame] | 90 | void set_server_bound_cert_service( |
| 91 | ServerBoundCertService* server_bound_cert_service) { |
| 92 | server_bound_cert_service_ = server_bound_cert_service; |
[email protected] | feb79bcd | 2011-07-21 16:55:17 | [diff] [blame] | 93 | } |
| 94 | |
[email protected] | b97d770 | 2011-10-16 01:11:07 | [diff] [blame] | 95 | FraudulentCertificateReporter* fraudulent_certificate_reporter() const { |
| 96 | return fraudulent_certificate_reporter_; |
| 97 | } |
| 98 | void set_fraudulent_certificate_reporter( |
| 99 | FraudulentCertificateReporter* fraudulent_certificate_reporter) { |
| 100 | fraudulent_certificate_reporter_ = fraudulent_certificate_reporter; |
| 101 | } |
| 102 | |
[email protected] | 63de95b | 2008-12-10 04:11:27 | [diff] [blame] | 103 | // Get the proxy service for this context. |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 104 | ProxyService* proxy_service() const { return proxy_service_; } |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 105 | void set_proxy_service(ProxyService* proxy_service) { |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 106 | proxy_service_ = proxy_service; |
| 107 | } |
| 108 | |
[email protected] | db36938c | 2009-08-19 21:48:42 | [diff] [blame] | 109 | // Get the ssl config service for this context. |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 110 | SSLConfigService* ssl_config_service() const { return ssl_config_service_; } |
[email protected] | 7461a40 | 2011-03-24 23:19:51 | [diff] [blame] | 111 | void set_ssl_config_service(SSLConfigService* service) { |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 112 | ssl_config_service_ = service; |
[email protected] | db36938c | 2009-08-19 21:48:42 | [diff] [blame] | 113 | } |
| 114 | |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 115 | // Gets the HTTP Authentication Handler Factory for this context. |
| 116 | // The factory is only valid for the lifetime of this URLRequestContext |
[email protected] | ef2bf42 | 2012-05-11 03:27:09 | [diff] [blame] | 117 | HttpAuthHandlerFactory* http_auth_handler_factory() const { |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 118 | return http_auth_handler_factory_; |
| 119 | } |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 120 | void set_http_auth_handler_factory(HttpAuthHandlerFactory* factory) { |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 121 | http_auth_handler_factory_ = factory; |
| 122 | } |
| 123 | |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 124 | // Gets the http transaction factory for this context. |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 125 | HttpTransactionFactory* http_transaction_factory() const { |
[email protected] | db8f44c | 2008-12-13 04:52:01 | [diff] [blame] | 126 | return http_transaction_factory_; |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 127 | } |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 128 | void set_http_transaction_factory(HttpTransactionFactory* factory) { |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 129 | http_transaction_factory_ = factory; |
| 130 | } |
| 131 | |
[email protected] | b65ce094 | 2009-03-16 20:13:33 | [diff] [blame] | 132 | // Gets the ftp transaction factory for this context. |
[email protected] | ede9666 | 2011-07-14 12:34:18 | [diff] [blame] | 133 | FtpTransactionFactory* ftp_transaction_factory() const { |
[email protected] | b65ce094 | 2009-03-16 20:13:33 | [diff] [blame] | 134 | return ftp_transaction_factory_; |
| 135 | } |
[email protected] | 7461a40 | 2011-03-24 23:19:51 | [diff] [blame] | 136 | void set_ftp_transaction_factory(FtpTransactionFactory* factory) { |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 137 | ftp_transaction_factory_ = factory; |
| 138 | } |
[email protected] | b65ce094 | 2009-03-16 20:13:33 | [diff] [blame] | 139 | |
[email protected] | 0651b81 | 2011-02-24 00:22:50 | [diff] [blame] | 140 | void set_network_delegate(NetworkDelegate* network_delegate) { |
[email protected] | d05ef99c | 2011-02-01 21:38:16 | [diff] [blame] | 141 | network_delegate_ = network_delegate; |
| 142 | } |
[email protected] | 0651b81 | 2011-02-24 00:22:50 | [diff] [blame] | 143 | NetworkDelegate* network_delegate() const { return network_delegate_; } |
[email protected] | d05ef99c | 2011-02-01 21:38:16 | [diff] [blame] | 144 | |
[email protected] | db96a88 | 2011-10-09 02:01:54 | [diff] [blame] | 145 | void set_http_server_properties( |
| 146 | HttpServerProperties* http_server_properties) { |
| 147 | http_server_properties_ = http_server_properties; |
| 148 | } |
| 149 | HttpServerProperties* http_server_properties() const { |
| 150 | return http_server_properties_; |
| 151 | } |
| 152 | |
[email protected] | be6fca6c | 2010-01-30 21:48:57 | [diff] [blame] | 153 | // Gets the cookie store for this context (may be null, in which case |
| 154 | // cookies are not stored). |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 155 | CookieStore* cookie_store() const { return cookie_store_.get(); } |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 156 | void set_cookie_store(CookieStore* cookie_store); |
[email protected] | 2fb62920 | 2010-12-23 23:52:57 | [diff] [blame] | 157 | |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 158 | TransportSecurityState* transport_security_state() const { |
| 159 | return transport_security_state_; |
| 160 | } |
| 161 | void set_transport_security_state( |
[email protected] | 7461a40 | 2011-03-24 23:19:51 | [diff] [blame] | 162 | TransportSecurityState* state) { |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 163 | transport_security_state_ = state; |
| 164 | } |
[email protected] | a9cea754 | 2009-05-20 04:30:23 | [diff] [blame] | 165 | |
[email protected] | 515838c | 2009-01-15 06:43:48 | [diff] [blame] | 166 | // Gets the FTP authentication cache for this context. |
[email protected] | 9bfe0ab | 2012-08-30 13:18:11 | [diff] [blame] | 167 | FtpAuthCache* ftp_auth_cache() const { |
| 168 | #if !defined(DISABLE_FTP_SUPPORT) |
| 169 | return ftp_auth_cache_.get(); |
| 170 | #else |
| 171 | return NULL; |
| 172 | #endif |
| 173 | } |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 174 | |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 175 | // Gets the value of 'Accept-Charset' header field. |
| 176 | const std::string& accept_charset() const { return accept_charset_; } |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 177 | void set_accept_charset(const std::string& accept_charset) { |
| 178 | accept_charset_ = accept_charset; |
| 179 | } |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 180 | |
| 181 | // Gets the value of 'Accept-Language' header field. |
| 182 | const std::string& accept_language() const { return accept_language_; } |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 183 | void set_accept_language(const std::string& accept_language) { |
| 184 | accept_language_ = accept_language; |
| 185 | } |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 186 | |
[email protected] | 6f681a4 | 2009-01-27 22:28:54 | [diff] [blame] | 187 | // Gets the UA string to use for the given URL. Pass an invalid URL (such as |
| 188 | // GURL()) to get the default UA string. Subclasses should override this |
| 189 | // method to provide a UA string. |
[email protected] | f1d8192 | 2010-07-31 17:47:09 | [diff] [blame] | 190 | virtual const std::string& GetUserAgent(const GURL& url) const; |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 191 | |
[email protected] | c9825a4 | 2009-05-01 22:51:50 | [diff] [blame] | 192 | // In general, referrer_charset is not known when URLRequestContext is |
| 193 | // constructed. So, we need a setter. |
| 194 | const std::string& referrer_charset() const { return referrer_charset_; } |
| 195 | void set_referrer_charset(const std::string& charset) { |
| 196 | referrer_charset_ = charset; |
| 197 | } |
| 198 | |
[email protected] | a8c1e745 | 2011-05-14 06:17:07 | [diff] [blame] | 199 | const URLRequestJobFactory* job_factory() const { return job_factory_; } |
| 200 | void set_job_factory(const URLRequestJobFactory* job_factory) { |
| 201 | job_factory_ = job_factory; |
| 202 | } |
| 203 | |
[email protected] | a73a280 | 2012-05-02 19:20:15 | [diff] [blame] | 204 | // May be NULL. |
| 205 | URLRequestThrottlerManager* throttler_manager() const { |
| 206 | return throttler_manager_; |
| 207 | } |
| 208 | void set_throttler_manager(URLRequestThrottlerManager* throttler_manager) { |
| 209 | throttler_manager_ = throttler_manager; |
| 210 | } |
| 211 | |
[email protected] | 7c52ed9 | 2012-04-06 15:42:40 | [diff] [blame] | 212 | // Gets the URLRequest objects that hold a reference to this |
| 213 | // URLRequestContext. |
| 214 | std::set<const URLRequest*>* url_requests() const { |
| 215 | return url_requests_.get(); |
| 216 | } |
| 217 | |
[email protected] | 1e714bba | 2012-04-10 17:01:05 | [diff] [blame] | 218 | void AssertNoURLRequests() const; |
| 219 | |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 220 | private: |
[email protected] | d969667 | 2011-03-15 22:45:09 | [diff] [blame] | 221 | // --------------------------------------------------------------------------- |
| 222 | // Important: When adding any new members below, consider whether they need to |
| 223 | // be added to CopyFrom. |
| 224 | // --------------------------------------------------------------------------- |
| 225 | |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 226 | // Ownership for these members are not defined here. Clients should either |
| 227 | // provide storage elsewhere or have a subclass take ownership. |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 228 | NetLog* net_log_; |
| 229 | HostResolver* host_resolver_; |
| 230 | CertVerifier* cert_verifier_; |
[email protected] | 9c4eff2 | 2012-03-20 22:42:29 | [diff] [blame] | 231 | ServerBoundCertService* server_bound_cert_service_; |
[email protected] | b97d770 | 2011-10-16 01:11:07 | [diff] [blame] | 232 | FraudulentCertificateReporter* fraudulent_certificate_reporter_; |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 233 | HttpAuthHandlerFactory* http_auth_handler_factory_; |
[email protected] | 6104ea5d | 2011-04-27 21:37:12 | [diff] [blame] | 234 | ProxyService* proxy_service_; |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 235 | scoped_refptr<SSLConfigService> ssl_config_service_; |
[email protected] | 0651b81 | 2011-02-24 00:22:50 | [diff] [blame] | 236 | NetworkDelegate* network_delegate_; |
[email protected] | db96a88 | 2011-10-09 02:01:54 | [diff] [blame] | 237 | HttpServerProperties* http_server_properties_; |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 238 | scoped_refptr<CookieStore> cookie_store_; |
[email protected] | edbc4f9 | 2011-09-27 21:04:49 | [diff] [blame] | 239 | TransportSecurityState* transport_security_state_; |
[email protected] | 9bfe0ab | 2012-08-30 13:18:11 | [diff] [blame] | 240 | #if !defined(DISABLE_FTP_SUPPORT) |
[email protected] | ede9666 | 2011-07-14 12:34:18 | [diff] [blame] | 241 | scoped_ptr<FtpAuthCache> ftp_auth_cache_; |
[email protected] | 9bfe0ab | 2012-08-30 13:18:11 | [diff] [blame] | 242 | #endif |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 243 | std::string accept_language_; |
| 244 | std::string accept_charset_; |
[email protected] | c9825a4 | 2009-05-01 22:51:50 | [diff] [blame] | 245 | // The charset of the referrer where this request comes from. It's not |
| 246 | // used in communication with a server but is used to construct a suggested |
| 247 | // filename for file download. |
| 248 | std::string referrer_charset_; |
[email protected] | f6c21cb | 2011-02-16 19:45:41 | [diff] [blame] | 249 | HttpTransactionFactory* http_transaction_factory_; |
| 250 | FtpTransactionFactory* ftp_transaction_factory_; |
[email protected] | a8c1e745 | 2011-05-14 06:17:07 | [diff] [blame] | 251 | const URLRequestJobFactory* job_factory_; |
[email protected] | a73a280 | 2012-05-02 19:20:15 | [diff] [blame] | 252 | URLRequestThrottlerManager* throttler_manager_; |
[email protected] | 70b9234 | 2010-10-12 05:54:06 | [diff] [blame] | 253 | |
[email protected] | d969667 | 2011-03-15 22:45:09 | [diff] [blame] | 254 | // --------------------------------------------------------------------------- |
| 255 | // Important: When adding any new members below, consider whether they need to |
| 256 | // be added to CopyFrom. |
| 257 | // --------------------------------------------------------------------------- |
| 258 | |
[email protected] | 7c52ed9 | 2012-04-06 15:42:40 | [diff] [blame] | 259 | scoped_ptr<std::set<const URLRequest*> > url_requests_; |
| 260 | |
[email protected] | 6f681a4 | 2009-01-27 22:28:54 | [diff] [blame] | 261 | DISALLOW_COPY_AND_ASSIGN(URLRequestContext); |
initial.commit | 586acc5fe | 2008-07-26 22:42:52 | [diff] [blame] | 262 | }; |
| 263 | |
[email protected] | 27a112c | 2011-01-06 04:19:30 | [diff] [blame] | 264 | } // namespace net |
| 265 | |
[email protected] | 43530b3 | 2008-08-04 22:21:34 | [diff] [blame] | 266 | #endif // NET_URL_REQUEST_URL_REQUEST_CONTEXT_H_ |