xref: /aosp_15_r20/external/cronet/components/metrics/metrics_switches.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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 Worker bool 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 Worker bool 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 Worker bool 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 Worker void 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 Worker void 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