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;
  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);
};

[Client=CppSide]
interface JsSide {
  Ping();
  Echo(int32 numIterations, EchoArgs arg);
  BitFlip(EchoArgs arg);
  BackPointer(EchoArgs arg);
};

}
