1 module js_to_cpp { 2 3 // This struct encompasses all of the basic types, so that they 4 // may be sent from C++ to JS and back for validation. 5 struct EchoArgs { 6 int64 si64; 7 int32 si32; 8 int16 si16; 9 int8 si8; 10 uint64 ui64; 11 uint32 ui32; 12 uint16 ui16; 13 uint8 ui8; 14 float float_val; 15 float float_inf; 16 float float_nan; 17 double double_val; 18 double double_inf; 19 double double_nan; 20 string? name; 21 string[]? string_array; 22 handle<message_pipe>? message_handle; 23 handle<data_pipe_consumer>? data_handle; 24 }; 25 26 struct EchoArgsList { 27 EchoArgsList? next; 28 EchoArgs? item; 29 }; 30 31 // Note: For messages which control test flow, pick numbers that are unlikely 32 // to be hit as a result of our deliberate corruption of response messages. 33 interface CppSide { 34 // Sent for all tests to notify that the JS side is now ready. 35 StartTest@88888888(); 36 37 // Indicates end for echo, bit-flip, and back-pointer tests. 38 TestFinished@99999999(); 39 40 // Responses from specific tests. 41 PingResponse(); 42 EchoResponse(EchoArgsList list); 43 BitFlipResponse(EchoArgsList arg); 44 BackPointerResponse(EchoArgsList arg); 45 }; 46 47 [Client=CppSide] 48 interface JsSide { 49 Ping(); 50 Echo(int32 numIterations, EchoArgs arg); 51 BitFlip(EchoArgs arg); 52 BackPointer(EchoArgs arg); 53 }; 54 55 } 56