1/*
2 * Copyright (C) 2006, 2007, 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#ifndef DO_NO_IMPORTS
27import "oaidl.idl";
28import "ocidl.idl";
29#endif
30
31interface IWebInvocation;
32interface IWebMethodSignature;
33
34[
35    object,
36    oleautomation,
37    uuid(D25D748C-6C1E-478d-9832-FDA26E8F7EE4),
38    pointer_default(unique)
39]
40interface IWebUndoManager : IUnknown
41{
42    /*
43        - (void)beginUndoGrouping
44    */
45    HRESULT beginUndoGrouping();
46
47    /*
48        - (BOOL)canRedo
49    */
50    HRESULT canRedo([out, retval] BOOL* result);
51
52    /*
53        - (BOOL)canUndo
54    */
55    HRESULT canUndo([out, retval] BOOL* result);
56
57    /*
58        - (void)disableUndoRegistration
59    */
60    HRESULT disableUndoRegistration();
61
62    /*
63        - (void)enableUndoRegistration
64    */
65    HRESULT enableUndoRegistration();
66
67    /*
68        - (void)endUndoGrouping
69    */
70    HRESULT endUndoGrouping();
71
72    /*
73        - (void)forwardInvocation:(NSInvocation *)anInvocation
74    */
75    HRESULT forwardInvocation([in] IWebInvocation* anInvocation);
76
77    /*
78        - (int)groupingLevel
79    */
80    HRESULT groupingLevel([out, retval] int* groupingLevel);
81
82    /*
83        - (BOOL)groupsByEvent
84    */
85    HRESULT groupsByEvent([out, retval] BOOL* result);
86
87    /*
88        - (BOOL)isRedoing
89    */
90    HRESULT isRedoing([out, retval] BOOL* result);
91
92    /*
93        - (BOOL)isUndoing
94    */
95    HRESULT isUndoing([out, retval] BOOL* result);
96
97    /*
98        - (BOOL)isUndoRegistrationEnabled
99    */
100    HRESULT isUndoRegistrationEnabled([out, retval] BOOL* result);
101
102    /*
103        - (unsigned)levelsOfUndo
104    */
105    HRESULT levelsOfUndo([out, retval] UINT* result);
106
107    /*
108        - (id)prepareWithInvocationTarget:(id)target
109    */
110    HRESULT prepareWithInvocationTarget([in] IUnknown* target, [out, retval] IUnknown** result);
111
112    /*
113        - (void)redo
114    */
115    HRESULT redo();
116
117    /*
118        - (NSString *)redoActionName
119    */
120    HRESULT redoActionName([out, retval] BSTR* result);
121
122    /*
123        - (NSString *)redoMenuItemTitle
124    */
125    HRESULT redoMenuItemTitle([out, retval] BSTR* result);
126
127    /*
128        - (NSString *)redoMenuTitleForUndoActionName:(NSString *)actionName
129    */
130    HRESULT redoMenuTitleForUndoActionName([in] BSTR actionName, [out, retval] BSTR* result);
131
132    /*
133        - (void)registerUndoWithTarget:(id)target selector:(SEL)aSelector object:(id)anObject
134    */
135    HRESULT registerUndoWithTarget([in] IUnknown* target, [in] UINT aSelector, [in] IUnknown* anObject);
136
137    /*
138        - (void)removeAllActions
139    */
140    HRESULT removeAllActions();
141
142    /*
143        - (void)removeAllActionsWithTarget:(id)target
144    */
145    HRESULT removeAllActionsWithTarget([in] IUnknown* target);
146
147    /*
148        - (NSArray *)runLoopModes
149    */
150    HRESULT runLoopModes([out, retval] IEnumVARIANT** enumModes);
151
152    /*
153        - (void)setActionName:(NSString *)actionName
154    */
155    HRESULT setActionName([in] BSTR actionName);
156
157    /*
158        - (void)setGroupsByEvent:(BOOL)flag
159    */
160    HRESULT setGroupsByEvent([in] BOOL flag);
161
162    /*
163        - (void)setLevelsOfUndo:(unsigned)anInt
164    */
165    HRESULT setLevelsOfUndo([in] UINT anInt);
166
167    /*
168        - (void)setRunLoopModes:(NSArray *)modes
169    */
170    HRESULT setRunLoopModes([in] int cModes, [in, size_is(cModes)] BSTR* modes);
171
172    /*
173        - (void)undo
174    */
175    HRESULT undo();
176
177    /*
178        - (NSString *)undoActionName
179    */
180    HRESULT undoActionName([out, retval] BSTR* result);
181
182    /*
183        - (NSString *)undoMenuItemTitle
184    */
185    HRESULT undoMenuItemTitle([out, retval] BSTR* result);
186
187    /*
188        - (NSString *)undoMenuTitleForUndoActionName:(NSString *)actionName
189    */
190    HRESULT undoMenuTitleForUndoActionName([in] BSTR actionName, [out, retval] BSTR* result);
191
192    /*
193        - (void)undoNestedGroup
194    */
195    HRESULT undoNestedGroup();
196}
197
198[
199    object,
200    oleautomation,
201    uuid(67B067BE-4DE6-45c2-AD39-A91DFA84FF4E),
202    pointer_default(unique)
203]
204interface IWebInvocation : IUnknown
205{
206    /*
207        + (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)signature
208    */
209    HRESULT invocationWithMethodSignature([in] IWebMethodSignature* signature);
210
211    /*
212        - (BOOL)argumentsRetained
213    */
214    HRESULT argumentsRetained([out, retval] BOOL* result);
215
216    /*
217        - (void)getArgument:(void *)buffer atIndex:(int)index
218    */
219    [local] HRESULT getArgument([in] void* buffer, [in] int index);
220
221    /*
222        - (void)getReturnValue:(void *)buffer
223    */
224    [local] HRESULT getReturnValue([in] void* buffer);
225
226    /*
227        - (void)invoke
228    */
229    HRESULT invoke();
230
231    /*
232        - (void)invokeWithTarget:(id)anObject
233    */
234    HRESULT invokeWithTarget([in] IUnknown* anObject);
235
236    /*
237        - (NSMethodSignature *)methodSignature
238    */
239    HRESULT methodSignature([out, retval] IWebMethodSignature** result);
240
241    /*
242        - (void)retainArguments
243    */
244    HRESULT retainArguments();
245
246    /*
247        - (SEL)selector
248    */
249    HRESULT selector([out, retval] UINT* result);
250
251    /*
252        - (void)setArgument:(void *)buffer atIndex:(int)index
253    */
254    [local] HRESULT setArgument([in] void* buffer, [in] int atIndex);
255
256    /*
257        - (void)setReturnValue:(void *)buffer
258    */
259    [local] HRESULT setReturnValue([in] void* buffer);
260
261    /*
262        - (void)setSelector:(SEL)selector
263    */
264    HRESULT setSelector([in] UINT selector);
265
266    /*
267        - (void)setTarget:(id)anObject
268    */
269    HRESULT setTarget([in] IUnknown* anObject);
270
271    /*
272        - (id)target
273    */
274    HRESULT target([out, retval] IUnknown** result);
275}
276
277[
278    object,
279    oleautomation,
280    uuid(431DD6B2-56BF-4f48-943B-78CCEAC418E4),
281    pointer_default(unique)
282]
283interface IWebMethodSignature : IUnknown
284{
285    /*
286        - (unsigned)frameLength
287    */
288    HRESULT frameLength([out, retval] UINT* result);
289
290    /*
291        - (const char *)getArgumentTypeAtIndex:(unsigned)index
292    */
293    HRESULT getArgumentTypeAtIndex([in] UINT index, [out, retval] BSTR* result);
294
295    /*
296        - (BOOL)isOneway
297    */
298    HRESULT isOneway([out, retval] BOOL* result);
299
300    /*
301        - (unsigned)methodReturnLength
302    */
303    HRESULT methodReturnLength([out, retval] UINT* result);
304
305    /*
306        - (const char *)methodReturnType
307    */
308    HRESULT methodReturnType([out, retval] BSTR* result);
309
310    /*
311        - (unsigned)numberOfArguments
312    */
313    HRESULT numberOfArguments([out, retval] UINT* result);
314}
315