Index: webkit/plugins/ppapi/ppapi_plugin_instance.h |
diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.h b/webkit/plugins/ppapi/ppapi_plugin_instance.h |
index 58a118694f5b990809f7bd19882ba1060a7801b4..5f0d47ffc5bb67b0d40fff6aecc7236d4e21cb4b 100644 |
--- a/webkit/plugins/ppapi/ppapi_plugin_instance.h |
+++ b/webkit/plugins/ppapi/ppapi_plugin_instance.h |
@@ -23,6 +23,7 @@ |
#include "ppapi/c/dev/ppp_printing_dev.h" |
#include "ppapi/c/pp_instance.h" |
#include "ppapi/c/pp_resource.h" |
+#include "ppapi/c/ppp_instance.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
#include "third_party/skia/include/core/SkRefCnt.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h" |
@@ -38,7 +39,6 @@ struct PPB_Fullscreen_Dev; |
struct PPB_Messaging; |
struct PPB_Zoom_Dev; |
struct PPP_Find_Dev; |
-struct PPP_Instance; |
struct PPP_Instance_Private; |
struct PPP_Messaging; |
struct PPP_Pdf; |
@@ -80,14 +80,19 @@ class Resource; |
// ResourceTracker. |
class PluginInstance : public base::RefCounted<PluginInstance> { |
public: |
+ struct PPP_Instance_Combined; |
+ |
PluginInstance(PluginDelegate* delegate, |
PluginModule* module, |
- const PPP_Instance* instance_interface); |
+ PPP_Instance_Combined* instance_interface); |
// Delete should be called by the WebPlugin before this destructor. |
~PluginInstance(); |
- static const PPB_Instance* GetInterface(); |
+ // Return a PPB_Instance interface compatible with the given interface name, |
+ // if one is available. Returns NULL if the requested interface is |
+ // not supported. |
+ static const void* GetInterface(const char* if_name); |
static const PPB_Instance_Private* GetPrivateInterface(); |
// Returns a pointer to the interface implementing PPB_Find that is |
@@ -265,6 +270,21 @@ class PluginInstance : public base::RefCounted<PluginInstance> { |
return fullscreen_container_; |
} |
+ // TODO(dmichael): Remove this when all plugins are ported to use scripting |
+ // from private interfaces. |
+ struct PPP_Instance_Combined : public PPP_Instance_0_5 { |
+ PPP_Instance_Combined(const PPP_Instance_0_5& instance_if); |
+ PPP_Instance_Combined(const PPP_Instance_0_4& instance_if); |
+ |
+ struct PP_Var (*GetInstanceObject_0_4)(PP_Instance instance); |
+ }; |
+ template <class InterfaceType> |
+ static PPP_Instance_Combined* new_instance_interface( |
+ const void* interface_object) { |
+ return new PPP_Instance_Combined( |
+ *static_cast<const InterfaceType*>(interface_object)); |
+ } |
+ |
private: |
bool LoadFindInterface(); |
bool LoadMessagingInterface(); |
@@ -319,7 +339,7 @@ class PluginInstance : public base::RefCounted<PluginInstance> { |
PluginDelegate* delegate_; |
scoped_refptr<PluginModule> module_; |
- const PPP_Instance* instance_interface_; |
+ scoped_ptr<PPP_Instance_Combined> instance_interface_; |
PP_Instance pp_instance_; |