CLOSED TREE: TraceMonkey merge head. (a=blockers)
[mozilla-central.git] / js / ipc / PObjectWrapper.ipdl
blob8cf8b08f24422e6130c50853767b57d07aa90fc5
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2  * vim: set ts=8 sw=4 et tw=80:
3  *
4  * ***** BEGIN LICENSE BLOCK *****
5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6  *
7  * The contents of this file are subject to the Mozilla Public License Version
8  * 1.1 (the "License"); you may not use this file except in compliance with
9  * the License. You may obtain a copy of the License at
10  * http://www.mozilla.org/MPL/
11  *
12  * Software distributed under the License is distributed on an "AS IS" basis,
13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14  * for the specific language governing rights and limitations under the
15  * License.
16  *
17  * The Original Code is mozilla.org code.
18  *
19  * The Initial Developer of the Original Code is
20  * The Mozilla Foundation.
21  * Portions created by the Initial Developer are Copyright (C) 2010
22  * the Initial Developer. All Rights Reserved.
23  *
24  * Contributor(s):
25  *   Ben Newman <b{enjam,newma}n@mozilla.com> (original author)
26  *
27  * Alternatively, the contents of this file may be used under the terms of
28  * either of the GNU General Public License Version 2 or later (the "GPL"),
29  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
30  * in which case the provisions of the GPL or the LGPL are applicable instead
31  * of those above. If you wish to allow use of your version of this file only
32  * under the terms of either the GPL or the LGPL, and not to allow others to
33  * use your version of this file under the terms of the MPL, indicate your
34  * decision by deleting the provisions above and replace them with the notice
35  * and other provisions required by the GPL or the LGPL. If you do not delete
36  * the provisions above, a recipient may use your version of this file under
37  * the terms of any one of the MPL, the GPL or the LGPL.
38  *
39  * ***** END LICENSE BLOCK ***** */
41 include protocol PContextWrapper;
43 include "mozilla/jsipc/CPOWTypes.h";
45 using mozilla::void_t;
46 using JSType;
47 using JSBool;
49 namespace mozilla {
50 namespace jsipc {
52 union JSVariant {
53     void_t;
54     nullable PObjectWrapper;
55     nsString;
56     int;
57     double;
58     bool; // We'd like to use JSBool here, but JSBool is really JSIntn,
59           // and IPC::ParamTraits mistakes JSIntn for int.
62 union OperationStatus {
63     JSBool;
64     JSVariant; // Exception thrown.
67 rpc protocol PObjectWrapper
69     manager PContextWrapper;
71 child:
72     __delete__(); // unroot
74     rpc AddProperty(nsString id)
75         returns (OperationStatus status);
77     rpc GetProperty(nsString id)
78         returns (OperationStatus status,
79                  JSVariant vp);
81     rpc SetProperty(nsString id,
82                     JSVariant v)
83         returns (OperationStatus status,
84                  JSVariant vp);
86     rpc DelProperty(nsString id)
87         returns (OperationStatus status,
88                  JSVariant vp);
90     rpc NewEnumerateInit()
91         returns (OperationStatus status,
92                  JSVariant statep,
93                  int idp);
95     rpc NewEnumerateNext(JSVariant in_state)
96         returns (OperationStatus status,
97                  JSVariant statep,
98                  nsString idp);
100     async NewEnumerateDestroy(JSVariant in_state);
102     rpc NewResolve(nsString id,
103                    int flags)
104         returns (OperationStatus status,
105                  nullable PObjectWrapper obj2);
107     rpc Convert(JSType type)
108         returns (OperationStatus status,
109                  JSVariant vp);
111     rpc Call(PObjectWrapper receiver,
112              JSVariant[] argv)
113         returns (OperationStatus status,
114                  JSVariant rval);
116     rpc Construct(JSVariant[] argv)
117         returns (OperationStatus status,
118                  nullable PObjectWrapper rval);
120     rpc HasInstance(JSVariant v)
121         returns (OperationStatus status,
122                  JSBool bp);