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

Side by Side Diff: components/cronet/ios/cronet_environment.cc

Issue 2115653002: [Cronet] Use TransportSecurityState, CTVerifier, CTPolicyEnforcer on iOS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/cronet/ios/cronet_environment.h" 5 #include "components/cronet/ios/cronet_environment.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/at_exit.h" 9 #include "base/at_exit.h"
10 #include "base/atomicops.h" 10 #include "base/atomicops.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/files/file_path.h" 12 #include "base/files/file_path.h"
13 #include "base/files/file_util.h" 13 #include "base/files/file_util.h"
14 #include "base/files/scoped_file.h" 14 #include "base/files/scoped_file.h"
15 #include "base/json/json_writer.h" 15 #include "base/json/json_writer.h"
16 #include "base/mac/bind_objc_block.h" 16 #include "base/mac/bind_objc_block.h"
17 #include "base/mac/foundation_util.h" 17 #include "base/mac/foundation_util.h"
18 #include "base/macros.h" 18 #include "base/macros.h"
19 #include "base/metrics/statistics_recorder.h" 19 #include "base/metrics/statistics_recorder.h"
20 #include "base/path_service.h" 20 #include "base/path_service.h"
21 #include "base/synchronization/waitable_event.h" 21 #include "base/synchronization/waitable_event.h"
22 #include "base/threading/worker_pool.h" 22 #include "base/threading/worker_pool.h"
23 #include "components/cronet/ios/version.h" 23 #include "components/cronet/ios/version.h"
24 #include "components/prefs/json_pref_store.h" 24 #include "components/prefs/json_pref_store.h"
25 #include "components/prefs/pref_filter.h" 25 #include "components/prefs/pref_filter.h"
26 #include "net/base/net_errors.h" 26 #include "net/base/net_errors.h"
27 #include "net/base/network_change_notifier.h" 27 #include "net/base/network_change_notifier.h"
28 #include "net/cert/cert_verify_result.h" 28 #include "net/cert/cert_verify_result.h"
29 #include "net/cert/ct_policy_enforcer.h"
30 #include "net/cert/multi_log_ct_verifier.h"
29 #include "net/dns/host_resolver.h" 31 #include "net/dns/host_resolver.h"
30 #include "net/dns/mapped_host_resolver.h" 32 #include "net/dns/mapped_host_resolver.h"
31 #include "net/http/http_auth_handler_factory.h" 33 #include "net/http/http_auth_handler_factory.h"
32 #include "net/http/http_cache.h" 34 #include "net/http/http_cache.h"
33 #include "net/http/http_response_headers.h" 35 #include "net/http/http_response_headers.h"
34 #include "net/http/http_server_properties_impl.h" 36 #include "net/http/http_server_properties_impl.h"
35 #include "net/http/http_stream_factory.h" 37 #include "net/http/http_stream_factory.h"
36 #include "net/http/http_util.h" 38 #include "net/http/http_util.h"
37 #include "net/log/net_log.h" 39 #include "net/log/net_log.h"
38 #include "net/log/write_to_file_net_log_observer.h" 40 #include "net/log/write_to_file_net_log_observer.h"
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 258
257 CronetEnvironment::~CronetEnvironment() { 259 CronetEnvironment::~CronetEnvironment() {
258 // net::HTTPProtocolHandlerDelegate::SetInstance(nullptr); 260 // net::HTTPProtocolHandlerDelegate::SetInstance(nullptr);
259 #if defined(USE_NSS_CERTS) 261 #if defined(USE_NSS_CERTS)
260 net::SetURLRequestContextForNSSHttpIO(nullptr); 262 net::SetURLRequestContextForNSSHttpIO(nullptr);
261 #endif 263 #endif
262 } 264 }
263 265
264 void CronetEnvironment::InitializeOnNetworkThread() { 266 void CronetEnvironment::InitializeOnNetworkThread() {
265 DCHECK(network_io_thread_->task_runner()->BelongsToCurrentThread()); 267 DCHECK(network_io_thread_->task_runner()->BelongsToCurrentThread());
268 // TODO(mef): Use net:UrlRequestContextBuilder instead of manual build.
266 main_context_.reset(new net::URLRequestContext); 269 main_context_.reset(new net::URLRequestContext);
267 main_context_->set_net_log(net_log_.get()); 270 main_context_->set_net_log(net_log_.get());
268 std::string user_agent(user_agent_product_name_ + 271 std::string user_agent(user_agent_product_name_ +
269 " (iOS); Cronet/" CRONET_VERSION); 272 " (iOS); Cronet/" CRONET_VERSION);
270 main_context_->set_http_user_agent_settings( 273 main_context_->set_http_user_agent_settings(
271 new net::StaticHttpUserAgentSettings("en", user_agent)); 274 new net::StaticHttpUserAgentSettings("en", user_agent));
272 275
273 main_context_->set_ssl_config_service(new net::SSLConfigServiceDefaults); 276 main_context_->set_ssl_config_service(new net::SSLConfigServiceDefaults);
274 main_context_->set_transport_security_state( 277 main_context_->set_transport_security_state(
275 new net::TransportSecurityState()); 278 new net::TransportSecurityState());
276 http_server_properties_.reset(new net::HttpServerPropertiesImpl()); 279 http_server_properties_.reset(new net::HttpServerPropertiesImpl());
277 main_context_->set_http_server_properties(http_server_properties_.get()); 280 main_context_->set_http_server_properties(http_server_properties_.get());
278 281
279 // TODO(rdsmith): Note that the ".release()" calls below are leaking 282 // TODO(rdsmith): Note that the ".release()" calls below are leaking
280 // the objects in question; this should be fixed by having an object 283 // the objects in question; this should be fixed by having an object
281 // corresponding to URLRequestContextStorage that actually owns those 284 // corresponding to URLRequestContextStorage that actually owns those
282 // objects. See http://crbug.com/523858. 285 // objects. See http://crbug.com/523858.
283 std::unique_ptr<net::MappedHostResolver> mapped_host_resolver( 286 std::unique_ptr<net::MappedHostResolver> mapped_host_resolver(
284 new net::MappedHostResolver( 287 new net::MappedHostResolver(
285 net::HostResolver::CreateDefaultResolver(nullptr))); 288 net::HostResolver::CreateDefaultResolver(nullptr)));
286 289
287 mapped_host_resolver->SetRulesFromString(host_resolver_rules_); 290 mapped_host_resolver->SetRulesFromString(host_resolver_rules_);
288 main_context_->set_host_resolver(mapped_host_resolver.release()); 291 main_context_->set_host_resolver(mapped_host_resolver.release());
289 292
290 if (!cert_verifier_) 293 if (!cert_verifier_)
291 cert_verifier_ = net::CertVerifier::CreateDefault(); 294 cert_verifier_ = net::CertVerifier::CreateDefault();
292 main_context_->set_cert_verifier(cert_verifier_.get()); 295 main_context_->set_cert_verifier(cert_verifier_.get());
293 296
297 main_context_->set_cert_transparency_verifier(new net::MultiLogCTVerifier());
298 main_context_->set_ct_policy_enforcer(new net::CTPolicyEnforcer());
299
294 main_context_->set_http_auth_handler_factory( 300 main_context_->set_http_auth_handler_factory(
295 net::HttpAuthHandlerRegistryFactory::CreateDefault( 301 net::HttpAuthHandlerRegistryFactory::CreateDefault(
296 main_context_->host_resolver()) 302 main_context_->host_resolver())
297 .release()); 303 .release());
298 main_context_->set_proxy_service( 304 main_context_->set_proxy_service(
299 net::ProxyService::CreateUsingSystemProxyResolver( 305 net::ProxyService::CreateUsingSystemProxyResolver(
300 std::move(proxy_config_service_), 0, nullptr) 306 std::move(proxy_config_service_), 0, nullptr)
301 .release()); 307 .release());
302 308
303 // Cache 309 // Cache
304 base::FilePath cache_path; 310 base::FilePath cache_path;
305 if (!PathService::Get(base::DIR_CACHE, &cache_path)) 311 if (!PathService::Get(base::DIR_CACHE, &cache_path))
306 return; 312 return;
307 cache_path = cache_path.Append(FILE_PATH_LITERAL("cronet")); 313 cache_path = cache_path.Append(FILE_PATH_LITERAL("cronet"));
308 std::unique_ptr<net::HttpCache::DefaultBackend> main_backend( 314 std::unique_ptr<net::HttpCache::DefaultBackend> main_backend(
309 new net::HttpCache::DefaultBackend(net::DISK_CACHE, 315 new net::HttpCache::DefaultBackend(net::DISK_CACHE,
310 net::CACHE_BACKEND_SIMPLE, cache_path, 316 net::CACHE_BACKEND_SIMPLE, cache_path,
311 0, // Default cache size. 317 0, // Default cache size.
312 network_cache_thread_->task_runner())); 318 network_cache_thread_->task_runner()));
313 319
314 net::HttpNetworkSession::Params params; 320 net::HttpNetworkSession::Params params;
315 321
316 params.host_resolver = main_context_->host_resolver(); 322 params.host_resolver = main_context_->host_resolver();
317 params.cert_verifier = main_context_->cert_verifier(); 323 params.cert_verifier = main_context_->cert_verifier();
324 params.cert_transparency_verifier =
325 main_context_->cert_transparency_verifier();
326 params.ct_policy_enforcer = main_context_->ct_policy_enforcer();
318 params.channel_id_service = main_context_->channel_id_service(); 327 params.channel_id_service = main_context_->channel_id_service();
319 params.transport_security_state = main_context_->transport_security_state(); 328 params.transport_security_state = main_context_->transport_security_state();
320 params.proxy_service = main_context_->proxy_service(); 329 params.proxy_service = main_context_->proxy_service();
321 params.ssl_config_service = main_context_->ssl_config_service(); 330 params.ssl_config_service = main_context_->ssl_config_service();
322 params.http_auth_handler_factory = main_context_->http_auth_handler_factory(); 331 params.http_auth_handler_factory = main_context_->http_auth_handler_factory();
323 params.http_server_properties = main_context_->http_server_properties(); 332 params.http_server_properties = main_context_->http_server_properties();
324 params.net_log = main_context_->net_log(); 333 params.net_log = main_context_->net_log();
325 params.enable_http2 = http2_enabled(); 334 params.enable_http2 = http2_enabled();
326 params.enable_quic = quic_enabled(); 335 params.enable_quic = quic_enabled();
327 336
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 const net::HttpUserAgentSettings* user_agent_settings = 373 const net::HttpUserAgentSettings* user_agent_settings =
365 main_context_->http_user_agent_settings(); 374 main_context_->http_user_agent_settings();
366 if (!user_agent_settings) { 375 if (!user_agent_settings) {
367 return nullptr; 376 return nullptr;
368 } 377 }
369 378
370 return user_agent_settings->GetUserAgent(); 379 return user_agent_settings->GetUserAgent();
371 } 380 }
372 381
373 } // namespace cronet 382 } // namespace cronet
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698