Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Unified Diff: chrome/browser/download/download_util.cc

Issue 7538007: Record type of content being downloaded. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Works Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/download/download_util.h ('k') | chrome/browser/renderer_host/download_resource_handler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..dec64a7c9e7e3dd1f3514187dc6760073a81a7c9 100644
--- a/chrome/browser/download/download_util.cc
+++ b/chrome/browser/download/download_util.cc
@@ -392,6 +392,75 @@ void RecordDownloadInterrupted(int error, int64 received, int64 total) {
UMA_HISTOGRAM_BOOLEAN("Download.InterruptedUnknownSize", unknown_size);
}
+namespace {
+
+enum DownloadContent {
benjhayden 2011/08/01 18:53:03 Do all compilers number enums from 0 counting upwa
cbentzel 2011/08/01 19:00:33 Not guaranteed - thanks for the catch.
+ DOWNLOAD_CONTENT_TEXT,
+ DOWNLOAD_CONTENT_IMAGE,
+ DOWNLOAD_CONTENT_AUDIO,
+ DOWNLOAD_CONTENT_VIDEO,
+ DOWNLOAD_CONTENT_OCTET_STREAM,
+ DOWNLOAD_CONTENT_PDF,
+ DOWNLOAD_CONTENT_DOC,
+ DOWNLOAD_CONTENT_XLS,
+ DOWNLOAD_CONTENT_PPT,
+ DOWNLOAD_CONTENT_ARCHIVE,
+ DOWNLOAD_CONTENT_UNRECOGNIZED,
+ DOWNLOAD_CONTENT_MAX,
+};
+
+struct MimeTypeToDownloadContent {
+ const char* mime_type;
+ DownloadContent download_content;
+};
+
+static MimeTypeToDownloadContent kMapMimeTypeToDownloadContent[] = {
benjhayden 2011/08/01 18:53:03 Could you add exe, dmg, crx, and bzip? exe: appli
cbentzel 2011/08/01 19:00:33 Will do. Hoping I don't need to move to binary sea
cbentzel 2011/08/01 21:06:18 Do you know how frequently these happen? I mostly
benjhayden 2011/08/01 21:48:12 No idea. I just copied it from some website. Don't
+ {"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},
+};
+
+} // 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
« no previous file with comments | « chrome/browser/download/download_util.h ('k') | chrome/browser/renderer_host/download_resource_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698