Index: net/base/sdch_filter.cc |
=================================================================== |
--- net/base/sdch_filter.cc (revision 7536) |
+++ net/base/sdch_filter.cc (working copy) |
@@ -23,7 +23,8 @@ |
dest_buffer_excess_index_(0), |
source_bytes_(0), |
output_bytes_(0), |
- time_of_last_read_() { |
+ time_of_last_read_(), |
+ size_of_last_read_(0) { |
} |
SdchFilter::~SdchFilter() { |
@@ -54,6 +55,10 @@ |
if (PASS_THROUGH == decoding_status_) |
UMA_HISTOGRAM_MEDIUM_TIMES(L"Sdch.Transit_Pass-through_Latency_M", |
duration); |
+ // Look at sizes of the 20% of blocks that arrive with large latency. |
+ if (15 < duration.InSeconds()) |
+ UMA_HISTOGRAM_COUNTS(L"Sdch.Transit_Belated_Final_Block_Size", |
+ size_of_last_read_); |
} |
} |
@@ -92,8 +97,10 @@ |
return FILTER_ERROR; |
// Don't update when we're called to just flush out our internal buffers. |
- if (next_stream_data_ && stream_data_len_ > 0) |
+ if (next_stream_data_ && stream_data_len_ > 0) { |
time_of_last_read_ = base::Time::Now(); |
+ size_of_last_read_ = stream_data_len_; |
+ } |
if (WAITING_FOR_DICTIONARY_SELECTION == decoding_status_) { |
FilterStatus status = InitializeDictionary(); |