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