include protocol PTestHandle; using struct mozilla::void_t from "ipc/IPCMessageUtils.h"; using struct mozilla::null_t from "ipc/IPCMessageUtils.h"; namespace mozilla { namespace _ipdltest { union Key { // int; // double; nsString; }; struct KeyValue { Key key; JSONVariant value; }; union JSONVariant { void_t; null_t; bool; int; double; nsString; PTestHandle; KeyValue[]; JSONVariant[]; }; sync protocol PTestJSON { manages PTestHandle; child: async Start(); parent: async PTestHandle(); sync Test(JSONVariant i) returns (JSONVariant o); async __delete__(); state START: send Start goto TEST; state TEST: recv PTestHandle goto TEST; recv Test goto TEST; recv __delete__; }; } // namespace mozilla } // namespace _ipdltest