Make CachingPermutedEntropyProvider a subclass of PermutedEntropyProvider.

This is a pre-cursor to moving CachingPermutedEntropyProvider
to a separate file. Done in a separate CL to make it easier
to review.

BUG=266007
TEST=Existing unit tests.

Review URL: https://chromiumcodereview.appspot.com/21248003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214708 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/common/metrics/entropy_provider.cc b/chrome/common/metrics/entropy_provider.cc
index 1c19cd2..8eab21e 100644
--- a/chrome/common/metrics/entropy_provider.cc
+++ b/chrome/common/metrics/entropy_provider.cc
@@ -109,22 +109,23 @@
   if (randomization_seed == 0)
     randomization_seed = HashName(trial_name);
 
+  return GetPermutedValue(randomization_seed) /
+         static_cast<double>(low_entropy_source_max_);
+}
+
+uint16 PermutedEntropyProvider::GetPermutedValue(
+    uint32 randomization_seed) const {
   std::vector<uint16> mapping(low_entropy_source_max_);
   internal::PermuteMappingUsingRandomizationSeed(randomization_seed, &mapping);
-
-  return mapping[low_entropy_source_] /
-         static_cast<double>(low_entropy_source_max_);
+  return mapping[low_entropy_source_];
 }
 
 CachingPermutedEntropyProvider::CachingPermutedEntropyProvider(
     PrefService* local_state,
     uint16 low_entropy_source,
     size_t low_entropy_source_max)
-    : local_state_(local_state),
-      low_entropy_source_(low_entropy_source),
-      low_entropy_source_max_(low_entropy_source_max) {
-  DCHECK_LT(low_entropy_source, low_entropy_source_max);
-  DCHECK_LE(low_entropy_source_max, std::numeric_limits<uint16>::max());
+    : PermutedEntropyProvider(low_entropy_source, low_entropy_source_max),
+      local_state_(local_state) {
   ReadFromLocalState();
 }
 
@@ -143,24 +144,16 @@
   local_state->ClearPref(prefs::kMetricsPermutedEntropyCache);
 }
 
-double CachingPermutedEntropyProvider::GetEntropyForTrial(
-    const std::string& trial_name,
+uint16 CachingPermutedEntropyProvider::GetPermutedValue(
     uint32 randomization_seed) const {
   DCHECK(thread_checker_.CalledOnValidThread());
 
-  if (randomization_seed == 0)
-    randomization_seed = HashName(trial_name);
-
   uint16 value = 0;
   if (!FindValue(randomization_seed, &value)) {
-    std::vector<uint16> mapping(low_entropy_source_max_);
-    internal::PermuteMappingUsingRandomizationSeed(randomization_seed,
-                                                   &mapping);
-    value = mapping[low_entropy_source_];
+    value = PermutedEntropyProvider::GetPermutedValue(randomization_seed);
     AddToCache(randomization_seed, value);
   }
-
-  return value / static_cast<double>(low_entropy_source_max_);
+  return value;
 }
 
 void CachingPermutedEntropyProvider::ReadFromLocalState() const {