| Index: chrome/browser/browser_main.cc
|
| ===================================================================
|
| --- chrome/browser/browser_main.cc (revision 84367)
|
| +++ chrome/browser/browser_main.cc (working copy)
|
| @@ -243,28 +243,16 @@
|
| }
|
|
|
| // This will be called after the command-line has been mutated by about:flags
|
| -MetricsService* BrowserMainParts::SetupMetricsAndFieldTrials(
|
| - const CommandLine& parsed_command_line,
|
| - PrefService* local_state) {
|
| - // Must initialize metrics after labs have been converted into switches,
|
| - // but before field trials are set up (so that client ID is available for
|
| - // one-time randomized field trials).
|
| - MetricsService* metrics = InitializeMetrics(parsed_command_line, local_state);
|
| -
|
| - // Initialize FieldTrialList to support FieldTrials that use one-time
|
| - // randomization. The client ID will be empty if the user has not opted
|
| - // to send metrics.
|
| - field_trial_list_.reset(new base::FieldTrialList(metrics->GetClientId()));
|
| -
|
| - SetupFieldTrials();
|
| -
|
| - // Initialize FieldTrialSynchronizer system. This is a singleton and is used
|
| - // for posting tasks via NewRunnableMethod. Its deleted when it goes out of
|
| - // scope. Even though NewRunnableMethod does AddRef and Release, the object
|
| - // will not be deleted after the Task is executed.
|
| - field_trial_synchronizer_ = new FieldTrialSynchronizer();
|
| -
|
| - return metrics;
|
| +void BrowserMainParts::SetupFieldTrials() {
|
| + // Note: make sure to call ConnectionFieldTrial() before
|
| + // ProxyConnectionsFieldTrial().
|
| + ConnectionFieldTrial();
|
| + SocketTimeoutFieldTrial();
|
| + ProxyConnectionsFieldTrial();
|
| + prerender::ConfigurePrefetchAndPrerender(parsed_command_line());
|
| + SpdyFieldTrial();
|
| + ConnectBackupJobsFieldTrial();
|
| + SSLFalseStartFieldTrial();
|
| }
|
|
|
| // This is an A/B test for the maximum number of persistent connections per
|
| @@ -547,61 +535,6 @@
|
| MessageLoop::current()));
|
| }
|
|
|
| -// BrowserMainParts: |SetupMetricsAndFieldTrials()| related --------------------
|
| -
|
| -// Initializes the metrics service with the configuration for this process,
|
| -// returning the created service (guaranteed non-NULL).
|
| -MetricsService* BrowserMainParts::InitializeMetrics(
|
| - const CommandLine& parsed_command_line,
|
| - const PrefService* local_state) {
|
| -#if defined(OS_WIN)
|
| - if (parsed_command_line.HasSwitch(switches::kChromeFrame))
|
| - MetricsLog::set_version_extension("-F");
|
| -#elif defined(ARCH_CPU_64_BITS)
|
| - MetricsLog::set_version_extension("-64");
|
| -#endif // defined(OS_WIN)
|
| -
|
| - MetricsService* metrics = g_browser_process->metrics_service();
|
| -
|
| - if (parsed_command_line.HasSwitch(switches::kMetricsRecordingOnly) ||
|
| - parsed_command_line.HasSwitch(switches::kEnableBenchmarking)) {
|
| - // If we're testing then we don't care what the user preference is, we turn
|
| - // on recording, but not reporting, otherwise tests fail.
|
| - metrics->StartRecordingOnly();
|
| - return metrics;
|
| - }
|
| -
|
| - // If the user permits metrics reporting with the checkbox in the
|
| - // prefs, we turn on recording. We disable metrics completely for
|
| - // non-official builds.
|
| -#if defined(GOOGLE_CHROME_BUILD)
|
| -#if defined(OS_CHROMEOS)
|
| - bool enabled = chromeos::MetricsCrosSettingsProvider::GetMetricsStatus();
|
| -#else
|
| - bool enabled = local_state->GetBoolean(prefs::kMetricsReportingEnabled);
|
| -#endif // #if defined(OS_CHROMEOS)
|
| - if (enabled) {
|
| - metrics->Start();
|
| - chrome_browser_net_websocket_experiment::
|
| - WebSocketExperimentRunner::Start();
|
| - }
|
| -#endif // defined(GOOGLE_CHROME_BUILD)
|
| -
|
| - return metrics;
|
| -}
|
| -
|
| -void BrowserMainParts::SetupFieldTrials() {
|
| - // Note: make sure to call ConnectionFieldTrial() before
|
| - // ProxyConnectionsFieldTrial().
|
| - ConnectionFieldTrial();
|
| - SocketTimeoutFieldTrial();
|
| - ProxyConnectionsFieldTrial();
|
| - prerender::ConfigurePrefetchAndPrerender(parsed_command_line());
|
| - SpdyFieldTrial();
|
| - ConnectBackupJobsFieldTrial();
|
| - SSLFalseStartFieldTrial();
|
| -}
|
| -
|
| // -----------------------------------------------------------------------------
|
| // TODO(viettrungluu): move more/rest of BrowserMain() into above structure
|
|
|
| @@ -830,6 +763,45 @@
|
| #endif
|
| }
|
|
|
| +// Initializes the metrics service with the configuration for this process,
|
| +// returning the created service (guaranteed non-NULL).
|
| +MetricsService* InitializeMetrics(const CommandLine& parsed_command_line,
|
| + const PrefService* local_state) {
|
| +#if defined(OS_WIN)
|
| + if (parsed_command_line.HasSwitch(switches::kChromeFrame))
|
| + MetricsLog::set_version_extension("-F");
|
| +#elif defined(ARCH_CPU_64_BITS)
|
| + MetricsLog::set_version_extension("-64");
|
| +#endif // defined(OS_WIN)
|
| +
|
| + MetricsService* metrics = g_browser_process->metrics_service();
|
| +
|
| + if (parsed_command_line.HasSwitch(switches::kMetricsRecordingOnly) ||
|
| + parsed_command_line.HasSwitch(switches::kEnableBenchmarking)) {
|
| + // If we're testing then we don't care what the user preference is, we turn
|
| + // on recording, but not reporting, otherwise tests fail.
|
| + metrics->StartRecordingOnly();
|
| + } else {
|
| + // If the user permits metrics reporting with the checkbox in the
|
| + // prefs, we turn on recording. We disable metrics completely for
|
| + // non-official builds.
|
| +#if defined(GOOGLE_CHROME_BUILD)
|
| +#if defined(OS_CHROMEOS)
|
| + bool enabled = chromeos::MetricsCrosSettingsProvider::GetMetricsStatus();
|
| +#else
|
| + bool enabled = local_state->GetBoolean(prefs::kMetricsReportingEnabled);
|
| +#endif // #if defined(OS_CHROMEOS)
|
| + if (enabled) {
|
| + metrics->Start();
|
| + chrome_browser_net_websocket_experiment::
|
| + WebSocketExperimentRunner::Start();
|
| + }
|
| +#endif
|
| + }
|
| +
|
| + return metrics;
|
| +}
|
| +
|
| // Initializes the profile, possibly doing some user prompting to pick a
|
| // fallback profile. Returns the newly created profile, or NULL if startup
|
| // should not continue.
|
| @@ -1355,11 +1327,17 @@
|
| about_flags::ConvertFlagsToSwitches(local_state,
|
| CommandLine::ForCurrentProcess());
|
|
|
| - // Now the command line has been mutated based on about:flags, we can
|
| - // set up metrics and initialize field trials.
|
| - MetricsService* metrics = parts->SetupMetricsAndFieldTrials(
|
| - parsed_command_line, local_state);
|
| + // Now the command line has been mutated based on about:flags, we can run some
|
| + // field trials
|
| + parts->SetupFieldTrials();
|
|
|
| + // Initialize FieldTrialSynchronizer system. This is a singleton and is used
|
| + // for posting tasks via NewRunnableMethod. Its deleted when it goes out of
|
| + // scope. Even though NewRunnableMethod does AddRef and Release, the object
|
| + // will not be deleted after the Task is executed.
|
| + scoped_refptr<FieldTrialSynchronizer> field_trial_synchronizer(
|
| + new FieldTrialSynchronizer());
|
| +
|
| // Now that all preferences have been registered, set the install date
|
| // for the uninstall metrics if this is our first run. This only actually
|
| // gets used if the user has metrics reporting enabled at uninstall time.
|
| @@ -1702,6 +1680,7 @@
|
| sdch_manager.set_sdch_fetcher(new SdchDictionaryFetcher);
|
| sdch_manager.EnableSdchSupport(sdch_supported_domain);
|
|
|
| + MetricsService* metrics = InitializeMetrics(parsed_command_line, local_state);
|
| InstallJankometer(parsed_command_line);
|
|
|
| #if defined(OS_WIN) && !defined(GOOGLE_CHROME_BUILD)
|
|
|