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

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

Issue 10830241: Inform GetEntropySource of whether or not metrics reporting will be enabled. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: thakis nit Created 8 years, 4 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
« 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
diff --git a/chrome/browser/metrics/metrics_service.h b/chrome/browser/metrics/metrics_service.h
index 90e0ea5ec2cce2de4f8a59fe04821a906c1351da..7663496894a26560d108a3da4faf1db34a54a242 100644
--- a/chrome/browser/metrics/metrics_service.h
+++ b/chrome/browser/metrics/metrics_service.h
@@ -87,10 +87,15 @@ class MetricsService
std::string GetClientId();
// Returns the preferred entropy source used to seed persistent activities
- // based on whether or not metrics reporting is permitted on this client. If
- // it is permitted, this returns the client ID concatenated with the low
- // entropy source. Otherwise, this just returns the low entropy source.
- std::string GetEntropySource();
+ // based on whether or not metrics reporting will permitted on this client.
+ // The caller must determine if metrics reporting will be enabled for this
+ // client and pass that state in as |reporting_will_be_enabled|. If
+ // |reporting_will_be_enabled| is true, this method returns the client ID
+ // concatenated with the low entropy source. Otherwise, this method just
+ // returns the low entropy source. Note that this reporting state can not be
+ // checked by reporting_active() because this method may need to be called
+ // before the MetricsService needs to be started.
+ std::string GetEntropySource(bool reporting_will_be_enabled);
// Force the client ID to be generated. This is useful in case it's needed
// before recording.
@@ -177,6 +182,15 @@ class MetricsService
NEED_TO_SHUTDOWN = ~CLEANLY_SHUTDOWN
};
+ // Designates which entropy source was returned from this MetricsService.
+ // This is used for testing to validate that we return the correct source
+ // depending on the state of the service.
+ enum EntropySourceReturned {
+ LAST_ENTROPY_NONE,
+ LAST_ENTROPY_LOW,
+ LAST_ENTROPY_HIGH,
+ };
+
// First part of the init task. Called on the FILE thread to load hardware
// class information.
static void InitTaskGetHardwareClass(base::WeakPtr<MetricsService> self,
@@ -213,6 +227,13 @@ class MetricsService
// generate the entropy source value if it has not been called before.
int GetLowEntropySource();
+ // Returns the last entropy source that was returned by this service since
+ // start up, or NONE if neither was returned yet. This is exposed for testing
+ // only.
+ EntropySourceReturned entropy_source_returned() const {
+ return entropy_source_returned_;
+ }
+
// When we start a new version of Chromium (different from our last run), we
// need to discard the old crash stats so that we don't attribute crashes etc.
// in the old version to the current version (via current logs).
@@ -462,12 +483,18 @@ class MetricsService
scoped_refptr<chromeos::ExternalMetrics> external_metrics_;
#endif
+ // The last entropy source returned by this service, used for testing.
+ EntropySourceReturned entropy_source_returned_;
+
// Reduntant marker to check that we completed our shutdown, and set the
// exited-cleanly bit in the prefs.
static ShutdownCleanliness clean_shutdown_status_;
FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, ClientIdCorrectlyFormatted);
FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, IsPluginProcess);
+ FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, CheckLowEntropySourceUsed);
+ FRIEND_TEST_ALL_PREFIXES(MetricsServiceReportingTest,
+ CheckHighEntropySourceUsed);
DISALLOW_COPY_AND_ASSIGN(MetricsService);
};
« 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