Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(350)

Side by Side Diff: webkit/plugins/ppapi/plugin_module.h

Issue 10815073: Refactoring of new IPC-only pepper implementation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef WEBKIT_PLUGINS_PPAPI_PLUGIN_MODULE_H_ 5 #ifndef WEBKIT_PLUGINS_PPAPI_PLUGIN_MODULE_H_
6 #define WEBKIT_PLUGINS_PPAPI_PLUGIN_MODULE_H_ 6 #define WEBKIT_PLUGINS_PPAPI_PLUGIN_MODULE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 struct EntryPoints { 55 struct EntryPoints {
56 // This structure is POD, with the constructor initializing to NULL. 56 // This structure is POD, with the constructor initializing to NULL.
57 WEBKIT_PLUGINS_EXPORT EntryPoints(); 57 WEBKIT_PLUGINS_EXPORT EntryPoints();
58 58
59 GetInterfaceFunc get_interface; 59 GetInterfaceFunc get_interface;
60 PPP_InitializeModuleFunc initialize_module; 60 PPP_InitializeModuleFunc initialize_module;
61 PPP_ShutdownModuleFunc shutdown_module; // Optional, may be NULL. 61 PPP_ShutdownModuleFunc shutdown_module; // Optional, may be NULL.
62 }; 62 };
63 63
64 // Allows the embedder to associate a class with this module. This is opaque
65 // from the PluginModule's perspective (see Set/GetEmbedderState below) but
66 // the module is in charge of deleting the class.
67 class EmbedderState {
raymes 2012/07/30 17:23:37 Not sure if it makes sense to be more descriptive
68 public:
69 virtual ~EmbedderState() {}
70 };
71
64 typedef std::set<PluginInstance*> PluginInstanceSet; 72 typedef std::set<PluginInstance*> PluginInstanceSet;
65 73
66 // You must call one of the Init functions after the constructor to create a 74 // You must call one of the Init functions after the constructor to create a
67 // module of the type you desire. 75 // module of the type you desire.
68 // 76 //
69 // The module lifetime delegate is a non-owning pointer that must outlive 77 // The module lifetime delegate is a non-owning pointer that must outlive
70 // all plugin modules. In practice it will be a global singleton that 78 // all plugin modules. In practice it will be a global singleton that
71 // tracks which modules are alive. 79 // tracks which modules are alive.
72 PluginModule(const std::string& name, 80 PluginModule(const std::string& name,
73 const FilePath& path, 81 const FilePath& path,
74 PluginDelegate::ModuleLifetime* lifetime_delegate, 82 PluginDelegate::ModuleLifetime* lifetime_delegate,
75 const ::ppapi::PpapiPermissions& perms); 83 const ::ppapi::PpapiPermissions& perms);
76 84
77 ~PluginModule(); 85 ~PluginModule();
78 86
87 // Sets the given class as being associated with this module. It will be
88 // deleted when the module is destroyed. You can only set it once, subsequent
89 // sets will assert.
90 //
91 // See EmbedderState above for more.
92 void SetEmbedderState(scoped_ptr<EmbedderState> state);
93 EmbedderState* GetEmbedderState();
94
79 // Initializes this module as an internal plugin with the given entrypoints. 95 // Initializes this module as an internal plugin with the given entrypoints.
80 // This is used for "plugins" compiled into Chrome. Returns true on success. 96 // This is used for "plugins" compiled into Chrome. Returns true on success.
81 // False means that the plugin can not be used. 97 // False means that the plugin can not be used.
82 bool InitAsInternalPlugin(const EntryPoints& entry_points); 98 bool InitAsInternalPlugin(const EntryPoints& entry_points);
83 99
84 // Initializes this module using the given library path as the plugin. 100 // Initializes this module using the given library path as the plugin.
85 // Returns true on success. False means that the plugin can not be used. 101 // Returns true on success. False means that the plugin can not be used.
86 bool InitAsLibrary(const FilePath& path); 102 bool InitAsLibrary(const FilePath& path);
87 103
88 // Initializes this module for the given out of process proxy. This takes 104 // Initializes this module for the given out of process proxy. This takes
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 172
157 private: 173 private:
158 // Calls the InitializeModule entrypoint. The entrypoint must have been 174 // Calls the InitializeModule entrypoint. The entrypoint must have been
159 // set and the plugin must not be out of process (we don't maintain 175 // set and the plugin must not be out of process (we don't maintain
160 // entrypoints in that case). 176 // entrypoints in that case).
161 bool InitializeModule(const EntryPoints& entry_points); 177 bool InitializeModule(const EntryPoints& entry_points);
162 178
163 // Note: This may be null. 179 // Note: This may be null.
164 PluginDelegate::ModuleLifetime* lifetime_delegate_; 180 PluginDelegate::ModuleLifetime* lifetime_delegate_;
165 181
182 // See EmbedderState above.
183 scoped_ptr<EmbedderState> embedder_state_;
184
166 // Tracker for completion callbacks, used mainly to ensure that all callbacks 185 // Tracker for completion callbacks, used mainly to ensure that all callbacks
167 // are properly aborted on module shutdown. 186 // are properly aborted on module shutdown.
168 scoped_refptr< ::ppapi::CallbackTracker> callback_tracker_; 187 scoped_refptr< ::ppapi::CallbackTracker> callback_tracker_;
169 188
170 PP_Module pp_module_; 189 PP_Module pp_module_;
171 190
172 // True when we're running in the destructor. This allows us to write some 191 // True when we're running in the destructor. This allows us to write some
173 // assertions. 192 // assertions.
174 bool is_in_destructor_; 193 bool is_in_destructor_;
175 194
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 229
211 bool nacl_ipc_proxy_; 230 bool nacl_ipc_proxy_;
212 231
213 DISALLOW_COPY_AND_ASSIGN(PluginModule); 232 DISALLOW_COPY_AND_ASSIGN(PluginModule);
214 }; 233 };
215 234
216 } // namespace ppapi 235 } // namespace ppapi
217 } // namespace webkit 236 } // namespace webkit
218 237
219 #endif // WEBKIT_PLUGINS_PPAPI_PLUGIN_MODULE_H_ 238 #endif // WEBKIT_PLUGINS_PPAPI_PLUGIN_MODULE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698