Index: net/filter/sdch_filter.cc |
diff --git a/net/filter/sdch_filter.cc b/net/filter/sdch_filter.cc |
index c5384a4ef040abe18f50933b01f490b0ca5e4e89..2d78aefeedae115cddf8830615e8dafd45ccbe10 100644 |
--- a/net/filter/sdch_filter.cc |
+++ b/net/filter/sdch_filter.cc |
@@ -179,6 +179,8 @@ Filter::FilterStatus SdchFilter::ReadFilteredData(char* dest_buffer, |
decoding_status_ = PASS_THROUGH; |
} else if (filter_context_.GetResponseCode() != 200) { |
// We need to meta-refresh, with SDCH disabled. |
+ RecordCorruptionDetectionCause(filter_context_.IsCachedContent() ? |
+ RESPONSE_200_CACHED : RESPONSE_200); |
mmenke
2014/09/05 14:52:27
nit: this doesn't follow the indentation rules.
mmenke
2014/09/05 14:52:27
I think it's weird that we're only recording a sub
Randy Smith (Not in Mondays)
2014/09/07 01:14:16
Done. (I agree with you about SdchErrorRecovery;
Randy Smith (Not in Mondays)
2014/09/07 01:14:16
Moot; saw other comment :-}.
mmenke
2014/09/07 01:46:03
I agree that we shouldn't clean it up (Or fix the
|
} else if (filter_context_.IsCachedContent() |
&& !dictionary_hash_is_plausible_) { |
// We must have hit the back button, and gotten content that was fetched |
@@ -200,14 +202,22 @@ Filter::FilterStatus SdchFilter::ReadFilteredData(char* dest_buffer, |
// the meta-refresh result. |
// TODO(jar): Improve robustness by sniffing for valid text that we can |
// actual use re: decoding_status_ = PASS_THROUGH; |
+ RecordCorruptionDetectionCause(filter_context_.IsCachedContent() ? |
+ TENTATIVE_SDCH_CACHED : TENTATIVE_SDCH); |
mmenke
2014/09/05 14:52:27
I know this is the language used elsewhere, but I
Randy Smith (Not in Mondays)
2014/09/07 01:14:16
I've played around some with the doc, both pointin
|
} else if (dictionary_hash_is_plausible_) { |
// We need a meta-refresh since we don't have the dictionary. |
// The common cause is a restart of the browser, where we try to render |
// cached content that was saved when we had a dictionary. |
+ RecordCorruptionDetectionCause( |
+ filter_context_.IsCachedContent() ? |
+ DICTIONARY_NOT_FOUND_CACHED : DICTIONARY_NOT_FOUND); |
} else if (filter_context_.IsSdchResponse()) { |
// This is a very corrupt SDCH request response. We can't decode it. |
// We'll use a meta-refresh, and get content without asking for SDCH. |
// This will also progressively disable SDCH for this domain. |
+ RecordCorruptionDetectionCause( |
+ filter_context_.IsCachedContent() ? |
+ NON_SDCH_RESPONSE_CACHED : NON_SDCH_RESPONSE); |
mmenke
2014/09/05 14:52:27
This is weird. If it is an SDCH response, we reco
Randy Smith (Not in Mondays)
2014/09/07 01:14:16
IsSdchResponse() being true means that we advertis
mmenke
2014/09/07 01:46:03
Ahh... IsSdchResponse means is this a response to
Randy Smith (Not in Mondays)
2014/09/08 01:56:12
I tend to agree with you, although that may also b
|
} else { |
// One of the first 9 bytes precluded consideration as a hash. |
// This can't be an SDCH payload, even though the server said it was. |
@@ -393,4 +403,10 @@ int SdchFilter::OutputBufferExcess(char* const dest_buffer, |
return amount; |
} |
+void SdchFilter::RecordCorruptionDetectionCause( |
+ CorruptionDetectionCause cause) { |
+ UMA_HISTOGRAM_ENUMERATION( |
+ "Sdch3.CorruptionDetectionCause", cause, META_REFRESH_CAUSE_MAX); |
+} |
+ |
} // namespace net |