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

Side by Side Diff: webkit/glue/plugins/pepper_plugin_module.h

Issue 2834021: Revert 50667 - Add in support for internal pepper plugins into the PepperPlug... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 6 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 | « remoting/remoting.gyp ('k') | webkit/glue/plugins/pepper_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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_ 5 #ifndef WEBKIT_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_
6 #define WEBKIT_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_ 6 #define WEBKIT_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_
7 7
8 #include <set> 8 #include <set>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/file_path.h" 11 #include "base/file_path.h"
12 #include "base/native_library.h" 12 #include "base/native_library.h"
13 #include "base/ref_counted.h" 13 #include "base/ref_counted.h"
14 #include "third_party/ppapi/c/pp_module.h" 14 #include "third_party/ppapi/c/pp_module.h"
15 #include "third_party/ppapi/c/ppb.h"
16 15
17 namespace pepper { 16 namespace pepper {
18 17
19 class PluginDelegate; 18 class PluginDelegate;
20 class PluginInstance; 19 class PluginInstance;
21 20
22 class PluginModule : public base::RefCounted<PluginModule> { 21 class PluginModule : public base::RefCounted<PluginModule> {
23 public: 22 public:
24 typedef const void* (*PPP_GetInterfaceFunc)(const char*);
25 typedef int (*PPP_InitializeModuleFunc)(PP_Module, PPB_GetInterface);
26 typedef void (*PPP_ShutdownModuleFunc)();
27
28 struct EntryPoints {
29 EntryPoints()
30 : get_interface(NULL),
31 initialize_module(NULL),
32 shutdown_module(NULL) {
33 }
34
35 PPP_GetInterfaceFunc get_interface;
36 PPP_InitializeModuleFunc initialize_module;
37 PPP_ShutdownModuleFunc shutdown_module;
38 };
39
40 ~PluginModule(); 23 ~PluginModule();
41 24
42 static scoped_refptr<PluginModule> CreateModule(const FilePath& path); 25 static scoped_refptr<PluginModule> CreateModule(const FilePath& filename);
43 static scoped_refptr<PluginModule> CreateInternalModule(
44 EntryPoints entry_points);
45 26
46 // Converts the given module ID to an actual module object. Will return NULL 27 // Converts the given module ID to an actual module object. Will return NULL
47 // if the module is invalid. 28 // if the module is invalid.
48 static PluginModule* FromPPModule(PP_Module module); 29 static PluginModule* FromPPModule(PP_Module module);
49 30
50 PP_Module GetPPModule() const; 31 PP_Module GetPPModule() const;
51 32
52 PluginInstance* CreateInstance(PluginDelegate* delegate); 33 PluginInstance* CreateInstance(PluginDelegate* delegate);
53 34
54 // Returns "some" plugin instance associated with this module. This is not 35 // Returns "some" plugin instance associated with this module. This is not
55 // guaranteed to be any one in particular. This is normally used to execute 36 // guaranteed to be any one in particular. This is normally used to execute
56 // callbacks up to the browser layer that are not inherently per-instance, 37 // callbacks up to the browser layer that are not inherently per-instance,
57 // but the delegate lives only on the plugin instance so we need one of them. 38 // but the delegate lives only on the plugin instance so we need one of them.
58 PluginInstance* GetSomeInstance() const; 39 PluginInstance* GetSomeInstance() const;
59 40
60 const void* GetPluginInterface(const char* name) const; 41 const void* GetPluginInterface(const char* name) const;
61 42
62 // This module is associated with a set of instances. The PluginInstance 43 // This module is associated with a set of instances. The PluginInstance
63 // object declares its association with this module in its destructor and 44 // object declares its association with this module in its destructor and
64 // releases us in its destructor. 45 // releases us in its destructor.
65 void InstanceCreated(PluginInstance* instance); 46 void InstanceCreated(PluginInstance* instance);
66 void InstanceDeleted(PluginInstance* instance); 47 void InstanceDeleted(PluginInstance* instance);
67 48
68 private: 49 private:
69 PluginModule(); 50 typedef const void* (*PPP_GetInterfaceFunc)(const char*);
70 51
71 bool InitFromEntryPoints(const EntryPoints& entry_points); 52 explicit PluginModule(const FilePath& filename);
72 bool InitFromFile(const FilePath& path); 53
73 static bool LoadEntryPoints(const base::NativeLibrary& library, 54 bool Load();
74 EntryPoints* entry_points); 55
56 FilePath filename_;
75 57
76 bool initialized_; 58 bool initialized_;
77
78 // Holds a reference to the base::NativeLibrary handle if this PluginModule
79 // instance wraps functions loaded from a library. Can be NULL. If
80 // |library_| is non-NULL, PluginModule will attempt to unload the library
81 // during destruction.
82 base::NativeLibrary library_; 59 base::NativeLibrary library_;
83 60
84 // Contains pointers to the entry points of the actual plugin 61 PPP_GetInterfaceFunc ppp_get_interface_;
85 // implementation.
86 EntryPoints entry_points_;
87 62
88 // Non-owning pointers to all instances associated with this module. When 63 // Non-owning pointers to all instances associated with this module. When
89 // there are no more instances, this object should be deleted. 64 // there are no more instances, this object should be deleted.
90 typedef std::set<PluginInstance*> PluginInstanceSet; 65 typedef std::set<PluginInstance*> PluginInstanceSet;
91 PluginInstanceSet instances_; 66 PluginInstanceSet instances_;
92 67
93 DISALLOW_COPY_AND_ASSIGN(PluginModule); 68 DISALLOW_COPY_AND_ASSIGN(PluginModule);
94 }; 69 };
95 70
96 } // namespace pepper 71 } // namespace pepper
97 72
98 #endif // WEBKIT_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_ 73 #endif // WEBKIT_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_
OLDNEW
« no previous file with comments | « remoting/remoting.gyp ('k') | webkit/glue/plugins/pepper_plugin_module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698