OLD | NEW |
---|---|
1 // Copyright (c) 2011 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 #include "chrome/browser/browser_main.h" | 5 #include "chrome/browser/browser_main.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
93 #include "content/common/hi_res_timer_manager.h" | 93 #include "content/common/hi_res_timer_manager.h" |
94 #include "content/common/main_function_params.h" | 94 #include "content/common/main_function_params.h" |
95 #include "content/common/result_codes.h" | 95 #include "content/common/result_codes.h" |
96 #include "grit/app_locale_settings.h" | 96 #include "grit/app_locale_settings.h" |
97 #include "grit/chromium_strings.h" | 97 #include "grit/chromium_strings.h" |
98 #include "grit/generated_resources.h" | 98 #include "grit/generated_resources.h" |
99 #include "grit/platform_locale_settings.h" | 99 #include "grit/platform_locale_settings.h" |
100 #include "net/base/cookie_monster.h" | 100 #include "net/base/cookie_monster.h" |
101 #include "net/base/net_module.h" | 101 #include "net/base/net_module.h" |
102 #include "net/base/network_change_notifier.h" | 102 #include "net/base/network_change_notifier.h" |
103 #include "net/http/http_basic_stream.h" | |
103 #include "net/http/http_network_layer.h" | 104 #include "net/http/http_network_layer.h" |
104 #include "net/http/http_stream_factory.h" | 105 #include "net/http/http_stream_factory.h" |
105 #include "net/socket/client_socket_pool_base.h" | 106 #include "net/socket/client_socket_pool_base.h" |
106 #include "net/socket/client_socket_pool_manager.h" | 107 #include "net/socket/client_socket_pool_manager.h" |
107 #include "net/socket/tcp_client_socket.h" | 108 #include "net/socket/tcp_client_socket.h" |
108 #include "net/spdy/spdy_session.h" | 109 #include "net/spdy/spdy_session.h" |
109 #include "net/spdy/spdy_session_pool.h" | 110 #include "net/spdy/spdy_session_pool.h" |
110 #include "net/url_request/url_request.h" | 111 #include "net/url_request/url_request.h" |
111 #include "net/url_request/url_request_throttler_manager.h" | 112 #include "net/url_request/url_request_throttler_manager.h" |
112 #include "net/websockets/websocket_job.h" | 113 #include "net/websockets/websocket_job.h" |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
200 #endif | 201 #endif |
201 | 202 |
202 #if defined(TOOLKIT_USES_GTK) | 203 #if defined(TOOLKIT_USES_GTK) |
203 #include "ui/gfx/gtk_util.h" | 204 #include "ui/gfx/gtk_util.h" |
204 #endif | 205 #endif |
205 | 206 |
206 #if defined(TOUCH_UI) && defined(HAVE_XINPUT2) | 207 #if defined(TOUCH_UI) && defined(HAVE_XINPUT2) |
207 #include "views/touchui/touch_factory.h" | 208 #include "views/touchui/touch_factory.h" |
208 #endif | 209 #endif |
209 | 210 |
211 using net::internal::ClientSocketPoolBaseHelper; | |
willchan no longer on Chromium
2011/06/13 15:06:07
internal is a net/ internal implementation detail.
Gagan
2011/06/13 16:45:58
Done.
| |
212 using net::HttpBasicStream; | |
213 | |
210 namespace net { | 214 namespace net { |
211 class NetLog; | 215 class NetLog; |
212 } // namespace net | 216 } // namespace net |
213 | 217 |
214 // BrowserMainParts ------------------------------------------------------------ | 218 // BrowserMainParts ------------------------------------------------------------ |
215 | 219 |
216 BrowserMainParts::BrowserMainParts(const MainFunctionParams& parameters) | 220 BrowserMainParts::BrowserMainParts(const MainFunctionParams& parameters) |
217 : parameters_(parameters), | 221 : parameters_(parameters), |
218 parsed_command_line_(parameters.command_line_) { | 222 parsed_command_line_(parameters.command_line_) { |
219 } | 223 } |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
467 if (parsed_command_line().HasSwitch(switches::kMaxSpdyConcurrentStreams)) { | 471 if (parsed_command_line().HasSwitch(switches::kMaxSpdyConcurrentStreams)) { |
468 int value = 0; | 472 int value = 0; |
469 base::StringToInt(parsed_command_line().GetSwitchValueASCII( | 473 base::StringToInt(parsed_command_line().GetSwitchValueASCII( |
470 switches::kMaxSpdyConcurrentStreams), | 474 switches::kMaxSpdyConcurrentStreams), |
471 &value); | 475 &value); |
472 if (value > 0) | 476 if (value > 0) |
473 net::SpdySession::set_max_concurrent_streams(value); | 477 net::SpdySession::set_max_concurrent_streams(value); |
474 } | 478 } |
475 } | 479 } |
476 | 480 |
481 // If --socket-reuse-policy is not specified, run an A/B test for choosing the | |
482 // warmest socket. | |
483 void BrowserMainParts::WarmConnectionFieldTrial() { | |
484 const CommandLine& command_line = parsed_command_line(); | |
485 if (command_line.HasSwitch(switches::kSocketReusePolicy)) { | |
486 std::string alpha_str = command_line.GetSwitchValueASCII( | |
487 switches::kSocketReusePolicy); | |
488 int coef = -1; | |
489 base::StringToInt(alpha_str, &coef); | |
490 | |
491 const int socket_policy[] = { 0, 1, 2 }; | |
492 LOG(ERROR) << "Chose socket_reuse_policy coef = " << coef; | |
willchan no longer on Chromium
2011/06/13 15:06:07
Remove this.
Gagan
2011/06/14 18:25:02
Convered to DLOG(INFO)
| |
493 ApplySocketReuseGroup(coef, socket_policy, arraysize(socket_policy)); | |
willchan no longer on Chromium
2011/06/13 15:06:07
I have no idea what "coef" means. You call this wi
Gagan
2011/06/13 16:45:58
Done.
| |
494 return; | |
495 } | |
496 | |
497 const base::FieldTrial::Probability kWarmSocketDivisor = 100; | |
498 const base::FieldTrial::Probability kWarmSocketProbability = 33; | |
499 | |
500 // After January 30, 2013 builds, it will always be in default group. | |
501 scoped_refptr<base::FieldTrial> warmest_socket_trial( | |
502 new base::FieldTrial( | |
503 "WarmSocketImpact", kWarmSocketDivisor, "last_accessed_socket", | |
504 2013, 1, 30)); | |
505 | |
506 // Default value is USE_LAST_ACCESSED_SOCKET. | |
507 const int last_accessed_socket = warmest_socket_trial->kDefaultGroupNumber; | |
508 const int warmest_socket = warmest_socket_trial->AppendGroup( | |
509 "warmest_socket", kWarmSocketProbability); | |
510 const int warm_socket = warmest_socket_trial->AppendGroup( | |
511 "warm_socket", kWarmSocketProbability); | |
512 | |
513 const int warmest_socket_trial_group = warmest_socket_trial->group(); | |
514 | |
515 const int socket_policy[] = { warmest_socket, warm_socket, | |
516 last_accessed_socket }; | |
517 ApplySocketReuseGroup(warmest_socket_trial_group, socket_policy, | |
518 arraysize(socket_policy)); | |
519 } | |
520 | |
521 void BrowserMainParts::ApplySocketReuseGroup(int warmest_socket_trial_group, | |
willchan no longer on Chromium
2011/06/13 15:06:07
Please move this into an anonymous namespace rathe
Gagan
2011/06/13 16:45:58
Done.
| |
522 const int socket_policy[], | |
523 int num_groups) { | |
524 for (int i = 0; i < num_groups; i++) { | |
525 if (warmest_socket_trial_group == socket_policy[i]) { | |
526 ClientSocketPoolBaseHelper::SetSocketReusePolicy(i); | |
527 HttpBasicStream::SetSocketReusePolicy(i); | |
528 return; | |
529 } | |
530 } | |
531 | |
532 LOG(ERROR) << "Not a valid socket reuse policy group"; | |
willchan no longer on Chromium
2011/06/13 15:06:07
This is redundant, just use the NOTREACHED.
Gagan
2011/06/14 18:25:02
Done.
| |
533 NOTREACHED() << "Not a valid socket reuse policy group"; | |
534 } | |
535 | |
477 // If neither --enable-connect-backup-jobs or --disable-connect-backup-jobs is | 536 // If neither --enable-connect-backup-jobs or --disable-connect-backup-jobs is |
478 // specified, run an A/B test for automatically establishing backup TCP | 537 // specified, run an A/B test for automatically establishing backup TCP |
479 // connections when a certain timeout value is exceeded. | 538 // connections when a certain timeout value is exceeded. |
480 void BrowserMainParts::ConnectBackupJobsFieldTrial() { | 539 void BrowserMainParts::ConnectBackupJobsFieldTrial() { |
481 if (parsed_command_line().HasSwitch(switches::kEnableConnectBackupJobs)) { | 540 if (parsed_command_line().HasSwitch(switches::kEnableConnectBackupJobs)) { |
482 net::internal::ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled( | 541 net::internal::ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled( |
483 true); | 542 true); |
484 } else if (parsed_command_line().HasSwitch( | 543 } else if (parsed_command_line().HasSwitch( |
485 switches::kDisableConnectBackupJobs)) { | 544 switches::kDisableConnectBackupJobs)) { |
486 net::internal::ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled( | 545 net::internal::ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled( |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
604 | 663 |
605 // Note: make sure to call ConnectionFieldTrial() before | 664 // Note: make sure to call ConnectionFieldTrial() before |
606 // ProxyConnectionsFieldTrial(). | 665 // ProxyConnectionsFieldTrial(). |
607 ConnectionFieldTrial(); | 666 ConnectionFieldTrial(); |
608 SocketTimeoutFieldTrial(); | 667 SocketTimeoutFieldTrial(); |
609 ProxyConnectionsFieldTrial(); | 668 ProxyConnectionsFieldTrial(); |
610 prerender::ConfigurePrefetchAndPrerender(parsed_command_line()); | 669 prerender::ConfigurePrefetchAndPrerender(parsed_command_line()); |
611 SpdyFieldTrial(); | 670 SpdyFieldTrial(); |
612 ConnectBackupJobsFieldTrial(); | 671 ConnectBackupJobsFieldTrial(); |
613 RevocationCheckingDisabledFieldTrial(); | 672 RevocationCheckingDisabledFieldTrial(); |
673 WarmConnectionFieldTrial(); | |
614 } | 674 } |
615 | 675 |
616 // ----------------------------------------------------------------------------- | 676 // ----------------------------------------------------------------------------- |
617 // TODO(viettrungluu): move more/rest of BrowserMain() into above structure | 677 // TODO(viettrungluu): move more/rest of BrowserMain() into above structure |
618 | 678 |
619 namespace { | 679 namespace { |
620 | 680 |
621 // This function provides some ways to test crash and assertion handling | 681 // This function provides some ways to test crash and assertion handling |
622 // behavior of the program. | 682 // behavior of the program. |
623 void HandleTestParameters(const CommandLine& command_line) { | 683 void HandleTestParameters(const CommandLine& command_line) { |
(...skipping 1379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2003 #if defined(OS_CHROMEOS) | 2063 #if defined(OS_CHROMEOS) |
2004 // To be precise, logout (browser shutdown) is not yet done, but the | 2064 // To be precise, logout (browser shutdown) is not yet done, but the |
2005 // remaining work is negligible, hence we say LogoutDone here. | 2065 // remaining work is negligible, hence we say LogoutDone here. |
2006 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", | 2066 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", |
2007 false); | 2067 false); |
2008 chromeos::BootTimesLoader::Get()->WriteLogoutTimes(); | 2068 chromeos::BootTimesLoader::Get()->WriteLogoutTimes(); |
2009 #endif | 2069 #endif |
2010 TRACE_EVENT_END_ETW("BrowserMain", 0, 0); | 2070 TRACE_EVENT_END_ETW("BrowserMain", 0, 0); |
2011 return result_code; | 2071 return result_code; |
2012 } | 2072 } |
OLD | NEW |