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

Side by Side Diff: content/browser/download/download_stats.cc

Issue 8734006: Get more information about types of images being downloaded. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/download/download_stats.h" 5 #include "content/browser/download/download_stats.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "content/browser/download/download_resource_handler.h" 9 #include "content/browser/download/download_resource_handler.h"
10 #include "content/browser/download/interrupt_reasons.h" 10 #include "content/browser/download/interrupt_reasons.h"
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 {"application/zip", DOWNLOAD_CONTENT_ARCHIVE}, 137 {"application/zip", DOWNLOAD_CONTENT_ARCHIVE},
138 {"application/x-gzip", DOWNLOAD_CONTENT_ARCHIVE}, 138 {"application/x-gzip", DOWNLOAD_CONTENT_ARCHIVE},
139 {"application/x-rar-compressed", DOWNLOAD_CONTENT_ARCHIVE}, 139 {"application/x-rar-compressed", DOWNLOAD_CONTENT_ARCHIVE},
140 {"application/x-tar", DOWNLOAD_CONTENT_ARCHIVE}, 140 {"application/x-tar", DOWNLOAD_CONTENT_ARCHIVE},
141 {"application/x-bzip", DOWNLOAD_CONTENT_ARCHIVE}, 141 {"application/x-bzip", DOWNLOAD_CONTENT_ARCHIVE},
142 {"application/x-exe", DOWNLOAD_CONTENT_EXE}, 142 {"application/x-exe", DOWNLOAD_CONTENT_EXE},
143 {"application/x-apple-diskimage", DOWNLOAD_CONTENT_DMG}, 143 {"application/x-apple-diskimage", DOWNLOAD_CONTENT_DMG},
144 {"application/x-chrome-extension", DOWNLOAD_CONTENT_CRX}, 144 {"application/x-chrome-extension", DOWNLOAD_CONTENT_CRX},
145 }; 145 };
146 146
147 enum DownloadImage {
148 DOWNLOAD_IMAGE_UNRECOGNIZED = 0,
149 DOWNLOAD_IMAGE_GIF = 1,
150 DOWNLOAD_IMAGE_JPEG = 2,
151 DOWNLOAD_IMAGE_PNG = 3,
152 DOWNLOAD_IMAGE_TIFF = 4,
153 DOWNLOAD_IMAGE_ICON = 5,
154 DOWNLOAD_IMAGE_WEBP = 6,
155 DOWNLOAD_IMAGE_MAX = 7,
156 };
157
158 struct MimeTypeToDownloadImage {
159 const char* mime_type;
160 DownloadImage download_image;
161 };
162
163 static MimeTypeToDownloadImage kMapMimeTypeToDownloadImage[] = {
164 {"image/gif", DOWNLOAD_IMAGE_GIF},
165 {"image/jpeg", DOWNLOAD_IMAGE_JPEG},
166 {"image/png", DOWNLOAD_IMAGE_PNG},
167 {"image/tiff", DOWNLOAD_IMAGE_TIFF},
168 {"image/vnd.microsoft.icon", DOWNLOAD_IMAGE_ICON},
169 {"image/webp", DOWNLOAD_IMAGE_WEBP},
170 };
171
172 void RecordDownloadImageType(const std::string& mime_type_string) {
173 DownloadImage download_image = DOWNLOAD_IMAGE_UNRECOGNIZED;
174
175 // Look up exact matches.
176 for (size_t i = 0; i < arraysize(kMapMimeTypeToDownloadImage); ++i) {
177 const MimeTypeToDownloadImage& entry = kMapMimeTypeToDownloadImage[i];
178 if (mime_type_string == entry.mime_type) {
179 download_image = entry.download_image;
180 break;
181 }
182 }
183
184 UMA_HISTOGRAM_ENUMERATION("Download.ContentImageType",
185 download_image,
186 DOWNLOAD_IMAGE_MAX);
187 }
188
147 } // namespace 189 } // namespace
148 190
149 void RecordDownloadMimeType(const std::string& mime_type_string) { 191 void RecordDownloadMimeType(const std::string& mime_type_string) {
150 DownloadContent download_content = DOWNLOAD_CONTENT_UNRECOGNIZED; 192 DownloadContent download_content = DOWNLOAD_CONTENT_UNRECOGNIZED;
151 193
152 // Look up exact matches. 194 // Look up exact matches.
153 for (size_t i = 0; i < arraysize(kMapMimeTypeToDownloadContent); ++i) { 195 for (size_t i = 0; i < arraysize(kMapMimeTypeToDownloadContent); ++i) {
154 const MimeTypeToDownloadContent& entry = 196 const MimeTypeToDownloadContent& entry = kMapMimeTypeToDownloadContent[i];
155 kMapMimeTypeToDownloadContent[i];
156 if (mime_type_string == entry.mime_type) { 197 if (mime_type_string == entry.mime_type) {
157 download_content = entry.download_content; 198 download_content = entry.download_content;
158 break; 199 break;
159 } 200 }
160 } 201 }
161 202
162 // Do partial matches. 203 // Do partial matches.
163 if (download_content == DOWNLOAD_CONTENT_UNRECOGNIZED) { 204 if (download_content == DOWNLOAD_CONTENT_UNRECOGNIZED) {
164 if (StartsWithASCII(mime_type_string, "text/", true)) { 205 if (StartsWithASCII(mime_type_string, "text/", true)) {
165 download_content = DOWNLOAD_CONTENT_TEXT; 206 download_content = DOWNLOAD_CONTENT_TEXT;
166 } else if (StartsWithASCII(mime_type_string, "image/", true)) { 207 } else if (StartsWithASCII(mime_type_string, "image/", true)) {
167 download_content = DOWNLOAD_CONTENT_IMAGE; 208 download_content = DOWNLOAD_CONTENT_IMAGE;
209 RecordDownloadImageType(mime_type_string);
168 } else if (StartsWithASCII(mime_type_string, "audio/", true)) { 210 } else if (StartsWithASCII(mime_type_string, "audio/", true)) {
169 download_content = DOWNLOAD_CONTENT_AUDIO; 211 download_content = DOWNLOAD_CONTENT_AUDIO;
170 } else if (StartsWithASCII(mime_type_string, "video/", true)) { 212 } else if (StartsWithASCII(mime_type_string, "video/", true)) {
171 download_content = DOWNLOAD_CONTENT_VIDEO; 213 download_content = DOWNLOAD_CONTENT_VIDEO;
172 } 214 }
173 } 215 }
174 216
175 // Record the value. 217 // Record the value.
176 UMA_HISTOGRAM_ENUMERATION("Download.ContentType", 218 UMA_HISTOGRAM_ENUMERATION("Download.ContentType",
177 download_content, 219 download_content,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 284
243 void RecordOpensOutstanding(int size) { 285 void RecordOpensOutstanding(int size) {
244 UMA_HISTOGRAM_CUSTOM_COUNTS("Download.OpensOutstanding", 286 UMA_HISTOGRAM_CUSTOM_COUNTS("Download.OpensOutstanding",
245 size, 287 size,
246 0/*min*/, 288 0/*min*/,
247 (1 << 10)/*max*/, 289 (1 << 10)/*max*/,
248 64/*num_buckets*/); 290 64/*num_buckets*/);
249 } 291 }
250 292
251 } // namespace download_stats 293 } // namespace download_stats
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698