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

Side by Side Diff: components/metrics/metrics_state_manager.cc

Issue 945603003: Add a histogram to debug metrics entropy source use. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 unified diff | Download patch
« no previous file with comments | « components/metrics/metrics_state_manager.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/metrics/metrics_state_manager.h" 5 #include "components/metrics/metrics_state_manager.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/guid.h" 8 #include "base/guid.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/metrics/sparse_histogram.h" 10 #include "base/metrics/sparse_histogram.h"
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 // entropy source to get the final entropy source. Otherwise, only use the low 154 // entropy source to get the final entropy source. Otherwise, only use the low
155 // entropy source. 155 // entropy source.
156 // This has two useful properties: 156 // This has two useful properties:
157 // 1) It makes the entropy source less identifiable for parties that do not 157 // 1) It makes the entropy source less identifiable for parties that do not
158 // know the low entropy source. 158 // know the low entropy source.
159 // 2) It makes the final entropy source resettable. 159 // 2) It makes the final entropy source resettable.
160 const int low_entropy_source_value = GetLowEntropySource(); 160 const int low_entropy_source_value = GetLowEntropySource();
161 UMA_HISTOGRAM_SPARSE_SLOWLY("UMA.LowEntropySourceValue", 161 UMA_HISTOGRAM_SPARSE_SLOWLY("UMA.LowEntropySourceValue",
162 low_entropy_source_value); 162 low_entropy_source_value);
163 if (IsMetricsReportingEnabled()) { 163 if (IsMetricsReportingEnabled()) {
164 if (entropy_source_returned_ == ENTROPY_SOURCE_NONE) 164 UpdateEntropySourceReturnedValue(ENTROPY_SOURCE_HIGH);
165 entropy_source_returned_ = ENTROPY_SOURCE_HIGH;
166 const std::string high_entropy_source = 165 const std::string high_entropy_source =
167 client_id_ + base::IntToString(low_entropy_source_value); 166 client_id_ + base::IntToString(low_entropy_source_value);
168 return scoped_ptr<const base::FieldTrial::EntropyProvider>( 167 return scoped_ptr<const base::FieldTrial::EntropyProvider>(
169 new SHA1EntropyProvider(high_entropy_source)); 168 new SHA1EntropyProvider(high_entropy_source));
170 } 169 }
171 170
172 if (entropy_source_returned_ == ENTROPY_SOURCE_NONE) 171 UpdateEntropySourceReturnedValue(ENTROPY_SOURCE_LOW);
173 entropy_source_returned_ = ENTROPY_SOURCE_LOW;
174
175 #if defined(OS_ANDROID) || defined(OS_IOS) 172 #if defined(OS_ANDROID) || defined(OS_IOS)
176 return scoped_ptr<const base::FieldTrial::EntropyProvider>( 173 return scoped_ptr<const base::FieldTrial::EntropyProvider>(
177 new CachingPermutedEntropyProvider(local_state_, 174 new CachingPermutedEntropyProvider(local_state_,
178 low_entropy_source_value, 175 low_entropy_source_value,
179 kMaxLowEntropySize)); 176 kMaxLowEntropySize));
180 #else 177 #else
181 return scoped_ptr<const base::FieldTrial::EntropyProvider>( 178 return scoped_ptr<const base::FieldTrial::EntropyProvider>(
182 new PermutedEntropyProvider(low_entropy_source_value, 179 new PermutedEntropyProvider(low_entropy_source_value,
183 kMaxLowEntropySize)); 180 kMaxLowEntropySize));
184 #endif 181 #endif
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 UMA_HISTOGRAM_BOOLEAN("UMA.GeneratedLowEntropySource", true); 282 UMA_HISTOGRAM_BOOLEAN("UMA.GeneratedLowEntropySource", true);
286 low_entropy_source_ = GenerateLowEntropySource(); 283 low_entropy_source_ = GenerateLowEntropySource();
287 local_state_->SetInteger(prefs::kMetricsLowEntropySource, 284 local_state_->SetInteger(prefs::kMetricsLowEntropySource,
288 low_entropy_source_); 285 low_entropy_source_);
289 local_state_->ClearPref(prefs::kMetricsOldLowEntropySource); 286 local_state_->ClearPref(prefs::kMetricsOldLowEntropySource);
290 CachingPermutedEntropyProvider::ClearCache(local_state_); 287 CachingPermutedEntropyProvider::ClearCache(local_state_);
291 288
292 return low_entropy_source_; 289 return low_entropy_source_;
293 } 290 }
294 291
292 void MetricsStateManager::UpdateEntropySourceReturnedValue(
293 EntropySourceType type) {
294 if (entropy_source_returned_ != ENTROPY_SOURCE_NONE)
295 return;
296
297 entropy_source_returned_ = type;
298 UMA_HISTOGRAM_ENUMERATION("UMA.EntropySourceType", type,
299 ENTROPY_SOURCE_ENUM_SIZE);
300 }
301
295 void MetricsStateManager::ResetMetricsIDsIfNecessary() { 302 void MetricsStateManager::ResetMetricsIDsIfNecessary() {
296 if (!local_state_->GetBoolean(prefs::kMetricsResetIds)) 303 if (!local_state_->GetBoolean(prefs::kMetricsResetIds))
297 return; 304 return;
298 305
299 UMA_HISTOGRAM_BOOLEAN("UMA.MetricsIDsReset", true); 306 UMA_HISTOGRAM_BOOLEAN("UMA.MetricsIDsReset", true);
300 307
301 DCHECK(client_id_.empty()); 308 DCHECK(client_id_.empty());
302 DCHECK_EQ(kLowEntropySourceNotSet, low_entropy_source_); 309 DCHECK_EQ(kLowEntropySourceNotSet, low_entropy_source_);
303 310
304 local_state_->ClearPref(prefs::kMetricsClientID); 311 local_state_->ClearPref(prefs::kMetricsClientID);
305 local_state_->ClearPref(prefs::kMetricsLowEntropySource); 312 local_state_->ClearPref(prefs::kMetricsLowEntropySource);
306 local_state_->ClearPref(prefs::kMetricsResetIds); 313 local_state_->ClearPref(prefs::kMetricsResetIds);
307 314
308 // Also clear the backed up client info. 315 // Also clear the backed up client info.
309 store_client_info_.Run(ClientInfo()); 316 store_client_info_.Run(ClientInfo());
310 } 317 }
311 318
312 } // namespace metrics 319 } // namespace metrics
OLDNEW
« no previous file with comments | « components/metrics/metrics_state_manager.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698