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

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

Issue 6628019: Ensure that PP_Instance values are unique within a plugin process in addition... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 9 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
« no previous file with comments | « ppapi/proxy/ppb_file_ref_proxy.cc ('k') | webkit/plugins/ppapi/plugin_module.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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>
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/native_library.h" 13 #include "base/native_library.h"
14 #include "base/process.h" 14 #include "base/process.h"
15 #include "base/ref_counted.h" 15 #include "base/ref_counted.h"
16 #include "base/scoped_ptr.h" 16 #include "base/scoped_ptr.h"
17 #include "base/weak_ptr.h" 17 #include "base/weak_ptr.h"
18 #include "ppapi/c/pp_bool.h"
19 #include "ppapi/c/pp_instance.h"
18 #include "ppapi/c/pp_module.h" 20 #include "ppapi/c/pp_module.h"
19 #include "ppapi/c/ppb.h" 21 #include "ppapi/c/ppb.h"
20 #include "webkit/plugins/ppapi/plugin_delegate.h" 22 #include "webkit/plugins/ppapi/plugin_delegate.h"
21 23
22 class FilePath; 24 class FilePath;
23 class MessageLoop; 25 class MessageLoop;
24 struct PPB_Core; 26 struct PPB_Core;
25 typedef void* NPIdentifier; 27 typedef void* NPIdentifier;
26 28
27 namespace base { 29 namespace base {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 // releases us in its destructor. 121 // releases us in its destructor.
120 void InstanceCreated(PluginInstance* instance); 122 void InstanceCreated(PluginInstance* instance);
121 void InstanceDeleted(PluginInstance* instance); 123 void InstanceDeleted(PluginInstance* instance);
122 124
123 scoped_refptr<CallbackTracker> GetCallbackTracker(); 125 scoped_refptr<CallbackTracker> GetCallbackTracker();
124 126
125 // Called when running out of process and the plugin crashed. This will 127 // Called when running out of process and the plugin crashed. This will
126 // release relevant resources and update all affected instances. 128 // release relevant resources and update all affected instances.
127 void PluginCrashed(); 129 void PluginCrashed();
128 130
131 // Reserves the given instance is unique within the plugin, checking for
132 // collisions. See PPB_Proxy_Private for more information.
133 //
134 // The setter will set the callback which is set up when the proxy
135 // initializes. The Reserve function will call the previously set callback if
136 // it exists to validate the ID. If the callback has not been set (such as
137 // for in-process plugins), the Reserve function will assume that the ID is
138 // usable and will return true.
139 void SetReserveInstanceIDCallback(
140 PP_Bool (*reserve)(PP_Module, PP_Instance));
141 bool ReserveInstanceID(PP_Instance instance);
142
129 private: 143 private:
130 // Calls the InitializeModule entrypoint. The entrypoint must have been 144 // Calls the InitializeModule entrypoint. The entrypoint must have been
131 // set and the plugin must not be out of process (we don't maintain 145 // set and the plugin must not be out of process (we don't maintain
132 // entrypoints in that case). 146 // entrypoints in that case).
133 bool InitializeModule(); 147 bool InitializeModule();
134 148
135 PluginDelegate::ModuleLifetime* lifetime_delegate_; 149 PluginDelegate::ModuleLifetime* lifetime_delegate_;
136 150
137 // Tracker for completion callbacks, used mainly to ensure that all callbacks 151 // Tracker for completion callbacks, used mainly to ensure that all callbacks
138 // are properly aborted on module shutdown. 152 // are properly aborted on module shutdown.
(...skipping 21 matching lines...) Expand all
160 EntryPoints entry_points_; 174 EntryPoints entry_points_;
161 175
162 // The name of the module. 176 // The name of the module.
163 const std::string name_; 177 const std::string name_;
164 178
165 // Non-owning pointers to all instances associated with this module. When 179 // Non-owning pointers to all instances associated with this module. When
166 // there are no more instances, this object should be deleted. 180 // there are no more instances, this object should be deleted.
167 typedef std::set<PluginInstance*> PluginInstanceSet; 181 typedef std::set<PluginInstance*> PluginInstanceSet;
168 PluginInstanceSet instances_; 182 PluginInstanceSet instances_;
169 183
184 PP_Bool (*reserve_instance_id_)(PP_Module, PP_Instance);
185
170 DISALLOW_COPY_AND_ASSIGN(PluginModule); 186 DISALLOW_COPY_AND_ASSIGN(PluginModule);
171 }; 187 };
172 188
173 } // namespace ppapi 189 } // namespace ppapi
174 } // namespace webkit 190 } // namespace webkit
175 191
176 #endif // WEBKIT_PLUGINS_PPAPI_PLUGIN_MODULE_H_ 192 #endif // WEBKIT_PLUGINS_PPAPI_PLUGIN_MODULE_H_
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_file_ref_proxy.cc ('k') | webkit/plugins/ppapi/plugin_module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698