1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 /* Given an interface like this: 6 * 7 * struct PPB_Frob_1_1 { 8 * void (*Flange)(int32_t param1, char* param2); 9 * int32_t (*Shlep)(PP_CompletionCallback); 10 * }; 11 * 12 * Write a set of macros like this: 13 * 14 * BEGIN_INTERFACE(FrobInterface, PPB_Frob_1_1, PPB_FROB_INTERFACE_1_1) 15 * METHOD2(FrobInterface, void, Flange, int32_t, char*) 16 * METHOD1(FrobInterface, int32_t, Shlep, PP_CompletionCallback) 17 * END_INTERFACE(FrobInterface, PPB_Frob_1_1) 18 * 19 * NOTE: Use versioned struct name and macro to ensure they match. 20 */ 21 22 /* Chrome M25 required */ 23 BEGIN_INTERFACE(ConsoleInterface, PPB_Console_1_0, PPB_CONSOLE_INTERFACE_1_0) 24 METHOD3(ConsoleInterface, void, Log, PP_Instance, PP_LogLevel, PP_Var) 25 END_INTERFACE(ConsoleInterface, PPB_Console_1_0) 26 27 /* Chrome M14 required */ 28 BEGIN_INTERFACE(CoreInterface, PPB_Core_1_0, PPB_CORE_INTERFACE_1_0) 29 METHOD1(CoreInterface, void, AddRefResource, PP_Resource) 30 METHOD1(CoreInterface, void, ReleaseResource, PP_Resource) 31 METHOD0(CoreInterface, PP_Bool, IsMainThread) 32 END_INTERFACE(CoreInterface, PPB_Core_1_0) 33 34 /* Chrome M14 required */ 35 BEGIN_INTERFACE(FileIoInterface, PPB_FileIO_1_0, PPB_FILEIO_INTERFACE_1_0) 36 METHOD1(FileIoInterface, void, Close, PP_Resource) 37 METHOD1(FileIoInterface, PP_Resource, Create, PP_Resource) 38 METHOD2(FileIoInterface, int32_t, Flush, PP_Resource, 39 PP_CompletionCallback) 40 METHOD4(FileIoInterface, int32_t, Open, PP_Resource, PP_Resource, int32_t, 41 PP_CompletionCallback) 42 METHOD3(FileIoInterface, int32_t, Query, PP_Resource, PP_FileInfo*, 43 PP_CompletionCallback) 44 METHOD5(FileIoInterface, int32_t, Read, PP_Resource, int64_t, char*, 45 int32_t, PP_CompletionCallback) 46 METHOD3(FileIoInterface, int32_t, SetLength, PP_Resource, int64_t, 47 PP_CompletionCallback) 48 METHOD5(FileIoInterface, int32_t, Write, PP_Resource, int64_t, 49 const char*, int32_t, PP_CompletionCallback) 50 END_INTERFACE(FileIoInterface, PPB_FileIO_1_0) 51 52 /* Chrome M28 required */ 53 BEGIN_INTERFACE(FileRefInterface, PPB_FileRef_1_1, PPB_FILEREF_INTERFACE_1_1) 54 METHOD2(FileRefInterface, PP_Resource, Create, PP_Resource, const char*) 55 METHOD2(FileRefInterface, int32_t, Delete, PP_Resource, PP_CompletionCallback) 56 METHOD1(FileRefInterface, PP_Var, GetName, PP_Resource) 57 METHOD3(FileRefInterface, int32_t, MakeDirectory, PP_Resource, PP_Bool, 58 PP_CompletionCallback) 59 METHOD3(FileRefInterface, int32_t, Query, PP_Resource, PP_FileInfo*, 60 PP_CompletionCallback) 61 METHOD3(FileRefInterface, int32_t, ReadDirectoryEntries, PP_Resource, 62 const PP_ArrayOutput&, PP_CompletionCallback) 63 METHOD3(FileRefInterface, int32_t, Rename, PP_Resource, PP_Resource, 64 PP_CompletionCallback) 65 END_INTERFACE(FileRefInterface, PPB_FileRef_1_1) 66 67 /* Chrome M14 required */ 68 BEGIN_INTERFACE(FileSystemInterface, PPB_FileSystem_1_0, 69 PPB_FILESYSTEM_INTERFACE_1_0) 70 METHOD1(FileSystemInterface, PP_Bool, IsFileSystem, PP_Resource) 71 METHOD2(FileSystemInterface, PP_Resource, Create, PP_Instance, 72 PP_FileSystemType) 73 METHOD3(FileSystemInterface, int32_t, Open, PP_Resource, int64_t, 74 PP_CompletionCallback) 75 END_INTERFACE(FileSystemInterface, PPB_FileSystem_1_0) 76 77 /* Chrome M25 required */ 78 BEGIN_INTERFACE(MessageLoopInterface, PPB_MessageLoop_1_0, 79 PPB_MESSAGELOOP_INTERFACE_1_0) 80 METHOD1(MessageLoopInterface, PP_Resource, Create, PP_Instance) 81 METHOD1(MessageLoopInterface, int32_t, AttachToCurrentThread, PP_Resource) 82 METHOD1(MessageLoopInterface, int32_t, Run, PP_Resource) 83 METHOD3(MessageLoopInterface, int32_t, PostWork, PP_Resource, 84 struct PP_CompletionCallback, int64_t) 85 METHOD2(MessageLoopInterface, int32_t, PostQuit, PP_Resource, PP_Bool) 86 METHOD0(MessageLoopInterface, PP_Resource, GetCurrent) 87 METHOD0(MessageLoopInterface, PP_Resource, GetForMainThread) 88 END_INTERFACE(MessageLoopInterface, PPB_MessageLoop_1_0) 89 90 /* Chrome M14 required */ 91 BEGIN_INTERFACE(MessagingInterface, PPB_Messaging_1_0, 92 PPB_MESSAGING_INTERFACE_1_0) 93 METHOD2(MessagingInterface, void, PostMessage, PP_Instance, PP_Var) 94 END_INTERFACE(MessagingInterface, PPB_Messaging_1_0) 95 96 /* Chrome M29 required */ 97 BEGIN_INTERFACE(VarArrayInterface, PPB_VarArray_1_0, 98 PPB_VAR_ARRAY_INTERFACE_1_0) 99 METHOD0(VarArrayInterface, PP_Var, Create) 100 METHOD2(VarArrayInterface, PP_Var, Get, PP_Var, uint32_t) 101 METHOD3(VarArrayInterface, PP_Bool, Set, PP_Var, uint32_t, PP_Var) 102 METHOD1(VarArrayInterface, uint32_t, GetLength, PP_Var) 103 METHOD2(VarArrayInterface, PP_Bool, SetLength, PP_Var, uint32_t) 104 END_INTERFACE(VarArrayInterface, PPB_VarArray_1_0) 105 106 /* Chrome M18 required */ 107 BEGIN_INTERFACE(VarArrayBufferInterface, PPB_VarArrayBuffer_1_0, 108 PPB_VAR_ARRAY_BUFFER_INTERFACE_1_0) 109 METHOD1(VarArrayBufferInterface, PP_Var, Create, uint32_t) 110 METHOD2(VarArrayBufferInterface, PP_Bool, ByteLength, PP_Var, uint32_t*) 111 METHOD1(VarArrayBufferInterface, void*, Map, PP_Var) 112 METHOD1(VarArrayBufferInterface, void, Unmap, PP_Var) 113 END_INTERFACE(VarArrayBufferInterface, PPB_VarArrayBuffer_1_0) 114 115 BEGIN_INTERFACE(VarDictionaryInterface, PPB_VarDictionary_1_0, 116 PPB_VAR_DICTIONARY_INTERFACE_1_0) 117 METHOD0(VarDictionaryInterface, PP_Var, Create) 118 METHOD3(VarDictionaryInterface, PP_Bool, Set, PP_Var, PP_Var, PP_Var) 119 METHOD2(VarDictionaryInterface, PP_Var, Get, PP_Var, PP_Var) 120 METHOD1(VarDictionaryInterface, PP_Var, GetKeys, PP_Var) 121 END_INTERFACE(VarDictionaryInterface, PPB_VarDictionary_1_0) 122 123 /* Chrome M18 required */ 124 BEGIN_INTERFACE(VarInterface, PPB_Var_1_1, PPB_VAR_INTERFACE_1_1) 125 METHOD1(VarInterface, void, AddRef, PP_Var) 126 METHOD1(VarInterface, void, Release, PP_Var) 127 METHOD2(VarInterface, PP_Var, VarFromUtf8, const char *, uint32_t) 128 METHOD2(VarInterface, const char*, VarToUtf8, PP_Var, uint32_t*) 129 END_INTERFACE(VarInterface, PPB_Var_1_1) 130 131 /* Chrome M29 required */ 132 BEGIN_INTERFACE(HostResolverInterface, PPB_HostResolver_1_0, 133 PPB_HOSTRESOLVER_INTERFACE_1_0) 134 METHOD1(HostResolverInterface, PP_Resource, Create, PP_Instance) 135 METHOD5(HostResolverInterface, int32_t, Resolve, PP_Resource, const char*, 136 uint16_t, const struct PP_HostResolver_Hint*, 137 struct PP_CompletionCallback) 138 METHOD1(HostResolverInterface, PP_Var, GetCanonicalName, PP_Resource) 139 METHOD1(HostResolverInterface, uint32_t, GetNetAddressCount, PP_Resource) 140 METHOD2(HostResolverInterface, PP_Resource, GetNetAddress, 141 PP_Resource, uint32_t) 142 END_INTERFACE(HostResolverInterface, PPB_HostResolver_1_0) 143 144 /* Chrome M29 required */ 145 BEGIN_INTERFACE(NetAddressInterface, PPB_NetAddress_1_0, 146 PPB_NETADDRESS_INTERFACE_1_0) 147 METHOD2(NetAddressInterface, PP_Resource, CreateFromIPv4Address, 148 PP_Instance, PP_NetAddress_IPv4*) 149 METHOD2(NetAddressInterface, PP_Resource, CreateFromIPv6Address, 150 PP_Instance, PP_NetAddress_IPv6*) 151 METHOD1(NetAddressInterface, PP_Bool, IsNetAddress, PP_Resource) 152 METHOD1(NetAddressInterface, PP_NetAddress_Family, GetFamily, PP_Resource) 153 METHOD2(NetAddressInterface, PP_Bool, DescribeAsIPv4Address, PP_Resource, 154 struct PP_NetAddress_IPv4*) 155 METHOD2(NetAddressInterface, PP_Bool, DescribeAsIPv6Address, PP_Resource, 156 struct PP_NetAddress_IPv6*) 157 METHOD2(NetAddressInterface, PP_Var, DescribeAsString, PP_Resource, PP_Bool) 158 END_INTERFACE(NetAddressInterface, PPB_NetAddress_1_0) 159 160 /* Chrome M14 required */ 161 BEGIN_INTERFACE(URLLoaderInterface, PPB_URLLoader_1_0, 162 PPB_URLLOADER_INTERFACE_1_0) 163 METHOD1(URLLoaderInterface, PP_Resource, Create, PP_Instance) 164 METHOD3(URLLoaderInterface, int32_t, Open, PP_Resource, PP_Resource, 165 PP_CompletionCallback) 166 METHOD1(URLLoaderInterface, PP_Resource, GetResponseInfo, PP_Resource) 167 METHOD4(URLLoaderInterface, int32_t, ReadResponseBody, PP_Resource, void*, 168 int32_t, PP_CompletionCallback) 169 METHOD1(URLLoaderInterface, void, Close, PP_Resource) 170 END_INTERFACE(URLLoaderInterface, PPB_URLLoader_1_0) 171 172 /* Chrome M14 required */ 173 BEGIN_INTERFACE(URLRequestInfoInterface, PPB_URLRequestInfo_1_0, 174 PPB_URLREQUESTINFO_INTERFACE_1_0) 175 METHOD1(URLRequestInfoInterface, PP_Resource, Create, PP_Instance) 176 METHOD3(URLRequestInfoInterface, PP_Bool, SetProperty, PP_Resource, 177 PP_URLRequestProperty, PP_Var) 178 END_INTERFACE(URLRequestInfoInterface, PPB_URLRequestInfo_1_0) 179 180 /* Chrome M14 required */ 181 BEGIN_INTERFACE(URLResponseInfoInterface, PPB_URLResponseInfo_1_0, 182 PPB_URLRESPONSEINFO_INTERFACE_1_0) 183 METHOD2(URLResponseInfoInterface, PP_Var, GetProperty, PP_Resource, 184 PP_URLResponseProperty) 185 END_INTERFACE(URLResponseInfoInterface, PPB_URLResponseInfo_1_0) 186 187 /* Chrome M31 required */ 188 BEGIN_INTERFACE(TCPSocketInterface, PPB_TCPSocket_1_1, 189 PPB_TCPSOCKET_INTERFACE_1_1) 190 METHOD1(TCPSocketInterface, PP_Resource, Create, PP_Instance) 191 METHOD3(TCPSocketInterface, int32_t, Bind, PP_Resource, PP_Resource, 192 PP_CompletionCallback) 193 METHOD3(TCPSocketInterface, int32_t, Listen, PP_Resource, int32_t, 194 PP_CompletionCallback) 195 METHOD3(TCPSocketInterface, int32_t, Accept, PP_Resource, PP_Resource*, 196 PP_CompletionCallback) 197 METHOD1(TCPSocketInterface, PP_Bool, IsTCPSocket, PP_Resource) 198 METHOD3(TCPSocketInterface, int32_t, Connect, PP_Resource, PP_Resource, 199 PP_CompletionCallback) 200 METHOD1(TCPSocketInterface, PP_Resource, GetLocalAddress, PP_Resource) 201 METHOD1(TCPSocketInterface, PP_Resource, GetRemoteAddress, PP_Resource) 202 METHOD4(TCPSocketInterface, int32_t, Read, PP_Resource, char*, int32_t, 203 PP_CompletionCallback) 204 METHOD4(TCPSocketInterface, int32_t, Write, PP_Resource, const char*, 205 int32_t, PP_CompletionCallback) 206 METHOD1(TCPSocketInterface, void, Close, PP_Resource) 207 METHOD4(TCPSocketInterface, int32_t, SetOption, PP_Resource, 208 PP_TCPSocket_Option, PP_Var, PP_CompletionCallback) 209 END_INTERFACE(TCPSocketInterface, PPB_TCPSocket_1_1) 210 211 /* Chrome M29 required */ 212 BEGIN_INTERFACE(UDPSocketInterface, PPB_UDPSocket_1_0, 213 PPB_UDPSOCKET_INTERFACE_1_0) 214 METHOD1(UDPSocketInterface, PP_Resource, Create, PP_Instance) 215 METHOD1(UDPSocketInterface, PP_Bool, IsUDPSocket, PP_Resource) 216 METHOD3(UDPSocketInterface, int32_t, Bind, PP_Resource, PP_Resource, 217 PP_CompletionCallback) 218 METHOD1(UDPSocketInterface, PP_Resource, GetBoundAddress, PP_Resource) 219 METHOD5(UDPSocketInterface, int32_t, RecvFrom, PP_Resource, char*, int32_t, 220 PP_Resource*, PP_CompletionCallback) 221 METHOD5(UDPSocketInterface, int32_t, SendTo, PP_Resource, const char*, 222 int32_t, PP_Resource, PP_CompletionCallback) 223 METHOD1(UDPSocketInterface, void, Close, PP_Resource) 224 METHOD4(UDPSocketInterface, int32_t, SetOption, PP_Resource, 225 PP_UDPSocket_Option, PP_Var, PP_CompletionCallback) 226 END_INTERFACE(UDPSocketInterface, PPB_UDPSocket_1_0) 227