Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(740)

Unified Diff: components/metrics/file_metrics_provider.h

Issue 1891913002: Support saving browser metrics to disk and reading them during next run. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed some unnecessary includes Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..f330d878ce4ec2b40405231cb97be111c602a879 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, AccessInitialMetrics);
// 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 RecordInitialHistogramSnapshots(
+ 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_run_;
+
// The preferences-service used to store persistent state about files.
PrefService* pref_service_;
« no previous file with comments | « chrome/browser/metrics/chrome_metrics_service_client.cc ('k') | components/metrics/file_metrics_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698