summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/interface_list.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/proxy/interface_list.cc')
-rw-r--r--ppapi/proxy/interface_list.cc75
1 files changed, 51 insertions, 24 deletions
diff --git a/ppapi/proxy/interface_list.cc b/ppapi/proxy/interface_list.cc
index 2dcc526..5f037dd 100644
--- a/ppapi/proxy/interface_list.cc
+++ b/ppapi/proxy/interface_list.cc
@@ -103,9 +103,8 @@
// name PPB_Foo.
#define PROXY_API_ID(api_name) PROXY_CLASS_NAME(api_name)::kApiID
-// Helper to get the name of the factory function CreatePPB_Foo_Proxy given
-// the API name PPB_Foo.
-#define PROXY_FACTORY_NAME(api_name) Create##api_name##_Proxy
+// Helper to get the name of the templatized factory function.
+#define PROXY_FACTORY_NAME(api_name) ProxyFactory<PROXY_CLASS_NAME(api_name)>
// Helper to get the name of the thunk GetPPB_Foo_1_0_Thunk given the interface
// struct name PPB_Foo_1_0.
@@ -127,16 +126,10 @@ class NoAPIName_Proxy {
static const ApiID kApiID = API_ID_NONE;
};
-// Define factory functions for each interface type. These are of the form:
-// InterfaceProxy* CreatePPB_URLLoader_Proxy(...
-#define PROXIED_API(api_name) \
- InterfaceProxy* PROXY_FACTORY_NAME(api_name)(Dispatcher* dispatcher) { \
- return new PROXY_CLASS_NAME(api_name)(dispatcher); \
- }
-#include "ppapi/thunk/interfaces_ppb_public_stable.h"
-#include "ppapi/thunk/interfaces_ppb_public_dev.h"
-#include "ppapi/thunk/interfaces_ppb_private.h"
-#undef PROXIED_API
+template<typename ProxyClass>
+InterfaceProxy* ProxyFactory(Dispatcher* dispatcher) {
+ return new ProxyClass(dispatcher);
+}
} // namespace
@@ -174,25 +167,16 @@ InterfaceList::InterfaceList() {
AddPPB(PPB_VAR_INTERFACE, API_ID_NONE,
GetPPB_Var_Interface());
+ AddFlashInterfaces();
+
// PPB (browser) interfaces.
AddPPB(PPB_FileChooser_Proxy::GetTrustedInfo());
- AddPPB(PPB_Flash_Clipboard_Proxy::GetInfo());
- AddPPB(PPB_Flash_File_FileRef_Proxy::GetInfo());
- AddPPB(PPB_Flash_File_ModuleLocal_Proxy::GetInfo());
- AddPPB(PPB_Flash_Menu_Proxy::GetInfo());
- AddPPB(PPB_Flash_Proxy::GetInfo());
- AddPPB(PPB_Flash_TCPSocket_Proxy::GetInfo());
- AddPPB(PPB_Flash_UDPSocket_Proxy::GetInfo());
AddPPB(PPB_Instance_Proxy::GetInfoPrivate());
AddPPB(PPB_PDF_Proxy::GetInfo());
AddPPB(PPB_Testing_Proxy::GetInfo());
AddPPB(PPB_URLLoader_Proxy::GetTrustedInfo());
AddPPB(PPB_Var_Deprecated_Proxy::GetInfo());
-#ifdef ENABLE_FLAPPER_HACKS
- AddPPB(PPB_Flash_NetConnector_Proxy::GetInfo());
-#endif
-
// PPP (plugin) interfaces.
AddPPP(PPP_Graphics3D_Proxy::GetInfo());
AddPPP(PPP_InputEvent_Proxy::GetInfo());
@@ -252,6 +236,49 @@ const void* InterfaceList::GetInterfaceForPPP(const std::string& name) const {
return found->second.iface;
}
+void InterfaceList::AddFlashInterfaces() {
+ AddProxy(API_ID_PPB_FLASH_CLIPBOARD,
+ &ProxyFactory<PPB_Flash_Clipboard_Proxy>);
+ AddPPB(PPB_FLASH_CLIPBOARD_INTERFACE, API_ID_PPB_FLASH_CLIPBOARD,
+ PPB_Flash_Clipboard_Proxy::GetInterface());
+
+ AddProxy(API_ID_PPB_FLASH_FILE_MODULELOCAL,
+ &ProxyFactory<PPB_Flash_File_ModuleLocal_Proxy>);
+ AddPPB(PPB_FLASH_FILE_MODULELOCAL_INTERFACE,
+ API_ID_PPB_FLASH_FILE_MODULELOCAL,
+ PPB_Flash_File_ModuleLocal_Proxy::GetInterface());
+
+ AddProxy(API_ID_PPB_FLASH_FILE_FILEREF,
+ &ProxyFactory<PPB_Flash_File_FileRef_Proxy>);
+ AddPPB(PPB_FLASH_FILE_FILEREF_INTERFACE, API_ID_PPB_FLASH_FILE_FILEREF,
+ PPB_Flash_File_FileRef_Proxy::GetInterface());
+
+ AddProxy(API_ID_PPB_FLASH_MENU, &ProxyFactory<PPB_Flash_Menu_Proxy>);
+ AddPPB(PPB_FLASH_MENU_INTERFACE, API_ID_PPB_FLASH_MENU,
+ thunk::GetPPB_Flash_Menu_Thunk());
+
+ AddProxy(API_ID_PPB_FLASH, &ProxyFactory<PPB_Flash_Proxy>);
+ AddPPB(PPB_FLASH_INTERFACE, API_ID_PPB_FLASH,
+ PPB_Flash_Proxy::GetInterface());
+
+ AddProxy(API_ID_PPB_FLASH_TCPSOCKET,
+ &ProxyFactory<PPB_Flash_TCPSocket_Proxy>);
+ AddPPB(PPB_FLASH_TCPSOCKET_INTERFACE, API_ID_PPB_FLASH_TCPSOCKET,
+ thunk::GetPPB_Flash_TCPSocket_Thunk());
+
+ AddProxy(API_ID_PPB_FLASH_UDPSOCKET,
+ &ProxyFactory<PPB_Flash_UDPSocket_Proxy>);
+ AddPPB(PPB_FLASH_UDPSOCKET_INTERFACE, API_ID_PPB_FLASH_UDPSOCKET,
+ thunk::GetPPB_Flash_UDPSocket_Thunk());
+
+#ifdef ENABLE_FLAPPER_HACKS
+ AddProxy(API_ID_PPB_FLASH_NETCONNECTOR,
+ &ProxyFactory<PPB_Flash_NetConnector_Proxy>);
+ AddPPB(PPB_FLASH_NETCONNECTOR_INTERFACE, API_ID_PPB_FLASH_NETCONNECTOR,
+ thunk::GetPPB_Flash_NetConnector_Thunk());
+#endif
+}
+
void InterfaceList::AddProxy(ApiID id,
InterfaceProxy::Factory factory) {
// For interfaces with no corresponding _Proxy objects, the macros will