Re-subimission of https://codereview.chromium.org/1041213003/
[chromium-blink-merge.git] / content / public / common / webplugininfo.h
blobc84b92427d8ce44ae0ccc4bcf073668b7e99f384
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.
5 #ifndef CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_
6 #define CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_
8 #include <string>
9 #include <vector>
11 #include "base/basictypes.h"
12 #include "base/files/file_path.h"
13 #include "content/common/content_export.h"
15 namespace base {
16 class Version;
19 namespace content {
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();
30 // The name of the mime type (e.g., "application/x-shockwave-flash").
31 std::string mime_type;
33 // A list of all the file extensions for this mime type.
34 std::vector<std::string> file_extensions;
36 // Description of the mime type.
37 base::string16 description;
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;
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
54 WebPluginInfo();
55 WebPluginInfo(const WebPluginInfo& rhs);
56 ~WebPluginInfo();
57 WebPluginInfo& operator=(const WebPluginInfo& rhs);
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);
65 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));
71 // Parse a version string as used by a plugin. 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);
76 // The name of the plugin (i.e. Flash).
77 base::string16 name;
79 // The path to the plugin file (DLL/bundle/library).
80 base::FilePath path;
82 // The version number of the plugin file (may be OS-specific)
83 base::string16 version;
85 // A description of the plugin that we get from its version info.
86 base::string16 desc;
88 // A list of all the mime types that this plugin supports.
89 std::vector<WebPluginMimeType> mime_types;
91 // Plugin type. See the PluginType enum.
92 int type;
94 // When type is PLUGIN_TYPE_PEPPER_* this indicates the permission bits.
95 int32 pepper_permissions;
98 } // namespace content
100 #endif // CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_