Index: components/metrics/file_metrics_provider.h |
diff --git a/components/metrics/file_metrics_provider.h b/components/metrics/file_metrics_provider.h |
index 43d4d304dea1cbe4e65e8790733c735397fef446..a19577b1317a8f856bdc5720747aa5b7ec8096ab 100644 |
--- a/components/metrics/file_metrics_provider.h |
+++ b/components/metrics/file_metrics_provider.h |
@@ -80,6 +80,19 @@ class FileMetricsProvider : public MetricsProvider, |
// This is important when metrics are dumped as part of a crash of the |
// previous run. This can only be used with FILE_HISTOGRAMS_ATOMIC. |
ASSOCIATE_PREVIOUS_RUN, |
+ |
+ // Associates the metrics in the file with the a profile embedded in the |
+ // same file. The reporting will take place at a convenient time after |
+ // startup when the browser is otherwise idle. If there is no embedded |
+ // system profile, these metrics will be lost. |
+ ASSOCIATE_INTERNAL_PROFILE, |
+ |
+ // Like above but fall back to ASSOCIATE_PREVIOUS_RUN if there is no |
+ // embedded profile. This has a small cost during startup as that is |
+ // when previous-run metrics are sent so the file has be checked at |
+ // that time even though actual transfer will be delayed if an |
+ // embedded profile is found. |
+ ASSOCIATE_INTERNAL_PROFILE_OR_PREVIOUS_RUN, |
}; |
FileMetricsProvider(const scoped_refptr<base::TaskRunner>& task_runner, |
@@ -147,6 +160,9 @@ class FileMetricsProvider : public MetricsProvider, |
// be internally updated to indicate the next file to be read. |
static bool LocateNextFileInDirectory(SourceInfo* source); |
+ // Handles the completion of a source. |
+ static void FinishedWithSource(SourceInfo* source, AccessResult result); |
+ |
// Checks a list of sources (on a task-runner allowed to do I/O) and merge |
// any data found within them. |
static void CheckAndMergeMetricSourcesOnTaskRunner(SourceInfoList* sources); |
@@ -175,8 +191,11 @@ class FileMetricsProvider : public MetricsProvider, |
// Updates the persistent state information to show a source as being read. |
void RecordSourceAsRead(SourceInfo* source); |
- // metrics::MetricsDataProvider: |
+ // metrics::MetricsProvider: |
void OnDidCreateMetricsLog() override; |
+ bool ProvideIndependentMetrics( |
+ SystemProfileProto* system_profile_proto, |
+ base::HistogramSnapshotManager* snapshot_manager) override; |
bool HasInitialStabilityMetrics() override; |
void RecordInitialHistogramSnapshots( |
base::HistogramSnapshotManager* snapshot_manager) override; |
@@ -193,6 +212,9 @@ class FileMetricsProvider : public MetricsProvider, |
// A list of currently active sources to be merged when required. |
SourceInfoList sources_mapped_; |
+ // A list of currently active sources to be merged when required. |
+ SourceInfoList sources_with_profile_; |
+ |
// A list of sources for a previous run. These are held separately because |
// they are not subject to the periodic background checking that handles |
// metrics for the current run. |