| Index: chrome/browser/download/download_util.cc
|
| diff --git a/chrome/browser/download/download_util.cc b/chrome/browser/download/download_util.cc
|
| index e1db3ffd38fe7e253f00c1b64ea722df4033df25..821624debaf42389f58a7f839f25ff88b63a397c 100644
|
| --- a/chrome/browser/download/download_util.cc
|
| +++ b/chrome/browser/download/download_util.cc
|
| @@ -392,6 +392,82 @@ void RecordDownloadInterrupted(int error, int64 received, int64 total) {
|
| UMA_HISTOGRAM_BOOLEAN("Download.InterruptedUnknownSize", unknown_size);
|
| }
|
|
|
| +namespace {
|
| +
|
| +enum DownloadContent {
|
| + DOWNLOAD_CONTENT_UNRECOGNIZED = 0,
|
| + DOWNLOAD_CONTENT_TEXT = 1,
|
| + DOWNLOAD_CONTENT_IMAGE = 2,
|
| + DOWNLOAD_CONTENT_AUDIO = 3,
|
| + DOWNLOAD_CONTENT_VIDEO = 4,
|
| + DOWNLOAD_CONTENT_OCTET_STREAM = 5,
|
| + DOWNLOAD_CONTENT_PDF = 6,
|
| + DOWNLOAD_CONTENT_DOC = 7,
|
| + DOWNLOAD_CONTENT_XLS = 8,
|
| + DOWNLOAD_CONTENT_PPT = 9,
|
| + DOWNLOAD_CONTENT_ARCHIVE = 10,
|
| + DOWNLOAD_CONTENT_EXE = 11,
|
| + DOWNLOAD_CONTENT_DMG = 12,
|
| + DOWNLOAD_CONTENT_CRX = 13,
|
| + DOWNLOAD_CONTENT_MAX = 14,
|
| +};
|
| +
|
| +struct MimeTypeToDownloadContent {
|
| + const char* mime_type;
|
| + DownloadContent download_content;
|
| +};
|
| +
|
| +static MimeTypeToDownloadContent kMapMimeTypeToDownloadContent[] = {
|
| + {"application/octet-stream", DOWNLOAD_CONTENT_OCTET_STREAM},
|
| + {"binary/octet-stream", DOWNLOAD_CONTENT_OCTET_STREAM},
|
| + {"application/pdf", DOWNLOAD_CONTENT_PDF},
|
| + {"application/msword", DOWNLOAD_CONTENT_DOC},
|
| + {"application/vnd.ms-excel", DOWNLOAD_CONTENT_XLS},
|
| + {"application/vns.ms-powerpoint", DOWNLOAD_CONTENT_PPT},
|
| + {"application/zip", DOWNLOAD_CONTENT_ARCHIVE},
|
| + {"application/x-gzip", DOWNLOAD_CONTENT_ARCHIVE},
|
| + {"application/x-rar-compressed", DOWNLOAD_CONTENT_ARCHIVE},
|
| + {"application/x-tar", DOWNLOAD_CONTENT_ARCHIVE},
|
| + {"application/x-bzip", DOWNLOAD_CONTENT_ARCHIVE},
|
| + {"application/x-exe", DOWNLOAD_CONTENT_EXE},
|
| + {"application/x-apple-diskimage", DOWNLOAD_CONTENT_DMG},
|
| + {"application/x-chrome-extension", DOWNLOAD_CONTENT_CRX},
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +void RecordDownloadMimeType(const std::string& mime_type_string) {
|
| + DownloadContent download_content = DOWNLOAD_CONTENT_UNRECOGNIZED;
|
| +
|
| + // Look up exact matches.
|
| + for (size_t i = 0; i < arraysize(kMapMimeTypeToDownloadContent); ++i) {
|
| + const MimeTypeToDownloadContent& entry =
|
| + kMapMimeTypeToDownloadContent[i];
|
| + if (mime_type_string == entry.mime_type) {
|
| + download_content = entry.download_content;
|
| + break;
|
| + }
|
| + }
|
| +
|
| + // Do partial matches.
|
| + if (download_content == DOWNLOAD_CONTENT_UNRECOGNIZED) {
|
| + if (StartsWithASCII(mime_type_string, "text/", true)) {
|
| + download_content = DOWNLOAD_CONTENT_TEXT;
|
| + } else if (StartsWithASCII(mime_type_string, "image/", true)) {
|
| + download_content = DOWNLOAD_CONTENT_IMAGE;
|
| + } else if (StartsWithASCII(mime_type_string, "audio/", true)) {
|
| + download_content = DOWNLOAD_CONTENT_AUDIO;
|
| + } else if (StartsWithASCII(mime_type_string, "video/", true)) {
|
| + download_content = DOWNLOAD_CONTENT_VIDEO;
|
| + }
|
| + }
|
| +
|
| + // Record the value.
|
| + UMA_HISTOGRAM_ENUMERATION("Download.ContentType",
|
| + download_content,
|
| + DOWNLOAD_CONTENT_MAX);
|
| +}
|
| +
|
| // Download progress painting --------------------------------------------------
|
|
|
| // Common bitmaps used for download progress animations. We load them once the
|
|
|