blob: 688b22b3dea8321a9d402535f5983bebae8b2cb5 [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;
};
// 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.
StartTest@88888888();
// Indicates end for echo, bit-flip, and back-pointer tests.
TestFinished@99999999();
// Responses from specific tests.
PingResponse();
EchoResponse(EchoArgsList list);
BitFlipResponse(EchoArgsList arg);
BackPointerResponse(EchoArgsList arg);
};
interface JsSide {
SetCppSide(CppSide cpp);
Ping();
Echo(int32 numIterations, EchoArgs arg);
BitFlip(EchoArgs arg);
BackPointer(EchoArgs arg);
};