Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(113)

Side by Side Diff: net/url_request/url_request_context_builder.cc

Issue 1303493002: Make UrlRequestContextBuilder take scoped_ptr's (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sync and fix tiny resulting build failure Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "net/url_request/url_request_context_builder.h" 5 #include "net/url_request/url_request_context_builder.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate); 122 DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate);
123 }; 123 };
124 124
125 // Define a context class that can self-manage the ownership of its components 125 // Define a context class that can self-manage the ownership of its components
126 // via a UrlRequestContextStorage object. 126 // via a UrlRequestContextStorage object.
127 class ContainerURLRequestContext : public URLRequestContext { 127 class ContainerURLRequestContext : public URLRequestContext {
128 public: 128 public:
129 explicit ContainerURLRequestContext( 129 explicit ContainerURLRequestContext(
130 const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner) 130 const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner)
131 : file_task_runner_(file_task_runner), storage_(this) {} 131 : file_task_runner_(file_task_runner), storage_(this) {}
132 ~ContainerURLRequestContext() override { AssertNoURLRequests(); }
132 133
133 URLRequestContextStorage* storage() { 134 URLRequestContextStorage* storage() {
134 return &storage_; 135 return &storage_;
135 } 136 }
136 137
137 scoped_refptr<base::SingleThreadTaskRunner>& GetFileTaskRunner() { 138 scoped_refptr<base::SingleThreadTaskRunner>& GetFileTaskRunner() {
138 // Create a new thread to run file tasks, if needed. 139 // Create a new thread to run file tasks, if needed.
139 if (!file_task_runner_) { 140 if (!file_task_runner_) {
140 DCHECK(!file_thread_); 141 DCHECK(!file_thread_);
141 file_thread_.reset(new base::Thread("Network File Thread")); 142 file_thread_.reset(new base::Thread("Network File Thread"));
142 file_thread_->StartWithOptions( 143 file_thread_->StartWithOptions(
143 base::Thread::Options(base::MessageLoop::TYPE_DEFAULT, 0)); 144 base::Thread::Options(base::MessageLoop::TYPE_DEFAULT, 0));
144 file_task_runner_ = file_thread_->task_runner(); 145 file_task_runner_ = file_thread_->task_runner();
145 } 146 }
146 return file_task_runner_; 147 return file_task_runner_;
147 } 148 }
148 149
149 void set_transport_security_persister( 150 void set_transport_security_persister(
150 scoped_ptr<TransportSecurityPersister> transport_security_persister) { 151 scoped_ptr<TransportSecurityPersister> transport_security_persister) {
151 transport_security_persister = transport_security_persister.Pass(); 152 transport_security_persister = transport_security_persister.Pass();
152 } 153 }
153 154
154 protected:
155 ~ContainerURLRequestContext() override { AssertNoURLRequests(); }
156
157 private: 155 private:
158 // The thread should be torn down last. 156 // The thread should be torn down last.
159 scoped_ptr<base::Thread> file_thread_; 157 scoped_ptr<base::Thread> file_thread_;
160 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_; 158 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_;
161 159
162 URLRequestContextStorage storage_; 160 URLRequestContextStorage storage_;
163 scoped_ptr<TransportSecurityPersister> transport_security_persister_; 161 scoped_ptr<TransportSecurityPersister> transport_security_persister_;
164 162
165 DISALLOW_COPY_AND_ASSIGN(ContainerURLRequestContext); 163 DISALLOW_COPY_AND_ASSIGN(ContainerURLRequestContext);
166 }; 164 };
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 : data_enabled_(false), 196 : data_enabled_(false),
199 #if !defined(DISABLE_FILE_SUPPORT) 197 #if !defined(DISABLE_FILE_SUPPORT)
200 file_enabled_(false), 198 file_enabled_(false),
201 #endif 199 #endif
202 #if !defined(DISABLE_FTP_SUPPORT) 200 #if !defined(DISABLE_FTP_SUPPORT)
203 ftp_enabled_(false), 201 ftp_enabled_(false),
204 #endif 202 #endif
205 http_cache_enabled_(true), 203 http_cache_enabled_(true),
206 throttling_enabled_(false), 204 throttling_enabled_(false),
207 backoff_enabled_(false), 205 backoff_enabled_(false),
208 sdch_enabled_(false) { 206 sdch_enabled_(false),
207 net_log_(nullptr) {
209 } 208 }
210 209
211 URLRequestContextBuilder::~URLRequestContextBuilder() {} 210 URLRequestContextBuilder::~URLRequestContextBuilder() {}
212 211
213 void URLRequestContextBuilder::SetHttpNetworkSessionComponents( 212 void URLRequestContextBuilder::SetHttpNetworkSessionComponents(
214 const URLRequestContext* context, 213 const URLRequestContext* context,
215 HttpNetworkSession::Params* params) { 214 HttpNetworkSession::Params* params) {
216 params->host_resolver = context->host_resolver(); 215 params->host_resolver = context->host_resolver();
217 params->cert_verifier = context->cert_verifier(); 216 params->cert_verifier = context->cert_verifier();
218 params->transport_security_state = context->transport_security_state(); 217 params->transport_security_state = context->transport_security_state();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 void URLRequestContextBuilder::SetFileTaskRunner( 258 void URLRequestContextBuilder::SetFileTaskRunner(
260 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { 259 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
261 file_task_runner_ = task_runner; 260 file_task_runner_ = task_runner;
262 } 261 }
263 262
264 void URLRequestContextBuilder::SetHttpServerProperties( 263 void URLRequestContextBuilder::SetHttpServerProperties(
265 scoped_ptr<HttpServerProperties> http_server_properties) { 264 scoped_ptr<HttpServerProperties> http_server_properties) {
266 http_server_properties_ = http_server_properties.Pass(); 265 http_server_properties_ = http_server_properties.Pass();
267 } 266 }
268 267
269 URLRequestContext* URLRequestContextBuilder::Build() { 268 scoped_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
270 ContainerURLRequestContext* context = 269 scoped_ptr<ContainerURLRequestContext> context(
271 new ContainerURLRequestContext(file_task_runner_); 270 new ContainerURLRequestContext(file_task_runner_));
272 URLRequestContextStorage* storage = context->storage(); 271 URLRequestContextStorage* storage = context->storage();
273 272
274 storage->set_http_user_agent_settings(new StaticHttpUserAgentSettings( 273 storage->set_http_user_agent_settings(new StaticHttpUserAgentSettings(
275 accept_language_, user_agent_)); 274 accept_language_, user_agent_));
276 275
277 if (!network_delegate_) 276 if (!network_delegate_)
278 network_delegate_.reset(new BasicNetworkDelegate); 277 network_delegate_.reset(new BasicNetworkDelegate);
279 NetworkDelegate* network_delegate = network_delegate_.release(); 278 NetworkDelegate* network_delegate = network_delegate_.release();
280 storage->set_network_delegate(network_delegate); 279 storage->set_network_delegate(network_delegate);
281 280
282 if (net_log_) { 281 if (net_log_) {
283 storage->set_net_log(net_log_.release()); 282 // Unlike the other builder parameters, |net_log_| is not owned by the
283 // builder or resulting context.
284 context->set_net_log(net_log_);
284 } else { 285 } else {
285 storage->set_net_log(new NetLog); 286 storage->set_net_log(new NetLog);
286 } 287 }
287 288
288 if (!host_resolver_) { 289 if (!host_resolver_) {
289 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log()); 290 host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log());
290 } 291 }
291 storage->set_host_resolver(host_resolver_.Pass()); 292 storage->set_host_resolver(host_resolver_.Pass());
292 293
293 if (!proxy_service_) { 294 if (!proxy_service_) {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 359
359 storage->set_cert_verifier(CertVerifier::CreateDefault()); 360 storage->set_cert_verifier(CertVerifier::CreateDefault());
360 361
361 if (throttling_enabled_) 362 if (throttling_enabled_)
362 storage->set_throttler_manager(new URLRequestThrottlerManager()); 363 storage->set_throttler_manager(new URLRequestThrottlerManager());
363 364
364 if (backoff_enabled_) 365 if (backoff_enabled_)
365 storage->set_backoff_manager(new URLRequestBackoffManager()); 366 storage->set_backoff_manager(new URLRequestBackoffManager());
366 367
367 HttpNetworkSession::Params network_session_params; 368 HttpNetworkSession::Params network_session_params;
368 SetHttpNetworkSessionComponents(context, &network_session_params); 369 SetHttpNetworkSessionComponents(context.get(), &network_session_params);
369 370
370 network_session_params.ignore_certificate_errors = 371 network_session_params.ignore_certificate_errors =
371 http_network_session_params_.ignore_certificate_errors; 372 http_network_session_params_.ignore_certificate_errors;
372 network_session_params.host_mapping_rules = 373 network_session_params.host_mapping_rules =
373 http_network_session_params_.host_mapping_rules; 374 http_network_session_params_.host_mapping_rules;
374 network_session_params.testing_fixed_http_port = 375 network_session_params.testing_fixed_http_port =
375 http_network_session_params_.testing_fixed_http_port; 376 http_network_session_params_.testing_fixed_http_port;
376 network_session_params.testing_fixed_https_port = 377 network_session_params.testing_fixed_https_port =
377 http_network_session_params_.testing_fixed_https_port; 378 http_network_session_params_.testing_fixed_https_port;
378 network_session_params.use_alternative_services = 379 network_session_params.use_alternative_services =
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 url_request_interceptors_.rbegin(); 440 url_request_interceptors_.rbegin();
440 i != url_request_interceptors_.rend(); ++i) { 441 i != url_request_interceptors_.rend(); ++i) {
441 top_job_factory.reset(new net::URLRequestInterceptingJobFactory( 442 top_job_factory.reset(new net::URLRequestInterceptingJobFactory(
442 top_job_factory.Pass(), make_scoped_ptr(*i))); 443 top_job_factory.Pass(), make_scoped_ptr(*i)));
443 } 444 }
444 url_request_interceptors_.weak_clear(); 445 url_request_interceptors_.weak_clear();
445 } 446 }
446 storage->set_job_factory(top_job_factory.release()); 447 storage->set_job_factory(top_job_factory.release());
447 // TODO(willchan): Support sdch. 448 // TODO(willchan): Support sdch.
448 449
449 return context; 450 return context.Pass();
450 } 451 }
451 452
452 } // namespace net 453 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_request_context_builder.h ('k') | net/url_request/url_request_context_builder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698