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

Unified Diff: chrome/common/metrics/entropy_provider.h

Issue 23097007: Create variations target that depends on base. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 4 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/entropy_provider.h
===================================================================
--- chrome/common/metrics/entropy_provider.h (revision 220309)
+++ chrome/common/metrics/entropy_provider.h (working copy)
@@ -1,94 +0,0 @@
-// Copyright (c) 2012 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.
-
-#ifndef CHROME_COMMON_METRICS_ENTROPY_PROVIDER_H_
-#define CHROME_COMMON_METRICS_ENTROPY_PROVIDER_H_
-
-#include <functional>
-#include <string>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/metrics/field_trial.h"
-#include "third_party/mt19937ar/mt19937ar.h"
-
-namespace metrics {
-
-// Internals of entropy_provider.cc exposed for testing.
-namespace internal {
-
-// A functor that generates random numbers based on a seed, using the Mersenne
-// Twister algorithm. Suitable for use with std::random_shuffle().
-struct SeededRandGenerator : std::unary_function<uint32, uint32> {
- explicit SeededRandGenerator(uint32 seed);
- ~SeededRandGenerator();
-
- // Returns a random number in range [0, range).
- uint32 operator()(uint32 range);
-
- MersenneTwister mersenne_twister_;
-};
-
-// Fills |mapping| to create a bijection of values in the range of
-// [0, |mapping.size()|), permuted based on |randomization_seed|.
-void PermuteMappingUsingRandomizationSeed(uint32 randomization_seed,
- std::vector<uint16>* mapping);
-
-} // namespace internal
-
-// SHA1EntropyProvider is an entropy provider suitable for high entropy
-// sources. It works by taking the first 64 bits of the SHA1 hash of the
-// entropy source concatenated with the trial name and using that for the
-// final entropy value.
-class SHA1EntropyProvider : public base::FieldTrial::EntropyProvider {
- public:
- // Creates a SHA1EntropyProvider with the given |entropy_source|, which
- // should contain a large amount of entropy - for example, a textual
- // representation of a persistent randomly-generated 128-bit value.
- explicit SHA1EntropyProvider(const std::string& entropy_source);
- virtual ~SHA1EntropyProvider();
-
- // base::FieldTrial::EntropyProvider implementation:
- virtual double GetEntropyForTrial(const std::string& trial_name,
- uint32 randomization_seed) const OVERRIDE;
-
- private:
- std::string entropy_source_;
-
- DISALLOW_COPY_AND_ASSIGN(SHA1EntropyProvider);
-};
-
-// PermutedEntropyProvider is an entropy provider suitable for low entropy
-// sources (below 16 bits). It uses the field trial name to generate a
-// permutation of a mapping array from an initial entropy value to a new value.
-// Note: This provider's performance is O(2^n), where n is the number of bits
-// in the entropy source.
-class PermutedEntropyProvider : public base::FieldTrial::EntropyProvider {
- public:
- // Creates a PermutedEntropyProvider with the given |low_entropy_source|,
- // which should have a value in the range of [0, low_entropy_source_max).
- PermutedEntropyProvider(uint16 low_entropy_source,
- size_t low_entropy_source_max);
- virtual ~PermutedEntropyProvider();
-
- // base::FieldTrial::EntropyProvider implementation:
- virtual double GetEntropyForTrial(const std::string& trial_name,
- uint32 randomization_seed) const OVERRIDE;
-
- protected:
- // Performs the permutation algorithm and returns the permuted value that
- // corresponds to |low_entropy_source_|.
- virtual uint16 GetPermutedValue(uint32 randomization_seed) const;
-
- private:
- uint16 low_entropy_source_;
- size_t low_entropy_source_max_;
-
- DISALLOW_COPY_AND_ASSIGN(PermutedEntropyProvider);
-};
-
-} // namespace metrics
-
-#endif // CHROME_COMMON_METRICS_ENTROPY_PROVIDER_H_
« no previous file with comments | « chrome/common/metrics/caching_permuted_entropy_provider.h ('k') | chrome/common/metrics/entropy_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698