Index: chrome/renderer/plugins/plugin_uma.cc |
diff --git a/chrome/renderer/plugins/plugin_uma.cc b/chrome/renderer/plugins/plugin_uma.cc |
index 136898bb31dfc8bd657a2ca93b852a26bf585e16..1c3266454585aa606dc55edd30fcc87b72162fc2 100644 |
--- a/chrome/renderer/plugins/plugin_uma.cc |
+++ b/chrome/renderer/plugins/plugin_uma.cc |
@@ -9,6 +9,9 @@ |
#include "base/metrics/histogram.h" |
#include "base/string_util.h" |
+#include "content/public/common/content_constants.h" |
+#include "third_party/widevine/cdm/widevine_cdm_common.h" |
+#include "webkit/plugins/plugin_constants.h" |
namespace { |
@@ -20,7 +23,7 @@ const char kJavaTypeSubstring[] = "application/x-java-applet"; |
const char kQuickTimeType[] = "video/quicktime"; |
// Arrays containing file extensions connected with specific plugins. |
-// The arrays must be sorted because binary search is used on them. |
+// Note: THE ARRAYS MUST BE SORTED BECAUSE BINARY SEARCH IS USED ON THEM! |
const char* kWindowsMediaPlayerExtensions[] = { |
".asx" |
}; |
@@ -43,6 +46,11 @@ const char* kQuickTimeExtensions[] = { |
".qtif" |
}; |
+const char* kShockwaveFlashExtensions[] = { |
+ ".spl", |
+ ".swf" |
+}; |
+ |
} // namespace. |
class UMASenderImpl : public PluginUMAReporter::UMASender { |
@@ -59,12 +67,12 @@ void UMASenderImpl::SendPluginUMA(PluginUMAReporter::ReportType report_type, |
case PluginUMAReporter::MISSING_PLUGIN: |
UMA_HISTOGRAM_ENUMERATION("Plugin.MissingPlugins", |
plugin_type, |
- PluginUMAReporter::OTHER); |
+ PluginUMAReporter::PLUGIN_TYPE_MAX); |
break; |
case PluginUMAReporter::DISABLED_PLUGIN: |
UMA_HISTOGRAM_ENUMERATION("Plugin.DisabledPlugins", |
plugin_type, |
- PluginUMAReporter::OTHER); |
+ PluginUMAReporter::PLUGIN_TYPE_MAX); |
break; |
default: |
NOTREACHED(); |
@@ -153,12 +161,18 @@ PluginUMAReporter::PluginType PluginUMAReporter::SrcToPluginType( |
return REALPLAYER; |
} |
- return OTHER; |
+ if (CStringArrayContainsCString(kShockwaveFlashExtensions, |
+ arraysize(kShockwaveFlashExtensions), |
+ file_extension.c_str())) { |
+ return SHOCKWAVE_FLASH; |
+ } |
+ |
+ return UNSUPPORTED_EXTENSION; |
} |
PluginUMAReporter::PluginType PluginUMAReporter::MimeTypeToPluginType( |
const std::string& mime_type) { |
- if (strcmp(mime_type.c_str(), kWindowsMediaPlayerType) == 0) |
+ if (mime_type == kWindowsMediaPlayerType) |
return WINDOWS_MEDIA_PLAYER; |
size_t prefix_length = strlen(kSilverlightTypePrefix); |
@@ -172,8 +186,19 @@ PluginUMAReporter::PluginType PluginUMAReporter::MimeTypeToPluginType( |
if (strstr(mime_type.c_str(), kJavaTypeSubstring)) |
return JAVA; |
- if (strcmp(mime_type.c_str(), kQuickTimeType) == 0) |
+ if (mime_type == kQuickTimeType) |
return QUICKTIME; |
- return OTHER; |
+ if (mime_type == content::kBrowserPluginMimeType) |
+ return BROWSER_PLUGIN; |
+ |
+ if (mime_type == kFlashPluginSwfMimeType || |
+ mime_type == kFlashPluginSplMimeType) { |
+ return SHOCKWAVE_FLASH; |
+ } |
+ |
+ if (mime_type == kWidevineCdmPluginMimeType) |
+ return WIDEVINE_CDM; |
+ |
+ return UNSUPPORTED_MIMETYPE; |
} |