Index: chrome/browser/chromeos/boot_times_loader.h |
diff --git a/chrome/browser/chromeos/boot_times_loader.h b/chrome/browser/chromeos/boot_times_loader.h |
index 854dccdabee2898f80009517cdd8fca85ef657b2..dda6a7249a16fb516ab504eedac19655556e0cc2 100644 |
--- a/chrome/browser/chromeos/boot_times_loader.h |
+++ b/chrome/browser/chromeos/boot_times_loader.h |
@@ -17,6 +17,8 @@ |
#include "content/public/browser/notification_registrar.h" |
#include "content/public/browser/render_widget_host.h" |
+class PrefService; |
+ |
namespace chromeos { |
// BootTimesLoader loads the bootimes of Chrome OS from the file system. |
@@ -82,6 +84,12 @@ class BootTimesLoader : public content::NotificationObserver { |
// Mark that WriteLogoutTimes should handle restart. |
void set_restart_requested() { restart_requested_ = true; } |
+ // This is called on Chrome process startup to write saved logout stats. |
+ void OnChromeProcessStart(); |
+ |
+ // This saves logout-started metric to Local State. |
+ void OnLogoutStarted(PrefService* state); |
+ |
private: |
// BootTimesLoader calls into the Backend on the file thread to load |
// the boot times. |
@@ -119,21 +127,46 @@ class BootTimesLoader : public content::NotificationObserver { |
bool send_to_uma_; |
}; |
- struct Stats { |
+ class Stats { |
public: |
- std::string uptime; |
- std::string disk; |
+ // Initializes stats with current /proc values. |
+ static Stats GetCurrentStats(); |
+ |
+ // Returns JSON representation. |
+ std::string SerializeToString() const; |
+ |
+ // Creates new object from JSON representation. |
+ static Stats DeserializeFromString(const std::string& value); |
+ |
+ const std::string& uptime() const { return uptime_; } |
+ const std::string& disk() const { return disk_; } |
+ |
+ // Writes "uptime in seconds" to result. (This is first field in uptime_.) |
+ // Returns true on successful conversion. |
+ bool uptimeD(double* result) const; |
stevenjb
2014/06/02 15:30:31
It's not clear what the 'D' stands for (double?).
Alexander Alekseev
2014/06/02 18:46:03
Done.
|
+ |
+ void RecordStats(const std::string& name) const; |
+ void RecordStatsWithCallback(const std::string& name, |
+ const base::Closure& callback) const; |
+ |
+ private: |
+ // Runs on BlockingPool |
+ void RecordStatsImpl(const std::string& name) const; |
+ |
+ std::string uptime_; |
+ std::string disk_; |
}; |
- static void RecordStats( |
- const std::string& name, const Stats& stats); |
- static Stats GetCurrentStats(); |
static void WriteTimes(const std::string base_name, |
const std::string uma_name, |
const std::string uma_prefix, |
std::vector<TimeMarker> login_times); |
static void AddMarker(std::vector<TimeMarker>* vector, TimeMarker marker); |
+ // Clear saved logout-started metric in Local State. |
+ // This method is called when logout-state was writen to file. |
+ static void ClearLogoutStartedLastPreference(); |
+ |
// Used to hold the stats at main(). |
Stats chrome_main_stats_; |
scoped_refptr<Backend> backend_; |