• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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