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

Unified Diff: chrome/common/metrics/caching_permuted_entropy_provider.cc

Issue 293623003: [Metrics] Move CachingPermutedEntropyProvider into the variations component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add a newline Created 6 years, 7 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
Index: chrome/common/metrics/caching_permuted_entropy_provider.cc
diff --git a/chrome/common/metrics/caching_permuted_entropy_provider.cc b/chrome/common/metrics/caching_permuted_entropy_provider.cc
deleted file mode 100644
index 2432f3f97a0d05f91efef290a5728dd805e1d404..0000000000000000000000000000000000000000
--- a/chrome/common/metrics/caching_permuted_entropy_provider.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/common/metrics/caching_permuted_entropy_provider.h"
-
-#include <string>
-
-#include "base/base64.h"
-#include "base/logging.h"
-#include "base/prefs/pref_registry_simple.h"
-#include "base/prefs/pref_service.h"
-#include "chrome/common/pref_names.h"
-
-namespace metrics {
-
-CachingPermutedEntropyProvider::CachingPermutedEntropyProvider(
- PrefService* local_state,
- uint16 low_entropy_source,
- size_t low_entropy_source_max)
- : PermutedEntropyProvider(low_entropy_source, low_entropy_source_max),
- local_state_(local_state) {
- ReadFromLocalState();
-}
-
-CachingPermutedEntropyProvider::~CachingPermutedEntropyProvider() {
-}
-
-// static
-void CachingPermutedEntropyProvider::RegisterPrefs(
- PrefRegistrySimple* registry) {
- registry->RegisterStringPref(prefs::kMetricsPermutedEntropyCache,
- std::string());
-}
-
-// static
-void CachingPermutedEntropyProvider::ClearCache(PrefService* local_state) {
- local_state->ClearPref(prefs::kMetricsPermutedEntropyCache);
-}
-
-uint16 CachingPermutedEntropyProvider::GetPermutedValue(
- uint32 randomization_seed) const {
- DCHECK(thread_checker_.CalledOnValidThread());
-
- uint16 value = 0;
- if (!FindValue(randomization_seed, &value)) {
- value = PermutedEntropyProvider::GetPermutedValue(randomization_seed);
- AddToCache(randomization_seed, value);
- }
- return value;
-}
-
-void CachingPermutedEntropyProvider::ReadFromLocalState() const {
- const std::string base64_cache_data =
- local_state_->GetString(prefs::kMetricsPermutedEntropyCache);
- std::string cache_data;
- if (!base::Base64Decode(base64_cache_data, &cache_data) ||
- !cache_.ParseFromString(cache_data)) {
- local_state_->ClearPref(prefs::kMetricsPermutedEntropyCache);
- NOTREACHED();
- }
-}
-
-void CachingPermutedEntropyProvider::UpdateLocalState() const {
- std::string serialized;
- cache_.SerializeToString(&serialized);
-
- std::string base64_encoded;
- base::Base64Encode(serialized, &base64_encoded);
- local_state_->SetString(prefs::kMetricsPermutedEntropyCache, base64_encoded);
-}
-
-void CachingPermutedEntropyProvider::AddToCache(uint32 randomization_seed,
- uint16 value) const {
- PermutedEntropyCache::Entry* entry;
- const int kMaxSize = 25;
- if (cache_.entry_size() >= kMaxSize) {
- // If the cache is full, evict the first entry, swapping later entries in
- // to take its place. This effectively creates a FIFO cache, which is good
- // enough here because the expectation is that there shouldn't be more than
- // |kMaxSize| field trials at any given time, so eviction should happen very
- // rarely, only as new trials are introduced, evicting old expired trials.
- for (int i = 1; i < kMaxSize; ++i)
- cache_.mutable_entry()->SwapElements(i - 1, i);
- entry = cache_.mutable_entry(kMaxSize - 1);
- } else {
- entry = cache_.add_entry();
- }
-
- entry->set_randomization_seed(randomization_seed);
- entry->set_value(value);
-
- UpdateLocalState();
-}
-
-bool CachingPermutedEntropyProvider::FindValue(uint32 randomization_seed,
- uint16* value) const {
- for (int i = 0; i < cache_.entry_size(); ++i) {
- if (cache_.entry(i).randomization_seed() == randomization_seed) {
- *value = cache_.entry(i).value();
- return true;
- }
- }
- return false;
-}
-
-} // namespace metrics

Powered by Google App Engine
This is Rietveld 408576698