| Index: net/base/sdch_filter.cc | 
| =================================================================== | 
| --- net/base/sdch_filter.cc	(revision 5301) | 
| +++ net/base/sdch_filter.cc	(working copy) | 
| @@ -42,7 +42,7 @@ | 
| base::TimeDelta duration = time_of_last_read_ - connect_time(); | 
| // Note: connect_time may be somewhat incorrect if this is cached data, as | 
| // it will reflect the time the connect was done for the original read :-(. | 
| -    // To avoid any chances of overflow (and since SDCH is meant to primarilly | 
| +    // To avoid any chances of overflow, and since SDCH is meant to primarilly | 
| // handle short downloads, we'll restrict what results we log to effectively | 
| // discard bogus large numbers.  Note that IF the number is large enough, it | 
| // would DCHECK in histogram as the square of the value is summed.  The | 
| @@ -50,9 +50,9 @@ | 
| // seconds, so the discarded data would not be that readable anyway. | 
| if (30 >= duration.InSeconds()) { | 
| if (DECODING_IN_PROGRESS == decoding_status_) | 
| -        UMA_HISTOGRAM_TIMES(L"Sdch.Transit_Latency", duration); | 
| +        UMA_HISTOGRAM_TIMES(L"Sdch.Transit_Latency_2", duration); | 
| if (PASS_THROUGH == decoding_status_) | 
| -        UMA_HISTOGRAM_TIMES(L"Sdch.Transit_Pass-through_Latency", duration); | 
| +        UMA_HISTOGRAM_TIMES(L"Sdch.Transit_Pass-through_Latency_2", duration); | 
| } | 
| } | 
|  | 
| @@ -90,7 +90,9 @@ | 
| if (!dest_buffer || available_space <= 0) | 
| return FILTER_ERROR; | 
|  | 
| -  time_of_last_read_ = base::Time::Now(); | 
| +  // Don't update when we're called to just flush out our internal buffers. | 
| +  if (next_stream_data_ && stream_data_len_ > 0) | 
| +    time_of_last_read_ = base::Time::Now(); | 
|  | 
| if (WAITING_FOR_DICTIONARY_SELECTION == decoding_status_) { | 
| FilterStatus status = InitializeDictionary(); | 
|  |