[M120 Migration][VD] Enable direct rendering for TVPlus
[platform/framework/web/chromium-efl.git] / components / metrics / BUILD.gn
1 # Copyright 2014 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 import("//build/config/chromeos/ui_mode.gni")
6 import("//build/config/cronet/config.gni")
7 import("//build/config/features.gni")
8 import("//testing/test.gni")
9
10 if (is_android) {
11   import("//build/config/android/rules.gni")
12   import("//third_party/jni_zero/jni_zero.gni")
13 }
14
15 # Dependency for histogram manager users: cronet and ios/webview
16 source_set("library_support") {
17   public = [
18     "histogram_encoder.h",
19     "library_support/histogram_manager.h",
20   ]
21   sources = [
22     "histogram_encoder.cc",
23     "library_support/histogram_manager.cc",
24   ]
25
26   deps = [
27     "//base",
28     "//third_party/metrics_proto",
29   ]
30 }
31
32 if (!is_cronet_build && is_android) {
33   generate_jni("jni_headers") {
34     namespace = "metrics"
35     sources = [
36       "android/java/src/org/chromium/components/metrics/LowEntropySource.java",
37     ]
38   }
39
40   java_cpp_features("java_features_srcjar") {
41     # External code should depend on ":foo_java" instead.
42     visibility = [ ":*" ]
43     sources = [ "//components/metrics/metrics_features.cc" ]
44     template =
45         "//components/metrics/android/java_templates/MetricsFeatures.java.tmpl"
46   }
47
48   java_cpp_strings("java_switches_srcjar") {
49     # External code should depend on ":metrics_java" instead.
50     visibility = [ ":*" ]
51     sources = [ "//components/metrics/metrics_switches.cc" ]
52     template =
53         "//components/metrics/android/java_templates/MetricsSwitches.java.tmpl"
54   }
55
56   java_cpp_enum("java_enum_srcjar") {
57     # External code should depend on ":metrics_java" instead.
58     visibility = [ ":*" ]
59     sources = [ "stability_metrics_helper.h" ]
60   }
61
62   android_library("metrics_java") {
63     # Right now, this only includes the Java switches. But if we need more Java
64     # files, they should be added here as necessary.
65     srcjar_deps = [
66       ":java_enum_srcjar",
67       ":java_features_srcjar",
68       ":java_switches_srcjar",
69     ]
70     sources = [
71       "android/java/src/org/chromium/components/metrics/LowEntropySource.java",
72     ]
73     deps = [
74       "//base:base_java",
75       "//third_party/androidx:androidx_annotation_annotation_java",
76       "//third_party/jni_zero:jni_zero_java",
77     ]
78   }
79 }
80
81 # Used by the Chrome installer, which doesn't need the whole metrics library.
82 source_set("client_info") {
83   sources = [
84     "client_info.cc",
85     "client_info.h",
86   ]
87 }
88
89 # Used by the Chrome installer, which doesn't need the whole metrics library.
90 source_set("metrics_pref_names") {
91   sources = [
92     "metrics_pref_names.cc",
93     "metrics_pref_names.h",
94   ]
95 }
96
97 if (!is_cronet_build || is_ios) {
98   static_library("metrics") {
99     sources = [
100       "android_metrics_helper.cc",
101       "android_metrics_helper.h",
102       "call_stack_profile_metrics_provider.cc",
103       "call_stack_profile_metrics_provider.h",
104       "clean_exit_beacon.cc",
105       "clean_exit_beacon.h",
106       "cloned_install_detector.cc",
107       "cloned_install_detector.h",
108       "cpu_metrics_provider.cc",
109       "cpu_metrics_provider.h",
110       "daily_event.cc",
111       "daily_event.h",
112       "data_use_tracker.cc",
113       "data_use_tracker.h",
114       "date_changed_helper.cc",
115       "date_changed_helper.h",
116       "delegating_provider.cc",
117       "delegating_provider.h",
118       "drive_metrics_provider.cc",
119       "drive_metrics_provider.h",
120       "enabled_state_provider.cc",
121       "enabled_state_provider.h",
122       "entropy_state.cc",
123       "entropy_state.h",
124       "entropy_state_provider.cc",
125       "entropy_state_provider.h",
126       "environment_recorder.cc",
127       "environment_recorder.h",
128       "expired_histogram_util.cc",
129       "expired_histogram_util.h",
130       "expired_histograms_checker.cc",
131       "expired_histograms_checker.h",
132       "field_trials_provider.cc",
133       "field_trials_provider.h",
134       "file_metrics_provider.cc",
135       "file_metrics_provider.h",
136       "log_decoder.cc",
137       "log_decoder.h",
138       "log_store.h",
139       "machine_id_provider.h",
140       "metrics_data_validation.cc",
141       "metrics_data_validation.h",
142       "metrics_features.cc",
143       "metrics_features.h",
144       "metrics_log.cc",
145       "metrics_log.h",
146       "metrics_log_store.cc",
147       "metrics_log_store.h",
148       "metrics_log_uploader.h",
149       "metrics_logs_event_manager.cc",
150       "metrics_logs_event_manager.h",
151       "metrics_provider.cc",
152       "metrics_provider.h",
153       "metrics_reporting_default_state.cc",
154       "metrics_reporting_default_state.h",
155       "metrics_reporting_service.cc",
156       "metrics_reporting_service.h",
157       "metrics_rotation_scheduler.cc",
158       "metrics_rotation_scheduler.h",
159       "metrics_scheduler.cc",
160       "metrics_scheduler.h",
161       "metrics_service.cc",
162       "metrics_service.h",
163       "metrics_service_accessor.cc",
164       "metrics_service_accessor.h",
165       "metrics_service_client.cc",
166       "metrics_service_client.h",
167       "metrics_service_observer.cc",
168       "metrics_service_observer.h",
169       "metrics_shutdown.cc",
170       "metrics_shutdown.h",
171       "metrics_state_manager.cc",
172       "metrics_state_manager.h",
173       "metrics_switches.cc",
174       "metrics_switches.h",
175       "metrics_upload_scheduler.cc",
176       "metrics_upload_scheduler.h",
177       "persistent_histograms.cc",
178       "persistent_histograms.h",
179       "persistent_synthetic_trial_observer.cc",
180       "persistent_synthetic_trial_observer.h",
181       "persistent_system_profile.cc",
182       "persistent_system_profile.h",
183       "reporting_service.cc",
184       "reporting_service.h",
185       "sampling_metrics_provider.cc",
186       "sampling_metrics_provider.h",
187       "stability_metrics_helper.cc",
188       "stability_metrics_helper.h",
189       "stability_metrics_provider.cc",
190       "stability_metrics_provider.h",
191       "system_memory_stats_recorder.h",
192       "ukm_demographic_metrics_provider.h",
193       "unsent_log_store.cc",
194       "unsent_log_store.h",
195       "unsent_log_store_metrics.cc",
196       "unsent_log_store_metrics.h",
197       "unsent_log_store_metrics_impl.cc",
198       "unsent_log_store_metrics_impl.h",
199       "url_constants.h",
200       "version_utils.cc",
201       "version_utils.h",
202     ]
203
204     if (is_chrome_branded) {
205       sources += [ "internal/url_constants.cc" ]
206     } else {
207       sources += [ "url_constants.cc" ]
208     }
209
210     public_deps = [
211       "//components/metrics:client_info",
212       "//components/metrics:metrics_pref_names",
213       "//third_party/metrics_proto",
214       "//third_party/zlib/google:compression_utils",
215     ]
216
217     deps = [
218       ":library_support",
219       "//base",
220       "//base:base_static",
221       "//base:i18n",
222       "//build:branding_buildflags",
223       "//build:chromeos_buildflags",
224       "//components/flags_ui:switches",
225       "//components/network_time",
226       "//components/prefs",
227       "//components/variations",
228       "//components/variations/field_trial_config",
229       "//components/version_info:version_info",
230       "//crypto",
231       "//extensions/buildflags",
232       "//third_party/icu",
233       "//url",
234     ]
235
236     if (is_android) {
237       sources += [
238         "android_metrics_provider.cc",
239         "android_metrics_provider.h",
240         "drive_metrics_provider_android.cc",
241         "gms_metrics_provider.cc",
242         "gms_metrics_provider.h",
243       ]
244       deps += [ ":jni_headers" ]
245     } else {
246       deps += [ "//components/keep_alive_registry" ]
247     }
248
249     if (is_ios) {
250       sources += [
251         "clean_exit_beacon_ios.mm",
252         "drive_metrics_provider_ios.mm",
253       ]
254     }
255
256     if (is_linux || is_chromeos || is_tizen) {
257       sources += [
258         "drive_metrics_provider_linux.cc",
259         "psi_memory_parser.h",
260         "psi_memory_parser_linux.cc",
261         "system_memory_stats_recorder_linux.cc",
262       ]
263     }
264
265     if (is_mac) {
266       sources += [ "drive_metrics_provider_mac.mm" ]
267       frameworks = [
268         # The below are all needed for drive_metrics_provider_mac.mm.
269         "CoreFoundation.framework",
270         "DiskArbitration.framework",
271         "Foundation.framework",
272         "IOKit.framework",
273       ]
274     }
275
276     if (is_win) {
277       sources += [
278         "drive_metrics_provider_win.cc",
279         "machine_id_provider_win.cc",
280         "system_session_analyzer/system_session_analyzer_win.cc",
281         "system_session_analyzer/system_session_analyzer_win.h",
282       ]
283       libs = [ "wevtapi.lib" ]
284     } else {
285       sources += [ "machine_id_provider_nonwin.cc" ]
286     }
287
288     if (is_fuchsia) {
289       sources += [ "drive_metrics_provider_fuchsia.cc" ]
290     }
291
292     if (is_win || is_linux || is_tizen) {
293       sources += [
294         "motherboard.cc",
295         "motherboard.h",
296         "motherboard_metrics_provider.cc",
297         "motherboard_metrics_provider.h",
298       ]
299     }
300   }
301
302   static_library("test_support") {
303     testonly = true
304     sources = [
305       "test/test_enabled_state_provider.cc",
306       "test/test_enabled_state_provider.h",
307       "test/test_metrics_log_uploader.cc",
308       "test/test_metrics_log_uploader.h",
309       "test/test_metrics_provider.cc",
310       "test/test_metrics_provider.h",
311       "test/test_metrics_service_client.cc",
312       "test/test_metrics_service_client.h",
313     ]
314
315     public_deps = [ ":metrics" ]
316     deps = [ "//base" ]
317   }
318 }
319
320 if (!is_cronet_build) {
321   # The component metrics provider is a separate target because it depends upon
322   # (the large) component_updater code, and is not needed for some entities that
323   # depend on :metrics.
324   static_library("component_metrics") {
325     sources = [
326       "component_metrics_provider.cc",
327       "component_metrics_provider.h",
328     ]
329
330     public_deps = [ "//third_party/metrics_proto" ]
331
332     deps = [
333       ":metrics",
334       "//base",
335       "//components/component_updater",
336     ]
337   }
338
339   if (use_blink) {
340     static_library("content") {
341       sources = [
342         # ChromeOS accessibility metrics provider is in chromeos_metrics_provider.
343         "content/accessibility_metrics_provider.cc",
344         "content/accessibility_metrics_provider.h",
345         "content/content_stability_metrics_provider.cc",
346         "content/content_stability_metrics_provider.h",
347         "content/extensions_helper.h",
348         "content/gpu_metrics_provider.cc",
349         "content/gpu_metrics_provider.h",
350         "content/rendering_perf_metrics_provider.cc",
351         "content/rendering_perf_metrics_provider.h",
352         "content/subprocess_metrics_provider.cc",
353         "content/subprocess_metrics_provider.h",
354       ]
355       public_deps = [ ":metrics" ]
356       deps = [
357         "//base",
358         "//content/public/browser",
359         "//extensions/buildflags",
360         "//gpu/config",
361       ]
362       if (is_android) {
363         deps += [ "//components/crash/content/browser" ]
364       }
365     }
366   }
367
368   static_library("net") {
369     sources = [
370       "net/cellular_logic_helper.cc",
371       "net/cellular_logic_helper.h",
372       "net/net_metrics_log_uploader.cc",
373       "net/net_metrics_log_uploader.h",
374       "net/network_metrics_provider.cc",
375       "net/network_metrics_provider.h",
376     ]
377
378     public_deps = [ ":metrics" ]
379     allow_circular_includes_from = [ ":metrics" ]
380
381     deps = [
382       "//base",
383       "//build:chromeos_buildflags",
384       "//components/encrypted_messages:encrypted_message_proto",
385       "//components/encrypted_messages:encrypted_messages",
386       "//components/variations",
387       "//net",
388       "//services/network/public/cpp",
389       "//services/network/public/mojom",
390       "//third_party/metrics_proto",
391       "//third_party/zlib/google:compression_utils",
392       "//url",
393     ]
394   }
395
396   static_library("ui") {
397     sources = [
398       "ui/form_factor_metrics_provider.cc",
399       "ui/form_factor_metrics_provider.h",
400       "ui/screen_info_metrics_provider.cc",
401       "ui/screen_info_metrics_provider.h",
402     ]
403
404     public_deps = [ ":metrics" ]
405     deps = [
406       "//base",
407       "//build/config/chromebox_for_meetings:buildflags",
408       "//ui/base",
409       "//ui/display",
410       "//ui/gfx",
411       "//ui/gfx/geometry",
412     ]
413   }
414
415   static_library("single_sample_metrics") {
416     sources = [
417       "single_sample_metrics.cc",
418       "single_sample_metrics.h",
419       "single_sample_metrics_factory_impl.cc",
420       "single_sample_metrics_factory_impl.h",
421     ]
422
423     deps = [
424       "//mojo/public/cpp/bindings",
425       "//services/service_manager/public/cpp",
426       "//services/service_manager/public/mojom",
427     ]
428
429     public_deps = [
430       "//components/metrics/public/mojom:single_sample_metrics_mojo_bindings",
431     ]
432   }
433
434   source_set("call_stack_profile_params") {
435     public = [
436       "call_stack_profile_encoding.h",
437       "call_stack_profile_params.h",
438     ]
439     sources = [ "call_stack_profile_encoding.cc" ]
440
441     deps = [
442       "//base:base",
443       "//third_party/metrics_proto",
444     ]
445   }
446
447   # Dependency for child processes that use the CallStackProfileBuilder.
448   source_set("child_call_stack_profile_builder") {
449     public = [
450       "call_stack_profile_builder.h",
451       "call_stack_profile_metadata.h",
452       "child_call_stack_profile_collector.h",
453     ]
454     sources = [
455       "call_stack_profile_builder.cc",
456       "call_stack_profile_metadata.cc",
457       "child_call_stack_profile_collector.cc",
458     ]
459     public_deps = [ ":call_stack_profile_params" ]
460     deps = [
461       "//base",
462       "//components/metrics/public/mojom:call_stack_mojo_bindings",
463       "//third_party/metrics_proto",
464     ]
465
466     # This target must not depend on :metrics because that code is intended solely
467     # for use in the browser process.
468     assert_no_deps = [ ":metrics" ]
469   }
470
471   # Dependency for browser process use of the CallStackProfileBuilder.
472   source_set("call_stack_profile_builder") {
473     deps = [ ":metrics" ]
474     public_deps = [ ":child_call_stack_profile_builder" ]
475   }
476
477   # The browser process mojo service for collecting profiles from child
478   # processes.
479   source_set("call_stack_profile_collector") {
480     sources = [
481       "call_stack_profile_collector.cc",
482       "call_stack_profile_collector.h",
483     ]
484     deps = [
485       ":call_stack_profile_params",
486       ":metrics",
487       "//components/metrics/public/mojom:call_stack_mojo_bindings",
488     ]
489   }
490
491   if (is_linux || is_chromeos) {
492     static_library("serialization") {
493       sources = [
494         "serialization/metric_sample.cc",
495         "serialization/metric_sample.h",
496         "serialization/serialization_utils.cc",
497         "serialization/serialization_utils.h",
498       ]
499       deps = [ "//base" ]
500     }
501   }
502
503   source_set("unit_tests") {
504     testonly = true
505     sources = [
506       "android_metrics_helper_unittest.cc",
507       "call_stack_profile_builder_unittest.cc",
508       "call_stack_profile_metadata_unittest.cc",
509       "call_stack_profile_metrics_provider_unittest.cc",
510       "child_call_stack_profile_collector_unittest.cc",
511       "clean_exit_beacon_unittest.cc",
512       "cloned_install_detector_unittest.cc",
513       "component_metrics_provider_unittest.cc",
514       "daily_event_unittest.cc",
515       "data_use_tracker_unittest.cc",
516       "date_changed_helper_unittest.cc",
517       "drive_metrics_provider_unittest.cc",
518       "entropy_state_provider_unittest.cc",
519       "entropy_state_unittest.cc",
520       "environment_recorder_unittest.cc",
521       "expired_histograms_checker_unittest.cc",
522       "field_trials_provider_unittest.cc",
523       "file_metrics_provider_unittest.cc",
524       "histogram_encoder_unittest.cc",
525       "library_support/histogram_manager_unittest.cc",
526       "log_decoder_unittest.cc",
527       "metrics_data_validation_unittest.cc",
528       "metrics_log_store_unittest.cc",
529       "metrics_log_unittest.cc",
530       "metrics_service_client_unittest.cc",
531       "metrics_service_observer_unittest.cc",
532       "metrics_service_unittest.cc",
533       "metrics_state_manager_unittest.cc",
534       "net/net_metrics_log_uploader_unittest.cc",
535       "net/network_metrics_provider_unittest.cc",
536       "persistent_synthetic_trial_observer_unittest.cc",
537       "persistent_system_profile_unittest.cc",
538       "reporting_service_unittest.cc",
539       "single_sample_metrics_factory_impl_unittest.cc",
540       "stability_metrics_helper_unittest.cc",
541       "stability_metrics_provider_unittest.cc",
542       "ui/form_factor_metrics_provider_unittest.cc",
543       "ui/screen_info_metrics_provider_unittest.cc",
544       "unsent_log_store_metrics_impl_unittest.cc",
545       "unsent_log_store_unittest.cc",
546     ]
547
548     deps = [
549       ":call_stack_profile_builder",
550       ":component_metrics",
551       ":library_support",
552       ":metrics",
553       ":net",
554       ":single_sample_metrics",
555       ":test_support",
556       ":ui",
557       "//base",
558       "//base:base_stack_sampling_profiler_test_util",
559       "//base/test:test_support",
560       "//build:chromeos_buildflags",
561       "//components/component_updater:test_support",
562       "//components/encrypted_messages:encrypted_message_proto",
563       "//components/metrics/public/mojom:call_stack_mojo_bindings",
564       "//components/network_time:network_time_test_support",
565       "//components/prefs:test_support",
566       "//components/sync:test_support",
567       "//components/sync/base",
568       "//components/variations",
569       "//components/variations:test_support",
570       "//extensions/buildflags",
571       "//mojo/public/cpp/bindings",
572       "//net:test_support",
573       "//services/network:test_support",
574       "//services/network/public/cpp:cpp",
575       "//services/service_manager/public/cpp",
576       "//testing/gmock",
577       "//testing/gtest",
578       "//third_party/metrics_proto",
579       "//third_party/zlib/google:compression_utils",
580       "//ui/gfx/geometry",
581     ]
582
583     if (is_win) {
584       sources += [
585         "machine_id_provider_win_unittest.cc",
586         "system_session_analyzer/system_session_analyzer_win_unittest.cc",
587       ]
588     } else {
589       sources += [ "machine_id_provider_nonwin_unittest.cc" ]
590     }
591
592     if (is_linux || is_chromeos) {
593       sources += [
594         "psi_memory_parser_linux_unittest.cc",
595         "serialization/serialization_utils_unittest.cc",
596       ]
597       deps += [ ":serialization" ]
598     }
599
600     if (is_chromeos_ash) {
601       deps += [
602         "//chromeos/ash/components/dbus:test_support",
603         "//chromeos/ash/components/network:test_support",
604       ]
605     }
606
607     if (is_android) {
608       sources += [
609         "android_metrics_provider_unittest.cc",
610         "gms_metrics_provider_unittest.cc",
611       ]
612     }
613
614     if (use_blink) {
615       deps += [
616         ":content",
617         "//content/test:test_support",
618       ]
619     }
620
621     # iOS is not supported by the profiler and the ios-simulator bot chokes on
622     # these tests.
623     if (is_ios) {
624       sources -= [ "child_call_stack_profile_collector_unittest.cc" ]
625       deps += [ "//ios/web/public/test" ]
626     } else {
627       sources += [
628         "content/content_stability_metrics_provider_unittest.cc",
629         "content/subprocess_metrics_provider_unittest.cc",
630       ]
631       deps += [ "//extensions/buildflags" ]
632     }
633
634     if (is_win || is_linux) {
635       sources += [ "motherboard_metrics_provider_unittest.cc" ]
636     }
637   }
638
639   # Convenience testing target
640   test("metrics_unittests") {
641     sources = [ "//components/test/run_all_unittests.cc" ]
642     deps = [
643       ":unit_tests",
644       "//components/metrics/demographics:unit_tests",
645       "//components/test:test_support",
646     ]
647   }
648 }