diff options
Diffstat (limited to 'webkit/glue/plugins/pepper_plugin_module.h')
-rw-r--r-- | webkit/glue/plugins/pepper_plugin_module.h | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/webkit/glue/plugins/pepper_plugin_module.h b/webkit/glue/plugins/pepper_plugin_module.h deleted file mode 100644 index 5ccd528..0000000 --- a/webkit/glue/plugins/pepper_plugin_module.h +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBKIT_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_ -#define WEBKIT_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_ - -#include <map> -#include <set> - -#include "base/basictypes.h" -#include "base/native_library.h" -#include "base/process.h" -#include "base/ref_counted.h" -#include "base/scoped_ptr.h" -#include "base/weak_ptr.h" -#include "ppapi/c/pp_module.h" -#include "ppapi/c/ppb.h" -#include "webkit/glue/plugins/pepper_plugin_delegate.h" - -class FilePath; -class MessageLoop; -typedef struct NPObject NPObject; -struct PPB_Core; -typedef void* NPIdentifier; - -namespace base { -class WaitableEvent; -} - -namespace pp { -namespace proxy { -class HostDispatcher; -} // proxy -} // pp - -namespace IPC { -struct ChannelHandle; -} - -namespace pepper { - -class ObjectVar; -class PluginDelegate; -class PluginInstance; -class PluginObject; - -// Represents one plugin library loaded into one renderer. This library may -// have multiple instances. -// -// Note: to get from a PP_Instance to a PluginInstance*, use the -// ResourceTracker. -class PluginModule : public base::RefCounted<PluginModule>, - public base::SupportsWeakPtr<PluginModule> { - public: - typedef const void* (*GetInterfaceFunc)(const char*); - typedef int (*PPP_InitializeModuleFunc)(PP_Module, PPB_GetInterface); - typedef void (*PPP_ShutdownModuleFunc)(); - - struct EntryPoints { - // This structure is POD, with the constructor initializing to NULL. - EntryPoints(); - - GetInterfaceFunc get_interface; - PPP_InitializeModuleFunc initialize_module; - PPP_ShutdownModuleFunc shutdown_module; // Optional, may be NULL. - }; - - // You must call one of the Init functions to create a module of the type - // you desire. - PluginModule(); - - ~PluginModule(); - - // Initializes this module as an internal plugin with the given entrypoints. - // This is used for "plugins" compiled into Chrome. Returns true on success. - // False means that the plugin can not be used. - bool InitAsInternalPlugin(const EntryPoints& entry_points); - - // Initializes this module using the given library path as the plugin. - // Returns true on success. False means that the plugin can not be used. - bool InitAsLibrary(const FilePath& path); - - // Initializes this module for the given out of process proxy. This takes - // ownership of the given pointer, even in the failure case. - void InitAsProxied(PluginDelegate::OutOfProcessProxy* out_of_process_proxy); - - static const PPB_Core* GetCore(); - - // Returns a pointer to the local GetInterface function for retrieving - // PPB interfaces. - static GetInterfaceFunc GetLocalGetInterfaceFunc(); - - // Returns the module handle. This may be used before Init() is called (the - // proxy needs this information to set itself up properly). - PP_Module pp_module() const { return pp_module_; } - - void set_name(const std::string& name) { name_ = name; } - const std::string& name() const { return name_; } - - PluginInstance* CreateInstance(PluginDelegate* delegate); - - // Returns "some" plugin instance associated with this module. This is not - // guaranteed to be any one in particular. This is normally used to execute - // callbacks up to the browser layer that are not inherently per-instance, - // but the delegate lives only on the plugin instance so we need one of them. - PluginInstance* GetSomeInstance() const; - - // Calls the plugin's GetInterface and returns the given interface pointer, - // which could be NULL. - const void* GetPluginInterface(const char* name) const; - - // This module is associated with a set of instances. The PluginInstance - // object declares its association with this module in its destructor and - // releases us in its destructor. - void InstanceCreated(PluginInstance* instance); - void InstanceDeleted(PluginInstance* instance); - - // Tracks all live ObjectVar. This is so we can map between PluginModule + - // NPObject and get the ObjectVar corresponding to it. This Add/Remove - // function should be called by the ObjectVar when it is created and - // destroyed. - void AddNPObjectVar(ObjectVar* object_var); - void RemoveNPObjectVar(ObjectVar* object_var); - - // Looks up a previously registered ObjectVar for the given NPObject and - // module. Returns NULL if there is no ObjectVar corresponding to the given - // NPObject for the given module. See AddNPObjectVar above. - ObjectVar* ObjectVarForNPObject(NPObject* np_object) const; - - // Tracks all live PluginObjects. - void AddPluginObject(PluginObject* plugin_object); - void RemovePluginObject(PluginObject* plugin_object); - - private: - // Calls the InitializeModule entrypoint. The entrypoint must have been - // set and the plugin must not be out of process (we don't maintain - // entrypoints in that case). - bool InitializeModule(); - - PP_Module pp_module_; - - // Manages the out of process proxy interface. The presence of this - // pointer indicates that the plugin is running out of process and that the - // entry_points_ aren't valid. - scoped_ptr<PluginDelegate::OutOfProcessProxy> out_of_process_proxy_; - - // Holds a reference to the base::NativeLibrary handle if this PluginModule - // instance wraps functions loaded from a library. Can be NULL. If - // |library_| is non-NULL, PluginModule will attempt to unload the library - // during destruction. - base::NativeLibrary library_; - - // Contains pointers to the entry points of the actual plugin implementation. - // These will be NULL for out-of-process plugins, which is indicated by the - // presence of the out_of_process_proxy_ value. - EntryPoints entry_points_; - - // The name of the module. - std::string name_; - - // Non-owning pointers to all instances associated with this module. When - // there are no more instances, this object should be deleted. - typedef std::set<PluginInstance*> PluginInstanceSet; - PluginInstanceSet instances_; - - // Tracks all live ObjectVars used by this module so we can map NPObjects to - // the corresponding object. These are non-owning references. - typedef std::map<NPObject*, ObjectVar*> NPObjectToObjectVarMap;; - NPObjectToObjectVarMap np_object_to_object_var_; - - typedef std::set<PluginObject*> PluginObjectSet; - PluginObjectSet live_plugin_objects_; - - DISALLOW_COPY_AND_ASSIGN(PluginModule); -}; - -} // namespace pepper - -#endif // WEBKIT_GLUE_PLUGINS_PEPPER_PLUGIN_MODULE_H_ |