diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-13 18:09:37 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-13 18:09:37 +0000 |
commit | 5c966027630633c4591f4f7ea2f76fd7c04682d9 (patch) | |
tree | 827b42c5cad66fa01fa1d6a3fe67aa598b399537 /ppapi/thunk/thunk.h | |
parent | 35eab12c495bfc7b56b57f0074eb1ed3f1969d09 (diff) | |
download | chromium_src-5c966027630633c4591f4f7ea2f76fd7c04682d9.zip chromium_src-5c966027630633c4591f4f7ea2f76fd7c04682d9.tar.gz chromium_src-5c966027630633c4591f4f7ea2f76fd7c04682d9.tar.bz2 |
s patch tries to remove most of the manual registration for Pepper interfaces, and replaces it with a list of macros. When files want to know which Pepper interface names and structs there are, they define what they want to do with the macros, and then include the relevant files for the classes of interfaces they want (stable, private, dev).
This re-lands my previous change.
Original Review URL: http://codereview.chromium.org/7874002
This does not convert all the dev interfaces. I just did a few to keep the patch smaller. So there is still a lot of manual registration.
This fixes the previous design problem where we assumed one *_Proxy object == one interface. We have been hacking around this lately with duplicate GetInfo calls, but this doesn't work for PPP interfaces.
Now, a _Proxy object is just there to help keep things organized. One proxy can handle zero, one, or many interfaces, and this mapping is controlled by just one line in the interfaces file.
So for example, to add a new function to a new version of an interface with backward compatibility, you would add that function to the _api.h file, and write a thunk for the new interface. Then you only need to add one line to the interfaces_ppb_public_stable.h file and that will be hooked up with the proxy and the implementation.
This removes some _proxy objects/files that were used only to declare that the interfaces existed, since they're no longer necessary.
I folded Console into the Instance API which removed a bunch of code.
I removed FileChooser 0.4. I think everybody has converted to the new one, and I think parts of it weren't even hooked up properly anymore.
Review URL: http://codereview.chromium.org/7887001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100936 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/thunk/thunk.h')
-rw-r--r-- | ppapi/thunk/thunk.h | 80 |
1 files changed, 25 insertions, 55 deletions
diff --git a/ppapi/thunk/thunk.h b/ppapi/thunk/thunk.h index 94c31a7..47d3660 100644 --- a/ppapi/thunk/thunk.h +++ b/ppapi/thunk/thunk.h @@ -7,55 +7,56 @@ #include "ppapi/thunk/ppapi_thunk_export.h" -struct PPB_Audio; -struct PPB_AudioConfig; +// Declares a getter for the interface thunk of the form: +// +// const PPB_Foo* ppapi::thunk::GetPPB_Foo_Thunk(); +// +#define IFACE(api_name, interface_name, InterfaceType) \ + struct InterfaceType; \ + namespace ppapi { namespace thunk { \ + PPAPI_THUNK_EXPORT const InterfaceType* Get##InterfaceType##_Thunk(); \ + } } +#define PROXIED_IFACE IFACE +#define UNPROXIED_IFACE IFACE + +#include "ppapi/thunk/interfaces_ppb_public_stable.h" +#include "ppapi/thunk/interfaces_ppb_public_dev.h" + +#undef UNPROXIED_IFACE +#undef PROXIED_IFACE +#undef IFACE + struct PPB_AudioTrusted; struct PPB_BrokerTrusted; struct PPB_Buffer_Dev; struct PPB_BufferTrusted; struct PPB_CharSet_Dev; -struct PPB_Context3D_Dev; +struct PPB_Console_Dev; struct PPB_Context3DTrusted_Dev; struct PPB_CursorControl_Dev; struct PPB_DirectoryReader_Dev; struct PPB_FileChooser_Dev; -struct PPB_FileIO; struct PPB_FileIOTrusted; -struct PPB_FileRef; -struct PPB_FileSystem; struct PPB_Find_Dev; struct PPB_Flash_Menu; struct PPB_Flash_NetConnector; struct PPB_Flash_TCPSocket; struct PPB_Font_Dev; struct PPB_Fullscreen_Dev; -struct PPB_GLESChromiumTextureMapping_Dev; -struct PPB_Graphics2D; struct PPB_Graphics3D; struct PPB_Graphics3DTrusted; struct PPB_ImageData; struct PPB_ImageDataTrusted; -struct PPB_InputEvent; -struct PPB_Instance; struct PPB_Instance_Private; -struct PPB_KeyboardInputEvent; struct PPB_LayerCompositor_Dev; -struct PPB_Messaging; -struct PPB_MouseInputEvent_1_0; -struct PPB_MouseInputEvent; -struct PPB_MouseLock_Dev; struct PPB_QueryPolicy_Dev; struct PPB_Scrollbar_0_5_Dev; struct PPB_Surface3D_Dev; struct PPB_Transport_Dev; -struct PPB_URLLoader; struct PPB_URLLoaderTrusted; -struct PPB_URLRequestInfo; -struct PPB_URLResponseInfo; struct PPB_VideoCapture_Dev; struct PPB_VideoDecoder_Dev; struct PPB_VideoLayer_Dev; -struct PPB_WheelInputEvent; struct PPB_Widget_Dev; struct PPB_Zoom_Dev; @@ -64,65 +65,34 @@ typedef PPB_Instance PPB_Instance_1_0; namespace ppapi { namespace thunk { -PPAPI_THUNK_EXPORT const PPB_Audio* GetPPB_Audio_Thunk(); -PPAPI_THUNK_EXPORT const PPB_AudioConfig* GetPPB_AudioConfig_Thunk(); PPAPI_THUNK_EXPORT const PPB_AudioTrusted* GetPPB_AudioTrusted_Thunk(); PPAPI_THUNK_EXPORT const PPB_BrokerTrusted* GetPPB_Broker_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Buffer_Dev* GetPPB_Buffer_Thunk(); PPAPI_THUNK_EXPORT const PPB_BufferTrusted* GetPPB_BufferTrusted_Thunk(); -PPAPI_THUNK_EXPORT const PPB_CharSet_Dev* GetPPB_CharSet_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Context3D_Dev* GetPPB_Context3D_Thunk(); +PPAPI_THUNK_EXPORT const PPB_Console_Dev* GetPPB_Console_Dev_Thunk(); PPAPI_THUNK_EXPORT const PPB_Context3DTrusted_Dev* GetPPB_Context3DTrusted_Thunk(); PPAPI_THUNK_EXPORT const PPB_CursorControl_Dev* GetPPB_CursorControl_Thunk(); PPAPI_THUNK_EXPORT const PPB_DirectoryReader_Dev* - GetPPB_DirectoryReader_Thunk(); -PPAPI_THUNK_EXPORT const PPB_FileChooser_Dev* GetPPB_FileChooser_Thunk(); -PPAPI_THUNK_EXPORT const PPB_FileIO* GetPPB_FileIO_Thunk(); + GetPPB_DirectoryReader_Dev_Thunk(); PPAPI_THUNK_EXPORT const PPB_FileIOTrusted* GetPPB_FileIOTrusted_Thunk(); -PPAPI_THUNK_EXPORT const PPB_FileRef* GetPPB_FileRef_Thunk(); -PPAPI_THUNK_EXPORT const PPB_FileSystem* GetPPB_FileSystem_Thunk(); PPAPI_THUNK_EXPORT const PPB_Find_Dev* GetPPB_Find_Thunk(); PPAPI_THUNK_EXPORT const PPB_Flash_Menu* GetPPB_Flash_Menu_Thunk(); PPAPI_THUNK_EXPORT const PPB_Flash_NetConnector* GetPPB_Flash_NetConnector_Thunk(); PPAPI_THUNK_EXPORT const PPB_Flash_TCPSocket* GetPPB_Flash_TCPSocket_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Font_Dev* GetPPB_Font_Thunk(); PPAPI_THUNK_EXPORT const PPB_Fullscreen_Dev* GetPPB_Fullscreen_Thunk(); -PPAPI_THUNK_EXPORT const PPB_GLESChromiumTextureMapping_Dev* - GetPPB_GLESChromiumTextureMapping_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Graphics2D* GetPPB_Graphics2D_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Graphics3D* GetPPB_Graphics3D_Thunk(); PPAPI_THUNK_EXPORT const PPB_Graphics3DTrusted* GetPPB_Graphics3DTrusted_Thunk(); -PPAPI_THUNK_EXPORT const PPB_InputEvent* GetPPB_InputEvent_Thunk(); -PPAPI_THUNK_EXPORT const PPB_ImageData* GetPPB_ImageData_Thunk(); PPAPI_THUNK_EXPORT const PPB_ImageDataTrusted* GetPPB_ImageDataTrusted_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Instance_1_0* GetPPB_Instance_1_0_Thunk(); PPAPI_THUNK_EXPORT const PPB_Instance_Private* GetPPB_Instance_Private_Thunk(); -PPAPI_THUNK_EXPORT const PPB_KeyboardInputEvent* - GetPPB_KeyboardInputEvent_Thunk(); PPAPI_THUNK_EXPORT const PPB_LayerCompositor_Dev* GetPPB_LayerCompositor_Thunk(); PPAPI_THUNK_EXPORT const PPB_QueryPolicy_Dev* GetPPB_QueryPolicy_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Messaging* GetPPB_Messaging_Thunk(); -PPAPI_THUNK_EXPORT const PPB_MouseInputEvent_1_0* - GetPPB_MouseInputEvent_1_0_Thunk(); -PPAPI_THUNK_EXPORT const PPB_MouseInputEvent* - GetPPB_MouseInputEvent_1_1_Thunk(); -PPAPI_THUNK_EXPORT const PPB_MouseLock_Dev* GetPPB_MouseLock_Thunk(); PPAPI_THUNK_EXPORT const PPB_Scrollbar_0_5_Dev* GetPPB_Scrollbar_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Surface3D_Dev* GetPPB_Surface3D_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Transport_Dev* GetPPB_Transport_Thunk(); -PPAPI_THUNK_EXPORT const PPB_URLLoader* GetPPB_URLLoader_Thunk(); +PPAPI_THUNK_EXPORT const PPB_Transport_Dev* GetPPB_Transport_Dev_Thunk(); PPAPI_THUNK_EXPORT const PPB_URLLoaderTrusted* GetPPB_URLLoaderTrusted_Thunk(); -PPAPI_THUNK_EXPORT const PPB_URLRequestInfo* GetPPB_URLRequestInfo_Thunk(); -PPAPI_THUNK_EXPORT const PPB_URLResponseInfo* GetPPB_URLResponseInfo_Thunk(); -PPAPI_THUNK_EXPORT const PPB_VideoCapture_Dev* GetPPB_VideoCapture_Thunk(); -PPAPI_THUNK_EXPORT const PPB_VideoDecoder_Dev* GetPPB_VideoDecoder_Thunk(); -PPAPI_THUNK_EXPORT const PPB_VideoLayer_Dev* GetPPB_VideoLayer_Thunk(); -PPAPI_THUNK_EXPORT const PPB_WheelInputEvent* GetPPB_WheelInputEvent_Thunk(); -PPAPI_THUNK_EXPORT const PPB_Widget_Dev* GetPPB_Widget_Thunk(); +PPAPI_THUNK_EXPORT const PPB_VideoLayer_Dev* GetPPB_VideoLayer_Dev_Thunk(); +PPAPI_THUNK_EXPORT const PPB_Widget_Dev* GetPPB_Widget_Dev_Thunk(); PPAPI_THUNK_EXPORT const PPB_Zoom_Dev* GetPPB_Zoom_Thunk(); } // namespace thunk |