1/*
2 * Copyright (C) 2006, 2007 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 COMPUTER, 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 COMPUTER, 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 DOMEventsClasses_H
27#define DOMEventsClasses_H
28
29#include "WebKit.h"
30#include "DOMCoreClasses.h"
31#include <WebCore/EventListener.h>
32
33#include <wtf/PassRefPtr.h>
34#include <wtf/RefPtr.h>
35
36// {AC3D1BC3-4976-4431-8A19-4812C5EFE39C}
37DEFINE_GUID(IID_DOMEvent, 0xac3d1bc3, 0x4976, 0x4431, 0x8a, 0x19, 0x48, 0x12, 0xc5, 0xef, 0xe3, 0x9c);
38
39namespace WebCore {
40    class Event;
41}
42
43class DOMUIEvent;
44
45class WebEventListener : public WebCore::EventListener {
46public:
47    WebEventListener(IDOMEventListener*);
48    ~WebEventListener();
49    virtual bool operator==(const EventListener&);
50    virtual void handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*);
51    static PassRefPtr<WebEventListener> create(IDOMEventListener*);
52private:
53    IDOMEventListener* m_iDOMEventListener;
54};
55
56class DOMEventListener : public DOMObject, public IDOMEventListener
57{
58public:
59    // IUnknown
60    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
61    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
62    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
63
64    // IWebScriptObject
65    virtual HRESULT STDMETHODCALLTYPE throwException(
66        /* [in] */ BSTR exceptionMessage,
67        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
68
69    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
70        /* [in] */ BSTR name,
71        /* [size_is][in] */ const VARIANT args[  ],
72        /* [in] */ int cArgs,
73        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
74
75    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
76        /* [in] */ BSTR script,
77        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
78
79    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
80        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
81
82    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
83        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
84
85    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
86        /* [in] */ unsigned int index,
87        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
88
89    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
90        /* [in] */ unsigned int index,
91        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
92
93    virtual HRESULT STDMETHODCALLTYPE setException(
94        /* [in] */ BSTR description) { return DOMObject::setException(description); }
95
96    // IDOMEventListener
97    virtual HRESULT STDMETHODCALLTYPE handleEvent(
98        /* [in] */ IDOMEvent* evt);
99};
100
101class DOMEvent : public DOMObject, public IDOMEvent
102{
103public:
104    static IDOMEvent* createInstance(PassRefPtr<WebCore::Event> e);
105protected:
106    DOMEvent(PassRefPtr<WebCore::Event> e);
107    ~DOMEvent();
108
109public:
110    // IUnknown
111    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
112    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
113    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
114
115    // IWebScriptObject
116    virtual HRESULT STDMETHODCALLTYPE throwException(
117        /* [in] */ BSTR exceptionMessage,
118        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
119
120    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
121        /* [in] */ BSTR name,
122        /* [size_is][in] */ const VARIANT args[  ],
123        /* [in] */ int cArgs,
124        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
125
126    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
127        /* [in] */ BSTR script,
128        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
129
130    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
131        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
132
133    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
134        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
135
136    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
137        /* [in] */ unsigned int index,
138        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
139
140    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
141        /* [in] */ unsigned int index,
142        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
143
144    virtual HRESULT STDMETHODCALLTYPE setException(
145        /* [in] */ BSTR description) { return DOMObject::setException(description); }
146
147    // IDOMEvent
148    virtual HRESULT STDMETHODCALLTYPE type(
149        /* [retval][out] */ BSTR* result);
150
151    virtual HRESULT STDMETHODCALLTYPE target(
152        /* [retval][out] */ IDOMEventTarget** result);
153
154    virtual HRESULT STDMETHODCALLTYPE currentTarget(
155        /* [retval][out] */ IDOMEventTarget** result);
156
157    virtual HRESULT STDMETHODCALLTYPE eventPhase(
158        /* [retval][out] */ unsigned short* result);
159
160    virtual HRESULT STDMETHODCALLTYPE bubbles(
161        /* [retval][out] */ BOOL* result);
162
163    virtual HRESULT STDMETHODCALLTYPE cancelable(
164        /* [retval][out] */ BOOL* result);
165
166    virtual HRESULT STDMETHODCALLTYPE timeStamp(
167        /* [retval][out] */ DOMTimeStamp* result);
168
169    virtual HRESULT STDMETHODCALLTYPE stopPropagation( void);
170
171    virtual HRESULT STDMETHODCALLTYPE preventDefault( void);
172
173    virtual HRESULT STDMETHODCALLTYPE initEvent(
174        /* [in] */ BSTR eventTypeArg,
175        /* [in] */ BOOL canBubbleArg,
176        /* [in] */ BOOL cancelableArg);
177
178    // DOMEvent methods
179    WebCore::Event* coreEvent() { return m_event.get(); }
180
181protected:
182    RefPtr<WebCore::Event> m_event;
183};
184
185class DOMUIEvent : public DOMEvent, public IDOMUIEvent
186{
187public:
188    DOMUIEvent(PassRefPtr<WebCore::Event> e) : DOMEvent(e) {}
189
190    // IUnknown
191    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
192    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMEvent::AddRef(); }
193    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMEvent::Release(); }
194
195    // IWebScriptObject
196    virtual HRESULT STDMETHODCALLTYPE throwException(
197        /* [in] */ BSTR exceptionMessage,
198        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
199
200    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
201        /* [in] */ BSTR name,
202        /* [size_is][in] */ const VARIANT args[  ],
203        /* [in] */ int cArgs,
204        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
205
206    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
207        /* [in] */ BSTR script,
208        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
209
210    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
211        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
212
213    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
214        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
215
216    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
217        /* [in] */ unsigned int index,
218        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
219
220    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
221        /* [in] */ unsigned int index,
222        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
223
224    virtual HRESULT STDMETHODCALLTYPE setException(
225        /* [in] */ BSTR description) { return DOMObject::setException(description); }
226
227    // IDOMEvent
228    virtual HRESULT STDMETHODCALLTYPE type(
229        /* [retval][out] */ BSTR* result) { return DOMEvent::type(result); }
230
231    virtual HRESULT STDMETHODCALLTYPE target(
232        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::target(result); }
233
234    virtual HRESULT STDMETHODCALLTYPE currentTarget(
235        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::currentTarget(result); }
236
237    virtual HRESULT STDMETHODCALLTYPE eventPhase(
238        /* [retval][out] */ unsigned short* result) { return DOMEvent::eventPhase(result); }
239
240    virtual HRESULT STDMETHODCALLTYPE bubbles(
241        /* [retval][out] */ BOOL* result) { return DOMEvent::bubbles(result); }
242
243    virtual HRESULT STDMETHODCALLTYPE cancelable(
244        /* [retval][out] */ BOOL* result) { return DOMEvent::cancelable(result); }
245
246    virtual HRESULT STDMETHODCALLTYPE timeStamp(
247        /* [retval][out] */ DOMTimeStamp* result) { return DOMEvent::timeStamp(result); }
248
249    virtual HRESULT STDMETHODCALLTYPE stopPropagation( void) { return DOMEvent::stopPropagation(); }
250
251    virtual HRESULT STDMETHODCALLTYPE preventDefault( void) { return DOMEvent::preventDefault(); }
252
253    virtual HRESULT STDMETHODCALLTYPE initEvent(
254        /* [in] */ BSTR eventTypeArg,
255        /* [in] */ BOOL canBubbleArg,
256        /* [in] */ BOOL cancelableArg) { return DOMEvent::initEvent(eventTypeArg, canBubbleArg, cancelableArg); }
257
258    // IDOMUIEvent
259    virtual HRESULT STDMETHODCALLTYPE view(
260        /* [retval][out] */ IDOMWindow** result);
261
262    virtual HRESULT STDMETHODCALLTYPE detail(
263        /* [retval][out] */ long* result);
264
265    virtual HRESULT STDMETHODCALLTYPE initUIEvent(
266        /* [in] */ BSTR type,
267        /* [in] */ BOOL canBubble,
268        /* [in] */ BOOL cancelable,
269        /* [in] */ IDOMWindow* view,
270        /* [in] */ long detail);
271
272    virtual HRESULT STDMETHODCALLTYPE keyCode(
273        /* [retval][out] */ long* result);
274
275    virtual HRESULT STDMETHODCALLTYPE charCode(
276        /* [retval][out] */ long* result);
277
278    virtual HRESULT STDMETHODCALLTYPE unused1(
279        /* [retval][out] */ long* result);
280
281    virtual HRESULT STDMETHODCALLTYPE unused2(
282        /* [retval][out] */ long* result);
283
284    virtual HRESULT STDMETHODCALLTYPE pageX(
285        /* [retval][out] */ long* result);
286
287    virtual HRESULT STDMETHODCALLTYPE pageY(
288        /* [retval][out] */ long* result);
289
290    virtual HRESULT STDMETHODCALLTYPE which(
291        /* [retval][out] */ long* result);
292};
293
294class DOMKeyboardEvent : public DOMUIEvent, public IDOMKeyboardEvent
295{
296public:
297    DOMKeyboardEvent(PassRefPtr<WebCore::Event> e) : DOMUIEvent(e) { }
298
299    // IUnknown
300    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
301    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMUIEvent::AddRef(); }
302    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMUIEvent::Release(); }
303
304    // IWebScriptObject
305    virtual HRESULT STDMETHODCALLTYPE throwException(
306        /* [in] */ BSTR exceptionMessage,
307        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
308
309    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
310        /* [in] */ BSTR name,
311        /* [size_is][in] */ const VARIANT args[  ],
312        /* [in] */ int cArgs,
313        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
314
315    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
316        /* [in] */ BSTR script,
317        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
318
319    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
320        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
321
322    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
323        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
324
325    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
326        /* [in] */ unsigned int index,
327        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
328
329    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
330        /* [in] */ unsigned int index,
331        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
332
333    virtual HRESULT STDMETHODCALLTYPE setException(
334        /* [in] */ BSTR description) { return DOMObject::setException(description); }
335
336    // IDOMEvent
337    virtual HRESULT STDMETHODCALLTYPE type(
338        /* [retval][out] */ BSTR* result) { return DOMEvent::type(result); }
339
340    virtual HRESULT STDMETHODCALLTYPE target(
341        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::target(result); }
342
343    virtual HRESULT STDMETHODCALLTYPE currentTarget(
344        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::currentTarget(result); }
345
346    virtual HRESULT STDMETHODCALLTYPE eventPhase(
347        /* [retval][out] */ unsigned short* result) { return DOMEvent::eventPhase(result); }
348
349    virtual HRESULT STDMETHODCALLTYPE bubbles(
350        /* [retval][out] */ BOOL* result) { return DOMEvent::bubbles(result); }
351
352    virtual HRESULT STDMETHODCALLTYPE cancelable(
353        /* [retval][out] */ BOOL* result) { return DOMEvent::cancelable(result); }
354
355    virtual HRESULT STDMETHODCALLTYPE timeStamp(
356        /* [retval][out] */ DOMTimeStamp* result) { return DOMEvent::timeStamp(result); }
357
358    virtual HRESULT STDMETHODCALLTYPE stopPropagation( void) { return DOMEvent::stopPropagation(); }
359
360    virtual HRESULT STDMETHODCALLTYPE preventDefault( void) { return DOMEvent::preventDefault(); }
361
362    virtual HRESULT STDMETHODCALLTYPE initEvent(
363        /* [in] */ BSTR eventTypeArg,
364        /* [in] */ BOOL canBubbleArg,
365        /* [in] */ BOOL cancelableArg) { return DOMEvent::initEvent(eventTypeArg, canBubbleArg, cancelableArg); }
366
367    // IDOMUIEvent
368    virtual HRESULT STDMETHODCALLTYPE view(
369        /* [retval][out] */ IDOMWindow** result) { return DOMUIEvent::view(result); }
370
371    virtual HRESULT STDMETHODCALLTYPE detail(
372        /* [retval][out] */ long* result) { return DOMUIEvent::detail(result); }
373
374    virtual HRESULT STDMETHODCALLTYPE initUIEvent(
375        /* [in] */ BSTR type,
376        /* [in] */ BOOL canBubble,
377        /* [in] */ BOOL cancelable,
378        /* [in] */ IDOMWindow* view,
379        /* [in] */ long detail) { return DOMUIEvent::initUIEvent(type, canBubble, cancelable, view, detail); }
380
381    virtual HRESULT STDMETHODCALLTYPE keyCode(
382        /* [retval][out] */ long* result) { return DOMUIEvent::keyCode(result); }
383
384    virtual HRESULT STDMETHODCALLTYPE charCode(
385        /* [retval][out] */ long* result) { return DOMUIEvent::charCode(result); }
386
387    virtual HRESULT STDMETHODCALLTYPE unused1(
388        /* [retval][out] */ long* result) { return DOMUIEvent::unused1(result); }
389
390    virtual HRESULT STDMETHODCALLTYPE unused2(
391        /* [retval][out] */ long* result) { return DOMUIEvent::unused2(result); }
392
393    virtual HRESULT STDMETHODCALLTYPE pageX(
394        /* [retval][out] */ long* result) { return DOMUIEvent::pageX(result); }
395
396    virtual HRESULT STDMETHODCALLTYPE pageY(
397        /* [retval][out] */ long* result) { return DOMUIEvent::pageY(result); }
398
399    virtual HRESULT STDMETHODCALLTYPE which(
400        /* [retval][out] */ long* result) { return DOMUIEvent::which(result); }
401
402    // IDOMKeyboardEvent
403    virtual HRESULT STDMETHODCALLTYPE keyIdentifier(
404        /* [retval][out] */ BSTR* result);
405
406    virtual HRESULT STDMETHODCALLTYPE keyLocation(
407        /* [retval][out] */ unsigned long* result);
408
409    virtual HRESULT STDMETHODCALLTYPE ctrlKey(
410        /* [retval][out] */ BOOL* result);
411
412    virtual HRESULT STDMETHODCALLTYPE shiftKey(
413        /* [retval][out] */ BOOL* result);
414
415    virtual HRESULT STDMETHODCALLTYPE altKey(
416        /* [retval][out] */ BOOL* result);
417
418    virtual HRESULT STDMETHODCALLTYPE metaKey(
419        /* [retval][out] */ BOOL* result);
420
421    virtual HRESULT STDMETHODCALLTYPE altGraphKey(
422        /* [retval][out] */ BOOL* result);
423
424    virtual HRESULT STDMETHODCALLTYPE getModifierState(
425        /* [in] */ BSTR keyIdentifierArg,
426        /* [retval][out] */ BOOL* result);
427
428    virtual HRESULT STDMETHODCALLTYPE initKeyboardEvent(
429        /* [in] */ BSTR type,
430        /* [in] */ BOOL canBubble,
431        /* [in] */ BOOL cancelable,
432        /* [in] */ IDOMWindow* view,
433        /* [in] */ BSTR keyIdentifier,
434        /* [in] */ unsigned long keyLocation,
435        /* [in] */ BOOL ctrlKey,
436        /* [in] */ BOOL altKey,
437        /* [in] */ BOOL shiftKey,
438        /* [in] */ BOOL metaKey,
439        /* [in] */ BOOL graphKey);
440};
441
442class DOMMouseEvent : public DOMUIEvent, public IDOMMouseEvent
443{
444public:
445    DOMMouseEvent(PassRefPtr<WebCore::Event> e) : DOMUIEvent(e) { }
446
447    // IUnknown
448    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
449    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMUIEvent::AddRef(); }
450    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMUIEvent::Release(); }
451
452    // IWebScriptObject
453    virtual HRESULT STDMETHODCALLTYPE throwException(
454        /* [in] */ BSTR exceptionMessage,
455        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
456
457    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
458        /* [in] */ BSTR name,
459        /* [size_is][in] */ const VARIANT args[  ],
460        /* [in] */ int cArgs,
461        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
462
463    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
464        /* [in] */ BSTR script,
465        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
466
467    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
468        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
469
470    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
471        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
472
473    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
474        /* [in] */ unsigned int index,
475        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
476
477    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
478        /* [in] */ unsigned int index,
479        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
480
481    virtual HRESULT STDMETHODCALLTYPE setException(
482        /* [in] */ BSTR description) { return DOMObject::setException(description); }
483
484    // IDOMEvent
485    virtual HRESULT STDMETHODCALLTYPE type(
486        /* [retval][out] */ BSTR* result) { return DOMEvent::type(result); }
487
488    virtual HRESULT STDMETHODCALLTYPE target(
489        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::target(result); }
490
491    virtual HRESULT STDMETHODCALLTYPE currentTarget(
492        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::currentTarget(result); }
493
494    virtual HRESULT STDMETHODCALLTYPE eventPhase(
495        /* [retval][out] */ unsigned short* result) { return DOMEvent::eventPhase(result); }
496
497    virtual HRESULT STDMETHODCALLTYPE bubbles(
498        /* [retval][out] */ BOOL* result) { return DOMEvent::bubbles(result); }
499
500    virtual HRESULT STDMETHODCALLTYPE cancelable(
501        /* [retval][out] */ BOOL* result) { return DOMEvent::cancelable(result); }
502
503    virtual HRESULT STDMETHODCALLTYPE timeStamp(
504        /* [retval][out] */ DOMTimeStamp* result) { return DOMEvent::timeStamp(result); }
505
506    virtual HRESULT STDMETHODCALLTYPE stopPropagation( void) { return DOMEvent::stopPropagation(); }
507
508    virtual HRESULT STDMETHODCALLTYPE preventDefault( void) { return DOMEvent::preventDefault(); }
509
510    virtual HRESULT STDMETHODCALLTYPE initEvent(
511        /* [in] */ BSTR eventTypeArg,
512        /* [in] */ BOOL canBubbleArg,
513        /* [in] */ BOOL cancelableArg) { return DOMEvent::initEvent(eventTypeArg, canBubbleArg, cancelableArg); }
514
515    // IDOMUIEvent
516    virtual HRESULT STDMETHODCALLTYPE view(
517        /* [retval][out] */ IDOMWindow** result) { return DOMUIEvent::view(result); }
518
519    virtual HRESULT STDMETHODCALLTYPE detail(
520        /* [retval][out] */ long* result) { return DOMUIEvent::detail(result); }
521
522    virtual HRESULT STDMETHODCALLTYPE initUIEvent(
523        /* [in] */ BSTR type,
524        /* [in] */ BOOL canBubble,
525        /* [in] */ BOOL cancelable,
526        /* [in] */ IDOMWindow* view,
527        /* [in] */ long detail) { return DOMUIEvent::initUIEvent(type, canBubble, cancelable, view, detail); }
528
529    virtual HRESULT STDMETHODCALLTYPE keyCode(
530        /* [retval][out] */ long* result) { return DOMUIEvent::keyCode(result); }
531
532    virtual HRESULT STDMETHODCALLTYPE charCode(
533        /* [retval][out] */ long* result) { return DOMUIEvent::charCode(result); }
534
535    virtual HRESULT STDMETHODCALLTYPE unused1(
536        /* [retval][out] */ long* result) { return DOMUIEvent::unused1(result); }
537
538    virtual HRESULT STDMETHODCALLTYPE unused2(
539        /* [retval][out] */ long* result) { return DOMUIEvent::unused2(result); }
540
541    virtual HRESULT STDMETHODCALLTYPE pageX(
542        /* [retval][out] */ long* result) { return DOMUIEvent::pageX(result); }
543
544    virtual HRESULT STDMETHODCALLTYPE pageY(
545        /* [retval][out] */ long* result) { return DOMUIEvent::pageY(result); }
546
547    virtual HRESULT STDMETHODCALLTYPE which(
548        /* [retval][out] */ long* result) { return DOMUIEvent::which(result); }
549
550    // IDOMMouseEvent
551    virtual HRESULT STDMETHODCALLTYPE screenX(
552        /* [retval][out] */ long* result);
553
554    virtual HRESULT STDMETHODCALLTYPE screenY(
555        /* [retval][out] */ long* result);
556
557    virtual HRESULT STDMETHODCALLTYPE clientX(
558        /* [retval][out] */ long* result);
559
560    virtual HRESULT STDMETHODCALLTYPE clientY(
561        /* [retval][out] */ long* result);
562
563    virtual HRESULT STDMETHODCALLTYPE ctrlKey(
564        /* [retval][out] */ BOOL* result);
565
566    virtual HRESULT STDMETHODCALLTYPE shiftKey(
567        /* [retval][out] */ BOOL* result);
568
569    virtual HRESULT STDMETHODCALLTYPE altKey(
570        /* [retval][out] */ BOOL* result);
571
572    virtual HRESULT STDMETHODCALLTYPE metaKey(
573        /* [retval][out] */ BOOL* result);
574
575    virtual HRESULT STDMETHODCALLTYPE button(
576        /* [retval][out] */ unsigned short* result);
577
578    virtual HRESULT STDMETHODCALLTYPE relatedTarget(
579        /* [retval][out] */ IDOMEventTarget** result);
580
581    virtual HRESULT STDMETHODCALLTYPE initMouseEvent(
582        /* [in] */ BSTR type,
583        /* [in] */ BOOL canBubble,
584        /* [in] */ BOOL cancelable,
585        /* [in] */ IDOMWindow* view,
586        /* [in] */ long detail,
587        /* [in] */ long screenX,
588        /* [in] */ long screenY,
589        /* [in] */ long clientX,
590        /* [in] */ long clientY,
591        /* [in] */ BOOL ctrlKey,
592        /* [in] */ BOOL altKey,
593        /* [in] */ BOOL shiftKey,
594        /* [in] */ BOOL metaKey,
595        /* [in] */ unsigned short button,
596        /* [in] */ IDOMEventTarget* relatedTarget);
597
598    virtual HRESULT STDMETHODCALLTYPE offsetX(
599        /* [retval][out] */ long* result);
600
601    virtual HRESULT STDMETHODCALLTYPE offsetY(
602        /* [retval][out] */ long* result);
603
604    virtual HRESULT STDMETHODCALLTYPE x(
605        /* [retval][out] */ long* result);
606
607    virtual HRESULT STDMETHODCALLTYPE y(
608        /* [retval][out] */ long* result);
609
610    virtual HRESULT STDMETHODCALLTYPE fromElement(
611        /* [retval][out] */ IDOMNode** result);
612
613    virtual HRESULT STDMETHODCALLTYPE toElement(
614        /* [retval][out] */ IDOMNode** result);
615};
616
617class DOMMutationEvent : public DOMEvent, public IDOMMutationEvent
618{
619public:
620    DOMMutationEvent(PassRefPtr<WebCore::Event> e) : DOMEvent(e) { }
621
622    // IUnknown
623    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
624    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMEvent::AddRef(); }
625    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMEvent::Release(); }
626
627    // IWebScriptObject
628    virtual HRESULT STDMETHODCALLTYPE throwException(
629        /* [in] */ BSTR exceptionMessage,
630        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
631
632    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
633        /* [in] */ BSTR name,
634        /* [size_is][in] */ const VARIANT args[  ],
635        /* [in] */ int cArgs,
636        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
637
638    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
639        /* [in] */ BSTR script,
640        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
641
642    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
643        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
644
645    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
646        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
647
648    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
649        /* [in] */ unsigned int index,
650        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
651
652    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
653        /* [in] */ unsigned int index,
654        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
655
656    virtual HRESULT STDMETHODCALLTYPE setException(
657        /* [in] */ BSTR description) { return DOMObject::setException(description); }
658
659    // IDOMEvent
660    virtual HRESULT STDMETHODCALLTYPE type(
661        /* [retval][out] */ BSTR* result) { return DOMEvent::type(result); }
662
663    virtual HRESULT STDMETHODCALLTYPE target(
664        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::target(result); }
665
666    virtual HRESULT STDMETHODCALLTYPE currentTarget(
667        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::currentTarget(result); }
668
669    virtual HRESULT STDMETHODCALLTYPE eventPhase(
670        /* [retval][out] */ unsigned short* result) { return DOMEvent::eventPhase(result); }
671
672    virtual HRESULT STDMETHODCALLTYPE bubbles(
673        /* [retval][out] */ BOOL* result) { return DOMEvent::bubbles(result); }
674
675    virtual HRESULT STDMETHODCALLTYPE cancelable(
676        /* [retval][out] */ BOOL* result) { return DOMEvent::cancelable(result); }
677
678    virtual HRESULT STDMETHODCALLTYPE timeStamp(
679        /* [retval][out] */ DOMTimeStamp* result) { return DOMEvent::timeStamp(result); }
680
681    virtual HRESULT STDMETHODCALLTYPE stopPropagation( void) { return DOMEvent::stopPropagation(); }
682
683    virtual HRESULT STDMETHODCALLTYPE preventDefault( void) { return DOMEvent::preventDefault(); }
684
685    virtual HRESULT STDMETHODCALLTYPE initEvent(
686        /* [in] */ BSTR eventTypeArg,
687        /* [in] */ BOOL canBubbleArg,
688        /* [in] */ BOOL cancelableArg) { return DOMEvent::initEvent(eventTypeArg, canBubbleArg, cancelableArg); }
689
690    // IDOMMutationEvent
691    virtual HRESULT STDMETHODCALLTYPE relatedNode(
692        /* [retval][out] */ IDOMNode** result);
693
694    virtual HRESULT STDMETHODCALLTYPE prevValue(
695        /* [retval][out] */ BSTR* result);
696
697    virtual HRESULT STDMETHODCALLTYPE newValue(
698        /* [retval][out] */ BSTR* result);
699
700    virtual HRESULT STDMETHODCALLTYPE attrName(
701        /* [retval][out] */ BSTR* result);
702
703    virtual HRESULT STDMETHODCALLTYPE attrChange(
704        /* [retval][out] */ unsigned short* result);
705
706    virtual HRESULT STDMETHODCALLTYPE initMutationEvent(
707        /* [in] */ BSTR type,
708        /* [in] */ BOOL canBubble,
709        /* [in] */ BOOL cancelable,
710        /* [in] */ IDOMNode* relatedNode,
711        /* [in] */ BSTR prevValue,
712        /* [in] */ BSTR newValue,
713        /* [in] */ BSTR attrName,
714        /* [in] */ unsigned short attrChange);
715};
716
717class DOMOverflowEvent : public DOMEvent, public IDOMOverflowEvent
718{
719public:
720    DOMOverflowEvent(PassRefPtr<WebCore::Event> e) : DOMEvent(e) { }
721
722    // IUnknown
723    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
724    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMEvent::AddRef(); }
725    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMEvent::Release(); }
726
727    // IWebScriptObject
728    virtual HRESULT STDMETHODCALLTYPE throwException(
729        /* [in] */ BSTR exceptionMessage,
730        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
731
732    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
733        /* [in] */ BSTR name,
734        /* [size_is][in] */ const VARIANT args[  ],
735        /* [in] */ int cArgs,
736        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
737
738    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
739        /* [in] */ BSTR script,
740        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
741
742    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
743        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
744
745    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
746        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
747
748    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
749        /* [in] */ unsigned int index,
750        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
751
752    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
753        /* [in] */ unsigned int index,
754        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
755
756    virtual HRESULT STDMETHODCALLTYPE setException(
757        /* [in] */ BSTR description) { return DOMObject::setException(description); }
758
759    // IDOMEvent
760    virtual HRESULT STDMETHODCALLTYPE type(
761        /* [retval][out] */ BSTR* result) { return DOMEvent::type(result); }
762
763    virtual HRESULT STDMETHODCALLTYPE target(
764        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::target(result); }
765
766    virtual HRESULT STDMETHODCALLTYPE currentTarget(
767        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::currentTarget(result); }
768
769    virtual HRESULT STDMETHODCALLTYPE eventPhase(
770        /* [retval][out] */ unsigned short* result) { return DOMEvent::eventPhase(result); }
771
772    virtual HRESULT STDMETHODCALLTYPE bubbles(
773        /* [retval][out] */ BOOL* result) { return DOMEvent::bubbles(result); }
774
775    virtual HRESULT STDMETHODCALLTYPE cancelable(
776        /* [retval][out] */ BOOL* result) { return DOMEvent::cancelable(result); }
777
778    virtual HRESULT STDMETHODCALLTYPE timeStamp(
779        /* [retval][out] */ DOMTimeStamp* result) { return DOMEvent::timeStamp(result); }
780
781    virtual HRESULT STDMETHODCALLTYPE stopPropagation( void) { return DOMEvent::stopPropagation(); }
782
783    virtual HRESULT STDMETHODCALLTYPE preventDefault( void) { return DOMEvent::preventDefault(); }
784
785    virtual HRESULT STDMETHODCALLTYPE initEvent(
786        /* [in] */ BSTR eventTypeArg,
787        /* [in] */ BOOL canBubbleArg,
788        /* [in] */ BOOL cancelableArg) { return DOMEvent::initEvent(eventTypeArg, canBubbleArg, cancelableArg); }
789
790    // IDOMOverflowEvent
791    virtual HRESULT STDMETHODCALLTYPE orient(
792        /* [retval][out] */ unsigned short* result);
793
794    virtual HRESULT STDMETHODCALLTYPE horizontalOverflow(
795        /* [retval][out] */ BOOL* result);
796
797    virtual HRESULT STDMETHODCALLTYPE verticalOverflow(
798        /* [retval][out] */ BOOL* result);
799};
800
801class DOMWheelEvent : public DOMUIEvent, public IDOMWheelEvent
802{
803public:
804    DOMWheelEvent(PassRefPtr<WebCore::Event> e) : DOMUIEvent(e) { }
805
806    // IUnknown
807    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
808    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMUIEvent::AddRef(); }
809    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMUIEvent::Release(); }
810
811    // IWebScriptObject
812    virtual HRESULT STDMETHODCALLTYPE throwException(
813        /* [in] */ BSTR exceptionMessage,
814        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
815
816    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
817        /* [in] */ BSTR name,
818        /* [size_is][in] */ const VARIANT args[  ],
819        /* [in] */ int cArgs,
820        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
821
822    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
823        /* [in] */ BSTR script,
824        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
825
826    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
827        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
828
829    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
830        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
831
832    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
833        /* [in] */ unsigned int index,
834        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
835
836    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
837        /* [in] */ unsigned int index,
838        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
839
840    virtual HRESULT STDMETHODCALLTYPE setException(
841        /* [in] */ BSTR description) { return DOMObject::setException(description); }
842
843    // IDOMEvent
844    virtual HRESULT STDMETHODCALLTYPE type(
845        /* [retval][out] */ BSTR* result) { return DOMEvent::type(result); }
846
847    virtual HRESULT STDMETHODCALLTYPE target(
848        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::target(result); }
849
850    virtual HRESULT STDMETHODCALLTYPE currentTarget(
851        /* [retval][out] */ IDOMEventTarget** result) { return DOMEvent::currentTarget(result); }
852
853    virtual HRESULT STDMETHODCALLTYPE eventPhase(
854        /* [retval][out] */ unsigned short* result) { return DOMEvent::eventPhase(result); }
855
856    virtual HRESULT STDMETHODCALLTYPE bubbles(
857        /* [retval][out] */ BOOL* result) { return DOMEvent::bubbles(result); }
858
859    virtual HRESULT STDMETHODCALLTYPE cancelable(
860        /* [retval][out] */ BOOL* result) { return DOMEvent::cancelable(result); }
861
862    virtual HRESULT STDMETHODCALLTYPE timeStamp(
863        /* [retval][out] */ DOMTimeStamp* result) { return DOMEvent::timeStamp(result); }
864
865    virtual HRESULT STDMETHODCALLTYPE stopPropagation( void) { return DOMEvent::stopPropagation(); }
866
867    virtual HRESULT STDMETHODCALLTYPE preventDefault( void) { return DOMEvent::preventDefault(); }
868
869    virtual HRESULT STDMETHODCALLTYPE initEvent(
870        /* [in] */ BSTR eventTypeArg,
871        /* [in] */ BOOL canBubbleArg,
872        /* [in] */ BOOL cancelableArg) { return DOMEvent::initEvent(eventTypeArg, canBubbleArg, cancelableArg); }
873
874    // IDOMUIEvent
875    virtual HRESULT STDMETHODCALLTYPE view(
876        /* [retval][out] */ IDOMWindow** result) { return DOMUIEvent::view(result); }
877
878    virtual HRESULT STDMETHODCALLTYPE detail(
879        /* [retval][out] */ long* result) { return DOMUIEvent::detail(result); }
880
881    virtual HRESULT STDMETHODCALLTYPE initUIEvent(
882        /* [in] */ BSTR type,
883        /* [in] */ BOOL canBubble,
884        /* [in] */ BOOL cancelable,
885        /* [in] */ IDOMWindow* view,
886        /* [in] */ long detail) { return DOMUIEvent::initUIEvent(type, canBubble, cancelable, view, detail); }
887
888    virtual HRESULT STDMETHODCALLTYPE keyCode(
889        /* [retval][out] */ long* result) { return DOMUIEvent::keyCode(result); }
890
891    virtual HRESULT STDMETHODCALLTYPE charCode(
892        /* [retval][out] */ long* result) { return DOMUIEvent::charCode(result); }
893
894    virtual HRESULT STDMETHODCALLTYPE unused1(
895        /* [retval][out] */ long* result) { return DOMUIEvent::unused1(result); }
896
897    virtual HRESULT STDMETHODCALLTYPE unused2(
898        /* [retval][out] */ long* result) { return DOMUIEvent::unused2(result); }
899
900    virtual HRESULT STDMETHODCALLTYPE pageX(
901        /* [retval][out] */ long* result) { return DOMUIEvent::pageX(result); }
902
903    virtual HRESULT STDMETHODCALLTYPE pageY(
904        /* [retval][out] */ long* result) { return DOMUIEvent::pageY(result); }
905
906    virtual HRESULT STDMETHODCALLTYPE which(
907        /* [retval][out] */ long* result) { return DOMUIEvent::which(result); }
908
909    // IDOMWheelEvent
910    virtual HRESULT STDMETHODCALLTYPE screenX(
911        /* [retval][out] */ long* result);
912
913    virtual HRESULT STDMETHODCALLTYPE screenY(
914        /* [retval][out] */ long* result);
915
916    virtual HRESULT STDMETHODCALLTYPE clientX(
917        /* [retval][out] */ long* result);
918
919    virtual HRESULT STDMETHODCALLTYPE clientY(
920        /* [retval][out] */ long* result);
921
922    virtual HRESULT STDMETHODCALLTYPE ctrlKey(
923        /* [retval][out] */ BOOL* result);
924
925    virtual HRESULT STDMETHODCALLTYPE shiftKey(
926        /* [retval][out] */ BOOL* result);
927
928    virtual HRESULT STDMETHODCALLTYPE altKey(
929        /* [retval][out] */ BOOL* result);
930
931    virtual HRESULT STDMETHODCALLTYPE metaKey(
932        /* [retval][out] */ BOOL* result);
933
934    virtual HRESULT STDMETHODCALLTYPE wheelDelta(
935        /* [retval][out] */ long* result);
936
937    virtual HRESULT STDMETHODCALLTYPE wheelDeltaX(
938        /* [retval][out] */ long* result);
939
940    virtual HRESULT STDMETHODCALLTYPE wheelDeltaY(
941        /* [retval][out] */ long* result);
942
943    virtual HRESULT STDMETHODCALLTYPE offsetX(
944        /* [retval][out] */ long* result);
945
946    virtual HRESULT STDMETHODCALLTYPE offsetY(
947        /* [retval][out] */ long* result);
948
949    virtual HRESULT STDMETHODCALLTYPE x(
950        /* [retval][out] */ long* result);
951
952    virtual HRESULT STDMETHODCALLTYPE y(
953        /* [retval][out] */ long* result);
954
955    virtual HRESULT STDMETHODCALLTYPE isHorizontal(
956        /* [retval][out] */ BOOL* result);
957
958    virtual HRESULT STDMETHODCALLTYPE initWheelEvent(
959        /* [in] */ long wheelDeltaX,
960        /* [in] */ long wheelDeltaY,
961        /* [in] */ IDOMWindow* view,
962        /* [in] */ long screenX,
963        /* [in] */ long screenY,
964        /* [in] */ long clientX,
965        /* [in] */ long clientY,
966        /* [in] */ BOOL ctrlKey,
967        /* [in] */ BOOL altKey,
968        /* [in] */ BOOL shiftKey,
969        /* [in] */ BOOL metaKey);
970};
971
972#endif
973