• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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