Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_config_retrieval_params.cc |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_retrieval_params.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_retrieval_params.cc |
deleted file mode 100644 |
index 64090641cdf95e0743de6e4c4b0acfcd3e7df65a..0000000000000000000000000000000000000000 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_retrieval_params.cc |
+++ /dev/null |
@@ -1,271 +0,0 @@ |
-// Copyright 2015 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 "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_retrieval_params.h" |
- |
-#include "base/metrics/field_trial.h" |
-#include "base/metrics/histogram.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/strings/string_piece.h" |
-#include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_names.h" |
-#include "components/prefs/pref_service.h" |
-#include "components/variations/variations_associated_data.h" |
- |
-namespace { |
- |
-// The trial group prefix for which an experiment is considered enabled. |
-const char kEnabled[] = "Enabled"; |
- |
-// The minimum interval (in seconds) at which the config retrieval can occur. |
-const int kConfigFetchMinimumIntervalSeconds = 300; |
- |
-// The default latency base for retrieving the config. |
-const int kConfigFetchDefaultRoundtripMillisecondsBase = 100; |
- |
-// The default latency base for retrieving the config. |
-const double kConfigFetchDefaultRoundtripMultiplier = 1.0; |
- |
-// The default latency base for retrieving the config. |
-const int kConfigFetchDefaultRoundtripMillisecondsIncrement = 100; |
- |
-// The minimum Data Reduction Proxy configuration expiration. |
-const int kConfigFetchMinimumExpirationSeconds = 5 * 60; |
- |
-// The default Data Reduction Proxy configuration expiration. |
-const int kConfigFetchDefaultExpirationSeconds = 24 * 60 * 60; |
- |
-// Based on a histogram prefix |histogram| and |suffix|, retrieves the |
-// histogram for the expanded histogram name. The histogram is identical to |
-// the used in UMA_HISTOGRAM_COUNTS. |
-base::HistogramBase* GetHistogramWithSuffix(const char* histogram, int suffix) { |
- std::string full_histogram_name = histogram + base::IntToString(suffix); |
- return base::Histogram::FactoryGet( |
- full_histogram_name, 1, 1000000, 50, |
- base::HistogramBase::kUmaTargetedHistogramFlag); |
-} |
- |
-// Retrieves the boolean stored in |variation| from the field trial group |
-// |group|. If the value is not present or cannot be parsed, returns |
-// |default_value|. |
-bool GetVariationBoolWithDefault(const char* group, |
- const char* variation, |
- bool default_value) { |
- std::string variation_value = |
- variations::GetVariationParamValue(group, variation); |
- int64_t variation_numeric; |
- if (variation_value.empty() || |
- !base::StringToInt64(variation_value, &variation_numeric)) { |
- return default_value; |
- } |
- |
- return variation_numeric != 0; |
-} |
- |
-// Retrieves the int64_t stored in |variation| from the field trial group |
-// |group|. If the value is not present, cannot be parsed, or is less than |
-// |min_value|, returns |default_value|. |
-int64_t GetVariationInt64WithDefault(const char* group, |
- const char* variation, |
- int64_t default_value, |
- int64_t min_value) { |
- DCHECK(default_value >= min_value); |
- std::string variation_value = |
- variations::GetVariationParamValue(group, variation); |
- int64_t variation_numeric; |
- if (variation_value.empty() || |
- !base::StringToInt64(variation_value, &variation_numeric) || |
- variation_numeric < min_value) { |
- return default_value; |
- } |
- |
- return variation_numeric; |
-} |
- |
-// Retrieves the double stored in |variation| from the field trial group |
-// |group|. If the value is not present, cannot be parsed, or is less than |
-// |min_value|, returns |default_value|. |
-double GetVariationDoubleWithDefault(const char* group, |
- const char* variation, |
- double default_value, |
- double min_value) { |
- DCHECK(default_value >= min_value); |
- std::string variation_value = |
- variations::GetVariationParamValue(group, variation); |
- double variation_numeric; |
- if (variation_value.empty() || |
- !base::StringToDouble(variation_value, &variation_numeric) || |
- variation_numeric < min_value) { |
- return default_value; |
- } |
- |
- return variation_numeric; |
-} |
- |
-} // namespace |
- |
-namespace data_reduction_proxy { |
- |
-const int kConfigFetchGroups = 10; |
- |
-const char kConfigFetchTrialGroup[] = "DataReductionProxyConfigFetchBytes"; |
- |
-const char kConfigRoundtripMillisecondsBaseParam[] = |
- "config_roundtrip_milliseconds_base"; |
- |
-const char kConfigRoundtripMultiplierParam[] = "config_roundtrip_multiplier"; |
- |
-const char kConfigRoundtripMillisecondsIncrementParam[] = |
- "config_roundtrip_milliseconds_increment"; |
- |
-const char kConfigExpirationSecondsParam[] = "config_expiration_seconds"; |
- |
-const char kConfigAlwaysStaleParam[] = "always_stale"; |
- |
-const int kConfigFetchBufferSeconds = 300; |
- |
-// static |
-scoped_ptr<DataReductionProxyConfigRetrievalParams> |
-DataReductionProxyConfigRetrievalParams::Create(PrefService* pref_service) { |
- std::string group_value = |
- base::FieldTrialList::FindFullName(kConfigFetchTrialGroup); |
- base::StringPiece group = group_value; |
- if (!group.starts_with(kEnabled)) |
- return scoped_ptr<DataReductionProxyConfigRetrievalParams>(); |
- |
- base::Time now = base::Time::Now(); |
- base::Time config_retrieve; |
- bool config_always_stale = GetVariationBoolWithDefault( |
- kConfigFetchTrialGroup, kConfigAlwaysStaleParam, false); |
- if (config_always_stale) { |
- config_retrieve = base::Time(); |
- } else { |
- int64_t config_retrieve_value = |
- pref_service->GetInt64(prefs::kSimulatedConfigRetrieveTime); |
- config_retrieve = base::Time::FromInternalValue(config_retrieve_value); |
- if (config_retrieve > now) |
- config_retrieve = base::Time(); |
- } |
- |
- int64_t config_expiration_interval_seconds = GetVariationInt64WithDefault( |
- kConfigFetchTrialGroup, kConfigExpirationSecondsParam, |
- kConfigFetchDefaultExpirationSeconds, |
- kConfigFetchMinimumExpirationSeconds); |
- base::TimeDelta config_expiration_interval = |
- base::TimeDelta::FromSeconds(config_expiration_interval_seconds); |
- base::Time config_expiration = config_retrieve + config_expiration_interval; |
- std::vector<Variation> variations; |
- bool expired_config = (now > config_expiration); |
- if (expired_config) { |
- config_expiration = now + config_expiration_interval; |
- |
- int64_t config_roundtrip_milliseconds = GetVariationInt64WithDefault( |
- kConfigFetchTrialGroup, kConfigRoundtripMillisecondsBaseParam, |
- kConfigFetchDefaultRoundtripMillisecondsBase, 0); |
- double config_roundtrip_multiplier = GetVariationDoubleWithDefault( |
- kConfigFetchTrialGroup, kConfigRoundtripMultiplierParam, |
- kConfigFetchDefaultRoundtripMultiplier, 1.0); |
- int64_t roundtrip_milliseconds_increment = GetVariationInt64WithDefault( |
- kConfigFetchTrialGroup, kConfigRoundtripMillisecondsIncrementParam, |
- kConfigFetchDefaultRoundtripMillisecondsIncrement, 0); |
- |
- for (int params_index = 0; params_index < kConfigFetchGroups; |
- ++params_index) { |
- base::Time config_retrieved = now + base::TimeDelta::FromMilliseconds( |
- config_roundtrip_milliseconds); |
- variations.push_back(Variation(params_index, config_retrieved)); |
- config_roundtrip_milliseconds *= config_roundtrip_multiplier; |
- config_roundtrip_milliseconds += roundtrip_milliseconds_increment; |
- } |
- } |
- |
- return scoped_ptr<DataReductionProxyConfigRetrievalParams>( |
- new DataReductionProxyConfigRetrievalParams(expired_config, variations, |
- config_expiration, |
- config_expiration_interval)); |
-} |
- |
-DataReductionProxyConfigRetrievalParams::Variation::Variation( |
- int index, |
- const base::Time& simulated_config_retrieved) |
- : simulated_config_retrieved_(simulated_config_retrieved) { |
- lost_bytes_ocl_ = GetHistogramWithSuffix( |
- "DataReductionProxy.ConfigFetchLostBytesOCL_", index); |
- lost_bytes_rcl_ = GetHistogramWithSuffix( |
- "DataReductionProxy.ConfigFetchLostBytesCL_", index); |
- lost_bytes_diff_ = GetHistogramWithSuffix( |
- "DataReductionProxy.ConfigFetchLostBytesDiff_", index); |
-} |
- |
-DataReductionProxyConfigRetrievalParams::ConfigState |
-DataReductionProxyConfigRetrievalParams::Variation::GetState( |
- const base::Time& request_time, |
- const base::Time& config_expiration) const { |
- if (!simulated_config_retrieved_.is_null() && |
- request_time < simulated_config_retrieved_) { |
- return DataReductionProxyConfigRetrievalParams::RETRIEVING; |
- } else if (request_time < config_expiration) { |
- return DataReductionProxyConfigRetrievalParams::VALID; |
- } |
- |
- return DataReductionProxyConfigRetrievalParams::EXPIRED; |
-} |
- |
-void DataReductionProxyConfigRetrievalParams::Variation::RecordStats( |
- int64_t received_content_length, |
- int64_t original_content_length) const { |
- lost_bytes_rcl_->Add(received_content_length); |
- lost_bytes_ocl_->Add(original_content_length); |
- int64_t content_length_diff = |
- original_content_length - received_content_length; |
- if (content_length_diff > 0) |
- lost_bytes_diff_->Add(content_length_diff); |
-} |
- |
-DataReductionProxyConfigRetrievalParams:: |
- DataReductionProxyConfigRetrievalParams( |
- bool loaded_expired_config, |
- const std::vector<Variation>& variations, |
- const base::Time& config_expiration, |
- const base::TimeDelta& config_expiration_interval) |
- : loaded_expired_config_(loaded_expired_config), |
- config_expiration_(config_expiration), |
- config_expiration_interval_(config_expiration_interval), |
- variations_(variations) { |
- config_refresh_interval_ = |
- config_expiration_interval_ - |
- base::TimeDelta::FromSeconds(kConfigFetchBufferSeconds); |
- if (config_refresh_interval_.InSeconds() < |
- kConfigFetchMinimumIntervalSeconds) { |
- config_refresh_interval_ = |
- base::TimeDelta::FromSeconds(kConfigFetchMinimumIntervalSeconds); |
- } |
-} |
- |
-DataReductionProxyConfigRetrievalParams:: |
- ~DataReductionProxyConfigRetrievalParams() { |
-} |
- |
-void DataReductionProxyConfigRetrievalParams::RecordStats( |
- const base::Time& request_time, |
- int64_t received_content_length, |
- int64_t original_content_length) const { |
- for (const auto& variation : variations_) { |
- switch (variation.GetState(request_time, config_expiration_)) { |
- case VALID: |
- break; |
- case RETRIEVING: |
- case EXPIRED: |
- variation.RecordStats(received_content_length, original_content_length); |
- break; |
- default: |
- NOTREACHED(); |
- } |
- } |
-} |
- |
-void DataReductionProxyConfigRetrievalParams::RefreshConfig() { |
- config_expiration_ = base::Time::Now() + config_expiration_interval_; |
-} |
- |
-} // namespace data_reduction_proxy |