xref: /aosp_15_r20/external/cronet/components/metrics/structured/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2019 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 Workerimport("//build/config/python.gni")
6*6777b538SAndroid Build Coastguard Workerimport("//components/metrics/structured/buildflags/buildflags.gni")
7*6777b538SAndroid Build Coastguard Workerimport("//testing/test.gni")
8*6777b538SAndroid Build Coastguard Workerimport("//third_party/protobuf/proto_library.gni")
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Worker# Structured metrics is subcomponent of UMA that gathers and reports structured
11*6777b538SAndroid Build Coastguard Worker# events with several attached metrics.
12*6777b538SAndroid Build Coastguard Workerstatic_library("structured") {
13*6777b538SAndroid Build Coastguard Worker  sources = [
14*6777b538SAndroid Build Coastguard Worker    "key_data_prefs_delegate.cc",
15*6777b538SAndroid Build Coastguard Worker    "key_data_prefs_delegate.h",
16*6777b538SAndroid Build Coastguard Worker    "key_data_provider_file.cc",
17*6777b538SAndroid Build Coastguard Worker    "key_data_provider_file.h",
18*6777b538SAndroid Build Coastguard Worker    "key_data_provider_prefs.cc",
19*6777b538SAndroid Build Coastguard Worker    "key_data_provider_prefs.h",
20*6777b538SAndroid Build Coastguard Worker    "reporting/structured_metrics_log_metrics.cc",
21*6777b538SAndroid Build Coastguard Worker    "reporting/structured_metrics_log_metrics.h",
22*6777b538SAndroid Build Coastguard Worker    "reporting/structured_metrics_reporting_service.cc",
23*6777b538SAndroid Build Coastguard Worker    "reporting/structured_metrics_reporting_service.h",
24*6777b538SAndroid Build Coastguard Worker    "structured_metrics_prefs.cc",
25*6777b538SAndroid Build Coastguard Worker    "structured_metrics_prefs.h",
26*6777b538SAndroid Build Coastguard Worker    "structured_metrics_recorder.cc",
27*6777b538SAndroid Build Coastguard Worker    "structured_metrics_recorder.h",
28*6777b538SAndroid Build Coastguard Worker    "structured_metrics_scheduler.cc",
29*6777b538SAndroid Build Coastguard Worker    "structured_metrics_scheduler.h",
30*6777b538SAndroid Build Coastguard Worker    "structured_metrics_service.cc",
31*6777b538SAndroid Build Coastguard Worker    "structured_metrics_service.h",
32*6777b538SAndroid Build Coastguard Worker  ]
33*6777b538SAndroid Build Coastguard Worker
34*6777b538SAndroid Build Coastguard Worker  public_deps = [
35*6777b538SAndroid Build Coastguard Worker    ":common",
36*6777b538SAndroid Build Coastguard Worker    ":events",
37*6777b538SAndroid Build Coastguard Worker    ":proto",
38*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/buildflags",
39*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/lib:proto",
40*6777b538SAndroid Build Coastguard Worker    "//third_party/metrics_proto",
41*6777b538SAndroid Build Coastguard Worker  ]
42*6777b538SAndroid Build Coastguard Worker
43*6777b538SAndroid Build Coastguard Worker  deps = [
44*6777b538SAndroid Build Coastguard Worker    ":structured_events",
45*6777b538SAndroid Build Coastguard Worker    ":structured_metrics_validator",
46*6777b538SAndroid Build Coastguard Worker    "//base",
47*6777b538SAndroid Build Coastguard Worker    "//components/metrics",
48*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/lib",
49*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/lib:proto",
50*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/mojom",
51*6777b538SAndroid Build Coastguard Worker    "//components/prefs",
52*6777b538SAndroid Build Coastguard Worker    "//crypto",
53*6777b538SAndroid Build Coastguard Worker    "//third_party/protobuf:protobuf_lite",
54*6777b538SAndroid Build Coastguard Worker  ]
55*6777b538SAndroid Build Coastguard Worker}
56*6777b538SAndroid Build Coastguard Worker
57*6777b538SAndroid Build Coastguard Workerif (is_chromeos_ash) {
58*6777b538SAndroid Build Coastguard Worker  static_library("external_metrics") {
59*6777b538SAndroid Build Coastguard Worker    sources = [
60*6777b538SAndroid Build Coastguard Worker      "external_metrics.cc",
61*6777b538SAndroid Build Coastguard Worker      "external_metrics.h",
62*6777b538SAndroid Build Coastguard Worker    ]
63*6777b538SAndroid Build Coastguard Worker    deps = [
64*6777b538SAndroid Build Coastguard Worker      ":common",
65*6777b538SAndroid Build Coastguard Worker      ":proto",
66*6777b538SAndroid Build Coastguard Worker      ":structured_events",
67*6777b538SAndroid Build Coastguard Worker      "//base",
68*6777b538SAndroid Build Coastguard Worker    ]
69*6777b538SAndroid Build Coastguard Worker  }
70*6777b538SAndroid Build Coastguard Worker}
71*6777b538SAndroid Build Coastguard Worker
72*6777b538SAndroid Build Coastguard Workerstatic_library("events") {
73*6777b538SAndroid Build Coastguard Worker  sources = [
74*6777b538SAndroid Build Coastguard Worker    "enums.h",
75*6777b538SAndroid Build Coastguard Worker    "event.cc",
76*6777b538SAndroid Build Coastguard Worker    "event.h",
77*6777b538SAndroid Build Coastguard Worker    "structured_metrics_client.cc",
78*6777b538SAndroid Build Coastguard Worker    "structured_metrics_client.h",
79*6777b538SAndroid Build Coastguard Worker  ]
80*6777b538SAndroid Build Coastguard Worker  deps = [ "//base" ]
81*6777b538SAndroid Build Coastguard Worker}
82*6777b538SAndroid Build Coastguard Worker
83*6777b538SAndroid Build Coastguard Workerproto_library("proto") {
84*6777b538SAndroid Build Coastguard Worker  # These protos are only used internally, so make them visible only to
85*6777b538SAndroid Build Coastguard Worker  # subdirectories.
86*6777b538SAndroid Build Coastguard Worker  visibility = [ "./*" ]
87*6777b538SAndroid Build Coastguard Worker  proto_in_dir = "//"
88*6777b538SAndroid Build Coastguard Worker  generate_python = false
89*6777b538SAndroid Build Coastguard Worker  sources = [ "proto/event_storage.proto" ]
90*6777b538SAndroid Build Coastguard Worker
91*6777b538SAndroid Build Coastguard Worker  # This is required because metrics_proto/BUILD.gn sets proto_in_dir as ".",
92*6777b538SAndroid Build Coastguard Worker  # which means protos can't be referred to by absolute paths from within other
93*6777b538SAndroid Build Coastguard Worker  # protos.
94*6777b538SAndroid Build Coastguard Worker  import_dirs = [ "//third_party/metrics_proto" ]
95*6777b538SAndroid Build Coastguard Worker  proto_deps = [ "//third_party/metrics_proto" ]
96*6777b538SAndroid Build Coastguard Worker  link_deps = [ "//third_party/metrics_proto" ]
97*6777b538SAndroid Build Coastguard Worker}
98*6777b538SAndroid Build Coastguard Worker
99*6777b538SAndroid Build Coastguard Worker# Sources used by all static libraries in this BUILD file.
100*6777b538SAndroid Build Coastguard Workersource_set("common") {
101*6777b538SAndroid Build Coastguard Worker  sources = [
102*6777b538SAndroid Build Coastguard Worker    "delegating_events_processor.cc",
103*6777b538SAndroid Build Coastguard Worker    "delegating_events_processor.h",
104*6777b538SAndroid Build Coastguard Worker    "events_processor_interface.h",
105*6777b538SAndroid Build Coastguard Worker    "histogram_util.cc",
106*6777b538SAndroid Build Coastguard Worker    "histogram_util.h",
107*6777b538SAndroid Build Coastguard Worker    "recorder.cc",
108*6777b538SAndroid Build Coastguard Worker    "recorder.h",
109*6777b538SAndroid Build Coastguard Worker  ]
110*6777b538SAndroid Build Coastguard Worker
111*6777b538SAndroid Build Coastguard Worker  public_deps = [
112*6777b538SAndroid Build Coastguard Worker    ":events",
113*6777b538SAndroid Build Coastguard Worker    ":structured_metrics_features",
114*6777b538SAndroid Build Coastguard Worker  ]
115*6777b538SAndroid Build Coastguard Worker
116*6777b538SAndroid Build Coastguard Worker  deps = [
117*6777b538SAndroid Build Coastguard Worker    ":proto",
118*6777b538SAndroid Build Coastguard Worker    ":structured_metrics_validator",
119*6777b538SAndroid Build Coastguard Worker    "//base",
120*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/lib",
121*6777b538SAndroid Build Coastguard Worker    "//components/prefs",
122*6777b538SAndroid Build Coastguard Worker    "//third_party/metrics_proto",
123*6777b538SAndroid Build Coastguard Worker  ]
124*6777b538SAndroid Build Coastguard Worker}
125*6777b538SAndroid Build Coastguard Worker
126*6777b538SAndroid Build Coastguard Workerstatic_library("structured_metrics_features") {
127*6777b538SAndroid Build Coastguard Worker  sources = [
128*6777b538SAndroid Build Coastguard Worker    "structured_metrics_features.cc",
129*6777b538SAndroid Build Coastguard Worker    "structured_metrics_features.h",
130*6777b538SAndroid Build Coastguard Worker  ]
131*6777b538SAndroid Build Coastguard Worker
132*6777b538SAndroid Build Coastguard Worker  public_deps = [ "//base" ]
133*6777b538SAndroid Build Coastguard Worker}
134*6777b538SAndroid Build Coastguard Worker
135*6777b538SAndroid Build Coastguard Workeraction("gen_structured_events") {
136*6777b538SAndroid Build Coastguard Worker  script = "//tools/metrics/structured/gen_events.py"
137*6777b538SAndroid Build Coastguard Worker
138*6777b538SAndroid Build Coastguard Worker  # Re-generate the outputs if the codegen code changes:
139*6777b538SAndroid Build Coastguard Worker  inputs = [
140*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/codegen.py",
141*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/gen_events.py",
142*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/sync/model.py",
143*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/sync/model_util.py",
144*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/templates_events.py",
145*6777b538SAndroid Build Coastguard Worker  ]
146*6777b538SAndroid Build Coastguard Worker  sources = [ "//tools/metrics/structured/sync/structured.xml" ]
147*6777b538SAndroid Build Coastguard Worker
148*6777b538SAndroid Build Coastguard Worker  outdir = "$target_gen_dir"
149*6777b538SAndroid Build Coastguard Worker
150*6777b538SAndroid Build Coastguard Worker  outputs = [
151*6777b538SAndroid Build Coastguard Worker    outdir + "/structured_events.cc",
152*6777b538SAndroid Build Coastguard Worker    outdir + "/structured_events.h",
153*6777b538SAndroid Build Coastguard Worker  ]
154*6777b538SAndroid Build Coastguard Worker
155*6777b538SAndroid Build Coastguard Worker  args = [
156*6777b538SAndroid Build Coastguard Worker    "--input",
157*6777b538SAndroid Build Coastguard Worker    rebase_path(sources[0], root_build_dir),
158*6777b538SAndroid Build Coastguard Worker    "--output",
159*6777b538SAndroid Build Coastguard Worker    rebase_path(outdir, root_build_dir),
160*6777b538SAndroid Build Coastguard Worker  ]
161*6777b538SAndroid Build Coastguard Worker}
162*6777b538SAndroid Build Coastguard Worker
163*6777b538SAndroid Build Coastguard Worker# TODO(b/309122738): Generate the events by platform.
164*6777b538SAndroid Build Coastguard Workerstatic_library("structured_events") {
165*6777b538SAndroid Build Coastguard Worker  sources = get_target_outputs(":gen_structured_events")
166*6777b538SAndroid Build Coastguard Worker
167*6777b538SAndroid Build Coastguard Worker  public_deps = [
168*6777b538SAndroid Build Coastguard Worker    ":events",
169*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/buildflags",
170*6777b538SAndroid Build Coastguard Worker  ]
171*6777b538SAndroid Build Coastguard Worker
172*6777b538SAndroid Build Coastguard Worker  deps = [
173*6777b538SAndroid Build Coastguard Worker    ":gen_structured_events",
174*6777b538SAndroid Build Coastguard Worker    "//base",
175*6777b538SAndroid Build Coastguard Worker  ]
176*6777b538SAndroid Build Coastguard Worker}
177*6777b538SAndroid Build Coastguard Worker
178*6777b538SAndroid Build Coastguard Workeraction("gen_structured_metrics_validator") {
179*6777b538SAndroid Build Coastguard Worker  script = "//tools/metrics/structured/gen_validator.py"
180*6777b538SAndroid Build Coastguard Worker
181*6777b538SAndroid Build Coastguard Worker  # Re-generate the outputs if the codegen code changes:
182*6777b538SAndroid Build Coastguard Worker  inputs = [
183*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/codegen.py",
184*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/gen_validator.py",
185*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/sync/model.py",
186*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/sync/model_util.py",
187*6777b538SAndroid Build Coastguard Worker    "//tools/metrics/structured/templates_validator.py",
188*6777b538SAndroid Build Coastguard Worker  ]
189*6777b538SAndroid Build Coastguard Worker  sources = [ "//tools/metrics/structured/sync/structured.xml" ]
190*6777b538SAndroid Build Coastguard Worker
191*6777b538SAndroid Build Coastguard Worker  outdir = "$target_gen_dir"
192*6777b538SAndroid Build Coastguard Worker
193*6777b538SAndroid Build Coastguard Worker  outputs = [
194*6777b538SAndroid Build Coastguard Worker    outdir + "/structured_metrics_validator.cc",
195*6777b538SAndroid Build Coastguard Worker    outdir + "/structured_metrics_validator.h",
196*6777b538SAndroid Build Coastguard Worker  ]
197*6777b538SAndroid Build Coastguard Worker
198*6777b538SAndroid Build Coastguard Worker  args = [
199*6777b538SAndroid Build Coastguard Worker    "--input",
200*6777b538SAndroid Build Coastguard Worker    rebase_path(sources[0], root_build_dir),
201*6777b538SAndroid Build Coastguard Worker    "--output",
202*6777b538SAndroid Build Coastguard Worker    rebase_path(outdir, root_build_dir),
203*6777b538SAndroid Build Coastguard Worker  ]
204*6777b538SAndroid Build Coastguard Worker
205*6777b538SAndroid Build Coastguard Worker  if (is_chromeos_ash) {
206*6777b538SAndroid Build Coastguard Worker    sources += [ "//tools/metrics/structured/sync/structured_chromiumos.xml" ]
207*6777b538SAndroid Build Coastguard Worker
208*6777b538SAndroid Build Coastguard Worker    args += [
209*6777b538SAndroid Build Coastguard Worker      "--cros_input",
210*6777b538SAndroid Build Coastguard Worker      rebase_path(sources[1], root_build_dir),
211*6777b538SAndroid Build Coastguard Worker    ]
212*6777b538SAndroid Build Coastguard Worker  }
213*6777b538SAndroid Build Coastguard Worker}
214*6777b538SAndroid Build Coastguard Worker
215*6777b538SAndroid Build Coastguard Workerstatic_library("structured_metrics_validator") {
216*6777b538SAndroid Build Coastguard Worker  sources = get_target_outputs(":gen_structured_metrics_validator") + [
217*6777b538SAndroid Build Coastguard Worker              "event_validator.cc",
218*6777b538SAndroid Build Coastguard Worker              "event_validator.h",
219*6777b538SAndroid Build Coastguard Worker              "project_validator.cc",
220*6777b538SAndroid Build Coastguard Worker              "project_validator.h",
221*6777b538SAndroid Build Coastguard Worker            ]
222*6777b538SAndroid Build Coastguard Worker
223*6777b538SAndroid Build Coastguard Worker  deps = [
224*6777b538SAndroid Build Coastguard Worker    ":events",
225*6777b538SAndroid Build Coastguard Worker    ":gen_structured_metrics_validator",
226*6777b538SAndroid Build Coastguard Worker    "//base",
227*6777b538SAndroid Build Coastguard Worker    "//third_party/metrics_proto",
228*6777b538SAndroid Build Coastguard Worker  ]
229*6777b538SAndroid Build Coastguard Worker}
230*6777b538SAndroid Build Coastguard Worker
231*6777b538SAndroid Build Coastguard Workerstatic_library("test_support") {
232*6777b538SAndroid Build Coastguard Worker  testonly = true
233*6777b538SAndroid Build Coastguard Worker  sources = [
234*6777b538SAndroid Build Coastguard Worker    "test/test_event_storage.cc",
235*6777b538SAndroid Build Coastguard Worker    "test/test_event_storage.h",
236*6777b538SAndroid Build Coastguard Worker    "test/test_key_data_provider.cc",
237*6777b538SAndroid Build Coastguard Worker    "test/test_key_data_provider.h",
238*6777b538SAndroid Build Coastguard Worker    "test/test_structured_metrics_provider.cc",
239*6777b538SAndroid Build Coastguard Worker    "test/test_structured_metrics_provider.h",
240*6777b538SAndroid Build Coastguard Worker    "test/test_structured_metrics_recorder.cc",
241*6777b538SAndroid Build Coastguard Worker    "test/test_structured_metrics_recorder.h",
242*6777b538SAndroid Build Coastguard Worker  ]
243*6777b538SAndroid Build Coastguard Worker  deps = [
244*6777b538SAndroid Build Coastguard Worker    ":structured",
245*6777b538SAndroid Build Coastguard Worker    ":structured_metrics_validator",
246*6777b538SAndroid Build Coastguard Worker    "//base",
247*6777b538SAndroid Build Coastguard Worker    "//base/test:test_support",
248*6777b538SAndroid Build Coastguard Worker    "//components/metrics:metrics",
249*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/lib",
250*6777b538SAndroid Build Coastguard Worker  ]
251*6777b538SAndroid Build Coastguard Worker}
252*6777b538SAndroid Build Coastguard Worker
253*6777b538SAndroid Build Coastguard Workersource_set("unit_tests") {
254*6777b538SAndroid Build Coastguard Worker  testonly = true
255*6777b538SAndroid Build Coastguard Worker  sources = [
256*6777b538SAndroid Build Coastguard Worker    "key_data_prefs_delegate_unittest.cc",
257*6777b538SAndroid Build Coastguard Worker    "structured_metrics_recorder_unittest.cc",
258*6777b538SAndroid Build Coastguard Worker    "structured_metrics_service_unittest.cc",
259*6777b538SAndroid Build Coastguard Worker  ]
260*6777b538SAndroid Build Coastguard Worker
261*6777b538SAndroid Build Coastguard Worker  deps = [
262*6777b538SAndroid Build Coastguard Worker    ":events",
263*6777b538SAndroid Build Coastguard Worker    ":proto",
264*6777b538SAndroid Build Coastguard Worker    ":structured",
265*6777b538SAndroid Build Coastguard Worker    ":structured_events",
266*6777b538SAndroid Build Coastguard Worker    ":structured_metrics_validator",
267*6777b538SAndroid Build Coastguard Worker    ":test_support",
268*6777b538SAndroid Build Coastguard Worker    "//base",
269*6777b538SAndroid Build Coastguard Worker    "//base/test:test_support",
270*6777b538SAndroid Build Coastguard Worker    "//components/metrics",
271*6777b538SAndroid Build Coastguard Worker    "//components/metrics:test_support",
272*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/lib",
273*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/lib:proto",
274*6777b538SAndroid Build Coastguard Worker    "//components/prefs",
275*6777b538SAndroid Build Coastguard Worker    "//components/prefs:test_support",
276*6777b538SAndroid Build Coastguard Worker    "//testing/gtest",
277*6777b538SAndroid Build Coastguard Worker  ]
278*6777b538SAndroid Build Coastguard Worker
279*6777b538SAndroid Build Coastguard Worker  if (is_chromeos_ash) {
280*6777b538SAndroid Build Coastguard Worker    sources += [ "external_metrics_unittest.cc" ]
281*6777b538SAndroid Build Coastguard Worker
282*6777b538SAndroid Build Coastguard Worker    deps += [ ":external_metrics" ]
283*6777b538SAndroid Build Coastguard Worker  }
284*6777b538SAndroid Build Coastguard Worker}
285*6777b538SAndroid Build Coastguard Worker
286*6777b538SAndroid Build Coastguard Worker# Convenience testing target
287*6777b538SAndroid Build Coastguard Workertest("structured_metrics_unittests") {
288*6777b538SAndroid Build Coastguard Worker  deps = [
289*6777b538SAndroid Build Coastguard Worker    ":unit_tests",
290*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/lib:unit_tests",
291*6777b538SAndroid Build Coastguard Worker    "//components/metrics/structured/mojom:unit_tests",
292*6777b538SAndroid Build Coastguard Worker    "//components/test:run_all_unittests",
293*6777b538SAndroid Build Coastguard Worker  ]
294*6777b538SAndroid Build Coastguard Worker}
295