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

Unified Diff: chrome/browser/metrics/metrics_service.h

Issue 81603002: Send UMA stability stats in a separate UMA log on startup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years 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
« no previous file with comments | « chrome/browser/chrome_browser_main.cc ('k') | chrome/browser/metrics/metrics_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/metrics/metrics_service.h
===================================================================
--- chrome/browser/metrics/metrics_service.h (revision 240851)
+++ chrome/browser/metrics/metrics_service.h (working copy)
@@ -111,9 +111,21 @@
SHUTDOWN_COMPLETE = 700,
};
+ enum ReportingState {
+ REPORTING_ENABLED,
+ REPORTING_DISABLED,
+ };
+
MetricsService();
virtual ~MetricsService();
+ // Initializes metrics recording state. Updates various bookkeeping values in
+ // prefs and sets up the scheduler. This is a separate function rather than
+ // being done by the constructor so that field trials could be created before
+ // this is run. Takes |reporting_state| parameter which specifies whether UMA
+ // is enabled.
+ void InitializeMetricsRecordingState(ReportingState reporting_state);
+
// Starts the metrics system, turning on recording and uploading of metrics.
// Should be called when starting up with metrics enabled, or when metrics
// are turned on.
@@ -153,7 +165,7 @@
// because this method may need to be called before the MetricsService needs
// to be started.
scoped_ptr<const base::FieldTrial::EntropyProvider> CreateEntropyProvider(
- bool reporting_will_be_enabled);
+ ReportingState reporting_state);
// Force the client ID to be generated. This is useful in case it's needed
// before recording.
@@ -217,10 +229,6 @@
void CountBrowserCrashDumpAttempts();
#endif // OS_WIN
- // Save any unsent logs into a persistent store in a pref. We always do this
- // at shutdown, but we can do it as we reduce the list as well.
- void StoreUnsentLogs();
-
#if defined(OS_CHROMEOS)
// Start the external metrics service, which collects metrics from Chrome OS
// and passes them to UMA.
@@ -253,12 +261,14 @@
// The MetricsService has a lifecycle that is stored as a state.
// See metrics_service.cc for description of this lifecycle.
enum State {
- INITIALIZED, // Constructor was called.
- INIT_TASK_SCHEDULED, // Waiting for deferred init tasks to complete.
- INIT_TASK_DONE, // Waiting for timer to send initial log.
- INITIAL_LOG_READY, // Initial log generated, and waiting for reply.
- SENDING_OLD_LOGS, // Sending unsent logs from previous session.
- SENDING_CURRENT_LOGS, // Sending standard current logs as they acrue.
+ INITIALIZED, // Constructor was called.
+ INIT_TASK_SCHEDULED, // Waiting for deferred init tasks to
+ // complete.
+ INIT_TASK_DONE, // Waiting for timer to send initial log.
+ SENDING_INITIAL_STABILITY_LOG, // Initial stability log being sent.
+ SENDING_INITIAL_METRICS_LOG, // Initial metrics log being sent.
+ SENDING_OLD_LOGS, // Sending unsent logs from last session.
+ SENDING_CURRENT_LOGS, // Sending ongoing logs as they accrue.
};
enum ShutdownCleanliness {
@@ -349,7 +359,7 @@
void HandleIdleSinceLastTransmission(bool in_idle);
// Set up client ID, session ID, etc.
- void InitializeMetricsState();
+ void InitializeMetricsState(ReportingState reporting_state);
// Generates a new client ID to use to identify self to metrics server.
static std::string GenerateClientID();
@@ -393,9 +403,16 @@
// (depending on |state_|), and stages it for upload.
void StageNewLog();
- // Record stats, client ID, Session ID, etc. in a special "first" log.
- void PrepareInitialLog();
+ // Prepares the initial stability log, which is only logged when the previous
+ // run of Chrome crashed. This log contains any stability metrics left over
+ // from that previous run, and only these stability metrics. It uses the
+ // system profile from the previous session.
+ void PrepareInitialStabilityLog();
+ // Prepares the initial metrics log, which includes startup histograms and
+ // profiler data, as well as incremental stability-related metrics.
+ void PrepareInitialMetricsLog(MetricsLog::LogType log_type);
+
// Uploads the currently staged log (which must be non-null).
void SendStagedLog();
@@ -471,10 +488,13 @@
// be cut, and logs are neither persisted nor uploaded.
bool test_mode_active_;
- // The progession of states made by the browser are recorded in the following
+ // The progression of states made by the browser are recorded in the following
// state.
State state_;
+ // Whether the initial stability log has been recorded during startup.
+ bool has_initial_stability_log_;
+
// Chrome OS hardware class (e.g., hardware qualification ID). This
// class identifies the configured system components such as CPU,
// WiFi adapter, etc. For non Chrome OS hosts, this will be an
@@ -487,8 +507,10 @@
// Google Update statistics, which were retrieved on a blocking pool thread.
GoogleUpdateMetrics google_update_metrics_;
- // The initial log, used to record startup metrics.
- scoped_ptr<MetricsLog> initial_log_;
+ // The initial metrics log, used to record startup metrics (histograms and
+ // profiler data). Note that if a crash occurred in the previous session, an
+ // initial stability log may be sent before this.
+ scoped_ptr<MetricsLog> initial_metrics_log_;
// The outstanding transmission appears as a URL Fetch operation.
scoped_ptr<net::URLFetcher> current_fetch_;
« no previous file with comments | « chrome/browser/chrome_browser_main.cc ('k') | chrome/browser/metrics/metrics_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698