1*6777b538SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "components/metrics/metrics_switches.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/check.h" 8*6777b538SAndroid Build Coastguard Worker #include "base/command_line.h" 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker namespace metrics { 11*6777b538SAndroid Build Coastguard Worker namespace switches { 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker // Enables the observing of all UMA logs created during the session and 14*6777b538SAndroid Build Coastguard Worker // automatically exports them to the passed file path on shutdown (the file is 15*6777b538SAndroid Build Coastguard Worker // created if it does not already exist). This also enables viewing all UMA logs 16*6777b538SAndroid Build Coastguard Worker // in the chrome://metrics-internals debug page. The format of the exported file 17*6777b538SAndroid Build Coastguard Worker // is outlined in MetricsServiceObserver::ExportLogsAsJson(). 18*6777b538SAndroid Build Coastguard Worker // Example usage: --export-uma-logs-to-file=/tmp/logs.json 19*6777b538SAndroid Build Coastguard Worker const char kExportUmaLogsToFile[] = "export-uma-logs-to-file"; 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker // Forces metrics reporting to be enabled. Should not be used for tests as it 22*6777b538SAndroid Build Coastguard Worker // will send data to servers. 23*6777b538SAndroid Build Coastguard Worker const char kForceEnableMetricsReporting[] = "force-enable-metrics-reporting"; 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Worker // Forces MSBB setting to be on for UKM recording. Should only be used in 26*6777b538SAndroid Build Coastguard Worker // automated testing browser sessions in which it is infeasible or impractical 27*6777b538SAndroid Build Coastguard Worker // to toggle the setting manually. 28*6777b538SAndroid Build Coastguard Worker const char kForceMsbbSettingOnForUkm[] = "force-msbb-setting-on-for-ukm"; 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker // Enables the recording of metrics reports but disables reporting. In contrast 31*6777b538SAndroid Build Coastguard Worker // to kForceEnableMetricsReporting, this executes all the code that a normal 32*6777b538SAndroid Build Coastguard Worker // client would use for reporting, except the report is dropped rather than sent 33*6777b538SAndroid Build Coastguard Worker // to the server. This is useful for finding issues in the metrics code during 34*6777b538SAndroid Build Coastguard Worker // UI and performance tests. 35*6777b538SAndroid Build Coastguard Worker const char kMetricsRecordingOnly[] = "metrics-recording-only"; 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Worker // Override the standard time interval between each metrics report upload for 38*6777b538SAndroid Build Coastguard Worker // UMA and UKM. It is useful to set to a short interval for debugging. Unit in 39*6777b538SAndroid Build Coastguard Worker // seconds. (The default is 1800 seconds on desktop). 40*6777b538SAndroid Build Coastguard Worker const char kMetricsUploadIntervalSec[] = "metrics-upload-interval"; 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker // Forces a reset of the one-time-randomized FieldTrials on this client, also 43*6777b538SAndroid Build Coastguard Worker // known as the Chrome Variations state. 44*6777b538SAndroid Build Coastguard Worker const char kResetVariationState[] = "reset-variation-state"; 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker // Overrides the URL of the server that UKM reports are uploaded to. This can 47*6777b538SAndroid Build Coastguard Worker // only be used in debug builds. 48*6777b538SAndroid Build Coastguard Worker const char kUkmServerUrl[] = "ukm-server-url"; 49*6777b538SAndroid Build Coastguard Worker 50*6777b538SAndroid Build Coastguard Worker // Overrides the URL of the server that UMA reports are uploaded to. This can 51*6777b538SAndroid Build Coastguard Worker // only be used in debug builds. 52*6777b538SAndroid Build Coastguard Worker const char kUmaServerUrl[] = "uma-server-url"; 53*6777b538SAndroid Build Coastguard Worker 54*6777b538SAndroid Build Coastguard Worker // Overrides the URL of the server that UMA reports are uploaded to when the 55*6777b538SAndroid Build Coastguard Worker // connection to the default secure URL fails (see |kUmaServerUrl|). This can 56*6777b538SAndroid Build Coastguard Worker // only be used in debug builds. 57*6777b538SAndroid Build Coastguard Worker const char kUmaInsecureServerUrl[] = "uma-insecure-server-url"; 58*6777b538SAndroid Build Coastguard Worker 59*6777b538SAndroid Build Coastguard Worker } // namespace switches 60*6777b538SAndroid Build Coastguard Worker IsMetricsRecordingOnlyEnabled()61*6777b538SAndroid Build Coastguard Workerbool IsMetricsRecordingOnlyEnabled() { 62*6777b538SAndroid Build Coastguard Worker return base::CommandLine::ForCurrentProcess()->HasSwitch( 63*6777b538SAndroid Build Coastguard Worker switches::kMetricsRecordingOnly); 64*6777b538SAndroid Build Coastguard Worker } 65*6777b538SAndroid Build Coastguard Worker IsMetricsReportingForceEnabled()66*6777b538SAndroid Build Coastguard Workerbool IsMetricsReportingForceEnabled() { 67*6777b538SAndroid Build Coastguard Worker return base::CommandLine::ForCurrentProcess()->HasSwitch( 68*6777b538SAndroid Build Coastguard Worker switches::kForceEnableMetricsReporting); 69*6777b538SAndroid Build Coastguard Worker } 70*6777b538SAndroid Build Coastguard Worker IsMsbbSettingForcedOnForUkm()71*6777b538SAndroid Build Coastguard Workerbool IsMsbbSettingForcedOnForUkm() { 72*6777b538SAndroid Build Coastguard Worker return base::CommandLine::ForCurrentProcess()->HasSwitch( 73*6777b538SAndroid Build Coastguard Worker switches::kForceMsbbSettingOnForUkm); 74*6777b538SAndroid Build Coastguard Worker } 75*6777b538SAndroid Build Coastguard Worker EnableMetricsRecordingOnlyForTesting(base::CommandLine * command_line)76*6777b538SAndroid Build Coastguard Workervoid EnableMetricsRecordingOnlyForTesting(base::CommandLine* command_line) { 77*6777b538SAndroid Build Coastguard Worker CHECK(command_line); 78*6777b538SAndroid Build Coastguard Worker if (!command_line->HasSwitch(switches::kMetricsRecordingOnly)) 79*6777b538SAndroid Build Coastguard Worker command_line->AppendSwitch(switches::kMetricsRecordingOnly); 80*6777b538SAndroid Build Coastguard Worker } 81*6777b538SAndroid Build Coastguard Worker ForceEnableMetricsReportingForTesting()82*6777b538SAndroid Build Coastguard Workervoid ForceEnableMetricsReportingForTesting() { 83*6777b538SAndroid Build Coastguard Worker auto* command_line = base::CommandLine::ForCurrentProcess(); 84*6777b538SAndroid Build Coastguard Worker CHECK(command_line); 85*6777b538SAndroid Build Coastguard Worker if (!command_line->HasSwitch(switches::kForceEnableMetricsReporting)) 86*6777b538SAndroid Build Coastguard Worker command_line->AppendSwitch(switches::kForceEnableMetricsReporting); 87*6777b538SAndroid Build Coastguard Worker } 88*6777b538SAndroid Build Coastguard Worker 89*6777b538SAndroid Build Coastguard Worker } // namespace metrics 90