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(kEnabledStructuredMetricsService,
12 "EnableStructuredMetricsService",
13 base::FEATURE_ENABLED_BY_DEFAULT);
14
15 BASE_FEATURE(kPhoneHubStructuredMetrics,
16 "PhoneHubStructuredMetrics",
17 base::FEATURE_ENABLED_BY_DEFAULT);
18
19 BASE_FEATURE(kEventStorageManager,
20 "EventStorageManager",
21 base::FEATURE_DISABLED_BY_DEFAULT);
22
23 constexpr base::FeatureParam<int> kLimitFilesPerScanParam{
24 &features::kStructuredMetrics, "file_limit", 100};
25 constexpr base::FeatureParam<int> kFileSizeByteLimitParam{
26 &features::kStructuredMetrics, "file_byte_limit", 50000};
27
28 constexpr base::FeatureParam<std::string> kDisallowedProjectsParam{
29 &features::kStructuredMetrics, "disabled_projects", ""};
30
31 constexpr base::FeatureParam<int> kMinLogQueueCount{
32 &kEnabledStructuredMetricsService, "min_log_queue_count", 10};
33
34 constexpr base::FeatureParam<int> kMinLogQueueSizeBytes{
35 &kEnabledStructuredMetricsService, "min_log_queue_size_bytes",
36 300 * 1024 * 1024 // 300 KiB
37 };
38
39 constexpr base::FeatureParam<int> kMaxLogSizeBytes{
40 &kEnabledStructuredMetricsService, "max_log_size_bytes",
41 1024 * 1024 * 1024 // 1 MiB
42 };
43
44 constexpr base::FeatureParam<int> kUploadTimeInSeconds{
45 &kEnabledStructuredMetricsService, "upload_time_in_seconds",
46 10 * 60 // 40 minutes
47 };
48
49 constexpr base::FeatureParam<int> kExternalMetricsCollectionIntervalInSeconds{
50 &features::kStructuredMetrics,
51 "external_metrics_collection_interval_in_seconds",
52 3 * 60 // 10 minutes
53 };
54
55 constexpr base::FeatureParam<int> kStructuredMetricsUploadCadenceMinutes{
56 &features::kStructuredMetrics, "sm_upload_cadence_minutes", 45};
57
58 constexpr base::FeatureParam<int> kMaxProtoKiBSize{
59 &features::kStructuredMetrics, "max_proto_size_kib", 25};
60
61 constexpr base::FeatureParam<int> kEventBackupTimeSec{
62 &kEventStorageManager, "event_backup_time_s", 3 * 60 // 3 minutes
63 };
64
65 constexpr base::FeatureParam<double> kMaxBufferSizeQuota{
66 &features::kStructuredMetrics, "max_buffer_size_quota", 0.0001};
67
68 constexpr base::FeatureParam<double> kMaxDiskSizeQuota{
69 &features::kStructuredMetrics, "max_disk_size_quota", 0.001};
70
GetFileLimitPerScan()71 int GetFileLimitPerScan() {
72 return kLimitFilesPerScanParam.Get();
73 }
74
GetFileSizeByteLimit()75 int GetFileSizeByteLimit() {
76 return kFileSizeByteLimitParam.Get();
77 }
78
GetUploadCadenceMinutes()79 int GetUploadCadenceMinutes() {
80 return kStructuredMetricsUploadCadenceMinutes.Get();
81 }
82
GetProtoKiBLimit()83 int GetProtoKiBLimit() {
84 return kMaxProtoKiBSize.Get();
85 }
86
GetDisabledProjects()87 std::string GetDisabledProjects() {
88 return kDisallowedProjectsParam.Get();
89 }
90
GetUploadInterval()91 int GetUploadInterval() {
92 return kUploadTimeInSeconds.Get();
93 }
94
GetExternalMetricsCollectionInterval()95 base::TimeDelta GetExternalMetricsCollectionInterval() {
96 return base::Seconds(kExternalMetricsCollectionIntervalInSeconds.Get());
97 }
98
GetBackupTimeDelta()99 base::TimeDelta GetBackupTimeDelta() {
100 return base::Seconds(kEventBackupTimeSec.Get());
101 }
102
GetMaxBufferSizeRatio()103 double GetMaxBufferSizeRatio() {
104 return kMaxBufferSizeQuota.Get();
105 }
106
GetMaxDiskSizeRatio()107 double GetMaxDiskSizeRatio() {
108 return kMaxDiskSizeQuota.Get();
109 }
110
111 } // namespace metrics::structured
112