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 1306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1317 | 1317 |
1318 // Initialize thread watcher system. This is a singleton and is used by | 1318 // Initialize thread watcher system. This is a singleton and is used by |
1319 // WatchDogThread to keep track of information about threads that are being | 1319 // WatchDogThread to keep track of information about threads that are being |
1320 // watched. | 1320 // watched. |
1321 scoped_ptr<ThreadWatcherList> thread_watcher_list(new ThreadWatcherList()); | 1321 scoped_ptr<ThreadWatcherList> thread_watcher_list(new ThreadWatcherList()); |
1322 | 1322 |
1323 // Convert active labs into switches. Modifies the current command line. | 1323 // Convert active labs into switches. Modifies the current command line. |
1324 about_flags::ConvertFlagsToSwitches(local_state, | 1324 about_flags::ConvertFlagsToSwitches(local_state, |
1325 CommandLine::ForCurrentProcess()); | 1325 CommandLine::ForCurrentProcess()); |
1326 | 1326 |
1327 // Now the command line has been mutated based on about:flags, we can run some | 1327 // Must initialize metrics after labs have been converted into switches, |
1328 // field trials | 1328 // but before field trials are set up (so that client ID is available for |
1329 // one-time randomized field trials). | |
1330 MetricsService* metrics = InitializeMetrics(parsed_command_line, local_state); | |
jar (doing other things)
2011/04/29 00:57:11
This will probably work. I'm always nervous about
Jói
2011/05/02 18:55:03
I will watch the startup perf dash.
Jói
2011/05/05 15:07:39
Just to confirm, I looked in detail at every Start
| |
1331 | |
1332 // Initialize FieldTrialList to support FieldTrials that use one-time | |
1333 // randomization. The client ID will be empty if the user has not opted | |
1334 // to send metrics. | |
1335 std::string client_id = metrics->GetClientId(); | |
1336 if (!client_id.empty()) | |
1337 base::FieldTrialList::EnableOneTimeRandomization(client_id); | |
1338 | |
1339 // Now the command line has been mutated based on about:flags, and one-time | |
1340 // randomization has been enabled, we can run some field trials | |
1329 parts->SetupFieldTrials(); | 1341 parts->SetupFieldTrials(); |
jar (doing other things)
2011/04/29 00:57:11
Wouldn't lines 1327-1337 fit nicely into SetupFiel
Jói
2011/05/02 18:55:03
Good point. I've factored it out.
| |
1330 | 1342 |
1331 // Now that all preferences have been registered, set the install date | 1343 // Now that all preferences have been registered, set the install date |
1332 // for the uninstall metrics if this is our first run. This only actually | 1344 // for the uninstall metrics if this is our first run. This only actually |
1333 // gets used if the user has metrics reporting enabled at uninstall time. | 1345 // gets used if the user has metrics reporting enabled at uninstall time. |
1334 int64 install_date = | 1346 int64 install_date = |
1335 local_state->GetInt64(prefs::kUninstallMetricsInstallDate); | 1347 local_state->GetInt64(prefs::kUninstallMetricsInstallDate); |
1336 if (install_date == 0) { | 1348 if (install_date == 0) { |
1337 local_state->SetInt64(prefs::kUninstallMetricsInstallDate, | 1349 local_state->SetInt64(prefs::kUninstallMetricsInstallDate, |
1338 base::Time::Now().ToTimeT()); | 1350 base::Time::Now().ToTimeT()); |
1339 } | 1351 } |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1663 sdch_trial->AppendGroup("global_disable_sdch", | 1675 sdch_trial->AppendGroup("global_disable_sdch", |
1664 kSDCH_DISABLE_PROBABILITY); | 1676 kSDCH_DISABLE_PROBABILITY); |
1665 if (sdch_enabled != sdch_trial->group()) | 1677 if (sdch_enabled != sdch_trial->group()) |
1666 sdch_supported_domain = "never_enabled_sdch_for_any_domain"; | 1678 sdch_supported_domain = "never_enabled_sdch_for_any_domain"; |
1667 } | 1679 } |
1668 | 1680 |
1669 net::SdchManager sdch_manager; // Singleton database. | 1681 net::SdchManager sdch_manager; // Singleton database. |
1670 sdch_manager.set_sdch_fetcher(new SdchDictionaryFetcher); | 1682 sdch_manager.set_sdch_fetcher(new SdchDictionaryFetcher); |
1671 sdch_manager.EnableSdchSupport(sdch_supported_domain); | 1683 sdch_manager.EnableSdchSupport(sdch_supported_domain); |
1672 | 1684 |
1673 MetricsService* metrics = InitializeMetrics(parsed_command_line, local_state); | |
1674 InstallJankometer(parsed_command_line); | 1685 InstallJankometer(parsed_command_line); |
1675 | 1686 |
1676 #if defined(OS_WIN) && !defined(GOOGLE_CHROME_BUILD) | 1687 #if defined(OS_WIN) && !defined(GOOGLE_CHROME_BUILD) |
1677 if (parsed_command_line.HasSwitch(switches::kDebugPrint)) { | 1688 if (parsed_command_line.HasSwitch(switches::kDebugPrint)) { |
1678 FilePath path = | 1689 FilePath path = |
1679 parsed_command_line.GetSwitchValuePath(switches::kDebugPrint); | 1690 parsed_command_line.GetSwitchValuePath(switches::kDebugPrint); |
1680 printing::PrintedDocument::set_debug_dump_path(path); | 1691 printing::PrintedDocument::set_debug_dump_path(path); |
1681 } | 1692 } |
1682 #endif | 1693 #endif |
1683 | 1694 |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1888 #if defined(OS_CHROMEOS) | 1899 #if defined(OS_CHROMEOS) |
1889 // To be precise, logout (browser shutdown) is not yet done, but the | 1900 // To be precise, logout (browser shutdown) is not yet done, but the |
1890 // remaining work is negligible, hence we say LogoutDone here. | 1901 // remaining work is negligible, hence we say LogoutDone here. |
1891 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", | 1902 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", |
1892 false); | 1903 false); |
1893 chromeos::BootTimesLoader::Get()->WriteLogoutTimes(); | 1904 chromeos::BootTimesLoader::Get()->WriteLogoutTimes(); |
1894 #endif | 1905 #endif |
1895 TRACE_EVENT_END("BrowserMain", 0, 0); | 1906 TRACE_EVENT_END("BrowserMain", 0, 0); |
1896 return result_code; | 1907 return result_code; |
1897 } | 1908 } |
OLD | NEW |