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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 #include "chrome/browser/first_run/first_run_browser_process.h" | 45 #include "chrome/browser/first_run/first_run_browser_process.h" |
46 #include "chrome/browser/first_run/upgrade_util.h" | 46 #include "chrome/browser/first_run/upgrade_util.h" |
47 #include "chrome/browser/jankometer.h" | 47 #include "chrome/browser/jankometer.h" |
48 #include "chrome/browser/metrics/field_trial_synchronizer.h" | 48 #include "chrome/browser/metrics/field_trial_synchronizer.h" |
49 #include "chrome/browser/metrics/histogram_synchronizer.h" | 49 #include "chrome/browser/metrics/histogram_synchronizer.h" |
50 #include "chrome/browser/metrics/metrics_log.h" | 50 #include "chrome/browser/metrics/metrics_log.h" |
51 #include "chrome/browser/metrics/metrics_service.h" | 51 #include "chrome/browser/metrics/metrics_service.h" |
52 #include "chrome/browser/metrics/thread_watcher.h" | 52 #include "chrome/browser/metrics/thread_watcher.h" |
53 #include "chrome/browser/net/chrome_dns_cert_provenance_checker.h" | 53 #include "chrome/browser/net/chrome_dns_cert_provenance_checker.h" |
54 #include "chrome/browser/net/chrome_dns_cert_provenance_checker_factory.h" | 54 #include "chrome/browser/net/chrome_dns_cert_provenance_checker_factory.h" |
| 55 #include "chrome/browser/net/chrome_net_log.h" |
55 #include "chrome/browser/net/predictor_api.h" | 56 #include "chrome/browser/net/predictor_api.h" |
56 #include "chrome/browser/net/sdch_dictionary_fetcher.h" | 57 #include "chrome/browser/net/sdch_dictionary_fetcher.h" |
57 #include "chrome/browser/net/websocket_experiment/websocket_experiment_runner.h" | 58 #include "chrome/browser/net/websocket_experiment/websocket_experiment_runner.h" |
58 #include "chrome/browser/plugin_updater.h" | 59 #include "chrome/browser/plugin_updater.h" |
59 #include "chrome/browser/prefs/pref_service.h" | 60 #include "chrome/browser/prefs/pref_service.h" |
60 #include "chrome/browser/prefs/pref_value_store.h" | 61 #include "chrome/browser/prefs/pref_value_store.h" |
61 #include "chrome/browser/prerender/prerender_field_trial.h" | 62 #include "chrome/browser/prerender/prerender_field_trial.h" |
62 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" | 63 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" |
63 #include "chrome/browser/process_singleton.h" | 64 #include "chrome/browser/process_singleton.h" |
64 #include "chrome/browser/profiles/profile.h" | 65 #include "chrome/browser/profiles/profile.h" |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 #endif | 198 #endif |
198 | 199 |
199 #if defined(TOOLKIT_USES_GTK) | 200 #if defined(TOOLKIT_USES_GTK) |
200 #include "ui/gfx/gtk_util.h" | 201 #include "ui/gfx/gtk_util.h" |
201 #endif | 202 #endif |
202 | 203 |
203 #if defined(TOUCH_UI) && defined(HAVE_XINPUT2) | 204 #if defined(TOUCH_UI) && defined(HAVE_XINPUT2) |
204 #include "views/touchui/touch_factory.h" | 205 #include "views/touchui/touch_factory.h" |
205 #endif | 206 #endif |
206 | 207 |
| 208 namespace net { |
| 209 class NetLog; |
| 210 } // namespace net |
| 211 |
207 // BrowserMainParts ------------------------------------------------------------ | 212 // BrowserMainParts ------------------------------------------------------------ |
208 | 213 |
209 BrowserMainParts::BrowserMainParts(const MainFunctionParams& parameters) | 214 BrowserMainParts::BrowserMainParts(const MainFunctionParams& parameters) |
210 : parameters_(parameters), | 215 : parameters_(parameters), |
211 parsed_command_line_(parameters.command_line_) { | 216 parsed_command_line_(parameters.command_line_) { |
212 } | 217 } |
213 | 218 |
214 BrowserMainParts::~BrowserMainParts() { | 219 BrowserMainParts::~BrowserMainParts() { |
215 } | 220 } |
216 | 221 |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
715 net::SpdySessionPool::enable_ip_pooling(false); | 720 net::SpdySessionPool::enable_ip_pooling(false); |
716 | 721 |
717 if (parsed_command_line.HasSwitch(switches::kMaxSpdySessionsPerDomain)) { | 722 if (parsed_command_line.HasSwitch(switches::kMaxSpdySessionsPerDomain)) { |
718 int value; | 723 int value; |
719 base::StringToInt(parsed_command_line.GetSwitchValueASCII( | 724 base::StringToInt(parsed_command_line.GetSwitchValueASCII( |
720 switches::kMaxSpdySessionsPerDomain), | 725 switches::kMaxSpdySessionsPerDomain), |
721 &value); | 726 &value); |
722 net::SpdySessionPool::set_max_sessions_per_domain(value); | 727 net::SpdySessionPool::set_max_sessions_per_domain(value); |
723 } | 728 } |
724 | 729 |
725 net::URLRequestThrottlerManager::GetInstance()->set_enable_thread_checks( | |
726 true); | |
727 | |
728 SetDnsCertProvenanceCheckerFactory(CreateChromeDnsCertProvenanceChecker); | 730 SetDnsCertProvenanceCheckerFactory(CreateChromeDnsCertProvenanceChecker); |
729 | 731 |
730 if (parsed_command_line.HasSwitch(switches::kEnableWebSocketOverSpdy)) { | 732 if (parsed_command_line.HasSwitch(switches::kEnableWebSocketOverSpdy)) { |
731 // Enable WebSocket over SPDY. | 733 // Enable WebSocket over SPDY. |
732 net::WebSocketJob::set_websocket_over_spdy_enabled(true); | 734 net::WebSocketJob::set_websocket_over_spdy_enabled(true); |
733 } | 735 } |
734 } | 736 } |
735 | 737 |
| 738 void InitializeURLRequestThrottlerManager(net::NetLog* net_log) { |
| 739 net::URLRequestThrottlerManager::GetInstance()->set_enable_thread_checks( |
| 740 true); |
| 741 |
| 742 // TODO(joi): Passing the NetLog here is temporary; once I switch the |
| 743 // URLRequestThrottlerManager to be part of the URLRequestContext it will |
| 744 // come from there. Doing it this way for now (2011/5/12) to try to fail |
| 745 // fast in case A/B experiment gives unexpected results. |
| 746 net::URLRequestThrottlerManager::GetInstance()->set_net_log(net_log); |
| 747 } |
| 748 |
736 // Creates key child threads. We need to do this explicitly since | 749 // Creates key child threads. We need to do this explicitly since |
737 // BrowserThread::PostTask silently deletes a posted task if the target message | 750 // BrowserThread::PostTask silently deletes a posted task if the target message |
738 // loop isn't created. | 751 // loop isn't created. |
739 void CreateChildThreads(BrowserProcessImpl* process) { | 752 void CreateChildThreads(BrowserProcessImpl* process) { |
740 process->db_thread(); | 753 process->db_thread(); |
741 process->file_thread(); | 754 process->file_thread(); |
742 process->process_launcher_thread(); | 755 process->process_launcher_thread(); |
743 process->cache_thread(); | 756 process->cache_thread(); |
744 process->io_thread(); | 757 process->io_thread(); |
745 #if defined(OS_CHROMEOS) | 758 #if defined(OS_CHROMEOS) |
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1402 | 1415 |
1403 // TODO(viettrungluu): why don't we run this earlier? | 1416 // TODO(viettrungluu): why don't we run this earlier? |
1404 if (!parsed_command_line.HasSwitch(switches::kNoErrorDialogs)) | 1417 if (!parsed_command_line.HasSwitch(switches::kNoErrorDialogs)) |
1405 WarnAboutMinimumSystemRequirements(); | 1418 WarnAboutMinimumSystemRequirements(); |
1406 | 1419 |
1407 // Convert active labs into switches. Modifies the current command line. | 1420 // Convert active labs into switches. Modifies the current command line. |
1408 about_flags::ConvertFlagsToSwitches(local_state, | 1421 about_flags::ConvertFlagsToSwitches(local_state, |
1409 CommandLine::ForCurrentProcess()); | 1422 CommandLine::ForCurrentProcess()); |
1410 | 1423 |
1411 InitializeNetworkOptions(parsed_command_line); | 1424 InitializeNetworkOptions(parsed_command_line); |
| 1425 InitializeURLRequestThrottlerManager(browser_process->net_log()); |
1412 | 1426 |
1413 // Initialize histogram synchronizer system. This is a singleton and is used | 1427 // Initialize histogram synchronizer system. This is a singleton and is used |
1414 // for posting tasks via NewRunnableMethod. Its deleted when it goes out of | 1428 // for posting tasks via NewRunnableMethod. Its deleted when it goes out of |
1415 // scope. Even though NewRunnableMethod does AddRef and Release, the object | 1429 // scope. Even though NewRunnableMethod does AddRef and Release, the object |
1416 // will not be deleted after the Task is executed. | 1430 // will not be deleted after the Task is executed. |
1417 scoped_refptr<HistogramSynchronizer> histogram_synchronizer( | 1431 scoped_refptr<HistogramSynchronizer> histogram_synchronizer( |
1418 new HistogramSynchronizer()); | 1432 new HistogramSynchronizer()); |
1419 | 1433 |
1420 // Initialize thread watcher system. This is a singleton and is used by | 1434 // Initialize thread watcher system. This is a singleton and is used by |
1421 // WatchDogThread to keep track of information about threads that are being | 1435 // WatchDogThread to keep track of information about threads that are being |
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1967 #if defined(OS_CHROMEOS) | 1981 #if defined(OS_CHROMEOS) |
1968 // To be precise, logout (browser shutdown) is not yet done, but the | 1982 // To be precise, logout (browser shutdown) is not yet done, but the |
1969 // remaining work is negligible, hence we say LogoutDone here. | 1983 // remaining work is negligible, hence we say LogoutDone here. |
1970 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", | 1984 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", |
1971 false); | 1985 false); |
1972 chromeos::BootTimesLoader::Get()->WriteLogoutTimes(); | 1986 chromeos::BootTimesLoader::Get()->WriteLogoutTimes(); |
1973 #endif | 1987 #endif |
1974 TRACE_EVENT_END_ETW("BrowserMain", 0, 0); | 1988 TRACE_EVENT_END_ETW("BrowserMain", 0, 0); |
1975 return result_code; | 1989 return result_code; |
1976 } | 1990 } |
OLD | NEW |