webview: migrate metrics to non-backed-up directory.

WebView's temporary metrics files were stored in the host app's data
directory, which will be backed up by many Android backup agent
implementations. This data isn't worth backing up and changes
frequently, so we want to avoid this.

Introduce a feature flag which defines a new metrics directory under the
Android "no-backup" files directory so that the backup agent knows to
ignore it, and will migrate existing files to the new location.

The migration is set up to be bidirectional: if a client previously had
the feature flag enabled but now does not, the files will be moved back,
to prevent metrics loss during experimentation.

Bug: 331195418
Change-Id: Icc57e0eacc4eae31696a4729295d003d926bf3c0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7004435
Commit-Queue: Richard (Torne) Coles <torne@chromium.org>
Reviewed-by: Luc Nguyen <lucnguyen@google.com>
Reviewed-by: Nate Fischer <ntfschr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1534495}
NOKEYCHECK=True
GitOrigin-RevId: d8595c0c841f2815073e05851f268019444bc7a1
2 files changed
tree: bc1d4459f3dba5296e3aeabb8f64abd1d40e9de5
  1. android/
  2. call_stacks/
  3. content/
  4. debug/
  5. demographics/
  6. dwa/
  7. library_support/
  8. net/
  9. private_metrics/
  10. public/
  11. serialization/
  12. structured/
  13. system_session_analyzer/
  14. test/
  15. ui/
  16. android_metrics_helper.cc
  17. android_metrics_helper.h
  18. android_metrics_helper_unittest.cc
  19. android_metrics_provider.cc
  20. android_metrics_provider.h
  21. android_metrics_provider_unittest.cc
  22. BUILD.gn
  23. child_histogram_fetcher_impl.cc
  24. child_histogram_fetcher_impl.h
  25. clean_exit_beacon.cc
  26. clean_exit_beacon.h
  27. clean_exit_beacon_ios.mm
  28. clean_exit_beacon_unittest.cc
  29. client_info.cc
  30. client_info.h
  31. cloned_install_detector.cc
  32. cloned_install_detector.h
  33. cloned_install_detector_unittest.cc
  34. component_metrics_provider.cc
  35. component_metrics_provider.h
  36. component_metrics_provider_unittest.cc
  37. cpu_metrics_provider.cc
  38. cpu_metrics_provider.h
  39. daily_event.cc
  40. daily_event.h
  41. daily_event_unittest.cc
  42. data_use_tracker.cc
  43. data_use_tracker.h
  44. data_use_tracker_unittest.cc
  45. date_changed_helper.cc
  46. date_changed_helper.h
  47. date_changed_helper_unittest.cc
  48. delegating_provider.cc
  49. delegating_provider.h
  50. DEPS
  51. DIR_METADATA
  52. drive_metrics_provider.cc
  53. drive_metrics_provider.h
  54. enabled_state_provider.cc
  55. enabled_state_provider.h
  56. entropy_state.cc
  57. entropy_state.h
  58. entropy_state_provider.cc
  59. entropy_state_provider.h
  60. entropy_state_provider_unittest.cc
  61. entropy_state_unittest.cc
  62. environment_recorder.cc
  63. environment_recorder.h
  64. environment_recorder_unittest.cc
  65. expired_histogram_util.cc
  66. expired_histogram_util.h
  67. expired_histograms_checker.cc
  68. expired_histograms_checker.h
  69. expired_histograms_checker_unittest.cc
  70. field_trials_provider.cc
  71. field_trials_provider.h
  72. field_trials_provider_unittest.cc
  73. file_metrics_provider.cc
  74. file_metrics_provider.h
  75. file_metrics_provider_unittest.cc
  76. generate_expired_histograms_array.gni
  77. gms_metrics_provider.cc
  78. gms_metrics_provider.h
  79. gms_metrics_provider_unittest.cc
  80. histogram_child_process.h
  81. histogram_controller.cc
  82. histogram_controller.h
  83. histogram_encoder.cc
  84. histogram_encoder.h
  85. histogram_encoder_unittest.cc
  86. histogram_subscriber.h
  87. install_date_provider.cc
  88. install_date_provider.h
  89. log_decoder.cc
  90. log_decoder.h
  91. log_decoder_unittest.cc
  92. log_store.h
  93. machine_id_provider.h
  94. machine_id_provider_nonwin.cc
  95. machine_id_provider_nonwin_unittest.cc
  96. machine_id_provider_win.cc
  97. machine_id_provider_win_unittest.cc
  98. metrics_data_validation.cc
  99. metrics_data_validation.h
  100. metrics_data_validation_unittest.cc
  101. metrics_features.cc
  102. metrics_features.h
  103. metrics_log.cc
  104. metrics_log.h
  105. metrics_log_store.cc
  106. metrics_log_store.h
  107. metrics_log_store_unittest.cc
  108. metrics_log_unittest.cc
  109. metrics_log_uploader.h
  110. metrics_logs_event_manager.cc
  111. metrics_logs_event_manager.h
  112. metrics_pref_names.h
  113. metrics_provider.cc
  114. metrics_provider.h
  115. metrics_reporting_default_state.cc
  116. metrics_reporting_default_state.h
  117. metrics_reporting_service.cc
  118. metrics_reporting_service.h
  119. metrics_rotation_scheduler.cc
  120. metrics_rotation_scheduler.h
  121. metrics_scheduler.cc
  122. metrics_scheduler.h
  123. metrics_service.cc
  124. metrics_service.h
  125. metrics_service_accessor.cc
  126. metrics_service_accessor.h
  127. metrics_service_client.cc
  128. metrics_service_client.h
  129. metrics_service_client_unittest.cc
  130. metrics_service_observer.cc
  131. metrics_service_observer.h
  132. metrics_service_observer_unittest.cc
  133. metrics_service_unittest.cc
  134. metrics_shutdown.cc
  135. metrics_shutdown.h
  136. metrics_state_manager.cc
  137. metrics_state_manager.h
  138. metrics_state_manager_unittest.cc
  139. metrics_switches.cc
  140. metrics_switches.h
  141. metrics_upload_scheduler.cc
  142. metrics_upload_scheduler.h
  143. motherboard.cc
  144. motherboard.h
  145. motherboard_metrics_provider.cc
  146. motherboard_metrics_provider.h
  147. motherboard_metrics_provider_unittest.cc
  148. OWNERS
  149. persistent_histograms.cc
  150. persistent_histograms.h
  151. persistent_synthetic_trial_observer.cc
  152. persistent_synthetic_trial_observer.h
  153. persistent_synthetic_trial_observer_unittest.cc
  154. persistent_system_profile.cc
  155. persistent_system_profile.h
  156. persistent_system_profile_unittest.cc
  157. README
  158. reporting_service.cc
  159. reporting_service.h
  160. reporting_service_unittest.cc
  161. sampling_metrics_provider.cc
  162. sampling_metrics_provider.h
  163. server_urls.cc
  164. server_urls.grd
  165. server_urls.h
  166. server_urls_unittest.cc
  167. single_sample_metrics.cc
  168. single_sample_metrics.h
  169. single_sample_metrics_factory_impl.cc
  170. single_sample_metrics_factory_impl.h
  171. single_sample_metrics_factory_impl_unittest.cc
  172. stability_metrics_helper.cc
  173. stability_metrics_helper.h
  174. stability_metrics_helper_unittest.cc
  175. stability_metrics_provider.cc
  176. stability_metrics_provider.h
  177. stability_metrics_provider_unittest.cc
  178. ukm_demographic_metrics_provider.h
  179. unsent_log_store.cc
  180. unsent_log_store.h
  181. unsent_log_store_metrics.cc
  182. unsent_log_store_metrics.h
  183. unsent_log_store_metrics_impl.cc
  184. unsent_log_store_metrics_impl.h
  185. unsent_log_store_metrics_impl_unittest.cc
  186. unsent_log_store_unittest.cc
  187. version_utils.cc
  188. version_utils.h