Chromium Code Reviews| Index: chrome/browser/safe_browsing/protocol_manager.cc |
| diff --git a/chrome/browser/safe_browsing/protocol_manager.cc b/chrome/browser/safe_browsing/protocol_manager.cc |
| index f56103ff9ae8c328727aac6d31181c8d97fcadaf..863a9902b7b35d2171b9f87c55460fabc0748cc9 100644 |
| --- a/chrome/browser/safe_browsing/protocol_manager.cc |
| +++ b/chrome/browser/safe_browsing/protocol_manager.cc |
| @@ -217,6 +217,11 @@ void SafeBrowsingProtocolManager::RecordGetHashResult(bool is_download, |
| GET_HASH_RESULT_MAX); |
| } |
| } |
| +void SafeBrowsingProtocolManager::RecordParseGetHashResult( |
| + ParseResultType result_type) { |
| + UMA_HISTOGRAM_ENUMERATION("SafeBrowsing.ParseV4HashResult", result_type, |
| + PARSE_GET_HASH_RESULT_MAX); |
| +} |
| // static |
| void SafeBrowsingProtocolManager::RecordGetV4HashResult( |
| @@ -314,7 +319,7 @@ bool SafeBrowsingProtocolManager::ParseV4HashResponse( |
| FindFullHashesResponse response; |
| if (!response.ParseFromString(data)) { |
| - // TODO(kcarattini): Add UMA. |
| + RecordParseGetHashResult(PARSE_FROM_STRING_ERROR); |
| return false; |
| } |
| @@ -336,6 +341,7 @@ bool SafeBrowsingProtocolManager::ParseV4HashResponse( |
| if (!(match.has_threat_entry_type() && |
| match.threat_entry_type() == URL_EXPRESSION && |
| match.has_threat())) { |
| + RecordParseGetHashResult(UNEXPECTED_THREAT_ENTRY_TYPE_ERROR); |
| continue; |
| } |
| @@ -350,19 +356,25 @@ bool SafeBrowsingProtocolManager::ParseV4HashResponse( |
| } |
| // Different threat types will handle the metadata differently. |
| - if (match.has_threat_type() && match.threat_type() == API_ABUSE && |
| - match.has_platform_type() && |
| - match.platform_type() == CHROME_PLATFORM && |
| - match.has_threat_entry_metadata()) { |
| - // For API Abuse, store a csv of the returned permissions. |
| - for (const ThreatEntryMetadata::MetadataEntry& m : |
| - match.threat_entry_metadata().entries()) { |
| - if (m.key() == "permission") { |
| - result.metadata += m.value() + ","; |
| + if (match.has_threat_type() && match.threat_type() == API_ABUSE) { |
| + if (match.has_platform_type() && |
| + match.platform_type() == CHROME_PLATFORM) { |
| + if (match.has_threat_entry_metadata()) { |
| + // For API Abuse, store a csv of the returned permissions. |
| + for (const ThreatEntryMetadata::MetadataEntry& m : |
| + match.threat_entry_metadata().entries()) { |
| + if (m.key() == "permission") { |
| + result.metadata += m.value() + ","; |
| + } |
| + } |
| + } else { |
| + RecordParseGetHashResult(NO_METADATA_ERROR); |
| } |
| + } else { |
| + RecordParseGetHashResult(UNEXPECTED_PLATFORM_TYPE_ERROR); |
| } |
| } else { |
| - // TODO(kcarattini): Add UMA for unexpected threat type match. |
| + RecordParseGetHashResult(UNEXPECTED_THREAT_TYPE_ERROR); |
| return false; |
|
Nathan Parker
2016/01/15 19:34:42
Why does this this one return and the rest dont?
kcarattini
2016/01/20 04:02:05
I made them all return false, that way there is on
|
| } |