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

Side by Side Diff: chrome/renderer/plugins/plugin_uma.cc

Issue 13601002: Report UMA for Shockwave Flash and Widevine CDM. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: resolve comments Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
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 "chrome/renderer/plugins/plugin_uma.h" 5 #include "chrome/renderer/plugins/plugin_uma.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstring> 8 #include <cstring>
9 9
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 #include "base/string_util.h" 11 #include "base/string_util.h"
12 #include "content/public/common/content_constants.h"
12 13
13 namespace { 14 namespace {
14 15
15 // String we will use to convert mime tyoe to plugin type. 16 // String we will use to convert mime type to plugin type.
16 const char kWindowsMediaPlayerType[] = "application/x-mplayer2"; 17 const char kWindowsMediaPlayerType[] = "application/x-mplayer2";
17 const char kSilverlightTypePrefix[] = "application/x-silverlight"; 18 const char kSilverlightTypePrefix[] = "application/x-silverlight";
18 const char kRealPlayerTypePrefix[] = "audio/x-pn-realaudio"; 19 const char kRealPlayerTypePrefix[] = "audio/x-pn-realaudio";
19 const char kJavaTypeSubstring[] = "application/x-java-applet"; 20 const char kJavaTypeSubstring[] = "application/x-java-applet";
20 const char kQuickTimeType[] = "video/quicktime"; 21 const char kQuickTimeType[] = "video/quicktime";
22 const char kShockwaveFlashType[] = "application/x-shockwave-flash";
23 const char kWidevineCDMType[] = "application/x-ppapi-widevine-cdm";
21 24
22 // Arrays containing file extensions connected with specific plugins. 25 // Arrays containing file extensions connected with specific plugins.
23 // The arrays must be sorted because binary search is used on them. 26 // The arrays must be sorted because binary search is used on them.
24 const char* kWindowsMediaPlayerExtensions[] = { 27 const char* kWindowsMediaPlayerExtensions[] = {
25 ".asx" 28 ".asx"
26 }; 29 };
27 30
28 const char* kRealPlayerExtensions[] = { 31 const char* kRealPlayerExtensions[] = {
29 ".ra", 32 ".ra",
30 ".ram", 33 ".ram",
31 ".rm", 34 ".rm",
32 ".rmm", 35 ".rmm",
33 ".rmp", 36 ".rmp",
34 ".rpm" 37 ".rpm"
35 }; 38 };
36 39
37 const char* kQuickTimeExtensions[] = { 40 const char* kQuickTimeExtensions[] = {
38 ".moov", 41 ".moov",
39 ".mov", 42 ".mov",
40 ".qif", 43 ".qif",
41 ".qt", 44 ".qt",
42 ".qti", 45 ".qti",
43 ".qtif" 46 ".qtif"
44 }; 47 };
45 48
49 const char* kShockwaveFlashExtensions[] = {
50 ".flv",
51 ".swf"
52 };
53
46 } // namespace. 54 } // namespace.
47 55
48 class UMASenderImpl : public MissingPluginReporter::UMASender { 56 class UMASenderImpl : public MissingPluginReporter::UMASender {
49 virtual void SendPluginUMA(MissingPluginReporter::PluginType plugin_type) 57 virtual void SendPluginUMA(MissingPluginReporter::PluginType plugin_type)
50 OVERRIDE; 58 OVERRIDE;
51 }; 59 };
52 60
53 void UMASenderImpl::SendPluginUMA( 61 void UMASenderImpl::SendPluginUMA(
54 MissingPluginReporter::PluginType plugin_type) { 62 MissingPluginReporter::PluginType plugin_type) {
55 UMA_HISTOGRAM_ENUMERATION("Plugin.MissingPlugins", 63 UMA_HISTOGRAM_ENUMERATION("Plugin.MissingPlugins",
56 plugin_type, 64 plugin_type,
57 MissingPluginReporter::OTHER); 65 MissingPluginReporter::PLUGIN_TYPE_MAX);
58 } 66 }
59 67
60 // static. 68 // static.
61 MissingPluginReporter* MissingPluginReporter::GetInstance() { 69 MissingPluginReporter* MissingPluginReporter::GetInstance() {
62 return Singleton<MissingPluginReporter>::get(); 70 return Singleton<MissingPluginReporter>::get();
63 } 71 }
64 72
65 void MissingPluginReporter::ReportPluginMissing( 73 void MissingPluginReporter::ReportPluginMissing(
66 std::string plugin_mime_type, const GURL& plugin_src) { 74 std::string plugin_mime_type, const GURL& plugin_src) {
67 PluginType plugin_type; 75 PluginType plugin_type;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 file_extension.c_str())) { 138 file_extension.c_str())) {
131 return QUICKTIME; 139 return QUICKTIME;
132 } 140 }
133 141
134 if (CStringArrayContainsCString(kRealPlayerExtensions, 142 if (CStringArrayContainsCString(kRealPlayerExtensions,
135 arraysize(kRealPlayerExtensions), 143 arraysize(kRealPlayerExtensions),
136 file_extension.c_str())) { 144 file_extension.c_str())) {
137 return REALPLAYER; 145 return REALPLAYER;
138 } 146 }
139 147
140 return OTHER; 148 if (CStringArrayContainsCString(kShockwaveFlashExtensions,
149 arraysize(kShockwaveFlashExtensions),
150 file_extension.c_str())) {
151 return SHOCKWAVE_FLASH;
152 }
153
154 return UNSUPPORTED_EXTENSION;
141 } 155 }
142 156
143 MissingPluginReporter::PluginType MissingPluginReporter::MimeTypeToPluginType( 157 MissingPluginReporter::PluginType MissingPluginReporter::MimeTypeToPluginType(
144 const std::string& mime_type) { 158 const std::string& mime_type) {
145 if (strcmp(mime_type.c_str(), kWindowsMediaPlayerType) == 0) 159 if (mime_type == kWindowsMediaPlayerType)
146 return WINDOWS_MEDIA_PLAYER; 160 return WINDOWS_MEDIA_PLAYER;
147 161
148 size_t prefix_length = strlen(kSilverlightTypePrefix); 162 size_t prefix_length = strlen(kSilverlightTypePrefix);
149 if (strncmp(mime_type.c_str(), kSilverlightTypePrefix, prefix_length) == 0) 163 if (strncmp(mime_type.c_str(), kSilverlightTypePrefix, prefix_length) == 0)
150 return SILVERLIGHT; 164 return SILVERLIGHT;
151 165
152 prefix_length = strlen(kRealPlayerTypePrefix); 166 prefix_length = strlen(kRealPlayerTypePrefix);
153 if (strncmp(mime_type.c_str(), kRealPlayerTypePrefix, prefix_length) == 0) 167 if (strncmp(mime_type.c_str(), kRealPlayerTypePrefix, prefix_length) == 0)
154 return REALPLAYER; 168 return REALPLAYER;
155 169
156 if (strstr(mime_type.c_str(), kJavaTypeSubstring)) 170 if (strstr(mime_type.c_str(), kJavaTypeSubstring))
157 return JAVA; 171 return JAVA;
158 172
159 if (strcmp(mime_type.c_str(), kQuickTimeType) == 0) 173 if (mime_type == kQuickTimeType)
160 return QUICKTIME; 174 return QUICKTIME;
161 175
162 return OTHER; 176 if (mime_type == content::kBrowserPluginMimeType)
177 return BROWSER_PLUGIN;
178
179 if (mime_type.c_str(), kShockwaveFlashType)
180 return SHOCKWAVE_FLASH;
181
182 if (mime_type.c_str(), kWidevineCDMType)
183 return WIDEVINE_CDM;
184
185 return UNSUPPORTED_MIMETYPE;
163 } 186 }
164
OLDNEW
« chrome/renderer/plugins/plugin_uma.h ('K') | « chrome/renderer/plugins/plugin_uma.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698