Index: ppapi/proxy/interface_proxy.h |
=================================================================== |
--- ppapi/proxy/interface_proxy.h (revision 100753) |
+++ ppapi/proxy/interface_proxy.h (working copy) |
@@ -12,7 +12,6 @@ |
#include "ppapi/c/pp_resource.h" |
#include "ppapi/c/pp_var.h" |
#include "ppapi/proxy/interface_id.h" |
-#include "ppapi/shared_impl/function_group_base.h" |
namespace ppapi { |
namespace proxy { |
@@ -20,16 +19,13 @@ |
class Dispatcher; |
class InterfaceProxy : public IPC::Channel::Listener, |
- public IPC::Message::Sender, |
- public FunctionGroupBase { |
+ public IPC::Message::Sender { |
public: |
// Factory function type for interfaces. Ownership of the returned pointer |
// is transferred to the caller. |
- typedef InterfaceProxy* (*Factory)(Dispatcher* dispatcher); |
+ typedef InterfaceProxy* (*Factory)(Dispatcher* dispatcher, |
+ const void* target_interface); |
- // DEPRECATED: New classes should be registered directly in the interface |
- // list. This is kept around until we convert all the existing code. |
- // |
// Information about the interface. Each interface has a static function to |
// return its info, which allows either construction on the target side, and |
// getting the proxied interface on the source side (see dispatcher.h for |
@@ -47,6 +43,9 @@ |
virtual ~InterfaceProxy(); |
+ // The actual implementation of the given interface in the current process. |
+ const void* target_interface() const { return target_interface_; } |
+ |
Dispatcher* dispatcher() const { return dispatcher_; } |
// IPC::Message::Sender implementation. |
@@ -58,13 +57,19 @@ |
protected: |
// Creates the given interface associated with the given dispatcher. The |
// dispatcher manages our lifetime. |
- InterfaceProxy(Dispatcher* dispatcher); |
+ // |
+ // The target interface pointer, when non-NULL, indicates that this is a |
+ // target proxy (see dispatcher.h for a definition). In this case, the proxy |
+ // will interpret this pointer to the actual implementation of the interface |
+ // in the local process. |
+ InterfaceProxy(Dispatcher* dispatcher, const void* target_interface); |
uint32 SendCallback(PP_CompletionCallback callback); |
PP_CompletionCallback ReceiveCallback(uint32 serialized_callback); |
private: |
Dispatcher* dispatcher_; |
+ const void* target_interface_; |
}; |
} // namespace proxy |