xref: /aosp_15_r20/external/cronet/components/metrics/structured/structured_metrics_features.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2021 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/metrics/structured/structured_metrics_features.h"
6 
7 #include "base/feature_list.h"
8 
9 namespace metrics::structured {
10 
11 BASE_FEATURE(kEventSequenceLogging,
12              "EnableEventSequenceLogging",
13              base::FEATURE_ENABLED_BY_DEFAULT);
14 
15 // TODO(b/181724341): Remove this experimental once the feature is rolled out.
16 BASE_FEATURE(kBluetoothSessionizedMetrics,
17              "BluetoothSessionizedMetrics",
18              base::FEATURE_ENABLED_BY_DEFAULT);
19 
20 BASE_FEATURE(kFastPairMetrics,
21              "FastPairMetrics",
22              base::FEATURE_ENABLED_BY_DEFAULT);
23 
24 BASE_FEATURE(kNearbyShareMetrics,
25              "NearbyShareMetrics",
26              base::FEATURE_ENABLED_BY_DEFAULT);
27 
28 BASE_FEATURE(kEnabledStructuredMetricsService,
29              "EnableStructuredMetricsService",
30              base::FEATURE_ENABLED_BY_DEFAULT);
31 
32 BASE_FEATURE(kPhoneHubStructuredMetrics,
33              "PhoneHubStructuredMetrics",
34              base::FEATURE_ENABLED_BY_DEFAULT);
35 
36 constexpr base::FeatureParam<int> kLimitFilesPerScanParam{
37     &features::kStructuredMetrics, "file_limit", 100};
38 constexpr base::FeatureParam<int> kFileSizeByteLimitParam{
39     &features::kStructuredMetrics, "file_byte_limit", 50000};
40 
41 constexpr base::FeatureParam<std::string> kDisallowedProjectsParam{
42     &features::kStructuredMetrics, "disabled_projects", ""};
43 
44 constexpr base::FeatureParam<int> kMinLogQueueCount{
45     &kEnabledStructuredMetricsService, "min_log_queue_count", 10};
46 
47 constexpr base::FeatureParam<int> kMinLogQueueSizeBytes{
48     &kEnabledStructuredMetricsService, "min_log_queue_size_bytes",
49     300 * 1024 * 1024  // 300 KiB
50 };
51 
52 constexpr base::FeatureParam<int> kMaxLogSizeBytes{
53     &kEnabledStructuredMetricsService, "max_log_size_bytes",
54     1024 * 1024 * 1024  // 1 MiB
55 };
56 
57 constexpr base::FeatureParam<int> kUploadTimeInSeconds{
58     &kEnabledStructuredMetricsService, "upload_time_in_seconds",
59     40 * 60  // 40 minutes
60 };
61 
62 constexpr base::FeatureParam<int> kExternalMetricsCollectionIntervalInSeconds{
63     &features::kStructuredMetrics,
64     "external_metrics_collection_interval_in_seconds",
65     10 * 60  // 10 minutes
66 };
67 
68 constexpr base::FeatureParam<int> kStructuredMetricsUploadCadenceMinutes{
69     &features::kStructuredMetrics, "sm_upload_cadence_minutes", 45};
70 
71 constexpr base::FeatureParam<int> kMaxProtoKiBSize{
72     &features::kStructuredMetrics, "max_proto_size_kib", 25};
73 
IsIndependentMetricsUploadEnabled()74 bool IsIndependentMetricsUploadEnabled() {
75   return base::GetFieldTrialParamByFeatureAsBool(
76       features::kStructuredMetrics, "enable_independent_metrics_upload", true);
77 }
78 
GetFileLimitPerScan()79 int GetFileLimitPerScan() {
80   return kLimitFilesPerScanParam.Get();
81 }
82 
GetFileSizeByteLimit()83 int GetFileSizeByteLimit() {
84   return kFileSizeByteLimitParam.Get();
85 }
86 
GetUploadCadenceMinutes()87 int GetUploadCadenceMinutes() {
88   return kStructuredMetricsUploadCadenceMinutes.Get();
89 }
90 
GetProtoKiBLimit()91 int GetProtoKiBLimit() {
92   return kMaxProtoKiBSize.Get();
93 }
94 
GetDisabledProjects()95 std::string GetDisabledProjects() {
96   return kDisallowedProjectsParam.Get();
97 }
98 
GetUploadInterval()99 int GetUploadInterval() {
100   return kUploadTimeInSeconds.Get();
101 }
102 
GetExternalMetricsCollectionInterval()103 base::TimeDelta GetExternalMetricsCollectionInterval() {
104   return base::Seconds(kExternalMetricsCollectionIntervalInSeconds.Get());
105 }
106 
107 }  // namespace metrics::structured
108