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

Side by Side Diff: chrome/browser/net/chrome_url_request_context.cc

Issue 2802015: Massively simplify the NetworkChangeNotifier infrastructure:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/net/chrome_url_request_context.h" 5 #include "chrome/browser/net/chrome_url_request_context.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/message_loop_proxy.h" 9 #include "base/message_loop_proxy.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 g_browser_process->io_thread()->message_loop(), 76 g_browser_process->io_thread()->message_loop(),
77 g_browser_process->file_thread()->message_loop()); 77 g_browser_process->file_thread()->message_loop());
78 } 78 }
79 79
80 // Otherwise use the fixed settings from the command line. 80 // Otherwise use the fixed settings from the command line.
81 return new net::ProxyConfigServiceFixed(*proxy_config.get()); 81 return new net::ProxyConfigServiceFixed(*proxy_config.get());
82 } 82 }
83 83
84 // Create a proxy service according to the options on command line. 84 // Create a proxy service according to the options on command line.
85 net::ProxyService* CreateProxyService( 85 net::ProxyService* CreateProxyService(
86 net::NetworkChangeNotifier* network_change_notifier,
87 net::NetLog* net_log, 86 net::NetLog* net_log,
88 URLRequestContext* context, 87 URLRequestContext* context,
89 net::ProxyConfigService* proxy_config_service, 88 net::ProxyConfigService* proxy_config_service,
90 const CommandLine& command_line, 89 const CommandLine& command_line,
91 MessageLoop* io_loop) { 90 MessageLoop* io_loop) {
92 CheckCurrentlyOnIOThread(); 91 CheckCurrentlyOnIOThread();
93 92
94 bool use_v8 = !command_line.HasSwitch(switches::kWinHttpProxyResolver); 93 bool use_v8 = !command_line.HasSwitch(switches::kWinHttpProxyResolver);
95 if (use_v8 && command_line.HasSwitch(switches::kSingleProcess)) { 94 if (use_v8 && command_line.HasSwitch(switches::kSingleProcess)) {
96 // See the note about V8 multithreading in net/proxy/proxy_resolver_v8.h 95 // See the note about V8 multithreading in net/proxy/proxy_resolver_v8.h
97 // to understand why we have this limitation. 96 // to understand why we have this limitation.
98 LOG(ERROR) << "Cannot use V8 Proxy resolver in single process mode."; 97 LOG(ERROR) << "Cannot use V8 Proxy resolver in single process mode.";
99 use_v8 = false; // Fallback to non-v8 implementation. 98 use_v8 = false; // Fallback to non-v8 implementation.
100 } 99 }
101 100
102 return net::ProxyService::Create( 101 return net::ProxyService::Create(
103 proxy_config_service, 102 proxy_config_service,
104 use_v8, 103 use_v8,
105 context, 104 context,
106 network_change_notifier,
107 net_log, 105 net_log,
108 io_loop); 106 io_loop);
109 } 107 }
110 108
111 // ---------------------------------------------------------------------------- 109 // ----------------------------------------------------------------------------
112 // CookieMonster::Delegate implementation 110 // CookieMonster::Delegate implementation
113 // ---------------------------------------------------------------------------- 111 // ----------------------------------------------------------------------------
114 class ChromeCookieMonsterDelegate : public net::CookieMonster::Delegate { 112 class ChromeCookieMonsterDelegate : public net::CookieMonster::Delegate {
115 public: 113 public:
116 explicit ChromeCookieMonsterDelegate(Profile* profile) { 114 explicit ChromeCookieMonsterDelegate(Profile* profile) {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 IOThread::Globals* io_thread_globals = io_thread()->globals(); 230 IOThread::Globals* io_thread_globals = io_thread()->globals();
233 231
234 // Global host resolver for the context. 232 // Global host resolver for the context.
235 context->set_host_resolver(io_thread_globals->host_resolver); 233 context->set_host_resolver(io_thread_globals->host_resolver);
236 context->set_http_auth_handler_factory( 234 context->set_http_auth_handler_factory(
237 io_thread_globals->http_auth_handler_factory.get()); 235 io_thread_globals->http_auth_handler_factory.get());
238 236
239 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 237 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
240 238
241 context->set_proxy_service( 239 context->set_proxy_service(
242 CreateProxyService(io_thread_globals->network_change_notifier.get(), 240 CreateProxyService(io_thread_globals->net_log.get(),
243 io_thread_globals->net_log.get(),
244 context, 241 context,
245 proxy_config_service_.release(), 242 proxy_config_service_.release(),
246 command_line, 243 command_line,
247 MessageLoop::current() /*io_loop*/)); 244 MessageLoop::current() /*io_loop*/));
248 245
249 net::HttpCache::DefaultBackend* backend = new net::HttpCache::DefaultBackend( 246 net::HttpCache::DefaultBackend* backend = new net::HttpCache::DefaultBackend(
250 net::DISK_CACHE, disk_cache_path_, cache_size_, 247 net::DISK_CACHE, disk_cache_path_, cache_size_,
251 ChromeThread::GetMessageLoopProxyForThread(ChromeThread::CACHE)); 248 ChromeThread::GetMessageLoopProxyForThread(ChromeThread::CACHE));
252 net::HttpCache* cache = 249 net::HttpCache* cache =
253 new net::HttpCache(io_thread_globals->network_change_notifier.get(), 250 new net::HttpCache(context->host_resolver(),
254 context->host_resolver(),
255 context->proxy_service(), 251 context->proxy_service(),
256 context->ssl_config_service(), 252 context->ssl_config_service(),
257 context->http_auth_handler_factory(), 253 context->http_auth_handler_factory(),
258 &io_thread_globals->network_delegate, 254 &io_thread_globals->network_delegate,
259 io_thread_globals->net_log.get(), 255 io_thread_globals->net_log.get(),
260 backend); 256 backend);
261 257
262 if (command_line.HasSwitch(switches::kDisableByteRangeSupport)) 258 if (command_line.HasSwitch(switches::kDisableByteRangeSupport))
263 cache->set_enable_range_support(false); 259 cache->set_enable_range_support(false);
264 260
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 // as the original profile. 368 // as the original profile.
373 context->set_host_resolver(original_context->host_resolver()); 369 context->set_host_resolver(original_context->host_resolver());
374 context->set_proxy_service(original_context->proxy_service()); 370 context->set_proxy_service(original_context->proxy_service());
375 context->set_http_auth_handler_factory( 371 context->set_http_auth_handler_factory(
376 original_context->http_auth_handler_factory()); 372 original_context->http_auth_handler_factory());
377 373
378 net::HttpCache::BackendFactory* backend = 374 net::HttpCache::BackendFactory* backend =
379 net::HttpCache::DefaultBackend::InMemory(0); 375 net::HttpCache::DefaultBackend::InMemory(0);
380 376
381 net::HttpCache* cache = 377 net::HttpCache* cache =
382 new net::HttpCache(io_thread_globals->network_change_notifier.get(), 378 new net::HttpCache(context->host_resolver(),
383 context->host_resolver(),
384 context->proxy_service(), 379 context->proxy_service(),
385 context->ssl_config_service(), 380 context->ssl_config_service(),
386 context->http_auth_handler_factory(), 381 context->http_auth_handler_factory(),
387 &io_thread_globals->network_delegate, 382 &io_thread_globals->network_delegate,
388 io_thread_globals->net_log.get(), 383 io_thread_globals->net_log.get(),
389 backend); 384 backend);
390 context->set_cookie_store(new net::CookieMonster(NULL, 385 context->set_cookie_store(new net::CookieMonster(NULL,
391 cookie_monster_delegate_)); 386 cookie_monster_delegate_));
392 context->set_cookie_policy( 387 context->set_cookie_policy(
393 new ChromeCookiePolicy(host_content_settings_map_)); 388 new ChromeCookiePolicy(host_content_settings_map_));
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 // HttpCache(HttpTransactionFactory*, BackendFactory*) constructor. 465 // HttpCache(HttpTransactionFactory*, BackendFactory*) constructor.
471 net::HttpNetworkLayer* main_network_layer = 466 net::HttpNetworkLayer* main_network_layer =
472 static_cast<net::HttpNetworkLayer*>(main_cache->network_layer()); 467 static_cast<net::HttpNetworkLayer*>(main_cache->network_layer());
473 cache = new net::HttpCache(main_network_layer->GetSession(), backend); 468 cache = new net::HttpCache(main_network_layer->GetSession(), backend);
474 // TODO(eroman): Since this is poaching the session from the main 469 // TODO(eroman): Since this is poaching the session from the main
475 // context, it should hold a reference to that context preventing the 470 // context, it should hold a reference to that context preventing the
476 // session from getting deleted. 471 // session from getting deleted.
477 } else { 472 } else {
478 // If original HttpCache doesn't exist, simply construct one with a whole 473 // If original HttpCache doesn't exist, simply construct one with a whole
479 // new set of network stack. 474 // new set of network stack.
480 cache = new net::HttpCache( 475 cache = new net::HttpCache(main_context->host_resolver(),
481 io_thread_globals->network_change_notifier.get(), 476 main_context->proxy_service(),
482 main_context->host_resolver(), 477 main_context->ssl_config_service(),
483 main_context->proxy_service(), 478 main_context->http_auth_handler_factory(),
484 main_context->ssl_config_service(), 479 &io_thread_globals->network_delegate,
485 main_context->http_auth_handler_factory(), 480 io_thread_globals->net_log.get(),
486 &io_thread_globals->network_delegate, 481 backend);
487 io_thread_globals->net_log.get(),
488 backend);
489 } 482 }
490 483
491 if (CommandLine::ForCurrentProcess()->HasSwitch( 484 if (CommandLine::ForCurrentProcess()->HasSwitch(
492 switches::kDisableByteRangeSupport)) 485 switches::kDisableByteRangeSupport))
493 cache->set_enable_range_support(false); 486 cache->set_enable_range_support(false);
494 487
495 context->set_http_transaction_factory(cache); 488 context->set_http_transaction_factory(cache);
496 489
497 // Use the same appcache service as the profile's main context. 490 // Use the same appcache service as the profile's main context.
498 context->set_appcache_service(main_context->appcache_service()); 491 context->set_appcache_service(main_context->appcache_service());
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 1067
1075 if (pref_service->HasPrefPath(prefs::kProxyBypassList)) { 1068 if (pref_service->HasPrefPath(prefs::kProxyBypassList)) {
1076 std::wstring proxy_bypass = 1069 std::wstring proxy_bypass =
1077 pref_service->GetString(prefs::kProxyBypassList); 1070 pref_service->GetString(prefs::kProxyBypassList);
1078 proxy_config->proxy_rules().bypass_rules.ParseFromString( 1071 proxy_config->proxy_rules().bypass_rules.ParseFromString(
1079 WideToASCII(proxy_bypass)); 1072 WideToASCII(proxy_bypass));
1080 } 1073 }
1081 1074
1082 return proxy_config; 1075 return proxy_config;
1083 } 1076 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698