1/*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include <WebKit/WebKitPluginHostTypes.defs>
27
28// FIXME: Come up with a better name.
29subsystem WebKitPluginClient 300;
30
31serverprefix WK;
32userprefix _WK;
33
34simpleroutine PCStatusText(clientPort :mach_port_t;
35                         pluginID :uint32_t;
36                         text :data_t);
37
38routine PCLoadURL(clientPort :mach_port_t;
39                      pluginID :uint32_t;
40                      url :data_t;
41                      target :data_t;
42                      postData :data_t;
43                      flags: uint32_t;
44                      out resultCode :uint16_t;
45                      out requestID :uint32_t);
46
47simpleroutine PCCancelLoadURL(clientPort :mach_port_t;
48                            pluginID :uint32_t;
49                            streamID :uint32_t;
50                            reason :int16_t);
51
52simpleroutine PCInvalidateRect(clientPort :mach_port_t;
53                             pluginID :uint32_t;
54                             x :double;
55                             y :double;
56                             width :double;
57                             height :double);
58
59routine PCGetCookies(clientPort :mach_port_t;
60                     pluginID :uint32_t;
61                     url :data_t;
62                     out returnValue :boolean_t;
63                     out cookies :data_t, dealloc);
64
65routine PCSetCookies(clientPort :mach_port_t;
66                     pluginID :uint32_t;
67                     url :data_t;
68                     cookies :data_t;
69                     out returnValue :boolean_t);
70
71routine PCGetProxy(clientPort :mach_port_t;
72                   pluginID :uint32_t;
73                   url :data_t;
74                   out returnValue :boolean_t;
75                   out proxy :data_t, dealloc);
76
77routine PCGetAuthenticationInfo(clientPort :mach_port_t;
78                                pluginID :uint32_t;
79                                protocol :data_t;
80                                host :data_t;
81                                port :uint32_t;
82                                scheme :data_t;
83                                realm :data_t;
84                                out returnValue :boolean_t;
85                                out username :data_t, dealloc;
86                                out password :data_t, dealloc);
87
88routine PCConvertPoint(clientPort :mach_port_t;
89                       pluginID :uint32_t;
90                       sourceX :double;
91                       sourceY :double;
92                       sourceSpace :uint32_t;
93                       destSpace :uint32_t;
94                       out returnValue :boolean_t;
95                       out destX :double;
96                       out destY :double);
97
98// NPRuntime
99
100routine PCGetStringIdentifier(clientPort :mach_port_t;
101                            name :data_t;
102                            out identifier :uint64_t);
103
104routine PCGetIntIdentifier(clientPort :mach_port_t;
105                         value :int32_t;
106                         out identifier: uint64_t);
107
108routine PCGetWindowNPObject(clientPort :mach_port_t;
109                          pluginID :uint32_t;
110                          out objectID :uint32_t);
111routine PCGetPluginElementNPObject(clientPort :mach_port_t;
112                                 pluginID :uint32_t;
113                                 out objectID :uint32_t);
114
115routine PCForgetBrowserObject(clientPort :mach_port_t;
116                      pluginID :uint32_t;
117                      objectID :uint32_t);
118
119simpleroutine PCEvaluate(clientPort :mach_port_t;
120                       pluginID :uint32_t;
121                       requestID :uint32_t;
122                       objectID :uint32_t;
123                       script :data_t;
124                       allowPopups :boolean_t);
125
126simpleroutine PCInvoke(clientPort :mach_port_t;
127                     pluginID :uint32_t;
128                     requestID :uint32_t;
129                     objectID :uint32_t;
130                     methodNameIdentifier :uint64_t;
131                     arguments :data_t);
132
133simpleroutine PCInvokeDefault(clientPort :mach_port_t;
134               pluginID :uint32_t;
135               requestID :uint32_t;
136               objectID :uint32_t;
137               arguments :data_t);
138
139routine PCConstruct(clientPort :mach_port_t;
140                  pluginID :uint32_t;
141                  objectID :uint32_t;
142                  arguments :data_t;
143                  out returnValue :boolean_t;
144                  out result :data_t, dealloc);
145
146simpleroutine PCGetProperty(clientPort :mach_port_t;
147                            pluginID :uint32_t;
148                            requestID :uint32_t;
149                            objectID :uint32_t;
150                            propertyNameIdentifier :uint64_t);
151
152simpleroutine PCSetProperty(clientPort :mach_port_t;
153                    pluginID :uint32_t;
154                    requestID :uint32_t;
155                    objectID :uint32_t;
156                    propertyNameIdentifier :uint64_t;
157                    value :data_t);
158
159simpleroutine PCRemoveProperty(clientPort :mach_port_t;
160                       pluginID :uint32_t;
161                       requestID :uint32_t;
162                       objectID :uint32_t;
163                       propertyNameIdentifier :uint64_t);
164
165simpleroutine PCHasProperty(clientPort :mach_port_t;
166                            pluginID :uint32_t;
167                            requestID :uint32_t;
168                            objectID :uint32_t;
169                            propertyNameIdentifier :uint64_t);
170
171simpleroutine PCHasMethod(clientPort :mach_port_t;
172                           pluginID :uint32_t;
173                           requestID :uint32_t;
174                           objectID :uint32_t;
175                           methodNameIdentifier :uint64_t);
176
177routine PCIdentifierInfo(clientPort :mach_port_t;
178                       identifier :uint64_t;
179                       out info :data_t, dealloc);
180
181simpleroutine PCEnumerate(clientPort :mach_port_t;
182                          pluginID :uint32_t;
183                          requestID :uint32_t;
184                          objectID :uint32_t);
185
186// Misc
187
188simpleroutine PCSetMenuBarVisible(clientPort :mach_port_t;
189                                visible :boolean_t);
190
191simpleroutine PCSetModal(clientPort :mach_port_t;
192                       modal :boolean_t);
193
194routine PCCheckIfAllowedToLoadURL(clientPort :mach_port_t;
195                                  pluginID :uint32_t;
196                                  url :data_t;
197                                  target :data_t;
198                                  out checkID :uint32_t);
199
200simpleroutine PCCancelCheckIfAllowedToLoadURL(clientPort :mach_port_t;
201                                              pluginID :uint32_t;
202                                              checkID :uint32_t);
203
204routine PCResolveURL(clientPort :mach_port_t;
205                     pluginID :uint32_t;
206                     url :data_t;
207                     target :data_t;
208                     out resolvedURL :data_t, dealloc);
209
210// Replies
211simpleroutine PCInstantiatePluginReply(clientPort :mach_port_t;
212                                     pluginID :uint32_t;
213                                     requestID :uint32_t;
214                                     result :kern_return_t;
215                                     renderContextID :uint32_t;
216                                     rendererType :uint32_t);
217
218simpleroutine PCGetScriptableNPObjectReply(clientPort :mach_port_t;
219                                         pluginID :uint32_t;
220                                         requestID :uint32_t;
221                                         objectID :uint32_t);
222
223simpleroutine PCBooleanReply(clientPort :mach_port_t;
224                             pluginID :uint32_t;
225                             requestID :uint32_t;
226                             result :boolean_t);
227
228simpleroutine PCBooleanAndDataReply(clientPort :mach_port_t;
229                                    pluginID :uint32_t;
230                                    requestID :uint32_t;
231                                    returnValue :boolean_t;
232                                    result :data_t);
233
234// New Routines (must be added at the bottom of the file)
235
236simpleroutine PCSetFullscreenWindowIsShowing(clientPort :mach_port_t;
237                                             isShowing :boolean_t);
238
239simpleroutine PCSetException(clientPort :mach_port_t;
240                             message :data_t);
241
242simpleroutine PCLayerHostingModeChanged(clientPort :mach_port_t;
243                                        pluginID :uint32_t;
244                                        hostsLayersInWindowServer :boolean_t;
245                                        renderContextID :uint32_t);
246