blob: 3e4bd1a26282ac9129d3769763a29ab8f9546f6c [file] [log] [blame]
module js_to_cpp;
// This struct encompasses all of the basic types, so that they
// may be sent from C++ to JS and back for validation.
struct EchoArgs {
int64 si64;
int32 si32;
int16 si16;
int8 si8;
uint64 ui64;
uint32 ui32;
uint16 ui16;
uint8 ui8;
float float_val;
float float_inf;
float float_nan;
double double_val;
double double_inf;
double double_nan;
string? name;
array<string>? string_array;
handle<message_pipe>? message_handle;
handle<data_pipe_consumer>? data_handle;
struct EchoArgsList {
EchoArgsList? next;
EchoArgs? item;
interface ForTesting {};
// Note: For messages which control test flow, pick numbers that are unlikely
// to be hit as a result of our deliberate corruption of response messages.
interface CppSide {
// Sent for all tests to notify that the JS side is now ready.
// Indicates end for echo, bit-flip, and back-pointer tests.
// Responses from specific tests.
EchoResponse(EchoArgsList list);
// Having an associated interface pointer in the message makes sure the
// message header version 2 is tested.
BitFlipResponse(EchoArgsList arg, associated ForTesting? not_used);
BackPointerResponse(EchoArgsList arg);
interface JsSide {
SetCppSide(CppSide cpp);
Echo(int32 numIterations, EchoArgs arg);
BitFlip(EchoArgs arg);
BackPointer(EchoArgs arg);