Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / public / common / pepper_plugin_info.h
1 // Copyright (c) 2012 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_PEPPER_PLUGIN_INFO_H_
6 #define CONTENT_PUBLIC_COMMON_PEPPER_PLUGIN_INFO_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/files/file_path.h"
12 #include "content/common/content_export.h"
13 #include "content/public/common/webplugininfo.h"
14 #include "ppapi/c/pp_module.h"
15 #include "ppapi/c/ppb.h"
16
17 #if !defined(ENABLE_PLUGINS)
18 #error "Plugins should be enabled"
19 #endif
20
21 namespace content {
22
23 struct CONTENT_EXPORT PepperPluginInfo {
24   typedef const void* (*GetInterfaceFunc)(const char*);
25   typedef int (*PPP_InitializeModuleFunc)(PP_Module, PPB_GetInterface);
26   typedef void (*PPP_ShutdownModuleFunc)();
27
28   struct EntryPoints {
29     // This structure is POD, with the constructor initializing to NULL.
30     CONTENT_EXPORT EntryPoints();
31
32     GetInterfaceFunc get_interface;
33     PPP_InitializeModuleFunc initialize_module;
34     PPP_ShutdownModuleFunc shutdown_module;  // Optional, may be NULL.
35   };
36
37   PepperPluginInfo();
38   ~PepperPluginInfo();
39
40   WebPluginInfo ToWebPluginInfo() const;
41
42   // Indicates internal plugins for which there's not actually a library.
43   // These plugins are implemented in the Chrome binary using a separate set
44   // of entry points (see internal_entry_points below).
45   // Defaults to false.
46   bool is_internal;
47
48   // True when this plugin should be run out of process. Defaults to false.
49   bool is_out_of_process;
50
51   // True when an out-of-process plugin should also be run within sandbox.
52   // Defaults to true.
53   bool is_sandboxed;
54
55   base::FilePath path;  // Internal plugins have "internal-[name]" as path.
56   std::string name;
57   std::string description;
58   std::string version;
59   std::vector<WebPluginMimeType> mime_types;
60
61   // When is_internal is set, this contains the function pointers to the
62   // entry points for the internal plugins.
63   EntryPoints internal_entry_points;
64
65   // Permission bits from ppapi::Permission.
66   uint32 permissions;
67 };
68
69 }  // namespace content
70
71 #endif  // CONTENT_PUBLIC_COMMON_PEPPER_PLUGIN_INFO_H_