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

Unified Diff: components/metrics/persisted_logs.h

Issue 318203004: Make MetricsService save compressed logs to local state. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 6 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 | « components/metrics/net/net_metrics_log_uploader.cc ('k') | components/metrics/persisted_logs.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/metrics/persisted_logs.h
===================================================================
--- components/metrics/persisted_logs.h (revision 276253)
+++ components/metrics/persisted_logs.h (working copy)
@@ -42,15 +42,19 @@
PROVISIONAL_STORE, // A store operation that can be easily reverted later.
};
- // Constructs a PersistedLogs that stores data in |local_state| under
- // the preference |pref_name|. Calling code is responsible for ensuring that
- // the lifetime of |local_state| is longer than the lifetime of PersistedLogs.
- // When saving logs to disk, we will store either the first |min_log_count|
- // logs, or at least |min_log_bytes| bytes of logs, whichever is more.
- // If the optional max_log_size parameter is non-zero, all logs larger than
+ // Constructs a PersistedLogs that stores data in |local_state| under the
+ // preference |pref_name| and also reads from legacy pref |old_pref_name|.
+ // Calling code is responsible for ensuring that the lifetime of |local_state|
+ // is longer than the lifetime of PersistedLogs.
+ //
+ // When saving logs to disk, stores either the first |min_log_count| logs, or
+ // at least |min_log_bytes| bytes of logs, whichever is greater.
+ //
+ // If the optional |max_log_size| parameter is non-zero, all logs larger than
// that limit will be dropped before logs are written to disk.
PersistedLogs(PrefService* local_state,
const char* pref_name,
+ const char* old_pref_name,
size_t min_log_count,
size_t min_log_bytes,
size_t max_log_size);
@@ -62,8 +66,8 @@
// Reads the list from the preference.
LogReadStatus DeserializeLogs();
- // Adds a log to the list. |input| will be swapped with an empty string.
- void StoreLog(std::string* input);
+ // Adds a log to the list.
+ void StoreLog(const std::string& log_data);
// Stages the most recent log. The staged_log will remain the same even if
// additional logs are added.
@@ -87,12 +91,14 @@
void DiscardLastProvisionalStore();
// True if a log has been staged.
- bool has_staged_log() const { return !staged_log_.log.empty(); };
+ bool has_staged_log() const {
+ return !staged_log_.compressed_log_data.empty();
+ }
// Returns the element in the front of the list.
const std::string& staged_log() const {
DCHECK(has_staged_log());
- return staged_log_.log;
+ return staged_log_.compressed_log_data;
}
// Returns the element in the front of the list.
@@ -114,14 +120,22 @@
// Reads the list from the ListValue.
LogReadStatus ReadLogsFromPrefList(const base::ListValue& list);
+ // Reads the list from the old pref's ListValue.
+ // TODO(asvitkine): Remove the old pref in M39.
+ LogReadStatus ReadLogsFromOldPrefList(const base::ListValue& list);
+
// A weak pointer to the PrefService object to read and write the preference
// from. Calling code should ensure this object continues to exist for the
// lifetime of the PersistedLogs object.
PrefService* local_state_;
- // The name of the preference this object stores logs in.
+ // The name of the preference to serialize logs to/from.
const char* pref_name_;
+ // The name of the preference to serialize logs from.
+ // TODO(asvitkine): Remove the old pref in M39.
+ const char* old_pref_name_;
+
// We will keep at least this |min_log_count_| logs or |min_log_bytes_| bytes
// of logs, whichever is greater, when writing to disk. These apply after
// skipping logs greater than |max_log_size_|.
@@ -132,14 +146,20 @@
const size_t max_log_size_;
struct LogHashPair {
- // Raw log text, typically a serialized protobuf.
- std::string log;
+ // Initializes the members based on uncompressed |log_data|.
+ void Init(const std::string& log_data);
+
+ // Clears the struct members.
+ void Clear();
+
+ // Swap both log and hash from another LogHashPair.
+ void Swap(LogHashPair* input);
+
+ // Compressed log data - a serialized protobuf that's been gzipped.
+ std::string compressed_log_data;
+
// The SHA1 hash of log, stored to catch errors from memory corruption.
std::string hash;
- // Swap the content of input into log and update the hash.
- void SwapLog(std::string* input);
- // Swap both log and hash from another LogHashPair.
- void Swap(LogHashPair* input);
};
// A list of all of the stored logs, stored with SHA1 hashes to check for
// corruption while they are stored in memory.
« no previous file with comments | « components/metrics/net/net_metrics_log_uploader.cc ('k') | components/metrics/persisted_logs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698