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

Side by Side Diff: chrome/browser/metrics/metrics_log_serializer.cc

Issue 104493005: Update some uses of Value in chrome/browser to use the base:: namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/metrics/metrics_log_serializer.h" 5 #include "chrome/browser/metrics/metrics_log_serializer.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/md5.h" 10 #include "base/md5.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 DCHECK(logs); 86 DCHECK(logs);
87 PrefService* local_state = g_browser_process->local_state(); 87 PrefService* local_state = g_browser_process->local_state();
88 DCHECK(local_state); 88 DCHECK(local_state);
89 89
90 const char* pref; 90 const char* pref;
91 if (log_type == MetricsLogBase::INITIAL_LOG) 91 if (log_type == MetricsLogBase::INITIAL_LOG)
92 pref = prefs::kMetricsInitialLogs; 92 pref = prefs::kMetricsInitialLogs;
93 else 93 else
94 pref = prefs::kMetricsOngoingLogs; 94 pref = prefs::kMetricsOngoingLogs;
95 95
96 const ListValue* unsent_logs = local_state->GetList(pref); 96 const base::ListValue* unsent_logs = local_state->GetList(pref);
97 ReadLogsFromPrefList(*unsent_logs, logs); 97 ReadLogsFromPrefList(*unsent_logs, logs);
98 } 98 }
99 99
100 // static 100 // static
101 void MetricsLogSerializer::WriteLogsToPrefList( 101 void MetricsLogSerializer::WriteLogsToPrefList(
102 const std::vector<MetricsLogManager::SerializedLog>& local_list, 102 const std::vector<MetricsLogManager::SerializedLog>& local_list,
103 size_t list_length_limit, 103 size_t list_length_limit,
104 size_t byte_limit, 104 size_t byte_limit,
105 base::ListValue* list) { 105 base::ListValue* list) {
106 // One of the limit arguments must be non-zero. 106 // One of the limit arguments must be non-zero.
(...skipping 17 matching lines...) Expand all
124 break; 124 break;
125 bytes_used += log_size; 125 bytes_used += log_size;
126 --start; 126 --start;
127 } 127 }
128 } 128 }
129 DCHECK_LT(start, local_list.size()); 129 DCHECK_LT(start, local_list.size());
130 if (start >= local_list.size()) 130 if (start >= local_list.size())
131 return; 131 return;
132 132
133 // Store size at the beginning of the list. 133 // Store size at the beginning of the list.
134 list->Append(Value::CreateIntegerValue(local_list.size() - start)); 134 list->Append(base::Value::CreateIntegerValue(local_list.size() - start));
135 135
136 base::MD5Context ctx; 136 base::MD5Context ctx;
137 base::MD5Init(&ctx); 137 base::MD5Init(&ctx);
138 std::string encoded_log; 138 std::string encoded_log;
139 for (std::vector<MetricsLogManager::SerializedLog>::const_iterator it = 139 for (std::vector<MetricsLogManager::SerializedLog>::const_iterator it =
140 local_list.begin() + start; 140 local_list.begin() + start;
141 it != local_list.end(); ++it) { 141 it != local_list.end(); ++it) {
142 // We encode the compressed log as Value::CreateStringValue() expects to 142 // We encode the compressed log as Value::CreateStringValue() expects to
143 // take a valid UTF8 string. 143 // take a valid UTF8 string.
144 base::Base64Encode(it->log_text(), &encoded_log); 144 base::Base64Encode(it->log_text(), &encoded_log);
145 base::MD5Update(&ctx, encoded_log); 145 base::MD5Update(&ctx, encoded_log);
146 list->Append(Value::CreateStringValue(encoded_log)); 146 list->Append(base::Value::CreateStringValue(encoded_log));
147 } 147 }
148 148
149 // Append hash to the end of the list. 149 // Append hash to the end of the list.
150 base::MD5Digest digest; 150 base::MD5Digest digest;
151 base::MD5Final(&digest, &ctx); 151 base::MD5Final(&digest, &ctx);
152 list->Append(Value::CreateStringValue(base::MD5DigestToBase16(digest))); 152 list->Append(base::Value::CreateStringValue(base::MD5DigestToBase16(digest)));
153 DCHECK(list->GetSize() >= 3); // Minimum of 3 elements (size, data, hash). 153 DCHECK(list->GetSize() >= 3); // Minimum of 3 elements (size, data, hash).
154 } 154 }
155 155
156 // static 156 // static
157 MetricsLogSerializer::LogReadStatus MetricsLogSerializer::ReadLogsFromPrefList( 157 MetricsLogSerializer::LogReadStatus MetricsLogSerializer::ReadLogsFromPrefList(
158 const ListValue& list, 158 const base::ListValue& list,
159 std::vector<MetricsLogManager::SerializedLog>* local_list) { 159 std::vector<MetricsLogManager::SerializedLog>* local_list) {
160 if (list.GetSize() == 0) 160 if (list.GetSize() == 0)
161 return MakeRecallStatusHistogram(LIST_EMPTY); 161 return MakeRecallStatusHistogram(LIST_EMPTY);
162 if (list.GetSize() < 3) 162 if (list.GetSize() < 3)
163 return MakeRecallStatusHistogram(LIST_SIZE_TOO_SMALL); 163 return MakeRecallStatusHistogram(LIST_SIZE_TOO_SMALL);
164 164
165 // The size is stored at the beginning of the list. 165 // The size is stored at the beginning of the list.
166 int size; 166 int size;
167 bool valid = (*list.begin())->GetAsInteger(&size); 167 bool valid = (*list.begin())->GetAsInteger(&size);
168 if (!valid) 168 if (!valid)
169 return MakeRecallStatusHistogram(LIST_SIZE_MISSING); 169 return MakeRecallStatusHistogram(LIST_SIZE_MISSING);
170 // Account for checksum and size included in the list. 170 // Account for checksum and size included in the list.
171 if (static_cast<unsigned int>(size) != 171 if (static_cast<unsigned int>(size) !=
172 list.GetSize() - kChecksumEntryCount) { 172 list.GetSize() - kChecksumEntryCount) {
173 return MakeRecallStatusHistogram(LIST_SIZE_CORRUPTION); 173 return MakeRecallStatusHistogram(LIST_SIZE_CORRUPTION);
174 } 174 }
175 175
176 // Allocate strings for all of the logs we are going to read in. 176 // Allocate strings for all of the logs we are going to read in.
177 // Do this ahead of time so that we can decode the string values directly into 177 // Do this ahead of time so that we can decode the string values directly into
178 // the elements of |local_list|, and thereby avoid making copies of the 178 // the elements of |local_list|, and thereby avoid making copies of the
179 // serialized logs, which can be fairly large. 179 // serialized logs, which can be fairly large.
180 DCHECK(local_list->empty()); 180 DCHECK(local_list->empty());
181 local_list->resize(size); 181 local_list->resize(size);
182 182
183 base::MD5Context ctx; 183 base::MD5Context ctx;
184 base::MD5Init(&ctx); 184 base::MD5Init(&ctx);
185 std::string encoded_log; 185 std::string encoded_log;
186 size_t local_index = 0; 186 size_t local_index = 0;
187 for (ListValue::const_iterator it = list.begin() + 1; 187 for (base::ListValue::const_iterator it = list.begin() + 1;
188 it != list.end() - 1; // Last element is the checksum. 188 it != list.end() - 1; // Last element is the checksum.
189 ++it, ++local_index) { 189 ++it, ++local_index) {
190 bool valid = (*it)->GetAsString(&encoded_log); 190 bool valid = (*it)->GetAsString(&encoded_log);
191 if (!valid) { 191 if (!valid) {
192 local_list->clear(); 192 local_list->clear();
193 return MakeRecallStatusHistogram(LOG_STRING_CORRUPTION); 193 return MakeRecallStatusHistogram(LOG_STRING_CORRUPTION);
194 } 194 }
195 195
196 base::MD5Update(&ctx, encoded_log); 196 base::MD5Update(&ctx, encoded_log);
197 197
(...skipping 16 matching lines...) Expand all
214 if (!valid) { 214 if (!valid) {
215 local_list->clear(); 215 local_list->clear();
216 return MakeRecallStatusHistogram(CHECKSUM_STRING_CORRUPTION); 216 return MakeRecallStatusHistogram(CHECKSUM_STRING_CORRUPTION);
217 } 217 }
218 if (recovered_md5 != base::MD5DigestToBase16(digest)) { 218 if (recovered_md5 != base::MD5DigestToBase16(digest)) {
219 local_list->clear(); 219 local_list->clear();
220 return MakeRecallStatusHistogram(CHECKSUM_CORRUPTION); 220 return MakeRecallStatusHistogram(CHECKSUM_CORRUPTION);
221 } 221 }
222 return MakeRecallStatusHistogram(RECALL_SUCCESS); 222 return MakeRecallStatusHistogram(RECALL_SUCCESS);
223 } 223 }
OLDNEW
« no previous file with comments | « chrome/browser/metrics/metrics_log.cc ('k') | chrome/browser/metrics/metrics_log_serializer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698