plugin_uma.cc revision ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/renderer/plugins/plugin_uma.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <algorithm>
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cstring>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/metrics/histogram.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string_util.h"
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/common/content_constants.h"
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "third_party/widevine/cdm/widevine_cdm_common.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// String we will use to convert mime type to plugin type.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kWindowsMediaPlayerType[] = "application/x-mplayer2";
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kSilverlightTypePrefix[] = "application/x-silverlight";
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kRealPlayerTypePrefix[] = "audio/x-pn-realaudio";
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kJavaTypeSubstring[] = "application/x-java-applet";
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kQuickTimeType[] = "video/quicktime";
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Arrays containing file extensions connected with specific plugins.
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Note: THE ARRAYS MUST BE SORTED BECAUSE BINARY SEARCH IS USED ON THEM!
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kWindowsMediaPlayerExtensions[] = {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".asx"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kRealPlayerExtensions[] = {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".ra",
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".ram",
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".rm",
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".rmm",
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".rmp",
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".rpm"
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kQuickTimeExtensions[] = {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".moov",
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".mov",
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".qif",
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".qt",
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".qti",
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ".qtif"
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char* kShockwaveFlashExtensions[] = {
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    ".spl",
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    ".swf"
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class UMASenderImpl : public PluginUMAReporter::UMASender {
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void SendPluginUMA(
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      PluginUMAReporter::ReportType report_type,
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      PluginUMAReporter::PluginType plugin_type) OVERRIDE;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UMASenderImpl::SendPluginUMA(PluginUMAReporter::ReportType report_type,
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  PluginUMAReporter::PluginType plugin_type) {
63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // UMA_HISTOGRAM_ENUMERATION requires constant histogram name. Use string
64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // constants explicitly instead of trying to use variables for names.
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  switch (report_type) {
66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case PluginUMAReporter::MISSING_PLUGIN:
67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION("Plugin.MissingPlugins",
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                plugin_type,
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                PluginUMAReporter::PLUGIN_TYPE_MAX);
70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      break;
71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case PluginUMAReporter::DISABLED_PLUGIN:
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION("Plugin.DisabledPlugins",
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                plugin_type,
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                PluginUMAReporter::PLUGIN_TYPE_MAX);
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      break;
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    default:
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      NOTREACHED();
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static.
82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PluginUMAReporter* PluginUMAReporter::GetInstance() {
83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return Singleton<PluginUMAReporter>::get();
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PluginUMAReporter::ReportPluginMissing(
87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const std::string& plugin_mime_type, const GURL& plugin_src) {
88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  report_sender_->SendPluginUMA(MISSING_PLUGIN,
89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                GetPluginType(plugin_mime_type, plugin_src));
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PluginUMAReporter::ReportPluginDisabled(
93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const std::string& plugin_mime_type, const GURL& plugin_src) {
94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  report_sender_->SendPluginUMA(DISABLED_PLUGIN,
95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                GetPluginType(plugin_mime_type, plugin_src));
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PluginUMAReporter::PluginUMAReporter() : report_sender_(new UMASenderImpl()) {
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PluginUMAReporter::~PluginUMAReporter() {
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static.
105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool PluginUMAReporter::CompareCStrings(const char* first, const char* second) {
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return strcmp(first, second) < 0;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool PluginUMAReporter::CStringArrayContainsCString(const char** array,
110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                                    size_t array_size,
111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                                    const char* str) {
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return std::binary_search(array, array + array_size, str, CompareCStrings);
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PluginUMAReporter::ExtractFileExtension(const GURL& src,
116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                             std::string* extension) {
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string extension_file_path(src.ExtractFileName());
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (extension_file_path.empty())
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    extension_file_path = src.host();
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t last_dot = extension_file_path.find_last_of('.');
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (last_dot != std::string::npos) {
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *extension = extension_file_path.substr(last_dot);
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    extension->clear();
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  StringToLowerASCII(extension);
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PluginUMAReporter::PluginType PluginUMAReporter::GetPluginType(
132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const std::string& plugin_mime_type, const GURL& plugin_src) {
133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // If we know plugin's mime type, we use it to determine plugin's type. Else,
134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // we try to determine plugin type using plugin source's extension.
135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (!plugin_mime_type.empty())
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return MimeTypeToPluginType(StringToLowerASCII(plugin_mime_type));
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return SrcToPluginType(plugin_src);
139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PluginUMAReporter::PluginType PluginUMAReporter::SrcToPluginType(
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const GURL& src) {
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string file_extension;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExtractFileExtension(src, &file_extension);
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (CStringArrayContainsCString(kWindowsMediaPlayerExtensions,
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  arraysize(kWindowsMediaPlayerExtensions),
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  file_extension.c_str())) {
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return WINDOWS_MEDIA_PLAYER;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (CStringArrayContainsCString(kQuickTimeExtensions,
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  arraysize(kQuickTimeExtensions),
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  file_extension.c_str())) {
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return QUICKTIME;
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (CStringArrayContainsCString(kRealPlayerExtensions,
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  arraysize(kRealPlayerExtensions),
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  file_extension.c_str())) {
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return REALPLAYER;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (CStringArrayContainsCString(kShockwaveFlashExtensions,
164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  arraysize(kShockwaveFlashExtensions),
165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  file_extension.c_str())) {
166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return SHOCKWAVE_FLASH;
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return UNSUPPORTED_EXTENSION;
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PluginUMAReporter::PluginType PluginUMAReporter::MimeTypeToPluginType(
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& mime_type) {
174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (mime_type == kWindowsMediaPlayerType)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return WINDOWS_MEDIA_PLAYER;
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t prefix_length = strlen(kSilverlightTypePrefix);
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (strncmp(mime_type.c_str(), kSilverlightTypePrefix, prefix_length) == 0)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return SILVERLIGHT;
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prefix_length = strlen(kRealPlayerTypePrefix);
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (strncmp(mime_type.c_str(), kRealPlayerTypePrefix, prefix_length) == 0)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return REALPLAYER;
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (strstr(mime_type.c_str(), kJavaTypeSubstring))
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return JAVA;
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (mime_type == kQuickTimeType)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return QUICKTIME;
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (mime_type == content::kBrowserPluginMimeType)
192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return BROWSER_PLUGIN;
193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
194ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  if (mime_type == content::kFlashPluginSwfMimeType ||
195ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      mime_type == content::kFlashPluginSplMimeType) {
196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return SHOCKWAVE_FLASH;
197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#if defined(ENABLE_PEPPER_CDMS)
200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (mime_type == kWidevineCdmPluginMimeType)
201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return WIDEVINE_CDM;
20290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif
203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return UNSUPPORTED_MIMETYPE;
205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
206