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