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 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_ 6 #define CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/basictypes.h" 12 #include "base/files/file_path.h" 13 #include "content/common/content_export.h" 14 15 namespace base { 16 class Version; 17 } 18 19 namespace content { 20 21 struct CONTENT_EXPORT WebPluginMimeType { 22 WebPluginMimeType(); 23 // A constructor for the common case of a single file extension and an ASCII 24 // description. 25 WebPluginMimeType(const std::string& m, 26 const std::string& f, 27 const std::string& d); 28 ~WebPluginMimeType(); 29 30 // The name of the mime type (e.g., "application/x-shockwave-flash"). 31 std::string mime_type; 32 33 // A list of all the file extensions for this mime type. 34 std::vector<std::string> file_extensions; 35 36 // Description of the mime type. 37 base::string16 description; 38 39 // Extra parameters to include when instantiating the plugin. 40 std::vector<base::string16> additional_param_names; 41 std::vector<base::string16> additional_param_values; 42 }; 43 44 // Describes an available NPAPI or Pepper plugin. 45 struct CONTENT_EXPORT WebPluginInfo { 46 enum PluginType { 47 PLUGIN_TYPE_NPAPI, 48 PLUGIN_TYPE_PEPPER_IN_PROCESS, 49 PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS, 50 PLUGIN_TYPE_PEPPER_UNSANDBOXED, 51 PLUGIN_TYPE_BROWSER_PLUGIN 52 }; 53 54 WebPluginInfo(); 55 WebPluginInfo(const WebPluginInfo& rhs); 56 ~WebPluginInfo(); 57 WebPluginInfo& operator=(const WebPluginInfo& rhs); 58 59 // Special constructor only used during unit testing: 60 WebPluginInfo(const base::string16& fake_name, 61 const base::FilePath& fake_path, 62 const base::string16& fake_version, 63 const base::string16& fake_desc); 64 is_pepper_pluginWebPluginInfo65 bool is_pepper_plugin() const { 66 return ((type == PLUGIN_TYPE_PEPPER_IN_PROCESS ) || 67 (type == PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS) || 68 (type == PLUGIN_TYPE_PEPPER_UNSANDBOXED)); 69 } 70 71 // Parse a version string as used by a plug-in. This method is more lenient 72 // in accepting weird version strings than base::Version::GetFromString() 73 static void CreateVersionFromString(const base::string16& version_string, 74 base::Version* parsed_version); 75 76 // The name of the plugin (i.e. Flash). 77 base::string16 name; 78 79 // The path to the plugin file (DLL/bundle/library). 80 base::FilePath path; 81 82 // The version number of the plugin file (may be OS-specific) 83 base::string16 version; 84 85 // A description of the plugin that we get from its version info. 86 base::string16 desc; 87 88 // A list of all the mime types that this plugin supports. 89 std::vector<WebPluginMimeType> mime_types; 90 91 // Plugin type. See the PluginType enum. 92 int type; 93 94 // When type is PLUGIN_TYPE_PEPPER_* this indicates the permission bits. 95 int32 pepper_permissions; 96 }; 97 98 } // namespace content 99 100 #endif // CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_ 101