include protocol PTestJSONHandle; using struct mozilla::void_t from "mozilla/ipc/IPCCore.h"; using struct mozilla::null_t from "mozilla/ipc/IPCCore.h"; namespace mozilla { namespace _ipdltest { [Comparable] struct KeyValue { nsString key; JSONVariant value; }; [Comparable] union JSONVariant { void_t; null_t; bool; int; double; nsString; PTestJSONHandle; KeyValue[]; JSONVariant[]; }; [ChildProc=any, ChildImpl=virtual, ParentImpl=virtual] sync protocol PTestJSON { manages PTestJSONHandle; child: async Start(); parent: async PTestJSONHandle(); sync Test(JSONVariant i) returns (JSONVariant o); async __delete__(); }; } // namespace mozilla } // namespace _ipdltest