[Release] Webkit2-efl-123997_0.11.86
[framework/web/webkit-efl.git] / Source / WebKit / win / DOMEventsClasses.cpp
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 #include "config.h"
27 #include "WebKitDLL.h"
28 #include <initguid.h>
29 #include "DOMEventsClasses.h"
30
31 #include <WebCore/COMPtr.h>
32 #include <WebCore/DOMWindow.h>
33 #include <WebCore/Event.h>
34 #include <WebCore/EventNames.h>
35 #include <WebCore/KeyboardEvent.h>
36 #include <WebCore/MouseEvent.h>
37 #include <WebCore/ScriptExecutionContext.h>
38
39 // DOMEventListener -----------------------------------------------------------
40
41 HRESULT STDMETHODCALLTYPE DOMEventListener::QueryInterface(const IID &riid, void** ppvObject)
42 {
43     *ppvObject = 0;
44     if (IsEqualGUID(riid, IID_IDOMEventListener))
45         *ppvObject = static_cast<IDOMEventListener*>(this);
46     else
47         return DOMObject::QueryInterface(riid, ppvObject);
48
49     AddRef();
50     return S_OK;
51 }
52
53 HRESULT STDMETHODCALLTYPE DOMEventListener::handleEvent( 
54     /* [in] */ IDOMEvent* /*evt*/)
55 {
56     return E_NOTIMPL;
57 }
58
59 WebEventListener::WebEventListener(IDOMEventListener* i)
60     : EventListener(CPPEventListenerType)
61     , m_iDOMEventListener(i)
62 {
63     m_iDOMEventListener->AddRef();
64 }
65
66 WebEventListener::~WebEventListener()
67 {
68     m_iDOMEventListener->Release();
69 }
70
71 bool WebEventListener::operator==(const WebCore::EventListener& other)
72 {
73     return (other.type() == CPPEventListenerType 
74         && reinterpret_cast<const WebEventListener*>(&other)->m_iDOMEventListener == m_iDOMEventListener);
75 }
76
77 void WebEventListener::handleEvent(WebCore::ScriptExecutionContext* s, WebCore::Event* e)
78 {
79     RefPtr<WebCore::Event> ePtr(e);
80     COMPtr<IDOMEvent> domEvent = DOMEvent::createInstance(ePtr);
81     m_iDOMEventListener->handleEvent(domEvent.get());
82 }
83
84 PassRefPtr<WebEventListener> WebEventListener::create(IDOMEventListener* d)
85 {
86     return adoptRef(new WebEventListener(d));
87 }
88
89 // DOMEvent -------------------------------------------------------------------
90
91 DOMEvent::DOMEvent(PassRefPtr<WebCore::Event> e)
92 : m_event(0)
93 {
94     m_event = e;
95 }
96
97 DOMEvent::~DOMEvent()
98 {
99 }
100
101 IDOMEvent* DOMEvent::createInstance(PassRefPtr<WebCore::Event> e)
102 {
103     if (!e)
104         return 0;
105
106     HRESULT hr;
107     IDOMEvent* domEvent = 0;
108
109     if (e->isKeyboardEvent()) {
110         DOMKeyboardEvent* newEvent = new DOMKeyboardEvent(e);
111         hr = newEvent->QueryInterface(IID_IDOMKeyboardEvent, (void**)&domEvent);
112     } else if (e->isMouseEvent()) {
113         DOMMouseEvent* newEvent = new DOMMouseEvent(e);
114         hr = newEvent->QueryInterface(IID_IDOMMouseEvent, (void**)&domEvent);
115     } else if (e->hasInterface(WebCore::eventNames().interfaceForMutationEvent)) {
116         DOMMutationEvent* newEvent = new DOMMutationEvent(e);
117         hr = newEvent->QueryInterface(IID_IDOMMutationEvent, (void**)&domEvent);
118     } else if (e->hasInterface(WebCore::eventNames().interfaceForOverflowEvent)) {
119         DOMOverflowEvent* newEvent = new DOMOverflowEvent(e);
120         hr = newEvent->QueryInterface(IID_IDOMOverflowEvent, (void**)&domEvent);
121     } else if (e->hasInterface(WebCore::eventNames().interfaceForWheelEvent)) {
122         DOMWheelEvent* newEvent = new DOMWheelEvent(e);
123         hr = newEvent->QueryInterface(IID_IDOMWheelEvent, (void**)&domEvent);
124     } else if (e->isUIEvent()) {
125         DOMUIEvent* newEvent = new DOMUIEvent(e);
126         hr = newEvent->QueryInterface(IID_IDOMUIEvent, (void**)&domEvent);
127     } else {
128         DOMEvent* newEvent = new DOMEvent(e);
129         hr = newEvent->QueryInterface(IID_IDOMEvent, (void**)&domEvent);
130     }
131
132     if (FAILED(hr))
133         return 0;
134
135     return domEvent;
136 }
137
138 HRESULT STDMETHODCALLTYPE DOMEvent::QueryInterface(const IID &riid, void** ppvObject)
139 {
140     *ppvObject = 0;
141     if (IsEqualGUID(riid, IID_DOMEvent))
142         *ppvObject = this;
143     else if (IsEqualGUID(riid, IID_IDOMEvent))
144         *ppvObject = static_cast<IDOMEvent*>(this);
145     else
146         return DOMObject::QueryInterface(riid, ppvObject);
147
148     AddRef();
149     return S_OK;
150 }
151
152 HRESULT STDMETHODCALLTYPE DOMEvent::type( 
153     /* [retval][out] */ BSTR* /*result*/)
154 {
155     return E_NOTIMPL;
156 }
157
158 HRESULT STDMETHODCALLTYPE DOMEvent::target( 
159     /* [retval][out] */ IDOMEventTarget** /*result*/)
160 {
161     return E_NOTIMPL;
162 }
163
164 HRESULT STDMETHODCALLTYPE DOMEvent::currentTarget( 
165     /* [retval][out] */ IDOMEventTarget** /*result*/)
166 {
167     return E_NOTIMPL;
168 }
169
170 HRESULT STDMETHODCALLTYPE DOMEvent::eventPhase( 
171     /* [retval][out] */ unsigned short* /*result*/)
172 {
173     return E_NOTIMPL;
174 }
175
176 HRESULT STDMETHODCALLTYPE DOMEvent::bubbles( 
177     /* [retval][out] */ BOOL* /*result*/)
178 {
179     return E_NOTIMPL;
180 }
181
182 HRESULT STDMETHODCALLTYPE DOMEvent::cancelable( 
183     /* [retval][out] */ BOOL* /*result*/)
184 {
185     return E_NOTIMPL;
186 }
187
188 HRESULT STDMETHODCALLTYPE DOMEvent::timeStamp( 
189     /* [retval][out] */ DOMTimeStamp* /*result*/)
190 {
191     return E_NOTIMPL;
192 }
193
194 HRESULT STDMETHODCALLTYPE DOMEvent::stopPropagation( void)
195 {
196     return E_NOTIMPL;
197 }
198
199 HRESULT STDMETHODCALLTYPE DOMEvent::preventDefault( void)
200 {
201     return E_NOTIMPL;
202 }
203
204 HRESULT STDMETHODCALLTYPE DOMEvent::initEvent( 
205     /* [in] */ BSTR /*eventTypeArg*/,
206     /* [in] */ BOOL /*canBubbleArg*/,
207     /* [in] */ BOOL /*cancelableArg*/)
208 {
209     return E_NOTIMPL;
210 }
211
212 // DOMUIEvent -----------------------------------------------------------------
213
214 HRESULT STDMETHODCALLTYPE DOMUIEvent::QueryInterface(REFIID riid, void** ppvObject)
215 {
216     *ppvObject = 0;
217     if (IsEqualGUID(riid, IID_IDOMUIEvent))
218         *ppvObject = static_cast<IDOMUIEvent*>(this);
219     else
220         return DOMEvent::QueryInterface(riid, ppvObject);
221
222     AddRef();
223     return S_OK;
224 }
225
226 HRESULT STDMETHODCALLTYPE DOMUIEvent::view( 
227     /* [retval][out] */ IDOMWindow** /*result*/)
228 {
229     return E_NOTIMPL;
230 }
231
232 HRESULT STDMETHODCALLTYPE DOMUIEvent::detail( 
233     /* [retval][out] */ long* /*result*/)
234 {
235     return E_NOTIMPL;
236 }
237
238 HRESULT STDMETHODCALLTYPE DOMUIEvent::initUIEvent( 
239     /* [in] */ BSTR /*type*/,
240     /* [in] */ BOOL /*canBubble*/,
241     /* [in] */ BOOL /*cancelable*/,
242     /* [in] */ IDOMWindow* /*view*/,
243     /* [in] */ long /*detail*/)
244 {
245     return E_NOTIMPL;
246 }
247
248 HRESULT STDMETHODCALLTYPE DOMUIEvent::keyCode( 
249     /* [retval][out] */ long* /*result*/)
250 {
251     return E_NOTIMPL;
252 }
253
254 HRESULT STDMETHODCALLTYPE DOMUIEvent::charCode( 
255     /* [retval][out] */ long* /*result*/)
256 {
257     return E_NOTIMPL;
258 }
259
260 HRESULT STDMETHODCALLTYPE DOMUIEvent::unused1(
261     /* [retval][out] */ long* /*result*/)
262 {
263     return E_NOTIMPL;
264 }
265
266 HRESULT STDMETHODCALLTYPE DOMUIEvent::unused2(
267     /* [retval][out] */ long* /*result*/)
268 {
269     return E_NOTIMPL;
270 }
271
272 HRESULT STDMETHODCALLTYPE DOMUIEvent::pageX( 
273     /* [retval][out] */ long* /*result*/)
274 {
275     return E_NOTIMPL;
276 }
277
278 HRESULT STDMETHODCALLTYPE DOMUIEvent::pageY( 
279     /* [retval][out] */ long* /*result*/)
280 {
281     return E_NOTIMPL;
282 }
283
284 HRESULT STDMETHODCALLTYPE DOMUIEvent::which( 
285     /* [retval][out] */ long* /*result*/)
286 {
287     return E_NOTIMPL;
288 }
289
290 // DOMKeyboardEvent -----------------------------------------------------------
291
292 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::QueryInterface(REFIID riid, void** ppvObject)
293 {
294     *ppvObject = 0;
295     if (IsEqualGUID(riid, IID_IDOMKeyboardEvent))
296         *ppvObject = static_cast<IDOMKeyboardEvent*>(this);
297     else
298         return DOMUIEvent::QueryInterface(riid, ppvObject);
299
300     AddRef();
301     return S_OK;
302 }
303
304 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::keyIdentifier( 
305     /* [retval][out] */ BSTR* /*result*/)
306 {
307     return E_NOTIMPL;
308 }
309
310 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::keyLocation( 
311     /* [retval][out] */ unsigned long* /*result*/)
312 {
313     return E_NOTIMPL;
314 }
315
316 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::ctrlKey( 
317     /* [retval][out] */ BOOL* result)
318 {
319     *result = FALSE;
320     if (!m_event || !m_event->isKeyboardEvent())
321         return E_FAIL;
322     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
323
324     *result = keyEvent->ctrlKey() ? TRUE : FALSE;
325     return S_OK;
326 }
327
328 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::shiftKey( 
329     /* [retval][out] */ BOOL* result)
330 {
331     *result = FALSE;
332     if (!m_event || !m_event->isKeyboardEvent())
333         return E_FAIL;
334     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
335
336     *result = keyEvent->shiftKey() ? TRUE : FALSE;
337     return S_OK;
338 }
339
340 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::altKey( 
341     /* [retval][out] */ BOOL* result)
342 {
343     *result = FALSE;
344     if (!m_event || !m_event->isKeyboardEvent())
345         return E_FAIL;
346     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
347
348     *result = keyEvent->altKey() ? TRUE : FALSE;
349     return S_OK;
350 }
351
352 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::metaKey( 
353     /* [retval][out] */ BOOL* result)
354 {
355     *result = FALSE;
356     if (!m_event || !m_event->isKeyboardEvent())
357         return E_FAIL;
358     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
359
360     *result = keyEvent->metaKey() ? TRUE : FALSE;
361     return S_OK;
362 }
363
364 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::altGraphKey( 
365     /* [retval][out] */ BOOL* result)
366 {
367     *result = FALSE;
368     if (!m_event || !m_event->isKeyboardEvent())
369         return E_FAIL;
370     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
371
372     *result = keyEvent->altGraphKey() ? TRUE : FALSE;
373     return S_OK;
374 }
375
376 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::getModifierState( 
377     /* [in] */ BSTR /*keyIdentifierArg*/,
378     /* [retval][out] */ BOOL* /*result*/)
379 {
380     return E_NOTIMPL;
381 }
382
383 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::initKeyboardEvent( 
384     /* [in] */ BSTR /*type*/,
385     /* [in] */ BOOL /*canBubble*/,
386     /* [in] */ BOOL /*cancelable*/,
387     /* [in] */ IDOMWindow* /*view*/,
388     /* [in] */ BSTR /*keyIdentifier*/,
389     /* [in] */ unsigned long /*keyLocation*/,
390     /* [in] */ BOOL /*ctrlKey*/,
391     /* [in] */ BOOL /*altKey*/,
392     /* [in] */ BOOL /*shiftKey*/,
393     /* [in] */ BOOL /*metaKey*/,
394     /* [in] */ BOOL /*graphKey*/)
395 {
396     return E_NOTIMPL;
397 }
398
399 // DOMMouseEvent --------------------------------------------------------------
400
401 HRESULT STDMETHODCALLTYPE DOMMouseEvent::QueryInterface(REFIID riid, void** ppvObject)
402 {
403     *ppvObject = 0;
404     if (IsEqualGUID(riid, IID_IDOMMouseEvent))
405         *ppvObject = static_cast<IDOMMouseEvent*>(this);
406     else
407         return DOMUIEvent::QueryInterface(riid, ppvObject);
408
409     AddRef();
410     return S_OK;
411 }
412
413 HRESULT STDMETHODCALLTYPE DOMMouseEvent::screenX( 
414     /* [retval][out] */ long* /*result*/)
415 {
416     return E_NOTIMPL;
417 }
418
419 HRESULT STDMETHODCALLTYPE DOMMouseEvent::screenY( 
420     /* [retval][out] */ long* /*result*/)
421 {
422     return E_NOTIMPL;
423 }
424
425 HRESULT STDMETHODCALLTYPE DOMMouseEvent::clientX( 
426     /* [retval][out] */ long* /*result*/)
427 {
428     return E_NOTIMPL;
429 }
430
431 HRESULT STDMETHODCALLTYPE DOMMouseEvent::clientY( 
432     /* [retval][out] */ long* /*result*/)
433 {
434     return E_NOTIMPL;
435 }
436
437 HRESULT STDMETHODCALLTYPE DOMMouseEvent::ctrlKey( 
438     /* [retval][out] */ BOOL* result)
439 {
440     *result = FALSE;
441     if (!m_event || !m_event->isMouseEvent())
442         return E_FAIL;
443     WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
444
445     *result = mouseEvent->ctrlKey() ? TRUE : FALSE;
446     return S_OK;
447 }
448
449 HRESULT STDMETHODCALLTYPE DOMMouseEvent::shiftKey( 
450     /* [retval][out] */ BOOL* result)
451 {
452     *result = FALSE;
453     if (!m_event || !m_event->isMouseEvent())
454         return E_FAIL;
455     WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
456
457     *result = mouseEvent->shiftKey() ? TRUE : FALSE;
458     return S_OK;
459 }
460
461 HRESULT STDMETHODCALLTYPE DOMMouseEvent::altKey( 
462     /* [retval][out] */ BOOL* result)
463 {
464     *result = FALSE;
465     if (!m_event || !m_event->isMouseEvent())
466         return E_FAIL;
467     WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
468
469     *result = mouseEvent->altKey() ? TRUE : FALSE;
470     return S_OK;
471 }
472
473 HRESULT STDMETHODCALLTYPE DOMMouseEvent::metaKey( 
474     /* [retval][out] */ BOOL* result)
475 {
476     *result = FALSE;
477     if (!m_event || !m_event->isMouseEvent())
478         return E_FAIL;
479     WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
480
481     *result = mouseEvent->metaKey() ? TRUE : FALSE;
482     return S_OK;
483 }
484
485 HRESULT STDMETHODCALLTYPE DOMMouseEvent::button( 
486     /* [retval][out] */ unsigned short* /*result*/)
487 {
488     return E_NOTIMPL;
489 }
490
491 HRESULT STDMETHODCALLTYPE DOMMouseEvent::relatedTarget( 
492     /* [retval][out] */ IDOMEventTarget** /*result*/)
493 {
494     return E_NOTIMPL;
495 }
496
497 HRESULT STDMETHODCALLTYPE DOMMouseEvent::initMouseEvent( 
498     /* [in] */ BSTR /*type*/,
499     /* [in] */ BOOL /*canBubble*/,
500     /* [in] */ BOOL /*cancelable*/,
501     /* [in] */ IDOMWindow* /*view*/,
502     /* [in] */ long /*detail*/,
503     /* [in] */ long /*screenX*/,
504     /* [in] */ long /*screenY*/,
505     /* [in] */ long /*clientX*/,
506     /* [in] */ long /*clientY*/,
507     /* [in] */ BOOL /*ctrlKey*/,
508     /* [in] */ BOOL /*altKey*/,
509     /* [in] */ BOOL /*shiftKey*/,
510     /* [in] */ BOOL /*metaKey*/,
511     /* [in] */ unsigned short /*button*/,
512     /* [in] */ IDOMEventTarget* /*relatedTarget*/)
513 {
514     return E_NOTIMPL;
515 }
516
517 HRESULT STDMETHODCALLTYPE DOMMouseEvent::offsetX( 
518     /* [retval][out] */ long* /*result*/)
519 {
520     return E_NOTIMPL;
521 }
522
523 HRESULT STDMETHODCALLTYPE DOMMouseEvent::offsetY( 
524     /* [retval][out] */ long* /*result*/)
525 {
526     return E_NOTIMPL;
527 }
528
529 HRESULT STDMETHODCALLTYPE DOMMouseEvent::x( 
530     /* [retval][out] */ long* /*result*/)
531 {
532     return E_NOTIMPL;
533 }
534
535 HRESULT STDMETHODCALLTYPE DOMMouseEvent::y( 
536     /* [retval][out] */ long* /*result*/)
537 {
538     return E_NOTIMPL;
539 }
540
541 HRESULT STDMETHODCALLTYPE DOMMouseEvent::fromElement( 
542     /* [retval][out] */ IDOMNode** /*result*/)
543 {
544     return E_NOTIMPL;
545 }
546
547 HRESULT STDMETHODCALLTYPE DOMMouseEvent::toElement( 
548     /* [retval][out] */ IDOMNode** /*result*/)
549 {
550     return E_NOTIMPL;
551 }
552
553 // DOMMutationEvent -----------------------------------------------------------
554
555 HRESULT STDMETHODCALLTYPE DOMMutationEvent::QueryInterface(REFIID riid, void** ppvObject)
556 {
557     *ppvObject = 0;
558     if (IsEqualGUID(riid, IID_IDOMMutationEvent))
559         *ppvObject = static_cast<IDOMMutationEvent*>(this);
560     else
561         return DOMEvent::QueryInterface(riid, ppvObject);
562
563     AddRef();
564     return S_OK;
565 }
566
567 HRESULT STDMETHODCALLTYPE DOMMutationEvent::relatedNode( 
568     /* [retval][out] */ IDOMNode** /*result*/)
569 {
570     return E_NOTIMPL;
571 }
572
573 HRESULT STDMETHODCALLTYPE DOMMutationEvent::prevValue( 
574     /* [retval][out] */ BSTR* /*result*/)
575 {
576     return E_NOTIMPL;
577 }
578
579 HRESULT STDMETHODCALLTYPE DOMMutationEvent::newValue( 
580     /* [retval][out] */ BSTR* /*result*/)
581 {
582     return E_NOTIMPL;
583 }
584
585 HRESULT STDMETHODCALLTYPE DOMMutationEvent::attrName( 
586     /* [retval][out] */ BSTR* /*result*/)
587 {
588     return E_NOTIMPL;
589 }
590
591 HRESULT STDMETHODCALLTYPE DOMMutationEvent::attrChange( 
592     /* [retval][out] */ unsigned short* /*result*/)
593 {
594     return E_NOTIMPL;
595 }
596
597 HRESULT STDMETHODCALLTYPE DOMMutationEvent::initMutationEvent(
598     /* [in] */ BSTR /*type*/,
599     /* [in] */ BOOL /*canBubble*/,
600     /* [in] */ BOOL /*cancelable*/,
601     /* [in] */ IDOMNode* /*relatedNode*/,
602     /* [in] */ BSTR /*prevValue*/,
603     /* [in] */ BSTR /*newValue*/,
604     /* [in] */ BSTR /*attrName*/,
605     /* [in] */ unsigned short /*attrChange*/)
606 {
607     return E_NOTIMPL;
608 }
609
610 // DOMOverflowEvent -----------------------------------------------------------
611
612 HRESULT STDMETHODCALLTYPE DOMOverflowEvent::QueryInterface(REFIID riid, void** ppvObject)
613 {
614     *ppvObject = 0;
615     if (IsEqualGUID(riid, IID_IDOMOverflowEvent))
616         *ppvObject = static_cast<IDOMOverflowEvent*>(this);
617     else
618         return DOMEvent::QueryInterface(riid, ppvObject);
619
620     AddRef();
621     return S_OK;
622 }
623
624 HRESULT STDMETHODCALLTYPE DOMOverflowEvent::orient( 
625     /* [retval][out] */ unsigned short* /*result*/)
626 {
627     return E_NOTIMPL;
628 }
629
630 HRESULT STDMETHODCALLTYPE DOMOverflowEvent::horizontalOverflow( 
631     /* [retval][out] */ BOOL* /*result*/)
632 {
633     return E_NOTIMPL;
634 }
635
636 HRESULT STDMETHODCALLTYPE DOMOverflowEvent::verticalOverflow( 
637     /* [retval][out] */ BOOL* /*result*/)
638 {
639     return E_NOTIMPL;
640 }
641
642 // DOMWheelEvent --------------------------------------------------------------
643
644 HRESULT STDMETHODCALLTYPE DOMWheelEvent::QueryInterface(REFIID riid, void** ppvObject)
645 {
646     *ppvObject = 0;
647     if (IsEqualGUID(riid, IID_IDOMWheelEvent))
648         *ppvObject = static_cast<IDOMWheelEvent*>(this);
649     else
650         return DOMUIEvent::QueryInterface(riid, ppvObject);
651
652     AddRef();
653     return S_OK;
654 }
655
656 HRESULT STDMETHODCALLTYPE DOMWheelEvent::screenX( 
657     /* [retval][out] */ long* /*result*/)
658 {
659     return E_NOTIMPL;
660 }
661
662 HRESULT STDMETHODCALLTYPE DOMWheelEvent::screenY( 
663     /* [retval][out] */ long* /*result*/)
664 {
665     return E_NOTIMPL;
666 }
667
668 HRESULT STDMETHODCALLTYPE DOMWheelEvent::clientX( 
669     /* [retval][out] */ long* /*result*/)
670 {
671     return E_NOTIMPL;
672 }
673
674 HRESULT STDMETHODCALLTYPE DOMWheelEvent::clientY( 
675     /* [retval][out] */ long* /*result*/)
676 {
677     return E_NOTIMPL;
678 }
679
680 HRESULT STDMETHODCALLTYPE DOMWheelEvent::ctrlKey( 
681     /* [retval][out] */ BOOL* /*result*/)
682 {
683     return E_NOTIMPL;
684 }
685
686 HRESULT STDMETHODCALLTYPE DOMWheelEvent::shiftKey( 
687     /* [retval][out] */ BOOL* /*result*/)
688 {
689     return E_NOTIMPL;
690 }
691
692 HRESULT STDMETHODCALLTYPE DOMWheelEvent::altKey( 
693     /* [retval][out] */ BOOL* /*result*/)
694 {
695     return E_NOTIMPL;
696 }
697
698 HRESULT STDMETHODCALLTYPE DOMWheelEvent::metaKey( 
699     /* [retval][out] */ BOOL* /*result*/)
700 {
701     return E_NOTIMPL;
702 }
703
704 HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDelta( 
705     /* [retval][out] */ long* /*result*/)
706 {
707     return E_NOTIMPL;
708 }
709
710 HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDeltaX( 
711     /* [retval][out] */ long* /*result*/)
712 {
713     return E_NOTIMPL;
714 }
715
716 HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDeltaY( 
717     /* [retval][out] */ long* /*result*/)
718 {
719     return E_NOTIMPL;
720 }
721
722 HRESULT STDMETHODCALLTYPE DOMWheelEvent::offsetX( 
723     /* [retval][out] */ long* /*result*/)
724 {
725     return E_NOTIMPL;
726 }
727
728 HRESULT STDMETHODCALLTYPE DOMWheelEvent::offsetY( 
729     /* [retval][out] */ long* /*result*/)
730 {
731     return E_NOTIMPL;
732 }
733
734 HRESULT STDMETHODCALLTYPE DOMWheelEvent::x( 
735     /* [retval][out] */ long* /*result*/)
736 {
737     return E_NOTIMPL;
738 }
739
740 HRESULT STDMETHODCALLTYPE DOMWheelEvent::y( 
741     /* [retval][out] */ long* /*result*/)
742 {
743     return E_NOTIMPL;
744 }
745
746 HRESULT STDMETHODCALLTYPE DOMWheelEvent::isHorizontal( 
747     /* [retval][out] */ BOOL* /*result*/)
748 {
749     return E_NOTIMPL;
750 }
751
752 HRESULT STDMETHODCALLTYPE DOMWheelEvent::initWheelEvent( 
753     /* [in] */ long /*wheelDeltaX*/,
754     /* [in] */ long /*wheelDeltaY*/,
755     /* [in] */ IDOMWindow* /*view*/,
756     /* [in] */ long /*screenX*/,
757     /* [in] */ long /*screenY*/,
758     /* [in] */ long /*clientX*/,
759     /* [in] */ long /*clientY*/,
760     /* [in] */ BOOL /*ctrlKey*/,
761     /* [in] */ BOOL /*altKey*/,
762     /* [in] */ BOOL /*shiftKey*/,
763     /* [in] */ BOOL /*metaKey*/)
764 {
765     return E_NOTIMPL;
766 }