Add metrics provider for uploading background traces

Background tracing uploads metrics of larger size and it is better to
upload them as independent metrics rather than part of uma log, to track
upload size, and also to make sure the uma metrics are not discarded
from saving to disk due to large size. The background tracing manager
will make sure traces are only uploaded on WiFi, or the traces are
small when uploading over data, to make sure weekly upload quata for
UMA metrics is not affected on Android.
The CL also changes the MetricProvider API to pass in uma proto instead
of system profile for independent metrics collection. Background tracing
metrics provider will look for traces from background tracing manager,
when the metrics service asks for available metrics. If available the
uma proto will be filled with the trace buffer.

BUG=925151

Change-Id: I69f2400b2bdf73067e820c8031960390d4b8cbdb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1481737
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Robert Kaplow <rkaplow@chromium.org>
Reviewed-by: Brian White <bcwhite@chromium.org>
Reviewed-by: oysteine <oysteine@chromium.org>
Commit-Queue: ssid <ssid@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#644952}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 52314f2e782f3fe4be3c3295137ba9ca690a08c5
6 files changed
tree: 546eaf39df8ee5f7f1b79d36826d4a631c0befbc
  1. gpu/
  2. net/
  3. public/
  4. serialization/
  5. ui/
  6. BUILD.gn
  7. call_stack_profile_builder.cc
  8. call_stack_profile_builder.h
  9. call_stack_profile_builder_unittest.cc
  10. call_stack_profile_collector.cc
  11. call_stack_profile_collector.h
  12. call_stack_profile_encoding.cc
  13. call_stack_profile_encoding.h
  14. call_stack_profile_metrics_provider.cc
  15. call_stack_profile_metrics_provider.h
  16. call_stack_profile_metrics_provider_unittest.cc
  17. call_stack_profile_params.h
  18. child_call_stack_profile_collector.cc
  19. child_call_stack_profile_collector.h
  20. child_call_stack_profile_collector_unittest.cc
  21. clean_exit_beacon.cc
  22. clean_exit_beacon.h
  23. client_info.cc
  24. client_info.h
  25. cloned_install_detector.cc
  26. cloned_install_detector.h
  27. cloned_install_detector_unittest.cc
  28. component_metrics_provider.cc
  29. component_metrics_provider.h
  30. component_metrics_provider_unittest.cc
  31. cpu_metrics_provider.cc
  32. cpu_metrics_provider.h
  33. daily_event.cc
  34. daily_event.h
  35. daily_event_unittest.cc
  36. data_use_tracker.cc
  37. data_use_tracker.h
  38. data_use_tracker_unittest.cc
  39. delegating_provider.cc
  40. delegating_provider.h
  41. DEPS
  42. drive_metrics_provider.cc
  43. drive_metrics_provider.h
  44. drive_metrics_provider_android.cc
  45. drive_metrics_provider_fuchsia.cc
  46. drive_metrics_provider_ios.mm
  47. drive_metrics_provider_linux.cc
  48. drive_metrics_provider_mac.mm
  49. drive_metrics_provider_unittest.cc
  50. drive_metrics_provider_win.cc
  51. enabled_state_provider.cc
  52. enabled_state_provider.h
  53. environment_recorder.cc
  54. environment_recorder.h
  55. environment_recorder_unittest.cc
  56. expired_histogram_util.cc
  57. expired_histogram_util.h
  58. expired_histograms_checker.cc
  59. expired_histograms_checker.h
  60. expired_histograms_checker_unittest.cc
  61. field_trials_provider.cc
  62. field_trials_provider.h
  63. field_trials_provider_unittest.cc
  64. file_metrics_provider.cc
  65. file_metrics_provider.h
  66. file_metrics_provider_unittest.cc
  67. generate_expired_histograms_array.gni
  68. histogram_encoder.cc
  69. histogram_encoder.h
  70. histogram_encoder_unittest.cc
  71. log_decoder.cc
  72. log_decoder.h
  73. log_store.h
  74. machine_id_provider.h
  75. machine_id_provider_stub.cc
  76. machine_id_provider_win.cc
  77. machine_id_provider_win_unittest.cc
  78. metrics_log.cc
  79. metrics_log.h
  80. metrics_log_manager.cc
  81. metrics_log_manager.h
  82. metrics_log_manager_unittest.cc
  83. metrics_log_store.cc
  84. metrics_log_store.h
  85. metrics_log_store_unittest.cc
  86. metrics_log_unittest.cc
  87. metrics_log_uploader.h
  88. metrics_pref_names.cc
  89. metrics_pref_names.h
  90. metrics_provider.cc
  91. metrics_provider.h
  92. metrics_reporting_default_state.cc
  93. metrics_reporting_default_state.h
  94. metrics_reporting_service.cc
  95. metrics_reporting_service.h
  96. metrics_rotation_scheduler.cc
  97. metrics_rotation_scheduler.h
  98. metrics_scheduler.cc
  99. metrics_scheduler.h
  100. metrics_service.cc
  101. metrics_service.h
  102. metrics_service_accessor.cc
  103. metrics_service_accessor.h
  104. metrics_service_client.cc
  105. metrics_service_client.h
  106. metrics_service_unittest.cc
  107. metrics_state_manager.cc
  108. metrics_state_manager.h
  109. metrics_state_manager_unittest.cc
  110. metrics_switches.cc
  111. metrics_switches.h
  112. metrics_upload_scheduler.cc
  113. metrics_upload_scheduler.h
  114. OWNERS
  115. persisted_logs.cc
  116. persisted_logs.h
  117. persisted_logs_metrics.h
  118. persisted_logs_metrics_impl.cc
  119. persisted_logs_metrics_impl.h
  120. persisted_logs_unittest.cc
  121. persistent_system_profile.cc
  122. persistent_system_profile.h
  123. persistent_system_profile_unittest.cc
  124. README
  125. reporting_service.cc
  126. reporting_service.h
  127. reporting_service_unittest.cc
  128. single_sample_metrics.cc
  129. single_sample_metrics.h
  130. single_sample_metrics_factory_impl.cc
  131. single_sample_metrics_factory_impl.h
  132. single_sample_metrics_factory_impl_unittest.cc
  133. stability_metrics_helper.cc
  134. stability_metrics_helper.h
  135. stability_metrics_helper_unittest.cc
  136. stability_metrics_provider.cc
  137. stability_metrics_provider.h
  138. stability_metrics_provider_unittest.cc
  139. system_memory_stats_recorder.h
  140. system_memory_stats_recorder_linux.cc
  141. system_memory_stats_recorder_win.cc
  142. system_session_analyzer_win.cc
  143. system_session_analyzer_win.h
  144. system_session_analyzer_win_unittest.cc
  145. test_enabled_state_provider.cc
  146. test_enabled_state_provider.h
  147. test_metrics_log_uploader.cc
  148. test_metrics_log_uploader.h
  149. test_metrics_provider.cc
  150. test_metrics_provider.h
  151. test_metrics_service_client.cc
  152. test_metrics_service_client.h
  153. url_constants.cc
  154. url_constants.h
  155. version_utils.cc
  156. version_utils.h