| Index: chrome/browser/safe_browsing/download_protection_service.cc
|
| diff --git a/chrome/browser/safe_browsing/download_protection_service.cc b/chrome/browser/safe_browsing/download_protection_service.cc
|
| index d4f290d8a984ba4cb0de668b2c1900a4893cfae0..3624fa693cb318bca148a9d202a4f5ee06e6f656 100644
|
| --- a/chrome/browser/safe_browsing/download_protection_service.cc
|
| +++ b/chrome/browser/safe_browsing/download_protection_service.cc
|
| @@ -63,110 +63,20 @@ const char DownloadProtectionService::kDownloadRequestUrl[] =
|
| "https://sb-ssl.google.com/safebrowsing/clientreport/download";
|
|
|
| namespace {
|
| -// List of extensions for which we track some UMA stats. The position of the
|
| -// extension in kDangerousFileTypes is considered to be the UMA enumeration
|
| -// value. Naturally, new values should only be added at the end.
|
| -const base::FilePath::CharType* const kDangerousFileTypes[] = {
|
| - FILE_PATH_LITERAL(".exe"),
|
| - FILE_PATH_LITERAL(".msi"),
|
| - FILE_PATH_LITERAL(".cab"),
|
| - FILE_PATH_LITERAL(".sys"),
|
| - FILE_PATH_LITERAL(".scr"),
|
| - FILE_PATH_LITERAL(".drv"),
|
| - FILE_PATH_LITERAL(".bat"),
|
| - FILE_PATH_LITERAL(".zip"),
|
| - FILE_PATH_LITERAL(".rar"),
|
| - FILE_PATH_LITERAL(".dll"),
|
| - FILE_PATH_LITERAL(".pif"),
|
| - FILE_PATH_LITERAL(".com"),
|
| - FILE_PATH_LITERAL(".jar"),
|
| - FILE_PATH_LITERAL(".class"),
|
| - FILE_PATH_LITERAL(".pdf"),
|
| - FILE_PATH_LITERAL(".vb"),
|
| - FILE_PATH_LITERAL(".reg"),
|
| - FILE_PATH_LITERAL(".grp"),
|
| - nullptr, // The "Other" bucket. This is in the middle of the array due to
|
| - // historical reasons.
|
| - FILE_PATH_LITERAL(".crx"),
|
| - FILE_PATH_LITERAL(".apk"),
|
| - FILE_PATH_LITERAL(".dmg"),
|
| - FILE_PATH_LITERAL(".pkg"),
|
| - FILE_PATH_LITERAL(".torrent"),
|
| - FILE_PATH_LITERAL(".website"),
|
| - FILE_PATH_LITERAL(".url"),
|
| - FILE_PATH_LITERAL(".vbe"),
|
| - FILE_PATH_LITERAL(".vbs"),
|
| - FILE_PATH_LITERAL(".js"),
|
| - FILE_PATH_LITERAL(".jse"),
|
| - FILE_PATH_LITERAL(".mht"),
|
| - FILE_PATH_LITERAL(".mhtml"),
|
| - FILE_PATH_LITERAL(".msc"),
|
| - FILE_PATH_LITERAL(".msp"),
|
| - FILE_PATH_LITERAL(".mst"),
|
| - FILE_PATH_LITERAL(".bas"),
|
| - FILE_PATH_LITERAL(".hta"),
|
| - FILE_PATH_LITERAL(".msh"),
|
| - FILE_PATH_LITERAL(".msh1"),
|
| - FILE_PATH_LITERAL(".msh1xml"),
|
| - FILE_PATH_LITERAL(".msh2"),
|
| - FILE_PATH_LITERAL(".msh2xml"),
|
| - FILE_PATH_LITERAL(".mshxml"),
|
| - FILE_PATH_LITERAL(".ps1"),
|
| - FILE_PATH_LITERAL(".ps1xml"),
|
| - FILE_PATH_LITERAL(".ps2"),
|
| - FILE_PATH_LITERAL(".ps2xml"),
|
| - FILE_PATH_LITERAL(".psc1"),
|
| - FILE_PATH_LITERAL(".psc2"),
|
| - FILE_PATH_LITERAL(".scf"),
|
| - FILE_PATH_LITERAL(".sct"),
|
| - FILE_PATH_LITERAL(".wsf"),
|
| - FILE_PATH_LITERAL(".7z"),
|
| - FILE_PATH_LITERAL(".xz"),
|
| - FILE_PATH_LITERAL(".gz"),
|
| - FILE_PATH_LITERAL(".tgz"),
|
| - FILE_PATH_LITERAL(".bz2"),
|
| - FILE_PATH_LITERAL(".tar"),
|
| - FILE_PATH_LITERAL(".arj"),
|
| - FILE_PATH_LITERAL(".lzh"),
|
| - FILE_PATH_LITERAL(".lha"),
|
| - FILE_PATH_LITERAL(".wim"),
|
| - FILE_PATH_LITERAL(".z"),
|
| - FILE_PATH_LITERAL(".lzma"),
|
| - FILE_PATH_LITERAL(".cpio"),
|
| -};
|
| -
|
| -// UMA enumeration value for unrecognized file types. This is the array index of
|
| -// the "Other" bucket in kDangerousFileTypes.
|
| -const int EXTENSION_OTHER = 18;
|
| -
|
| -// Maximum extension ID returned by GetExtensionTypeForUMA() + 1.
|
| -const int EXTENSION_MAX = arraysize(kDangerousFileTypes);
|
| -
|
| -int GetExtensionTypeForUMA(const base::FilePath::StringType& extension) {
|
| - DCHECK_EQ(static_cast<base::FilePath::CharType*>(nullptr),
|
| - kDangerousFileTypes[EXTENSION_OTHER]);
|
| - DCHECK(extension.find(base::FilePath::kExtensionSeparator) == 0 ||
|
| - extension.empty());
|
| - DCHECK_EQ(extension, base::FilePath(extension).FinalExtension());
|
| -
|
| - for (const auto& dangerous_extension : kDangerousFileTypes) {
|
| - if (dangerous_extension &&
|
| - base::FilePath::CompareEqualIgnoreCase(dangerous_extension, extension))
|
| - return &dangerous_extension - kDangerousFileTypes;
|
| - }
|
| - return EXTENSION_OTHER;
|
| -}
|
| -
|
| void RecordFileExtensionType(const base::FilePath& file) {
|
| - UMA_HISTOGRAM_ENUMERATION("SBClientDownload.DownloadExtensions",
|
| - GetExtensionTypeForUMA(file.FinalExtension()),
|
| - EXTENSION_MAX);
|
| + UMA_HISTOGRAM_ENUMERATION(
|
| + "SBClientDownload.DownloadExtensions",
|
| + download_protection_util::GetSBClientDownloadExtensionValueForUMA(file),
|
| + download_protection_util::kSBClientDownloadExtensionsMax);
|
| }
|
|
|
| void RecordArchivedArchiveFileExtensionType(
|
| const base::FilePath::StringType& extension) {
|
| - UMA_HISTOGRAM_ENUMERATION("SBClientDownload.ArchivedArchiveExtensions",
|
| - GetExtensionTypeForUMA(extension), EXTENSION_MAX);
|
| + UMA_HISTOGRAM_ENUMERATION(
|
| + "SBClientDownload.ArchivedArchiveExtensions",
|
| + download_protection_util::GetSBClientDownloadExtensionValueForUMA(
|
| + base::FilePath(extension)),
|
| + download_protection_util::kSBClientDownloadExtensionsMax);
|
| }
|
|
|
| // Enumerate for histogramming purposes.
|
|
|