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