Break MetricsService logic into smaller more independent pieces, to allow more code reuse between UMA and UKM/Rappor.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee commit 1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee Author: holte <holte@chromium.org> Date: Thu Feb 23 00:22:28 2017 Gather stability prefs into managing objects. This collects code reading and writing stability prefs from MetricsLog and MetricsService into StabilityMetricsProvider and EnvironmentRecorder objects. Also removes the obsolete stability prefs which are now unneeded. BUG= 693676 Review-Url: https://codereview.chromium.org/2687393004 Cr-Commit-Position: refs/heads/master@{#452301} [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/BUILD.gn [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/clean_exit_beacon.cc [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/clean_exit_beacon.h [add] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/environment_recorder.cc [add] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/environment_recorder.h [add] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/environment_recorder_unittest.cc [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/metrics_log.cc [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/metrics_log.h [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/metrics_log_unittest.cc [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/metrics_pref_names.cc [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/metrics_pref_names.h [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/metrics_service.cc [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/metrics_service.h [modify] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/metrics_service_unittest.cc [add] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/stability_metrics_provider.cc [add] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/stability_metrics_provider.h [add] https://crrev.com/1bf273c8b89a8809183f6a6c93ebc1a1b935a8ee/components/metrics/stability_metrics_provider_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4 commit ade6fdf493bec82b248ad76bc1d378f5d3ea99e4 Author: holte <holte@chromium.org> Date: Thu Feb 23 02:42:39 2017 Split a MetricsLogStore object out of MetricsLogManager. The MetricsLogStore handles all serialized logs, while MetricsLogManager handles logs which are still being produced. Creates a LogStore interface for MetricsLogStore and PersistedLogs to implement. This will simplify creating a ReportingService that can be reused by both UKM and UMA. No functional changes intended. BUG= 693676 Review-Url: https://codereview.chromium.org/2689323010 Cr-Commit-Position: refs/heads/master@{#452356} [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/BUILD.gn [add] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/log_store.h [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_log_manager.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_log_manager.h [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_log_manager_unittest.cc [add] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_log_store.cc [add] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_log_store.h [add] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_log_store_unittest.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_service.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_service.h [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/metrics_service_unittest.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/persisted_logs.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/persisted_logs.h [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/persisted_logs_metrics.h [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/persisted_logs_metrics_impl.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/persisted_logs_metrics_impl.h [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/metrics/persisted_logs_unittest.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/ukm/persisted_logs_metrics_impl.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/ukm/persisted_logs_metrics_impl.h [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/ukm/ukm_service.cc [modify] https://crrev.com/ade6fdf493bec82b248ad76bc1d378f5d3ea99e4/components/ukm/ukm_service_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4ae63f527eab99ac2d363f6605ef699065d5e180 commit 4ae63f527eab99ac2d363f6605ef699065d5e180 Author: holte <holte@chromium.org> Date: Wed Mar 08 00:25:08 2017 Use StringPiece for CreateUploader/NetMetricsLogUploader params. Makes MetricsLogUploader a pure interface, eliminating the params there, and in TestMetricsLogUploader. TBR=boliu,olivierrobin BUG= 693676 Review-Url: https://codereview.chromium.org/2735443003 Cr-Commit-Position: refs/heads/master@{#455308} [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/android_webview/native/aw_metrics_service_client_impl.cc [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/android_webview/native/aw_metrics_service_client_impl.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/chrome/browser/metrics/chrome_metrics_service_client.cc [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/chrome/browser/metrics/chrome_metrics_service_client.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/chromecast/browser/metrics/cast_metrics_service_client.cc [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/chromecast/browser/metrics/cast_metrics_service_client.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/BUILD.gn [delete] https://crrev.com/a30808fd6d7f2e20278b303a2db92dc43076c974/components/metrics/metrics_log_uploader.cc [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/metrics_log_uploader.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/metrics_service_client.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/net/net_metrics_log_uploader.cc [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/net/net_metrics_log_uploader.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/test_metrics_log_uploader.cc [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/test_metrics_log_uploader.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/test_metrics_service_client.cc [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/components/metrics/test_metrics_service_client.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.h [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm [modify] https://crrev.com/4ae63f527eab99ac2d363f6605ef699065d5e180/ios/chrome/today_extension/today_metrics_logger.mm
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869 commit a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869 Author: holte <holte@chromium.org> Date: Tue Mar 14 02:08:24 2017 Move logic for uploading logs into a ReportingService object. Gathers the logic related to handling serialized logs for upload into a ReportingService object which is specialized for UMA with a MetricsReportingService subclass. No functional changes intended. BUG= 693676 Review-Url: https://codereview.chromium.org/2608833002 Cr-Commit-Position: refs/heads/master@{#456571} [modify] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/BUILD.gn [add] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/metrics_reporting_service.cc [add] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/metrics_reporting_service.h [modify] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/metrics_service.cc [modify] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/metrics_service.h [modify] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/metrics_service_unittest.cc [modify] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/metrics_upload_scheduler.cc [modify] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/metrics_upload_scheduler.h [add] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/reporting_service.cc [add] https://crrev.com/a3b241168ae7b85d5cc31e6b2f4afc8cd1cbe869/components/metrics/reporting_service.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5576ba8067a8c06eec493384d17acec923b0d2b3 commit 5576ba8067a8c06eec493384d17acec923b0d2b3 Author: holte <holte@chromium.org> Date: Wed Mar 15 21:26:43 2017 Avoid double initializing reporting_service_ Issue introduced in https://codereview.chromium.org/2608833002 ReportingService is already initialized by InitializeMetricsRecordingState, don't call Initialize again in InitializeMetricsState. Adds a DCHECK to Initialize to make sure it isn't called twice. BUG= 693676 Review-Url: https://codereview.chromium.org/2752073002 Cr-Commit-Position: refs/heads/master@{#457214} [modify] https://crrev.com/5576ba8067a8c06eec493384d17acec923b0d2b3/components/metrics/metrics_service.cc [modify] https://crrev.com/5576ba8067a8c06eec493384d17acec923b0d2b3/components/metrics/reporting_service.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/77d815be2a13c86b5f4bc4152e248c2c491c21d3 commit 77d815be2a13c86b5f4bc4152e248c2c491c21d3 Author: holte <holte@chromium.org> Date: Mon Mar 27 21:27:37 2017 Create UKM ReportingService implementation. * Moves UKM to having split rotation/upload schedulers * Adds support for tracking + throttling UKM cellular data use. BUG= 693676 Review-Url: https://codereview.chromium.org/2770853002 Cr-Commit-Position: refs/heads/master@{#459886} [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/metrics/BUILD.gn [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/metrics/data_use_tracker.cc [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/metrics/data_use_tracker_unittest.cc [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/metrics/metrics_pref_names.cc [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/metrics/metrics_pref_names.h [delete] https://crrev.com/77d17a744d78d3d35b51fcbe0119bd5dd99bbd46/components/metrics/metrics_reporting_scheduler.cc [delete] https://crrev.com/77d17a744d78d3d35b51fcbe0119bd5dd99bbd46/components/metrics/metrics_reporting_scheduler.h [delete] https://crrev.com/77d17a744d78d3d35b51fcbe0119bd5dd99bbd46/components/metrics/metrics_reporting_scheduler_unittest.cc [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/metrics/metrics_service.cc [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/metrics/reporting_service.cc [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/ukm/BUILD.gn [delete] https://crrev.com/77d17a744d78d3d35b51fcbe0119bd5dd99bbd46/components/ukm/metrics_reporting_scheduler.cc [delete] https://crrev.com/77d17a744d78d3d35b51fcbe0119bd5dd99bbd46/components/ukm/metrics_reporting_scheduler.h [add] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/ukm/ukm_reporting_service.cc [add] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/ukm/ukm_reporting_service.h [add] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/ukm/ukm_rotation_scheduler.cc [add] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/ukm/ukm_rotation_scheduler.h [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/ukm/ukm_service.cc [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/components/ukm/ukm_service.h [modify] https://crrev.com/77d815be2a13c86b5f4bc4152e248c2c491c21d3/tools/metrics/histograms/histograms.xml
Comment 1 by bugdroid1@chromium.org
, Feb 23 2017