OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/data_reduction_proxy/core/browser/data_reduction_proxy_conf
ig_retrieval_params.h" | 5 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_conf
ig_retrieval_params.h" |
6 | 6 |
7 #include "base/metrics/field_trial.h" | 7 #include "base/metrics/field_trial.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 } | 46 } |
47 | 47 |
48 // Retrieves the boolean stored in |variation| from the field trial group | 48 // Retrieves the boolean stored in |variation| from the field trial group |
49 // |group|. If the value is not present or cannot be parsed, returns | 49 // |group|. If the value is not present or cannot be parsed, returns |
50 // |default_value|. | 50 // |default_value|. |
51 bool GetVariationBoolWithDefault(const char* group, | 51 bool GetVariationBoolWithDefault(const char* group, |
52 const char* variation, | 52 const char* variation, |
53 bool default_value) { | 53 bool default_value) { |
54 std::string variation_value = | 54 std::string variation_value = |
55 variations::GetVariationParamValue(group, variation); | 55 variations::GetVariationParamValue(group, variation); |
56 int64 variation_numeric; | 56 int64_t variation_numeric; |
57 if (variation_value.empty() || | 57 if (variation_value.empty() || |
58 !base::StringToInt64(variation_value, &variation_numeric)) { | 58 !base::StringToInt64(variation_value, &variation_numeric)) { |
59 return default_value; | 59 return default_value; |
60 } | 60 } |
61 | 61 |
62 return variation_numeric != 0; | 62 return variation_numeric != 0; |
63 } | 63 } |
64 | 64 |
65 // Retrieves the int64 stored in |variation| from the field trial group | 65 // Retrieves the int64_t stored in |variation| from the field trial group |
66 // |group|. If the value is not present, cannot be parsed, or is less than | 66 // |group|. If the value is not present, cannot be parsed, or is less than |
67 // |min_value|, returns |default_value|. | 67 // |min_value|, returns |default_value|. |
68 int64 GetVariationInt64WithDefault(const char* group, | 68 int64_t GetVariationInt64WithDefault(const char* group, |
69 const char* variation, | 69 const char* variation, |
70 int64 default_value, | 70 int64_t default_value, |
71 int64 min_value) { | 71 int64_t min_value) { |
72 DCHECK(default_value >= min_value); | 72 DCHECK(default_value >= min_value); |
73 std::string variation_value = | 73 std::string variation_value = |
74 variations::GetVariationParamValue(group, variation); | 74 variations::GetVariationParamValue(group, variation); |
75 int64 variation_numeric; | 75 int64_t variation_numeric; |
76 if (variation_value.empty() || | 76 if (variation_value.empty() || |
77 !base::StringToInt64(variation_value, &variation_numeric) || | 77 !base::StringToInt64(variation_value, &variation_numeric) || |
78 variation_numeric < min_value) { | 78 variation_numeric < min_value) { |
79 return default_value; | 79 return default_value; |
80 } | 80 } |
81 | 81 |
82 return variation_numeric; | 82 return variation_numeric; |
83 } | 83 } |
84 | 84 |
85 // Retrieves the double stored in |variation| from the field trial group | 85 // Retrieves the double stored in |variation| from the field trial group |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 if (!group.starts_with(kEnabled)) | 133 if (!group.starts_with(kEnabled)) |
134 return scoped_ptr<DataReductionProxyConfigRetrievalParams>(); | 134 return scoped_ptr<DataReductionProxyConfigRetrievalParams>(); |
135 | 135 |
136 base::Time now = base::Time::Now(); | 136 base::Time now = base::Time::Now(); |
137 base::Time config_retrieve; | 137 base::Time config_retrieve; |
138 bool config_always_stale = GetVariationBoolWithDefault( | 138 bool config_always_stale = GetVariationBoolWithDefault( |
139 kConfigFetchTrialGroup, kConfigAlwaysStaleParam, false); | 139 kConfigFetchTrialGroup, kConfigAlwaysStaleParam, false); |
140 if (config_always_stale) { | 140 if (config_always_stale) { |
141 config_retrieve = base::Time(); | 141 config_retrieve = base::Time(); |
142 } else { | 142 } else { |
143 int64 config_retrieve_value = | 143 int64_t config_retrieve_value = |
144 pref_service->GetInt64(prefs::kSimulatedConfigRetrieveTime); | 144 pref_service->GetInt64(prefs::kSimulatedConfigRetrieveTime); |
145 config_retrieve = base::Time::FromInternalValue(config_retrieve_value); | 145 config_retrieve = base::Time::FromInternalValue(config_retrieve_value); |
146 if (config_retrieve > now) | 146 if (config_retrieve > now) |
147 config_retrieve = base::Time(); | 147 config_retrieve = base::Time(); |
148 } | 148 } |
149 | 149 |
150 int64 config_expiration_interval_seconds = GetVariationInt64WithDefault( | 150 int64_t config_expiration_interval_seconds = GetVariationInt64WithDefault( |
151 kConfigFetchTrialGroup, kConfigExpirationSecondsParam, | 151 kConfigFetchTrialGroup, kConfigExpirationSecondsParam, |
152 kConfigFetchDefaultExpirationSeconds, | 152 kConfigFetchDefaultExpirationSeconds, |
153 kConfigFetchMinimumExpirationSeconds); | 153 kConfigFetchMinimumExpirationSeconds); |
154 base::TimeDelta config_expiration_interval = | 154 base::TimeDelta config_expiration_interval = |
155 base::TimeDelta::FromSeconds(config_expiration_interval_seconds); | 155 base::TimeDelta::FromSeconds(config_expiration_interval_seconds); |
156 base::Time config_expiration = config_retrieve + config_expiration_interval; | 156 base::Time config_expiration = config_retrieve + config_expiration_interval; |
157 std::vector<Variation> variations; | 157 std::vector<Variation> variations; |
158 bool expired_config = (now > config_expiration); | 158 bool expired_config = (now > config_expiration); |
159 if (expired_config) { | 159 if (expired_config) { |
160 config_expiration = now + config_expiration_interval; | 160 config_expiration = now + config_expiration_interval; |
161 | 161 |
162 int64 config_roundtrip_milliseconds = GetVariationInt64WithDefault( | 162 int64_t config_roundtrip_milliseconds = GetVariationInt64WithDefault( |
163 kConfigFetchTrialGroup, kConfigRoundtripMillisecondsBaseParam, | 163 kConfigFetchTrialGroup, kConfigRoundtripMillisecondsBaseParam, |
164 kConfigFetchDefaultRoundtripMillisecondsBase, 0); | 164 kConfigFetchDefaultRoundtripMillisecondsBase, 0); |
165 double config_roundtrip_multiplier = GetVariationDoubleWithDefault( | 165 double config_roundtrip_multiplier = GetVariationDoubleWithDefault( |
166 kConfigFetchTrialGroup, kConfigRoundtripMultiplierParam, | 166 kConfigFetchTrialGroup, kConfigRoundtripMultiplierParam, |
167 kConfigFetchDefaultRoundtripMultiplier, 1.0); | 167 kConfigFetchDefaultRoundtripMultiplier, 1.0); |
168 int64 roundtrip_milliseconds_increment = GetVariationInt64WithDefault( | 168 int64_t roundtrip_milliseconds_increment = GetVariationInt64WithDefault( |
169 kConfigFetchTrialGroup, kConfigRoundtripMillisecondsIncrementParam, | 169 kConfigFetchTrialGroup, kConfigRoundtripMillisecondsIncrementParam, |
170 kConfigFetchDefaultRoundtripMillisecondsIncrement, 0); | 170 kConfigFetchDefaultRoundtripMillisecondsIncrement, 0); |
171 | 171 |
172 for (int params_index = 0; params_index < kConfigFetchGroups; | 172 for (int params_index = 0; params_index < kConfigFetchGroups; |
173 ++params_index) { | 173 ++params_index) { |
174 base::Time config_retrieved = now + base::TimeDelta::FromMilliseconds( | 174 base::Time config_retrieved = now + base::TimeDelta::FromMilliseconds( |
175 config_roundtrip_milliseconds); | 175 config_roundtrip_milliseconds); |
176 variations.push_back(Variation(params_index, config_retrieved)); | 176 variations.push_back(Variation(params_index, config_retrieved)); |
177 config_roundtrip_milliseconds *= config_roundtrip_multiplier; | 177 config_roundtrip_milliseconds *= config_roundtrip_multiplier; |
178 config_roundtrip_milliseconds += roundtrip_milliseconds_increment; | 178 config_roundtrip_milliseconds += roundtrip_milliseconds_increment; |
(...skipping 26 matching lines...) Expand all Loading... |
205 request_time < simulated_config_retrieved_) { | 205 request_time < simulated_config_retrieved_) { |
206 return DataReductionProxyConfigRetrievalParams::RETRIEVING; | 206 return DataReductionProxyConfigRetrievalParams::RETRIEVING; |
207 } else if (request_time < config_expiration) { | 207 } else if (request_time < config_expiration) { |
208 return DataReductionProxyConfigRetrievalParams::VALID; | 208 return DataReductionProxyConfigRetrievalParams::VALID; |
209 } | 209 } |
210 | 210 |
211 return DataReductionProxyConfigRetrievalParams::EXPIRED; | 211 return DataReductionProxyConfigRetrievalParams::EXPIRED; |
212 } | 212 } |
213 | 213 |
214 void DataReductionProxyConfigRetrievalParams::Variation::RecordStats( | 214 void DataReductionProxyConfigRetrievalParams::Variation::RecordStats( |
215 int64 received_content_length, | 215 int64_t received_content_length, |
216 int64 original_content_length) const { | 216 int64_t original_content_length) const { |
217 lost_bytes_rcl_->Add(received_content_length); | 217 lost_bytes_rcl_->Add(received_content_length); |
218 lost_bytes_ocl_->Add(original_content_length); | 218 lost_bytes_ocl_->Add(original_content_length); |
219 int64 content_length_diff = original_content_length - received_content_length; | 219 int64_t content_length_diff = |
| 220 original_content_length - received_content_length; |
220 if (content_length_diff > 0) | 221 if (content_length_diff > 0) |
221 lost_bytes_diff_->Add(content_length_diff); | 222 lost_bytes_diff_->Add(content_length_diff); |
222 } | 223 } |
223 | 224 |
224 DataReductionProxyConfigRetrievalParams:: | 225 DataReductionProxyConfigRetrievalParams:: |
225 DataReductionProxyConfigRetrievalParams( | 226 DataReductionProxyConfigRetrievalParams( |
226 bool loaded_expired_config, | 227 bool loaded_expired_config, |
227 const std::vector<Variation>& variations, | 228 const std::vector<Variation>& variations, |
228 const base::Time& config_expiration, | 229 const base::Time& config_expiration, |
229 const base::TimeDelta& config_expiration_interval) | 230 const base::TimeDelta& config_expiration_interval) |
(...skipping 10 matching lines...) Expand all Loading... |
240 base::TimeDelta::FromSeconds(kConfigFetchMinimumIntervalSeconds); | 241 base::TimeDelta::FromSeconds(kConfigFetchMinimumIntervalSeconds); |
241 } | 242 } |
242 } | 243 } |
243 | 244 |
244 DataReductionProxyConfigRetrievalParams:: | 245 DataReductionProxyConfigRetrievalParams:: |
245 ~DataReductionProxyConfigRetrievalParams() { | 246 ~DataReductionProxyConfigRetrievalParams() { |
246 } | 247 } |
247 | 248 |
248 void DataReductionProxyConfigRetrievalParams::RecordStats( | 249 void DataReductionProxyConfigRetrievalParams::RecordStats( |
249 const base::Time& request_time, | 250 const base::Time& request_time, |
250 int64 received_content_length, | 251 int64_t received_content_length, |
251 int64 original_content_length) const { | 252 int64_t original_content_length) const { |
252 for (const auto& variation : variations_) { | 253 for (const auto& variation : variations_) { |
253 switch (variation.GetState(request_time, config_expiration_)) { | 254 switch (variation.GetState(request_time, config_expiration_)) { |
254 case VALID: | 255 case VALID: |
255 break; | 256 break; |
256 case RETRIEVING: | 257 case RETRIEVING: |
257 case EXPIRED: | 258 case EXPIRED: |
258 variation.RecordStats(received_content_length, original_content_length); | 259 variation.RecordStats(received_content_length, original_content_length); |
259 break; | 260 break; |
260 default: | 261 default: |
261 NOTREACHED(); | 262 NOTREACHED(); |
262 } | 263 } |
263 } | 264 } |
264 } | 265 } |
265 | 266 |
266 void DataReductionProxyConfigRetrievalParams::RefreshConfig() { | 267 void DataReductionProxyConfigRetrievalParams::RefreshConfig() { |
267 config_expiration_ = base::Time::Now() + config_expiration_interval_; | 268 config_expiration_ = base::Time::Now() + config_expiration_interval_; |
268 } | 269 } |
269 | 270 |
270 } // namespace data_reduction_proxy | 271 } // namespace data_reduction_proxy |
OLD | NEW |