Chromium Code Reviews| Index: components/metrics/file_metrics_provider.h |
| diff --git a/components/metrics/file_metrics_provider.h b/components/metrics/file_metrics_provider.h |
| index c7aa11a3b55ab2ced9a2aa758573e6c503ec73b1..e48bc31217f8f392abddfa68c56125cc5abe06eb 100644 |
| --- a/components/metrics/file_metrics_provider.h |
| +++ b/components/metrics/file_metrics_provider.h |
| @@ -52,6 +52,19 @@ class FileMetricsProvider : public metrics::MetricsProvider { |
| //FILE_HISTOGRAMS_ACTIVE, |
| }; |
| + enum FileAssociation { |
| + // Associates the metrics in the file with the current run of the browser. |
| + // The reporting will take place as part of the normal logging of |
| + // histograms. |
| + ASSOCIATE_CURRENT_RUN, |
| + |
| + // Associates the metrics in the file with the previous run of the browesr. |
| + // The reporting will take place as part of the "stability" histograms. |
| + // 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, |
| + }; |
| + |
| FileMetricsProvider(const scoped_refptr<base::TaskRunner>& task_runner, |
| PrefService* local_state); |
| ~FileMetricsProvider() override; |
| @@ -63,6 +76,7 @@ class FileMetricsProvider : public metrics::MetricsProvider { |
| // if no persistence is required. |
| void RegisterFile(const base::FilePath& path, |
| FileType type, |
| + FileAssociation file_association, |
| const base::StringPiece prefs_key); |
| // Registers all necessary preferences for maintaining persistent state |
| @@ -74,6 +88,7 @@ class FileMetricsProvider : public metrics::MetricsProvider { |
| private: |
| friend class FileMetricsProviderTest; |
| FRIEND_TEST_ALL_PREFIXES(FileMetricsProviderTest, AccessMetrics); |
| + FRIEND_TEST_ALL_PREFIXES(FileMetricsProviderTest, AccessStabilityMetrics); |
| // The different results that can occur accessing a file. |
| enum AccessResult { |
| @@ -131,8 +146,11 @@ class FileMetricsProvider : public metrics::MetricsProvider { |
| // metrics::MetricsDataProvider: |
| void OnDidCreateMetricsLog() override; |
| + bool HasInitialStabilityMetrics() override; |
| void RecordHistogramSnapshots( |
| base::HistogramSnapshotManager* snapshot_manager) override; |
| + void RecordStabilityHistogramSnapshots( |
| + base::HistogramSnapshotManager* snapshot_manager) override; |
| // A task-runner capable of performing I/O. |
| scoped_refptr<base::TaskRunner> task_runner_; |
| @@ -143,6 +161,11 @@ class FileMetricsProvider : public metrics::MetricsProvider { |
| // A list of files that have data to be read and reported. |
| FileInfoList files_to_read_; |
| + // A list of files 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. |
| + FileInfoList files_for_previous_; |
|
Ilya Sherman
2016/05/04 06:48:08
nit: s/for_previous/for_previous_runs
bcwhite
2016/05/04 14:12:51
Done.
|
| + |
| // The preferences-service used to store persistent state about files. |
| PrefService* pref_service_; |