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