Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.cc |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.cc |
index 934b6947a1642429c48b3202f1db26ae2007b989..9a600c080379f71a046214579c19836225909bcf 100644 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.cc |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.cc |
@@ -413,42 +413,68 @@ void DataReductionProxyCompressionStats::Init() { |
InitListPref(prefs::kDailyHttpReceivedContentLength); |
InitListPref(prefs::kDailyOriginalContentLengthViaDataReductionProxy); |
InitListPref(prefs::kDailyOriginalContentLengthWithDataReductionProxyEnabled); |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kClearDataReductionProxyDataSavings)) { |
ClearDataSavingStatistics(); |
} |
} |
+void DataReductionProxyCompressionStats::UpdateDataSavings( |
+ const std::string& data_usage_host, |
+ int64_t data_used, |
+ int64_t original_size) { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ // Data is recorded at the URLRequest level, so an update should only change |
+ // the original size amount by the savings amount. |
+ int64_t update_to_original_size = original_size - data_used; |
+ int64_t update_to_data_used = 0; |
+ RecordData(update_to_data_used, update_to_original_size, |
+ true /* data_saver_enabled */, UPDATE, data_usage_host, |
+ std::string()); |
+} |
+ |
void DataReductionProxyCompressionStats::UpdateContentLengths( |
int64_t data_used, |
int64_t original_size, |
- bool data_reduction_proxy_enabled, |
+ bool data_saver_enabled, |
DataReductionProxyRequestType request_type, |
const scoped_refptr<DataUseGroup>& data_use_group, |
const std::string& mime_type) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- TRACE_EVENT0("loader", |
- "DataReductionProxyCompressionStats::UpdateContentLengths") |
+ std::string data_use_host; |
+ if (data_use_group) { |
+ data_use_host = data_use_group->GetHostname(); |
+ } |
+ |
+ RecordData(data_used, original_size, data_saver_enabled, request_type, |
+ data_use_host, mime_type); |
+} |
+ |
+void DataReductionProxyCompressionStats::RecordData( |
+ int64_t data_used, |
+ int64_t original_size, |
+ bool data_saver_enabled, |
+ DataReductionProxyRequestType request_type, |
+ const std::string& data_use_host, |
+ const std::string& mime_type) { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ TRACE_EVENT0("loader", "DataReductionProxyCompressionStats::RecordData") |
IncreaseInt64Pref(data_reduction_proxy::prefs::kHttpReceivedContentLength, |
data_used); |
IncreaseInt64Pref(data_reduction_proxy::prefs::kHttpOriginalContentLength, |
original_size); |
- std::string data_use_host; |
- if (data_use_group) { |
- data_use_host = data_use_group->GetHostname(); |
- } |
RecordDataUsage(data_use_host, data_used, original_size, base::Time::Now()); |
- RecordRequestSizePrefs(data_used, original_size, data_reduction_proxy_enabled, |
+ RecordRequestSizePrefs(data_used, original_size, data_saver_enabled, |
request_type, mime_type, base::Time::Now()); |
} |
void DataReductionProxyCompressionStats::InitInt64Pref(const char* pref) { |
int64_t pref_value = pref_service_->GetInt64(pref); |
pref_map_[pref] = pref_value; |
} |
void DataReductionProxyCompressionStats::InitListPref(const char* pref) { |
std::unique_ptr<base::ListValue> pref_value = |
@@ -678,21 +704,21 @@ void DataReductionProxyCompressionStats::DelayedWritePrefs() { |
void DataReductionProxyCompressionStats::TransferList( |
const base::ListValue& from_list, |
base::ListValue* to_list) { |
to_list->Clear(); |
from_list.CreateDeepCopy()->Swap(to_list); |
} |
void DataReductionProxyCompressionStats::RecordRequestSizePrefs( |
int64_t data_used, |
int64_t original_size, |
- bool with_data_reduction_proxy_enabled, |
+ bool with_data_saver_enabled, |
DataReductionProxyRequestType request_type, |
const std::string& mime_type, |
const base::Time& now) { |
// TODO(bengr): Remove this check once the underlying cause of |
// http://crbug.com/287821 is fixed. For now, only continue if the current |
// year is reported as being between 1972 and 2970. |
base::TimeDelta time_since_unix_epoch = now - base::Time::UnixEpoch(); |
const int kMinDaysSinceUnixEpoch = 365 * 2; // 2 years. |
const int kMaxDaysSinceUnixEpoch = 365 * 1000; // 1000 years. |
if (time_since_unix_epoch.InDays() < kMinDaysSinceUnixEpoch || |
@@ -964,85 +990,90 @@ void DataReductionProxyCompressionStats::RecordRequestSizePrefs( |
total.UpdateForDateChange(days_since_last_update); |
proxy_enabled.UpdateForDateChange(days_since_last_update); |
via_proxy.UpdateForDateChange(days_since_last_update); |
https.UpdateForDateChange(days_since_last_update); |
short_bypass.UpdateForDateChange(days_since_last_update); |
long_bypass.UpdateForDateChange(days_since_last_update); |
unknown.UpdateForDateChange(days_since_last_update); |
total.Add(original_size, data_used); |
- if (with_data_reduction_proxy_enabled) { |
+ if (with_data_saver_enabled) { |
proxy_enabled.Add(original_size, data_used); |
// Ignore data source cases, if exist, when |
- // "with_data_reduction_proxy_enabled == false" |
+ // "with_data_saver_enabled == false" |
switch (request_type) { |
case VIA_DATA_REDUCTION_PROXY: |
via_proxy.Add(original_size, data_used); |
break; |
case HTTPS: |
https.Add(data_used); |
break; |
case SHORT_BYPASS: |
short_bypass.Add(data_used); |
break; |
case LONG_BYPASS: |
long_bypass.Add(data_used); |
break; |
+ case UPDATE: |
+ // Don't record any request level prefs. If this is an update, this data |
+ // was already recorded at the URLRequest level. Updates are generally |
+ // page load level optimizations and don't correspond to request types. |
+ return; |
case UNKNOWN_TYPE: |
unknown.Add(data_used); |
break; |
default: |
NOTREACHED(); |
} |
} |
bool via_data_reduction_proxy = request_type == VIA_DATA_REDUCTION_PROXY; |
bool is_application = net::MatchesMimeType("application/*", mime_type); |
bool is_video = net::MatchesMimeType("video/*", mime_type); |
bool is_mime_type_empty = mime_type.empty(); |
if (is_application) { |
IncrementDailyUmaPrefs( |
original_size, data_used, |
data_reduction_proxy::prefs::kDailyHttpOriginalContentLengthApplication, |
data_reduction_proxy::prefs::kDailyHttpReceivedContentLengthApplication, |
- with_data_reduction_proxy_enabled, |
+ with_data_saver_enabled, |
data_reduction_proxy::prefs:: |
kDailyOriginalContentLengthWithDataReductionProxyEnabledApplication, |
data_reduction_proxy::prefs:: |
kDailyContentLengthWithDataReductionProxyEnabledApplication, |
via_data_reduction_proxy, |
data_reduction_proxy::prefs:: |
kDailyOriginalContentLengthViaDataReductionProxyApplication, |
data_reduction_proxy::prefs:: |
kDailyContentLengthViaDataReductionProxyApplication); |
} else if (is_video) { |
IncrementDailyUmaPrefs( |
original_size, data_used, |
data_reduction_proxy::prefs::kDailyHttpOriginalContentLengthVideo, |
data_reduction_proxy::prefs::kDailyHttpReceivedContentLengthVideo, |
- with_data_reduction_proxy_enabled, |
+ with_data_saver_enabled, |
data_reduction_proxy::prefs:: |
kDailyOriginalContentLengthWithDataReductionProxyEnabledVideo, |
data_reduction_proxy::prefs:: |
kDailyContentLengthWithDataReductionProxyEnabledVideo, |
via_data_reduction_proxy, |
data_reduction_proxy::prefs:: |
kDailyOriginalContentLengthViaDataReductionProxyVideo, |
data_reduction_proxy::prefs:: |
kDailyContentLengthViaDataReductionProxyVideo); |
} else if (is_mime_type_empty) { |
IncrementDailyUmaPrefs( |
original_size, data_used, |
data_reduction_proxy::prefs::kDailyHttpOriginalContentLengthUnknown, |
data_reduction_proxy::prefs::kDailyHttpReceivedContentLengthUnknown, |
- with_data_reduction_proxy_enabled, |
+ with_data_saver_enabled, |
data_reduction_proxy::prefs:: |
kDailyOriginalContentLengthWithDataReductionProxyEnabledUnknown, |
data_reduction_proxy::prefs:: |
kDailyContentLengthWithDataReductionProxyEnabledUnknown, |
via_data_reduction_proxy, |
data_reduction_proxy::prefs:: |
kDailyOriginalContentLengthViaDataReductionProxyUnknown, |
data_reduction_proxy::prefs:: |
kDailyContentLengthViaDataReductionProxyUnknown); |
} |