blob: 0042d2e7d95b99e570cfa1c65acded4abebf037d [file] [log] [blame]
holte1bf273c2017-02-23 00:22:281// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_METRICS_ENVIRONMENT_RECORDER_H_
6#define COMPONENTS_METRICS_ENVIRONMENT_RECORDER_H_
7
8#include <string>
9
10#include "base/macros.h"
11
12class PrefService;
13class PrefRegistrySimple;
14
15namespace metrics {
16
17class SystemProfileProto;
18
19// Stores system profile information to prefs for creating stability logs
20// in the next launch of chrome, and reads data from previous launches.
21class EnvironmentRecorder {
22 public:
23 explicit EnvironmentRecorder(PrefService* local_state);
24 ~EnvironmentRecorder();
25
26 // Serializes the system profile and records it in prefs for the next
27 // session. Returns the uncompressed serialized proto for passing to crash
28 // reports, or the empty string if the proto can't be serialized.
29 std::string SerializeAndRecordEnvironmentToPrefs(
30 const SystemProfileProto& system_profile);
31
32 // Loads the system_profile data stored in a previous chrome session, and
33 // stores it in the |system_profile| object.
34 // Returns true iff a system profile was successfully read.
35 bool LoadEnvironmentFromPrefs(SystemProfileProto* system_profile);
36
37 // Deletes system profile data from prefs.
38 void ClearEnvironmentFromPrefs();
39
40 // Stores the buildtime of the current binary and version in prefs.
41 void SetBuildtimeAndVersion(int64_t buildtime, const std::string& version);
42
43 // Gets the buildtime stored in prefs.
44 int64_t GetLastBuildtime();
45
46 // Gets the version stored in prefs.
47 std::string GetLastVersion();
48
49 static void RegisterPrefs(PrefRegistrySimple* registry);
50
51 private:
52 PrefService* local_state_;
53
54 DISALLOW_COPY_AND_ASSIGN(EnvironmentRecorder);
55};
56
57} // namespace metrics
58
59#endif // COMPONENTS_METRICS_ENVIRONMENT_RECORDER_H_